From 6fdb086ffd261046e1eaae26d2a2ef12596c496a Mon Sep 17 00:00:00 2001 From: Dnomd343 Date: Sun, 13 Oct 2024 12:08:34 +0800 Subject: [PATCH] feat: next group theory --- src/core/CMakeLists.txt | 1 + src/core/group/group.h | 67 +++++++++++ src/core/group/internal/constant/group_pro.h | 19 +++ .../group/internal/constant/group_union.h | 18 +++ src/core/group/internal/group_pro.cc | 38 ++++++ src/core/group/internal/group_pro.inl | 111 ++++++++++++++++++ src/core/group/internal/group_union.inl | 33 ++++++ src/core/main.cc | 31 ++++- 8 files changed, 315 insertions(+), 3 deletions(-) create mode 100644 src/core/group/internal/constant/group_pro.h create mode 100644 src/core/group/internal/group_pro.cc create mode 100644 src/core/group/internal/group_pro.inl diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index c357ade..217af06 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -25,6 +25,7 @@ set(KLOTSKI_CORE_SRC group/internal/group_union.cc group/internal/group.cc + group/internal/group_pro.cc group/internal/group_cases.cc ranges/internal/spawn.cc diff --git a/src/core/group/group.h b/src/core/group/group.h index fe036a5..2ab9372 100644 --- a/src/core/group/group.h +++ b/src/core/group/group.h @@ -79,6 +79,7 @@ typedef std::vector RawCodes; typedef std::vector CommonCodes; class Group; +class GroupPro; // TODO: add constexpr class GroupUnion { @@ -107,6 +108,13 @@ public: /// Get the upper limit of the group size. [[nodiscard]] constexpr uint32_t max_group_size() const; + // ------------------------------------------------------------------------------------- // + /// TODO: new interface + + [[nodiscard]] constexpr uint32_t pattern_num() const; + + [[nodiscard]] std::vector groups_pro() const; + // ------------------------------------------------------------------------------------- // /// Get all cases under the current type id. @@ -145,8 +153,65 @@ private: // ------------------------------------------------------------------------------------- // }; +// TODO: add `==` and `std::hash` + // TODO: add debug output +class GroupPro { +public: + GroupPro() = delete; + + enum class MirrorType { + FullMirror = 0, + HorizontalMirror = 1, + CentroMirror = 2, + VerticalMirror = 3, + NonMirror = 4, + }; + + // NOTE: using enum `MirrorTowards` + static GroupPro unsafe_create(uint32_t type_id, uint32_t pattern_id, uint32_t mirror_toward) { + return {type_id, pattern_id, mirror_toward}; + } + + [[nodiscard]] constexpr uint32_t type_id() const { + return type_id_; + } + + [[nodiscard]] constexpr uint32_t pattern_id() const { + return pattern_id_; + } + + [[nodiscard]] constexpr uint32_t mirror_toward() const { + return mirror_toward_; + } + + [[nodiscard]] constexpr uint32_t size() const; + + [[nodiscard]] constexpr MirrorType mirror_type() const; + + [[nodiscard]] constexpr bool is_vertical_mirror() const; + [[nodiscard]] constexpr bool is_horizontal_mirror() const; + + [[nodiscard]] constexpr GroupPro to_vertical_mirror() const; + [[nodiscard]] constexpr GroupPro to_horizontal_mirror() const; + + RangesUnion cases() const; + +private: + uint32_t type_id_; + uint32_t pattern_id_; + uint32_t mirror_toward_; + + GroupPro(uint32_t type_id, uint32_t pattern_id, uint32_t mirror_toward) { + type_id_ = type_id; + pattern_id_ = pattern_id; + mirror_toward_ = mirror_toward; + } + + [[nodiscard]] constexpr uint32_t flat_id() const; +}; + class Group { public: Group() = delete; @@ -281,3 +346,5 @@ public: #include "internal/group_union.inl" #include "internal/group_cases.inl" #include "internal/group.inl" + +#include "internal/group_pro.inl" diff --git a/src/core/group/internal/constant/group_pro.h b/src/core/group/internal/constant/group_pro.h new file mode 100644 index 0000000..abb0675 --- /dev/null +++ b/src/core/group/internal/constant/group_pro.h @@ -0,0 +1,19 @@ +#pragma once + +#include + +namespace klotski::cases { + +constexpr auto GROUP_PRO_SIZE = std::to_array({ + 12, 192, 1440, 6720, 21840, 52416, 96096, 137280, 154440, 137280, 96096, 52416, 21840, 6720, 1440, 124, 1736, 11284, 45136, 124124, 248248, 372372, 425568, 372372, 248248, 124124, 45136, 10836, 48, 40, 24, 132, 1848, 12012, 48048, 132132, 264264, 396396, 453024, 396396, 264264, 132132, 48048, 11916, 24, 512, 6144, 33792, 112640, 253440, 405504, 473088, 405504, 253440, 112576, 32, 30104, 108, 108, 96, 88, 60, 60, 60, 40, 40, 32, 32, 32, 32, 30, 30, 32, 32, 16, 16, 8, 4, 1044, 12528, 68904, 229680, 516780, 826848, 964656, 826848, 516780, 228848, 48, 48, 48, 32, 32, 65848, 64, 48, 40, 40, 40, 40, 36, 36, 32, 32, 24, 24, 24, 22, 22, 20, 20, 16, 16, 16, 16, 16, 16, 16, 12, 12, 12, 8, 8, 8, 8, 8, 4, 4, 4, 582, 6984, 38412, 128040, 288090, 460944, 537768, 460944, 288090, 128040, 37740, 80, 76, 8, 4, 1092, 10920, 49140, 131040, 229320, 275184, 229320, 130032, 116, 72, 72, 32, 32, 38672, 144, 144, 144, 90, 90, 90, 90, 72, 72, 72, 72, 72, 72, 72, 72, 66, 66, 64, 64, 36, 36, 36, 36, 36, 36, 32, 32, 29, 28, 28, 28, 28, 28, 28, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 16, 16, 16, 16, 16, 16, 16, 16, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 4, 4, 4, 4, 3180, 31800, 143100, 381600, 667800, 801360, 667544, 32, 32, 377408, 104, 72, 72, 40, 40, 40, 40, 36, 36, 32, 32, 32, 32, 32, 28, 28, 24, 24, 24, 24, 24, 24, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 8, 8, 8, 127676, 120, 92, 80, 80, 80, 80, 72, 72, 64, 64, 48, 48, 48, 48, 48, 48, 48, 48, 48, 44, 40, 40, 40, 40, 36, 36, 36, 36, 36, 36, 36, 34, 34, 34, 34, 30, 30, 30, 30, 30, 28, 28, 28, 28, 28, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 20, 20, 20, 20, 20, 20, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 10, 10, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3382, 33820, 152190, 405840, 710220, 852264, 709388, 192, 48, 32, 32, 403056, 88, 64, 64, 48, 48, 40, 32, 32, 32, 24, 24, 24, 24, 24, 16, 16, 16, 16, 16, 16, 8, 8, 8, 8, 143462, 72, 70, 64, 64, 64, 54, 48, 48, 48, 90, 44, 40, 36, 36, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 28, 24, 24, 24, 24, 24, 24, 24, 24, 24, 20, 20, 20, 18, 18, 18, 18, 18, 32, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 10, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1320, 13200, 59400, 158400, 277200, 332640, 277200, 158272, 32, 57524, 120, 48, 40, 40, 40, 22, 42, 20, 20, 16, 14, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 4, 1320, 10560, 36960, 73920, 92400, 71944, 87, 87, 48, 32, 24, 24, 24, 24, 24, 24, 24, 24, 24, 16, 16, 16, 23704, 127, 90, 90, 128, 60, 60, 60, 60, 54, 54, 54, 54, 54, 54, 48, 48, 48, 48, 48, 48, 48, 48, 36, 36, 36, 36, 36, 36, 36, 36, 30, 30, 30, 30, 29, 29, 29, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4680, 37440, 131040, 262080, 327120, 40, 24, 24, 16, 16, 253968, 224, 68, 68, 64, 56, 54, 54, 54, 54, 48, 48, 32, 32, 30, 30, 28, 24, 24, 24, 24, 24, 24, 24, 24, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 12, 12, 12, 12, 12, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 105064, 144, 144, 90, 90, 82, 69, 69, 68, 68, 68, 68, 60, 54, 54, 52, 52, 52, 52, 48, 48, 48, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 33, 33, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 30, 30, 30, 30, 30, 30, 30, 30, 28, 28, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 22, 22, 22, 22, 21, 21, 21, 21, 21, 21, 20, 20, 20, 20, 20, 18, 18, 18, 18, 18, 18, 17, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7248, 57984, 202944, 405440, 96, 32, 504616, 176, 64, 54, 40, 40, 32, 32, 24, 24, 24, 24, 32, 16, 16, 16, 16, 16, 16, 16, 16, 16, 396284, 200, 152, 84, 68, 48, 48, 48, 48, 40, 40, 40, 36, 36, 32, 32, 32, 32, 32, 32, 32, 56, 24, 24, 24, 23, 20, 20, 20, 20, 20, 20, 20, 20, 20, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 12, 12, 12, 12, 12, 16, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 8, 4, 175580, 380, 107, 88, 88, 76, 58, 45, 43, 42, 40, 40, 40, 36, 36, 36, 36, 36, 36, 36, 36, 36, 32, 32, 32, 32, 32, 30, 30, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 26, 26, 26, 26, 26, 26, 26, 26, 25, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 22, 22, 22, 22, 22, 22, 21, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 24, 24, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 16, 16, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 14, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 8, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 5344, 42752, 149632, 299136, 32, 373184, 80, 32, 32, 16, 16, 16, 16, 16, 296520, 56, 40, 40, 32, 32, 32, 24, 24, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 136040, 108, 72, 59, 56, 51, 48, 48, 48, 48, 46, 42, 38, 36, 36, 36, 36, 36, 34, 32, 32, 32, 32, 32, 32, 30, 29, 26, 26, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 40, 20, 20, 20, 20, 38, 18, 18, 18, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 10, 10, 10, 10, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 1632, 13056, 45696, 91392, 114240, 91264, 16, 16, 43704, 34, 32, 30, 30, 30, 30, 28, 26, 26, 26, 26, 12, 12, 12, 12, 16, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 948, 5688, 14220, 17696, 88, 24, 24, 18, 18, 18, 18, 18, 18, 18, 18, 12, 12, 12, 7888, 72, 48, 36, 36, 36, 36, 64, 29, 24, 24, 24, 24, 24, 24, 24, 24, 18, 18, 18, 18, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 4, 3444, 20664, 51044, 88, 46, 20, 61204, 139, 135, 114, 94, 69, 51, 51, 51, 51, 48, 48, 44, 42, 42, 36, 36, 36, 36, 25, 25, 25, 25, 20, 20, 20, 20, 20, 18, 18, 18, 18, 16, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 10, 10, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 28832, 470, 244, 96, 93, 68, 61, 50, 47, 42, 40, 36, 36, 36, 36, 34, 32, 30, 30, 30, 30, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 27, 27, 27, 27, 27, 27, 27, 27, 26, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 22, 22, 21, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 17, 17, 17, 17, 17, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 15, 15, 15, 15, 15, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7048, 36, 42288, 84, 24, 104540, 90, 160, 56, 24, 24, 23, 20, 20, 20, 16, 16, 16, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 16, 8, 132556, 192, 144, 108, 71, 60, 60, 51, 51, 48, 42, 34, 33, 28, 27, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 20, 20, 20, 32, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 15, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 81462, 232, 99, 97, 89, 72, 67, 67, 128, 59, 57, 55, 53, 104, 51, 48, 48, 47, 46, 44, 44, 41, 34, 30, 30, 29, 28, 28, 27, 27, 27, 25, 24, 24, 24, 24, 24, 24, 47, 23, 21, 21, 21, 21, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 17, 17, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 14, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7284, 42728, 160, 36, 24, 24, 104960, 536, 104, 72, 40, 37, 30, 24, 24, 24, 24, 16, 16, 16, 16, 12, 12, 12, 12, 12, 12, 16, 8, 8, 135192, 466, 304, 82, 68, 54, 54, 52, 48, 48, 47, 44, 36, 32, 30, 30, 29, 28, 28, 24, 24, 24, 24, 24, 22, 20, 20, 20, 20, 20, 20, 20, 20, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 16, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 81340, 240, 219, 113, 103, 100, 56, 52, 47, 47, 46, 44, 44, 42, 42, 42, 39, 38, 37, 34, 32, 32, 31, 31, 31, 31, 31, 29, 29, 29, 29, 28, 28, 28, 28, 28, 28, 28, 28, 27, 27, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 22, 22, 22, 22, 21, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 14, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4392, 26352, 65688, 32, 16, 16, 86968, 24, 44, 16, 16, 12, 12, 12, 12, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 25955, 248, 201, 181, 118, 99, 98, 92, 75, 73, 47, 45, 36, 36, 33, 33, 32, 30, 30, 29, 29, 29, 28, 55, 27, 52, 26, 26, 26, 26, 26, 26, 26, 25, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 21, 20, 20, 19, 18, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 26, 24, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 10, 10, 10, 10, 10, 10, 10, 9, 16, 16, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 522, 3132, 7830, 10440, 7462, 27, 18, 18, 16, 16, 16, 22, 10, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 396, 792, 508, 72, 40, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 240, 93, 68, 34, 768, 302, 185, 67, 33, 23, 15, 15, 15, 15, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 742, 266, 156, 60, 57, 53, 25, 22, 19, 17, 17, 17, 16, 15, 14, 14, 12, 12, 12, 12, 12, 12, 12, 12, 10, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1804, 682, 108, 71, 15, 15, 15, 15, 2348, 1976, 414, 292, 102, 72, 140, 62, 62, 58, 56, 50, 24, 15, 15, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 10, 10, 10, 10, 10, 10, 8, 8, 8, 6, 6, 6, 6, 6, 6, 5, 5, 4, 4, 4, 4, 4, 4, 1398, 546, 260, 120, 109, 93, 168, 164, 66, 63, 60, 56, 110, 48, 48, 47, 47, 45, 45, 44, 43, 40, 39, 37, 37, 72, 36, 69, 34, 33, 32, 32, 32, 31, 30, 27, 23, 22, 19, 19, 36, 36, 18, 18, 18, 17, 32, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 10, 18, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 15, 14, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1504, 287, 154, 143, 72, 16, 12, 6, 6, 5372, 1126, 616, 550, 240, 40, 28, 21, 12, 12, 12, 12, 12, 10, 10, 10, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 4, 4, 2, 1192, 596, 578, 888, 387, 208, 206, 108, 105, 75, 74, 71, 70, 62, 61, 58, 53, 52, 47, 46, 43, 42, 40, 39, 34, 32, 32, 30, 30, 29, 28, 27, 27, 27, 25, 24, 24, 24, 23, 22, 20, 19, 17, 16, 15, 14, 14, 14, 14, 14, 14, 12, 12, 12, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2984, 29, 12, 12, 4376, 450, 838, 706, 130, 128, 65, 61, 55, 49, 37, 24, 24, 22, 19, 36, 17, 16, 30, 14, 12, 12, 10, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 4, 4, 272, 453, 420, 391, 162, 287, 102, 95, 86, 84, 84, 81, 74, 48, 47, 43, 40, 40, 39, 39, 37, 37, 37, 36, 35, 35, 34, 33, 33, 65, 30, 29, 29, 27, 26, 26, 26, 26, 26, 24, 23, 22, 21, 21, 21, 21, 21, 20, 20, 20, 20, 20, 20, 19, 19, 19, 19, 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 35, 35, 35, 35, 17, 16, 16, 16, 15, 14, 14, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 9, 9, 9, 9, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 350, 294, 274, 1380, 1160, 548, 10, 8, 1532, 432, 359, 214, 75, 71, 62, 62, 61, 118, 56, 54, 104, 45, 45, 72, 33, 28, 52, 23, 19, 19, 18, 16, 16, 14, 14, 14, 12, 12, 12, 12, 20, 10, 10, 10, 18, 8, 6, 6, 5, 5, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 45, 45, 66, 66, 48, 66, 66, 48, 38, 38, 38, 38, 38, 29, 29, 26, 23, 23, 38, 38, 17, 17, 26, 44, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 82, 27, 25, 23, 14, 14, 11, 8, 4, 2, 2, 2, 21, 21, 12, 11, 11, 11, 11, 8, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 23, 23, 23, 23, 23, 22, 22, 21, 16, 23, 23, 11, 6, 3, 3, 3, 3, 4, 2, 2, 3, 3, 2, 1, 24, 24, 10, 10, 9, 9, 8, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 4, 2, 20, 20, 17, 21, 21, 15 +}); + +constexpr auto GROUP_PRO_TYPE = std::to_array({ + 0, 0, 0, 0, 0, 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, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 1, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 3, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 0, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4, 1, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 1, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 0, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 3, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 0, 0, 0, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 3, 0, 4, 4, 0, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 1, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 1, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 0, 0, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 3, 4, 4, 0, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 3, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 1, 1, 4, 4, 4, 4, 3, 0, 4, 1, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 2, 4, 4, 4, 4, 1, 3, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 0, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 1, 2, 1, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 1, 1, 1, 1, 1, 4, 4, 4, 1, 4, 4, 1, 4, 4, 4, 4, 4, 1, 4, 4, 1, 4, 4, 1, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 1, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 1, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 3, 4, 4, 1, 1, 1, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 1, 1, 1 +}); + +constexpr auto GROUP_PRO_SEED = std::to_array({ + 0x000000000, 0x000000003, 0x00000000F, 0x00000003F, 0x0000000FF, 0x0000003FF, 0x000000FFF, 0x000003FFF, 0x00000FFFF, 0x00003FFFF, 0x0000FFFFF, 0x0003FFFFF, 0x000FFFFFF, 0x003FFFFFF, 0x00FFFFFFF, 0x000000004, 0x00000001C, 0x00000007C, 0x00000037C, 0x0000007FC, 0x000001FFC, 0x000007FFC, 0x000037FFC, 0x00007FFFC, 0x0001FFFFC, 0x0007FFFFC, 0x0037FFFFC, 0x007FFFFFC, 0x43FF4FFFC, 0x43F4FFFFC, 0x034FFFFFC, 0x000000200, 0x00000020C, 0x00000023C, 0x0000002FC, 0x000000BFC, 0x000002FFC, 0x00000BFFC, 0x00002FFFC, 0x0000BFFFC, 0x0002FFFFC, 0x000BFFFFC, 0x002FFFFFC, 0x00BFFFFFC, 0x43FFF2FFC, 0x000000050, 0x000000350, 0x0000005F0, 0x000001DF0, 0x000005FF0, 0x000035FF0, 0x00005FFF0, 0x0001DFFF0, 0x0005FFFF0, 0x0035FFFF0, 0x10F53FFF0, 0x005FFFFF0, 0x43FF47FF0, 0x43FF4FDF0, 0x43F4FFDF0, 0x43F4DFFF0, 0x0347FFFF0, 0x034FDFFF0, 0x034FFFDF0, 0x41FD3FFF0, 0x437D3FFF0, 0x03F53FFF0, 0x03FFF53F0, 0x43F53FFF0, 0x43FFF53F0, 0x41D3FFFF0, 0x4353FFFF0, 0x13FFF53F0, 0x53FFF53F0, 0x13F53FFF0, 0x4F4D3FFF0, 0x43F4FDFF0, 0x10F5FFFF0, 0x000000210, 0x000000270, 0x000000B70, 0x000001BF0, 0x000006FF0, 0x000027FF0, 0x00006FFF0, 0x0001BFFF0, 0x0006FFFF0, 0x0027FFFF0, 0x43F4CBFF0, 0x43FF48FF0, 0x43FF4E3F0, 0x438D3FFF0, 0x43FFF2730, 0x006FFFFF0, 0x43F4BFFF0, 0x43F4FEFF0, 0x034BFFFF0, 0x034EFFFF0, 0x034FBFFF0, 0x034FEFFF0, 0x43FF4FBF0, 0x43FF63FF0, 0x43ED3FFF0, 0x43F4EFFF0, 0x43F4FBFF0, 0x43FF4EFF0, 0x43FF78FF0, 0x41FFCBFF0, 0x437FCBFF0, 0x43FFF2FD0, 0x53FFF6CF0, 0x03FF78FF0, 0x43BD3FFF0, 0x43F7CEFF0, 0x43FFF27F0, 0x43FFFE730, 0x4F4FCBFF0, 0x4F8D3FFF0, 0x43FF4BFF0, 0x43FF7E3F0, 0x4FF4CBFF0, 0x03FF7E3F0, 0x13F7CEFF0, 0x43F7CBFF0, 0x4FFF48FF0, 0x4FFF4E3F0, 0x13F7CBFF0, 0x438DFFFF0, 0x4FFFF2730, 0x000000A00, 0x000000A30, 0x000000AF0, 0x000002BF0, 0x00000AFF0, 0x00002BFF0, 0x0000AFFF0, 0x0002BFFF0, 0x000AFFFF0, 0x002BFFFF0, 0x00AFFFFF0, 0x43EFCBFF0, 0x43FBCBFF0, 0x43BFCEFF0, 0x43BFCBFF0, 0x000000540, 0x000001D40, 0x0000057C0, 0x0000357C0, 0x000057FC0, 0x0001D7FC0, 0x00057FFC0, 0x00357FFC0, 0x00FDD4FC0, 0x10F51FFC0, 0x10F53F7C0, 0x034FD4FC0, 0x43F4D4FC0, 0x0057FFFC0, 0x03477FFC0, 0x0347FF7C0, 0x034FDF7C0, 0x41FD1FFC0, 0x41FD3F7C0, 0x437D1FFC0, 0x437D3F7C0, 0x03F51FFC0, 0x03F53F7C0, 0x41D3FF7C0, 0x4353FF7C0, 0x43F51FFC0, 0x43F53F7C0, 0x43FF47DC0, 0x43FF47F40, 0x41D37FFC0, 0x43537FFC0, 0x43F4DFDC0, 0x43F4DFF40, 0x13F51FFC0, 0x13F53F7C0, 0x43FF477C0, 0x43FF4DF40, 0x4F4D1FFC0, 0x4F4D3F7C0, 0x43F4DF7C0, 0x43F4F7F40, 0x00FDD7FC0, 0x03F7D4FC0, 0x03FDD4FC0, 0x13FDD4FC0, 0x41FFD4FC0, 0x437FD4FC0, 0x51FFD4FC0, 0x03FFF51C0, 0x03FFF5340, 0x04FFD4FC0, 0x13FFF51C0, 0x41D4FFFC0, 0x4354FFFC0, 0x43F4FFD40, 0x43FF4FD40, 0x43FF54FC0, 0x43FFF51C0, 0x43FFF5340, 0x53FFF51C0, 0x034FFFD40, 0x0354FFFC0, 0x03FF54FC0, 0x04D4FFFC0, 0x0F4FD4FC0, 0x43F7D4FC0, 0x4534FFFC0, 0x4F4FD4FC0, 0x034FD7FC0, 0x037FD4FC0, 0x13F7D4FC0, 0x43F4D7FC0, 0x43F4FD7C0, 0x43F4FDDC0, 0x43F4FDF40, 0x4FF4D4FC0, 0x57CFD4FC0, 0x41D3F7FC0, 0x4353F7FC0, 0x10F57FFC0, 0x10F5FF7C0, 0x10F5DFFC0, 0x10F5FFDC0, 0x000001840, 0x0000019C0, 0x000006DC0, 0x0000277C0, 0x00005BFC0, 0x00019FFC0, 0x0005BFFC0, 0x10F523FC0, 0x43F4C9CC0, 0x00277FFC0, 0x434D8FFC0, 0x438D1FFC0, 0x438D3F7C0, 0x41FD23FC0, 0x41FD38FC0, 0x437D23FC0, 0x437D38FC0, 0x41D32FFC0, 0x43532FFC0, 0x03F523FC0, 0x03F538FC0, 0x43F4CBF40, 0x43F523FC0, 0x43F538FC0, 0x41FFC9CC0, 0x437FC9CC0, 0x0214FFFC0, 0x10F53EFC0, 0x4184FFFC0, 0x43FF48F40, 0x43FF49CC0, 0x43FF4E1C0, 0x43FF583C0, 0x03FF583C0, 0x10F53BFC0, 0x13F523FC0, 0x13F538FC0, 0x43F4C9FC0, 0x43F4F9CC0, 0x43F7C9CC0, 0x4F4D23FC0, 0x4F4D38FC0, 0x4F4FC9CC0, 0x10F52FFC0, 0x13F7C9CC0, 0x4FF4C9CC0, 0x005BFFFC0, 0x43F4BF7C0, 0x43F49FFC0, 0x0346FFFC0, 0x0347BFFC0, 0x034FBF7C0, 0x034FEFDC0, 0x43ED1FFC0, 0x43ED3F7C0, 0x034F9FFC0, 0x034FE7FC0, 0x02FFD4FC0, 0x41D2FFFC0, 0x4352FFFC0, 0x43EFD4FC0, 0x43F4EFDC0, 0x43FF46FC0, 0x43FF4F9C0, 0x43FF61FC0, 0x43FF63DC0, 0x43F4FEDC0, 0x03BFD4FC0, 0x43F4DBFC0, 0x43F4E7FC0, 0x43FBD4FC0, 0x41D3FBFC0, 0x434DBFFC0, 0x4353FBFC0, 0x43BD1FFC0, 0x43BD3F7C0, 0x4F8D1FFC0, 0x4F8D3F7C0, 0x0347FBFC0, 0x0349FFFC0, 0x034BFFF40, 0x034EFFDC0, 0x03F2FDDC0, 0x41FD3EFC0, 0x41FD8FFC0, 0x437D3EFC0, 0x437D8FFC0, 0x03F27FDC0, 0x10FEFDDC0, 0x12FFD4FC0, 0x43F63FDC0, 0x53FBD4FC0, 0x034BF7FC0, 0x034FDBFC0, 0x03F53EFC0, 0x03F58FFC0, 0x10FEFFD40, 0x41B4FFFC0, 0x41D3BFFC0, 0x4353BFFC0, 0x43F53EFC0, 0x43F58FFC0, 0x550FEFFC0, 0x13EFD4FC0, 0x41FD3BFC0, 0x41FDE3FC0, 0x437D3BFC0, 0x437DE3FC0, 0x53EFD4FC0, 0x0347EFFC0, 0x034BFFDC0, 0x034DFBFC0, 0x034EFFF40, 0x03F7F9CC0, 0x03FDDB3C0, 0x10F6FFDC0, 0x13FDF9CC0, 0x41D3EFFC0, 0x41FFCBF40, 0x4353EFFC0, 0x437FCBF40, 0x51FFDB3C0, 0x51FFF9CC0, 0x02D4FFFC0, 0x03F2FFD40, 0x03F53BFC0, 0x03F5E3FC0, 0x08D4FFFC0, 0x10FEFD7C0, 0x12D4FFFC0, 0x43F4FBF40, 0x43F53BFC0, 0x43F5E3FC0, 0x43FFF2740, 0x453F2FFC0, 0x4634FFFC0, 0x41FFC9FC0, 0x41FFF9CC0, 0x437FC9FC0, 0x437FF9CC0, 0x03F2FD7C0, 0x13F53EFC0, 0x13F58FFC0, 0x41DF3BFC0, 0x435F3BFC0, 0x43FF49FC0, 0x43FF4BF40, 0x43FF4EDC0, 0x43FF58FC0, 0x43FF5B3C0, 0x43FF78F40, 0x43FF79CC0, 0x43FF7E1C0, 0x47D32FFC0, 0x4DD32FFC0, 0x4F4D3EFC0, 0x4F4D8FFC0, 0x4F4FCBF40, 0x4F532FFC0, 0x41FD2FFC0, 0x41FDF8FC0, 0x437D2FFC0, 0x437DF8FC0, 0x034EFF7C0, 0x035F3BFC0, 0x0378FFF40, 0x037DE3FC0, 0x03F27F7C0, 0x03F52FFC0, 0x03F5F8FC0, 0x03FE73F40, 0x03FF58FC0, 0x03FF5B3C0, 0x03FF78F40, 0x03FF79CC0, 0x03FF7E1C0, 0x04FDE3FC0, 0x0FB3D4FC0, 0x0FF523FC0, 0x0FF538FC0, 0x10F6FFF40, 0x13F53BFC0, 0x13F5E3FC0, 0x1FF523FC0, 0x43BFD4FC0, 0x43F4EDFC0, 0x43F4F9FC0, 0x43F52FFC0, 0x43F5F8FC0, 0x43F63FF40, 0x43F6CF7C0, 0x43F7C9FC0, 0x43F7CBF40, 0x43F7CEDC0, 0x43F7DB3C0, 0x43F7F9CC0, 0x47FD23FC0, 0x47FD38FC0, 0x4D84FFFC0, 0x4DFD23FC0, 0x4DFD38FC0, 0x4F4D3BFC0, 0x4F4DE3FC0, 0x4F4FC9FC0, 0x4F4FF9CC0, 0x4F7D23FC0, 0x4F7D38FC0, 0x4FF4CBF40, 0x4FF523FC0, 0x4FF538FC0, 0x57CFF9CC0, 0x41DF2FFC0, 0x435F2FFC0, 0x034BFF7C0, 0x034EDFFC0, 0x035F2FFC0, 0x0378F7FC0, 0x037DF8FC0, 0x037E3FF40, 0x037FDB3C0, 0x037FF9CC0, 0x04FDF8FC0, 0x0FF7C9CC0, 0x0FFF583C0, 0x10F5BFFC0, 0x10F5EFFC0, 0x13F52FFC0, 0x13F5F8FC0, 0x13F6CF7C0, 0x13F7C9FC0, 0x13F7CBF40, 0x13F7CEDC0, 0x13F7DB3C0, 0x13F7F9CC0, 0x1FF7C9CC0, 0x438D7FFC0, 0x438DDFFC0, 0x438DF7FC0, 0x438DFF7C0, 0x438DFFDC0, 0x438DFFF40, 0x43F4B7FC0, 0x47FFC9CC0, 0x4DFFC9CC0, 0x4F4D2FFC0, 0x4F4DF8FC0, 0x4F7FC9CC0, 0x4FF4C9FC0, 0x4FF4F9CC0, 0x4FF7C9CC0, 0x4FFF48F40, 0x4FFF49CC0, 0x4FFF4E1C0, 0x4FFF583C0, 0x57CFDB3C0, 0x0217FFFC0, 0x4187FFFC0, 0x000000A40, 0x000003A40, 0x000006BC0, 0x000026FC0, 0x00006BFC0, 0x0001AFFC0, 0x0006BFFC0, 0x43ED02FC0, 0x43FF488C0, 0x438D23FC0, 0x438D38FC0, 0x0026FFFC0, 0x43ED0EFC0, 0x43F48BFC0, 0x43F4CAFC0, 0x43EFC9CC0, 0x43FF4B8C0, 0x43FBC9CC0, 0x10F78EFC0, 0x43ED23FC0, 0x43ED38FC0, 0x438D3EFC0, 0x438D8FFC0, 0x43FF48BC0, 0x43FF4A3C0, 0x43FF623C0, 0x438D3BFC0, 0x438DE3FC0, 0x43BD23FC0, 0x43BD38FC0, 0x4F8D23FC0, 0x4F8D38FC0, 0x438D2FFC0, 0x438DF8FC0, 0x43BFC9CC0, 0x4FFF488C0, 0x006BFFFC0, 0x41BF2FFC0, 0x41EF2FFC0, 0x034BBFFC0, 0x034EEFFC0, 0x034FAFFC0, 0x436F2FFC0, 0x437F8BFC0, 0x43EFCBF40, 0x43F4AFFC0, 0x506BFFFC0, 0x43FBCBF40, 0x43F4EEFC0, 0x4F4B2FFC0, 0x4F4ECBFC0, 0x034AFFFC0, 0x034BEFFC0, 0x034BFBFC0, 0x034EBFFC0, 0x034EFEFC0, 0x034FEBFC0, 0x43F4BBFC0, 0x43F4BEFC0, 0x43F4FAFC0, 0x43F4FEBC0, 0x436F3BFC0, 0x060FFBFC0, 0x43ED3EFC0, 0x43ED8FFC0, 0x43EFC9FC0, 0x43EFF9CC0, 0x43F4EBFC0, 0x43FF4EBC0, 0x43FF63BC0, 0x43FF68FC0, 0x437B2FFC0, 0x43FBC9FC0, 0x43FBF9CC0, 0x438EFFDC0, 0x53FBDB3C0, 0x53FBF9CC0, 0x53FFB9CC0, 0x53FFF68C0, 0x4FED0EFC0, 0x03FB63FC0, 0x03FF68FC0, 0x13FB63FC0, 0x43A4FFFC0, 0x43ED3BFC0, 0x43EDE3FC0, 0x43F78EFC0, 0x43F7CEBC0, 0x43FFFA4C0, 0x4F633BFC0, 0x4FF48BFC0, 0x4FF4CAFC0, 0x53EFF9CC0, 0x43BD3EFC0, 0x43BD8FFC0, 0x43FF4AFC0, 0x43FF4BBC0, 0x43FF62FC0, 0x43FF6E3C0, 0x43FF78BC0, 0x43FF7A3C0, 0x4F8D3EFC0, 0x4F8D8FFC0, 0x53FFB2DC0, 0x53EFDB3C0, 0x02FDE3FC0, 0x03FB78FC0, 0x03FE78FC0, 0x03FF6E3C0, 0x03FF78BC0, 0x03FF7A3C0, 0x08FDE3FC0, 0x10F7BEFC0, 0x12DF3BFC0, 0x13E73BFC0, 0x13F78EFC0, 0x13F7CEBC0, 0x13FBF9CC0, 0x438EFFF40, 0x43BD3BFC0, 0x43BDE3FC0, 0x43ED2FFC0, 0x43EDF8FC0, 0x43F6CBFC0, 0x43F78BFC0, 0x43F7CAFC0, 0x43F7CBBC0, 0x43F7E2FC0, 0x4F8D3BFC0, 0x4F8DE3FC0, 0x4FBD23FC0, 0x4FBD38FC0, 0x4FED23FC0, 0x4FED38FC0, 0x4FFF4B8C0, 0x57CFF8BC0, 0x02FDF8FC0, 0x08FDF8FC0, 0x0FB3DB3C0, 0x12DF2FFC0, 0x13E72FFC0, 0x13F6CBFC0, 0x13F78BFC0, 0x13F7CAFC0, 0x13F7CBBC0, 0x13F7E2FC0, 0x438DBFFC0, 0x438DEFFC0, 0x438DFBFC0, 0x438DFEFC0, 0x43BD2FFC0, 0x43BDF8FC0, 0x43BECF7C0, 0x43BFC9FC0, 0x43BFCBF40, 0x43BFCEDC0, 0x43BFDB3C0, 0x43BFF9CC0, 0x4F8D2FFC0, 0x4F8DF8FC0, 0x4FBFC9CC0, 0x4FEFC9CC0, 0x4FFBC9CC0, 0x4FFEC9CC0, 0x4FFF48BC0, 0x4FFF4A3C0, 0x4FFF623C0, 0x000002A00, 0x000002AC0, 0x00000ABC0, 0x00002AFC0, 0x0000ABFC0, 0x0002AFFC0, 0x000ABFFC0, 0x002AFFFC0, 0x438F8EFC0, 0x00ABFFFC0, 0x43EFCAFC0, 0x43EF8BFC0, 0x43EECBFC0, 0x43FBCAFC0, 0x43FFB2BC0, 0x43FFF8AC0, 0x53FFB8BC0, 0x43EB2FFC0, 0x43FFF2AC0, 0x4F8F8EFC0, 0x53EFF8BC0, 0x438FBEFC0, 0x43AF3BFC0, 0x43BB3BFC0, 0x43BF8EFC0, 0x43BFCEBC0, 0x43AF2FFC0, 0x43BB2FFC0, 0x43BECBFC0, 0x43BF8BFC0, 0x43BFCAFC0, 0x43BFCBBC0, 0x43BFE2FC0, 0x000005500, 0x000035500, 0x000055F00, 0x0001D5F00, 0x00055FF00, 0x00355FF00, 0x00FDD4700, 0x00FDD4D00, 0x10F51F700, 0x007753F00, 0x034753F00, 0x034D53F00, 0x034FD4700, 0x034FD4D00, 0x10F51DF00, 0x41D353F00, 0x435353F00, 0x43F4D4700, 0x43F4D4D00, 0x10F53F500, 0x10F553F00, 0x550F53F00, 0x0055FFF00, 0x00F7F7500, 0x03477FD00, 0x0347DFD00, 0x434D7F700, 0x41FD1F700, 0x41FD1FD00, 0x437D1F700, 0x437D1FD00, 0x03477F700, 0x0347F7D00, 0x41D47FF00, 0x41D4FDF00, 0x43547FF00, 0x4354FDF00, 0x03F51F700, 0x03F51FD00, 0x41D37F700, 0x41D37FD00, 0x43537F700, 0x43537FD00, 0x43F51F700, 0x43F51FD00, 0x0347FF500, 0x034FDF500, 0x03547FF00, 0x0354FDF00, 0x04D47FF00, 0x04D4FDF00, 0x45347FF00, 0x4534FDF00, 0x41FD1DF00, 0x41FD37D00, 0x437D1DF00, 0x437D37D00, 0x00FDD5F00, 0x00FDD7700, 0x00FDD7D00, 0x03F51DF00, 0x03F537D00, 0x13F51F700, 0x13F51FD00, 0x41D37DF00, 0x41D3DFD00, 0x43537DF00, 0x4353DFD00, 0x43F51DF00, 0x43F537D00, 0x4F4D1F700, 0x4F4D1FD00, 0x03F7D4700, 0x03F7D4D00, 0x03FDD4700, 0x03FDD4D00, 0x13FDD4700, 0x13FDD4D00, 0x41FFD4700, 0x41FFD4D00, 0x437FD4700, 0x437FD4D00, 0x51FFD4700, 0x51FFD4D00, 0x0077F7D00, 0x04DF53F00, 0x04F753F00, 0x41FD3F500, 0x41FD53F00, 0x434DDFD00, 0x437D3F500, 0x437D53F00, 0x43F4DF500, 0x43F4F7500, 0x03477DF00, 0x034DF7D00, 0x04FFD4700, 0x04FFD4D00, 0x41D3FF500, 0x4353FF500, 0x43FF47500, 0x43FF4D500, 0x43FF54700, 0x43FF54D00, 0x03F53F500, 0x03F553F00, 0x053F53F00, 0x43F53F500, 0x43F553F00, 0x453F53F00, 0x03FF54700, 0x03FF54D00, 0x0F4753F00, 0x0F4D53F00, 0x0F4FD4700, 0x0F4FD4D00, 0x13F51DF00, 0x13F537D00, 0x41DF53F00, 0x435F53F00, 0x43F7D4700, 0x43F7D4D00, 0x4F4D1DF00, 0x4F4D37D00, 0x4F4FD4700, 0x4F4FD4D00, 0x00775FF00, 0x034FD5F00, 0x034FD7700, 0x034FD7D00, 0x035F53F00, 0x037753F00, 0x037D53F00, 0x04FD53F00, 0x13F53F500, 0x13F553F00, 0x43F4D5F00, 0x43F4D7700, 0x43F4D7D00, 0x43F4FD500, 0x47D353F00, 0x4DD353F00, 0x4F4D3F500, 0x4F4D53F00, 0x4F5353F00, 0x553F53F00, 0x03475FF00, 0x034D5FF00, 0x037FD4700, 0x037FD4D00, 0x13F7D4700, 0x13F7D4D00, 0x41D35FF00, 0x41D3F5F00, 0x41D3F7700, 0x41D3F7D00, 0x43535FF00, 0x4353F5F00, 0x4353F7700, 0x4353F7D00, 0x4FF4D4700, 0x4FF4D4D00, 0x57CFD4700, 0x57CFD4D00, 0x10F57DF00, 0x10F57F700, 0x10F57FD00, 0x10F5DDF00, 0x10F55FF00, 0x10F5DF700, 0x10F5FF500, 0x550F5FF00, 0x000021500, 0x000027500, 0x00005B700, 0x00019DF00, 0x00056FF00, 0x434D23D00, 0x41D327300, 0x435327300, 0x10F523D00, 0x10F527300, 0x00275FF00, 0x434D87F00, 0x023753F00, 0x436353F00, 0x4F4853F00, 0x00ED53F00, 0x02147FF00, 0x0214FDF00, 0x41847FF00, 0x4184FDF00, 0x438D1F700, 0x438D1FD00, 0x10F51BF00, 0x10F53E700, 0x43FF46100, 0x43FF49100, 0x434D2FD00, 0x41D32FD00, 0x41D48FF00, 0x41D4E3F00, 0x43532FD00, 0x43548FF00, 0x4354E3F00, 0x438D1DF00, 0x438D37D00, 0x0347E7300, 0x0348F7700, 0x034D6CF00, 0x034E1F700, 0x41FD23D00, 0x41FD27300, 0x41FD38700, 0x41FD60F00, 0x434DE3D00, 0x437D23D00, 0x437D27300, 0x437D38700, 0x437D60F00, 0x0348FF500, 0x034E3F500, 0x03548FF00, 0x0354E3F00, 0x03F273500, 0x03F523D00, 0x03F527300, 0x03F538700, 0x03F560F00, 0x04D48FF00, 0x04D4E3F00, 0x060F53F00, 0x10F6CF500, 0x438D3F500, 0x438D53F00, 0x43F4C9D00, 0x43F523D00, 0x43F527300, 0x43F538700, 0x43F560F00, 0x43F60F500, 0x45348FF00, 0x4534E3F00, 0x453F27300, 0x550F6CF00, 0x41D327F00, 0x41D3E7300, 0x41DF27300, 0x435327F00, 0x4353E7300, 0x435F27300, 0x0348F5F00, 0x034E1FD00, 0x035F27300, 0x037D60F00, 0x04FD60F00, 0x10F527F00, 0x10F52FD00, 0x10F53B700, 0x10F56CF00, 0x13F523D00, 0x13F527300, 0x13F538700, 0x13F560F00, 0x47D327300, 0x4DD327300, 0x4F4D23D00, 0x4F4D27300, 0x4F4D38700, 0x4F4D60F00, 0x4F5327300, 0x0056FFF00, 0x0346FDF00, 0x0347BF700, 0x41D2FDF00, 0x4352FDF00, 0x434D9FF00, 0x41D27FF00, 0x43527FF00, 0x03467FF00, 0x034D9FF00, 0x034F9DF00, 0x034FE7D00, 0x0077EFD00, 0x41B47FF00, 0x41B4FDF00, 0x0346DFF00, 0x03479FF00, 0x034F9FD00, 0x034FE7700, 0x43ED1F700, 0x43ED1FD00, 0x43F49DF00, 0x02DF53F00, 0x41BF53F00, 0x41FD1BF00, 0x41FD3E700, 0x41FD87F00, 0x41FD8F700, 0x437D1BF00, 0x437D3E700, 0x437D87F00, 0x437D8F700, 0x02D47FF00, 0x02D4FDF00, 0x02FFD4700, 0x02FFD4D00, 0x03B753F00, 0x08D47FF00, 0x08D4FDF00, 0x12D47FF00, 0x12D4FDF00, 0x41D3BF700, 0x41EF53F00, 0x4353BF700, 0x43EFD4700, 0x43EFD4D00, 0x43F4DB700, 0x43F4DED00, 0x46347FF00, 0x4634FDF00, 0x41D3FB700, 0x4353FB700, 0x03F51BF00, 0x03F53E700, 0x03F587F00, 0x03F58F700, 0x43F49F700, 0x43F49FD00, 0x43F51BF00, 0x43F53E700, 0x43F587F00, 0x43F58F700, 0x03BFD4700, 0x03BFD4D00, 0x41D36FF00, 0x41D39FF00, 0x43536FF00, 0x43539FF00, 0x43FBD4700, 0x43FBD4D00, 0x0347FB700, 0x0349FFD00, 0x0077E7F00, 0x03ED53F00, 0x12F753F00, 0x12FD53F00, 0x434DB7F00, 0x437B53F00, 0x43BD1F700, 0x43BD1FD00, 0x43ED1DF00, 0x43ED37D00, 0x43F4E7700, 0x43F4E7D00, 0x43FF46700, 0x43FF46D00, 0x43FF61700, 0x43FF61D00, 0x4F8D1F700, 0x4F8D1FD00, 0x51EF53F00, 0x51FB53F00, 0x03476FF00, 0x0349DFF00, 0x034BF7D00, 0x034FDB700, 0x12FFD4700, 0x12FFD4D00, 0x41D8FF700, 0x4358FF700, 0x53FBD4700, 0x53FBD4D00, 0x03F277700, 0x04CBF7700, 0x08F753F00, 0x436F53F00, 0x43F61F700, 0x41D4FBF00, 0x41D63FF00, 0x4354FBF00, 0x43563FF00, 0x4D847FF00, 0x4D84FDF00, 0x02375FF00, 0x43635FF00, 0x04BF53F00, 0x10F7B7D00, 0x10FEFD500, 0x13ED53F00, 0x13F51BF00, 0x13F53E700, 0x13F587F00, 0x13F58F700, 0x43ED3F500, 0x43ED53F00, 0x43F4BF500, 0x4F485FF00, 0x4F4D1BF00, 0x4F4D3E700, 0x4F4D87F00, 0x4F4D8F700, 0x51BF53F00, 0x550FEFD00, 0x13EFD4700, 0x13EFD4D00, 0x53EFD4700, 0x53EFD4D00, 0x00ED5FF00, 0x0347EFD00, 0x0349FF700, 0x034DFB700, 0x0358FF700, 0x04C9FF700, 0x04DFE7300, 0x04F76CF00, 0x10F6DF700, 0x41FFC9D00, 0x434DEFD00, 0x437FC9D00, 0x034FBF500, 0x0354FBF00, 0x03563FF00, 0x0363FF500, 0x03F2FD500, 0x04CBFF500, 0x04D4FBF00, 0x04D63FF00, 0x41D3EFD00, 0x41D4EFF00, 0x41D78FF00, 0x4353EFD00, 0x4354EFF00, 0x43578FF00, 0x43BD1DF00, 0x43BD37D00, 0x43FF49D00, 0x43FF58700, 0x4534FBF00, 0x45363FF00, 0x453F2FD00, 0x454CBFF00, 0x4F8D1DF00, 0x4F8D37D00, 0x0347E7F00, 0x034BF7700, 0x034D6FF00, 0x037E1F700, 0x0F47E7300, 0x0F48F7700, 0x0F4D6CF00, 0x0F4E1F700, 0x41FD27F00, 0x41FD2FD00, 0x41FD3B700, 0x41FD63F00, 0x41FD6CF00, 0x41FDE3D00, 0x41FDE7300, 0x41FDF8700, 0x437D27F00, 0x437D2FD00, 0x437D3B700, 0x437D63F00, 0x437D6CF00, 0x437DE3D00, 0x437DE7300, 0x437DF8700, 0x02F753F00, 0x02FD53F00, 0x034EFF500, 0x0354EFF00, 0x03578FF00, 0x0378FF500, 0x03F275F00, 0x03F27F500, 0x03F527F00, 0x03F52FD00, 0x03F53B700, 0x03F563F00, 0x03F56CF00, 0x03F5E3D00, 0x03F5E7300, 0x03F5F8700, 0x03FE73500, 0x03FF58700, 0x04CBF5F00, 0x04D4EFF00, 0x04D78FF00, 0x063F53F00, 0x06CF53F00, 0x07D48FF00, 0x07D4E3F00, 0x08FD53F00, 0x0F48FF500, 0x0F4E3F500, 0x0F548FF00, 0x0F54E3F00, 0x10F6DFD00, 0x10F6FF500, 0x12DF53F00, 0x13E753F00, 0x13FE73500, 0x43BD3F500, 0x43BD53F00, 0x43F4ED700, 0x43F4EDD00, 0x43F4F9D00, 0x43F527F00, 0x43F52FD00, 0x43F53B700, 0x43F563F00, 0x43F56CF00, 0x43F5E3D00, 0x43F5E7300, 0x43F5F8700, 0x43F61FD00, 0x43F63F500, 0x43F6CF500, 0x43F7C9D00, 0x4534EFF00, 0x45378FF00, 0x453F27F00, 0x453FE7300, 0x45F48FF00, 0x45F4E3F00, 0x47D32FD00, 0x47D48FF00, 0x47D4E3F00, 0x4DCB53F00, 0x4DD32FD00, 0x4DD48FF00, 0x4DD4E3F00, 0x4F4B53F00, 0x4F4FC9D00, 0x4F532FD00, 0x4F548FF00, 0x4F54E3F00, 0x4F6353F00, 0x4F8D3F500, 0x4F8D53F00, 0x550F6FF00, 0x553FE7300, 0x578F53F00, 0x57CB53F00, 0x0FB3D4700, 0x0FB3D4D00, 0x41D3B7F00, 0x41D3E7F00, 0x41D4BFF00, 0x41D7E3F00, 0x41D8FFD00, 0x41DB3DF00, 0x41DF27F00, 0x41DF2FD00, 0x41DF3B700, 0x41DF6CF00, 0x41DFE7300, 0x4353B7F00, 0x4353E7F00, 0x4354BFF00, 0x4357E3F00, 0x4358FFD00, 0x435B3DF00, 0x435F27F00, 0x435F2FD00, 0x435F3B700, 0x435F6CF00, 0x435FE7300, 0x43BFD4700, 0x43BFD4D00, 0x4FFF46100, 0x4FFF49100, 0x0349FDF00, 0x034BF5F00, 0x034BFF500, 0x034EDDF00, 0x034EDF700, 0x034EDFD00, 0x0354BFF00, 0x0357E3F00, 0x0358FFD00, 0x035B3DF00, 0x035F27F00, 0x035F2FD00, 0x035F3B700, 0x035F6CF00, 0x035FE7300, 0x03776CF00, 0x0377E7300, 0x0378F5F00, 0x0378F7700, 0x0378F7D00, 0x0379CFD00, 0x037D63F00, 0x037D6CF00, 0x037DE3D00, 0x037DE7300, 0x037DF8700, 0x037E1FD00, 0x037E3F500, 0x04C9FDF00, 0x04D4BFF00, 0x04D7E3F00, 0x04F9CFD00, 0x04FD63F00, 0x04FD6CF00, 0x04FDE3D00, 0x04FDE7300, 0x04FDF8700, 0x060F5FF00, 0x07DF27300, 0x07FD60F00, 0x0F48F5F00, 0x0F4E1FD00, 0x0F5F27300, 0x0F7D60F00, 0x0FF273500, 0x0FF523D00, 0x0FF527300, 0x0FF538700, 0x0FF560F00, 0x10F56FF00, 0x10F57BF00, 0x10F59FF00, 0x10F5BF700, 0x10F5BFD00, 0x10F5EFD00, 0x13F527F00, 0x13F52FD00, 0x13F53B700, 0x13F563F00, 0x13F56CF00, 0x13F5E3D00, 0x13F5E7300, 0x13F5F8700, 0x13F6CF500, 0x13F7C9D00, 0x1FF523D00, 0x1FF527300, 0x438D5FF00, 0x438D7DF00, 0x438D7F700, 0x438D7FD00, 0x438DDDF00, 0x438DDF700, 0x438DDFD00, 0x438DF5F00, 0x438DF7700, 0x438DF7D00, 0x438DFF500, 0x43F4B5F00, 0x43F4B7700, 0x43F4B7D00, 0x4534BFF00, 0x4537E3F00, 0x45FF27300, 0x47D327F00, 0x47D3E7300, 0x47DF27300, 0x47FD23D00, 0x47FD27300, 0x47FD38700, 0x47FD60F00, 0x4DD327F00, 0x4DD3E7300, 0x4DDF27300, 0x4DFD23D00, 0x4DFD27300, 0x4DFD38700, 0x4DFD60F00, 0x4F4D27F00, 0x4F4D2FD00, 0x4F4D3B700, 0x4F4D63F00, 0x4F4D6CF00, 0x4F4DE3D00, 0x4F4DE7300, 0x4F4DF8700, 0x4F5327F00, 0x4F53E7300, 0x4F5F27300, 0x4F7D23D00, 0x4F7D27300, 0x4F7D38700, 0x4F7D60F00, 0x4FF4C9D00, 0x4FF523D00, 0x4FF527300, 0x4FF538700, 0x4FF560F00, 0x4FF60F500, 0x553F6CF00, 0x0215FFF00, 0x02177FF00, 0x0217DFF00, 0x0217FDF00, 0x0217FF700, 0x0217FFD00, 0x4185FFF00, 0x41877FF00, 0x4187DFF00, 0x4187FDF00, 0x4187FF700, 0x4187FFD00, 0x41D2DFF00, 0x4352DFF00, 0x000006900, 0x000026700, 0x00005AF00, 0x00019BF00, 0x41840BF00, 0x10F522300, 0x0005AFF00, 0x41B40BF00, 0x43ED08700, 0x41843BF00, 0x41FD22300, 0x437D22300, 0x03F522300, 0x43F522300, 0x02148FF00, 0x0214E3F00, 0x41848FF00, 0x4184E3F00, 0x10F52E300, 0x10F522F00, 0x13F522300, 0x438D23D00, 0x438D27300, 0x438D38700, 0x438D60F00, 0x43F488D00, 0x4F4D22300, 0x10F528F00, 0x00267FF00, 0x434D8BF00, 0x43ED0E700, 0x41B43BF00, 0x43F4A3700, 0x41D22FF00, 0x41D32BF00, 0x43522FF00, 0x43532BF00, 0x41BF27300, 0x41FD2E300, 0x437D2E300, 0x41EF27300, 0x46343BF00, 0x03F52E300, 0x438D1BF00, 0x438D3E700, 0x438D87F00, 0x438D8F700, 0x43ED0B700, 0x43F52E300, 0x1FA053F00, 0x41B48FF00, 0x41B4E3F00, 0x437B27300, 0x51CECB700, 0x03F272D00, 0x41FD22F00, 0x41FD28F00, 0x41FD88F00, 0x436F27300, 0x437D22F00, 0x437D28F00, 0x437D88F00, 0x43F623700, 0x0214FBF00, 0x02163FF00, 0x4184FBF00, 0x41863FF00, 0x02D48FF00, 0x02D4E3F00, 0x03F278700, 0x03F522F00, 0x03F528F00, 0x03F588F00, 0x060F6CF00, 0x08D48FF00, 0x08D4E3F00, 0x10F53AF00, 0x10F6CBD00, 0x10F78E700, 0x10F798F00, 0x12D48FF00, 0x12D4E3F00, 0x13F52E300, 0x438ECF500, 0x43ED23D00, 0x43ED27300, 0x43ED38700, 0x43ED60F00, 0x43F48BD00, 0x43F4E9300, 0x43F522F00, 0x43F528F00, 0x43F588F00, 0x43F60BD00, 0x46348FF00, 0x4634E3F00, 0x4F4D2E300, 0x10F6E3700, 0x0214EFF00, 0x02178FF00, 0x4184EFF00, 0x41878FF00, 0x43FF60900, 0x10F58EF00, 0x02FD60F00, 0x08FD60F00, 0x0FF522300, 0x10F52BF00, 0x10F52EF00, 0x10F58BF00, 0x12DF27300, 0x13E727300, 0x13F522F00, 0x13F528F00, 0x13F588F00, 0x438D27F00, 0x438D2FD00, 0x438D3B700, 0x438D63F00, 0x438D6CF00, 0x438DE3D00, 0x438DE7300, 0x438DF8700, 0x43BD23D00, 0x43BD27300, 0x43BD38700, 0x43BD60F00, 0x43F4B8D00, 0x47FD22300, 0x4D848FF00, 0x4D84E3F00, 0x4DCB27300, 0x4DFD22300, 0x4F4B27300, 0x4F4D22F00, 0x4F4D28F00, 0x4F4D88F00, 0x4F6327300, 0x4F7D22300, 0x4F8D23D00, 0x4F8D27300, 0x4F8D38700, 0x4F8D60F00, 0x4FF522300, 0x0214BFF00, 0x0217E3F00, 0x4184BFF00, 0x4187E3F00, 0x1FF522300, 0x4FF488D00, 0x005AFFF00, 0x5069FFF00, 0x0077AFF00, 0x0346BFF00, 0x034FAF700, 0x434DBBF00, 0x47B43BF00, 0x03B73B700, 0x41EF3B700, 0x41BF2FD00, 0x02CBF7700, 0x03B2F7700, 0x41EF2FD00, 0x02CBFF500, 0x03B2FF500, 0x41D2BFF00, 0x4352BFF00, 0x43A47FF00, 0x43A4FDF00, 0x43F4AFD00, 0x452CBFF00, 0x453B2FF00, 0x00ED6FF00, 0x43ED1BF00, 0x43ED3E700, 0x43ED87F00, 0x43ED8F700, 0x41D3BBF00, 0x4353BBF00, 0x02DFE7300, 0x0346EFF00, 0x0347BBF00, 0x0349FBF00, 0x034BBF700, 0x034BBFD00, 0x034DBBF00, 0x034EEF700, 0x034EEFD00, 0x10F9FB700, 0x436F2FD00, 0x43F4BE700, 0x43F4FE900, 0x0346FBF00, 0x0347FAF00, 0x0349BFF00, 0x034BEFD00, 0x034DAFF00, 0x034EBF700, 0x034EFED00, 0x034FEBD00, 0x51CEFB700, 0x02BF53F00, 0x03AF53F00, 0x03F26F700, 0x03F2F9700, 0x10BBF7700, 0x10FAF7700, 0x10FEF9700, 0x41D2EFF00, 0x41D2FBF00, 0x41D3EBF00, 0x41D3FAF00, 0x434DAFF00, 0x4352EFF00, 0x4352FBF00, 0x4353EBF00, 0x4353FAF00, 0x43EB53F00, 0x43EFC9D00, 0x43F49BF00, 0x43F4DAF00, 0x43F63ED00, 0x43FA53F00, 0x0347EBF00, 0x0349EFF00, 0x034AFF700, 0x034AFFD00, 0x03B7E7300, 0x437F8BD00, 0x10BEDF700, 0x034FA7F00, 0x034FE6F00, 0x03F27ED00, 0x060BDFF00, 0x10BEFF500, 0x10F7A7F00, 0x10FBBF500, 0x41BF27F00, 0x41BFE7300, 0x41FD3AF00, 0x41FD8EF00, 0x41FDA3F00, 0x437D3AF00, 0x437D8EF00, 0x437DA3F00, 0x43F4E6F00, 0x43F62F700, 0x43FBC9D00, 0x550BEFF00, 0x550FBBF00, 0x10BBFF500, 0x10FAFF500, 0x41B4FBF00, 0x41B63FF00, 0x41D3AFF00, 0x41EF27F00, 0x41EFE7300, 0x4353AFF00, 0x46F43BF00, 0x550BBFF00, 0x550FAFF00, 0x4FF4A3700, 0x02CBF5F00, 0x0347AFF00, 0x034BE7F00, 0x034BEF700, 0x034DFAF00, 0x034EBFD00, 0x034F9BF00, 0x034FDAF00, 0x034FE9F00, 0x03B2F5F00, 0x03ED6CF00, 0x03F53AF00, 0x03F58EF00, 0x03F5A3F00, 0x03F7E9300, 0x03FDDA300, 0x060FFB700, 0x061CEFF00, 0x08CEFF500, 0x10B9FF700, 0x10F6BF700, 0x10F6FED00, 0x12F7E7300, 0x12FD6CF00, 0x13AF53F00, 0x13FDE9300, 0x437B2FD00, 0x438FB7D00, 0x43BD1BF00, 0x43BD3E700, 0x43BD87F00, 0x43BD8F700, 0x43F4EBD00, 0x43F53AF00, 0x43F58EF00, 0x43F5A3F00, 0x458CEFF00, 0x47D22FF00, 0x47D32BF00, 0x4DD22FF00, 0x4DD32BF00, 0x4F4B2FD00, 0x4F4ECBD00, 0x4F522FF00, 0x4F532BF00, 0x4F8D1BF00, 0x4F8D3E700, 0x4F8D87F00, 0x4F8D8F700, 0x51EF6CF00, 0x51EFE7300, 0x51FB6CF00, 0x51FBE7300, 0x51FEE7300, 0x51FF98F00, 0x51FFDA300, 0x51FFE9300, 0x53EB53F00, 0x02C9FF700, 0x08C9FF700, 0x08CEDF700, 0x08F76CF00, 0x10F6EF700, 0x41FFE9300, 0x436F3B700, 0x436F6CF00, 0x437FE9300, 0x438EDF700, 0x12BF53F00, 0x53FA53F00, 0x02D4FBF00, 0x02D63FF00, 0x03FD98F00, 0x08D4FBF00, 0x08D63FF00, 0x10BBF5F00, 0x10BEDFD00, 0x10FAF5F00, 0x12D4FBF00, 0x12D63FF00, 0x13EDE7300, 0x41B4EFF00, 0x41B78FF00, 0x41DE3BF00, 0x41DF3AF00, 0x435E3BF00, 0x435F3AF00, 0x437B27F00, 0x437BE7300, 0x43F4AF700, 0x43FF4E900, 0x43FF5A300, 0x43FF63900, 0x43FF66300, 0x43FF68D00, 0x43FF69300, 0x4634FBF00, 0x46363FF00, 0x51BFE7300, 0x41FD2BF00, 0x41FD2EF00, 0x41FD8BF00, 0x41FDB8F00, 0x41FDE2F00, 0x41FDE8F00, 0x436F27F00, 0x436FE7300, 0x437D2BF00, 0x437D2EF00, 0x437D8BF00, 0x437DB8F00, 0x437DE2F00, 0x437DE8F00, 0x51FECB700, 0x51FFB8D00, 0x03F9CB700, 0x10FEBF500, 0x550FEBF00, 0x0076BFF00, 0x02D4EFF00, 0x02D78FF00, 0x034EBDF00, 0x034EFE700, 0x035E3BF00, 0x035F3AF00, 0x0363BF700, 0x0368FFD00, 0x036D8FF00, 0x03778EF00, 0x0378EFD00, 0x037DA3F00, 0x03F27B700, 0x03F27E700, 0x03F52BF00, 0x03F52EF00, 0x03F58BF00, 0x03F5B8F00, 0x03F5E2F00, 0x03F5E8F00, 0x03FA4FD00, 0x03FB63D00, 0x03FB67300, 0x03FB78700, 0x03FE63D00, 0x03FE78700, 0x03FF5A300, 0x03FF66300, 0x03FF68D00, 0x03FF69300, 0x04ED8FF00, 0x04FDA3F00, 0x060F6FF00, 0x063F6CF00, 0x08CEDFD00, 0x08D4EFF00, 0x08D78FF00, 0x0BD48FF00, 0x0BD4E3F00, 0x0E8F53F00, 0x0ED48FF00, 0x0ED4E3F00, 0x0FA353F00, 0x0FF52E300, 0x10F6EFD00, 0x10F6FBD00, 0x10F79BF00, 0x10F7BE700, 0x12D4EFF00, 0x12D78FF00, 0x13F53AF00, 0x13F58EF00, 0x13F5A3F00, 0x13F9E7300, 0x13FB63D00, 0x13FB67300, 0x13FE2F500, 0x13FE78700, 0x1BD48FF00, 0x1BD4E3F00, 0x438EDFD00, 0x438EFF500, 0x43AF53F00, 0x43BB53F00, 0x43ED27F00, 0x43ED2FD00, 0x43ED3B700, 0x43ED63F00, 0x43ED6CF00, 0x43EDE3D00, 0x43EDE7300, 0x43EDF8700, 0x43F4BBD00, 0x43F4E9F00, 0x43F52BF00, 0x43F52EF00, 0x43F58BF00, 0x43F5B8F00, 0x43F5E2F00, 0x43F5E8F00, 0x43F62FD00, 0x43F63BD00, 0x43F68DF00, 0x43F6CBD00, 0x43F6CE700, 0x43F78BD00, 0x43F78E700, 0x43F798F00, 0x43F7CE900, 0x43F7DA300, 0x43F7E6300, 0x43F7E9300, 0x4634EFF00, 0x46378FF00, 0x46F48FF00, 0x46F4E3F00, 0x47B48FF00, 0x47B4E3F00, 0x47FD2E300, 0x4DB48FF00, 0x4DB4E3F00, 0x4DFD2E300, 0x4F4D3AF00, 0x4F4D8EF00, 0x4F4DA3F00, 0x4F4FE9300, 0x4F633B700, 0x4F636CF00, 0x4F7D2E300, 0x4F8ECF500, 0x4FF52E300, 0x51BF6CF00, 0x553FE2F00, 0x578FE7300, 0x57CBE7300, 0x1FA05FF00, 0x13EE37700, 0x13FE72D00, 0x0076EFF00, 0x03FDB8D00, 0x10B9FDF00, 0x10F6BFD00, 0x41B4BFF00, 0x41B7E3F00, 0x41DB2FF00, 0x41DE2FF00, 0x41DF2BF00, 0x41DF2EF00, 0x41DF8BF00, 0x435B2FF00, 0x435E2FF00, 0x435F2BF00, 0x435F2EF00, 0x435F8BF00, 0x4D84FBF00, 0x4D863FF00, 0x57CEE7300, 0x57CFE9300, 0x0FF272D00, 0x4FF623700, 0x1FA353F00, 0x1FF52E300, 0x58EF53F00, 0x0076FBF00, 0x02C9FDF00, 0x02D4BFF00, 0x02D7E3F00, 0x02F76CF00, 0x02F7E7300, 0x02F9CFD00, 0x02FD63F00, 0x02FD6CF00, 0x02FDE3D00, 0x02FDE7300, 0x02FDF8700, 0x034AFDF00, 0x034BBDF00, 0x034BFB700, 0x034BFE700, 0x034E9FF00, 0x034EDBF00, 0x035B2FF00, 0x035E2FF00, 0x035F2BF00, 0x035F2EF00, 0x035F8BF00, 0x0362FDF00, 0x0362FF700, 0x03639FF00, 0x0368DFF00, 0x036DE3F00, 0x036E3FD00, 0x036FE7300, 0x03778BF00, 0x0377E2F00, 0x0378BF700, 0x0378BFD00, 0x0378E7F00, 0x0379E3F00, 0x037A3FD00, 0x037DB8F00, 0x037DE2F00, 0x037DE8F00, 0x037E2FD00, 0x037E3BD00, 0x037F98F00, 0x037FDA300, 0x037FE6300, 0x037FE9300, 0x03FE72D00, 0x04EDE3F00, 0x04F9E3F00, 0x04FDB8F00, 0x04FDE2F00, 0x04FDE8F00, 0x063FE7300, 0x06CF6CF00, 0x08C9FDF00, 0x08D4BFF00, 0x08D7E3F00, 0x08F9CFD00, 0x08FD63F00, 0x08FD6CF00, 0x08FDE3D00, 0x08FDE7300, 0x08FDF8700, 0x0BDF27300, 0x0BFD60F00, 0x0EDF27300, 0x0EFD60F00, 0x0FB727300, 0x0FE727300, 0x0FF278700, 0x0FF522F00, 0x0FF528F00, 0x0FF588F00, 0x10F5AFF00, 0x10F5BBF00, 0x12D4BFF00, 0x12D7E3F00, 0x12DB3DF00, 0x12DF27F00, 0x12DF2FD00, 0x12DF3B700, 0x12DF6CF00, 0x12DFE7300, 0x13E63DF00, 0x13E727F00, 0x13E72FD00, 0x13E73B700, 0x13E76CF00, 0x13E7E7300, 0x13EE35F00, 0x13F52BF00, 0x13F52EF00, 0x13F58BF00, 0x13F5B8F00, 0x13F5E2F00, 0x13F5E8F00, 0x13F68DF00, 0x13F6CBD00, 0x13F6CE700, 0x13F78BD00, 0x13F78E700, 0x13F798F00, 0x13F7CE900, 0x13F7DA300, 0x13F7E6300, 0x13F7E9300, 0x13F9CB700, 0x1BDF27300, 0x1BFD60F00, 0x1FBD60F00, 0x1FF522F00, 0x438D6FF00, 0x438D7BF00, 0x438D9FF00, 0x438DB7F00, 0x438DBF700, 0x438DBFD00, 0x438DDBF00, 0x438DE7F00, 0x438DEFD00, 0x438DFB700, 0x438DFE700, 0x438DFED00, 0x43BD27F00, 0x43BD2FD00, 0x43BD3B700, 0x43BD63F00, 0x43BD6CF00, 0x43BDE3D00, 0x43BDE7300, 0x43BDF8700, 0x43BECF500, 0x43BFC9D00, 0x43F4A7F00, 0x43F6E3700, 0x4634BFF00, 0x4637E3F00, 0x46FF27300, 0x47BF27300, 0x47EF27300, 0x47FB27300, 0x47FD22F00, 0x47FD28F00, 0x47FD88F00, 0x4D84EFF00, 0x4D878FF00, 0x4DBF27300, 0x4DCB27F00, 0x4DCBE7300, 0x4DEF27300, 0x4DFB27300, 0x4DFD22F00, 0x4DFD28F00, 0x4DFD88F00, 0x4F4B27F00, 0x4F4BE7300, 0x4F4D2BF00, 0x4F4D2EF00, 0x4F4D8BF00, 0x4F4DB8F00, 0x4F4DE2F00, 0x4F4DE8F00, 0x4F6327F00, 0x4F63E7300, 0x4F6F27300, 0x4F7B27300, 0x4F7D22F00, 0x4F7D28F00, 0x4F7D88F00, 0x4F8D27F00, 0x4F8D2FD00, 0x4F8D3B700, 0x4F8D63F00, 0x4F8D6CF00, 0x4F8DE3D00, 0x4F8DE7300, 0x4F8DF8700, 0x4FBD23D00, 0x4FBD27300, 0x4FBD38700, 0x4FBD60F00, 0x4FED23D00, 0x4FED27300, 0x4FED38700, 0x4FED60F00, 0x4FF48BD00, 0x4FF4E9300, 0x4FF522F00, 0x4FF528F00, 0x4FF588F00, 0x4FF60BD00, 0x578F6CF00, 0x57CB6CF00, 0x57CF98F00, 0x57CFB8D00, 0x57CFDA300, 0x0216FFF00, 0x0217BFF00, 0x0217EFF00, 0x0217FBF00, 0x4186FFF00, 0x4187BFF00, 0x4187EFF00, 0x4187FBF00, 0x57CECB700, 0x10F5BEF00, 0x10F5EBF00, 0x1FF528F00, 0x46FF0B700, 0x04B8DFF00, 0x13F6E3700, 0x4D84BFF00, 0x4D87E3F00, 0x4FF4B8D00, 0x4FFF60900, 0x00002A100, 0x00002AD00, 0x00006AF00, 0x0001ABF00, 0x438D22300, 0x0006AFF00, 0x43A40BF00, 0x438D2E300, 0x43ED22300, 0x438D22F00, 0x438D28F00, 0x438D88F00, 0x43BD22300, 0x4F8D22300, 0x0026BFF00, 0x43ED0AF00, 0x43A43BF00, 0x43F4E2B00, 0x43ED2E300, 0x43F48AF00, 0x43F4CAB00, 0x43EB27300, 0x43FA27300, 0x43FF4A800, 0x10F78AF00, 0x10F7A2F00, 0x438D3AF00, 0x438D8EF00, 0x438DA3F00, 0x438ECBD00, 0x438F8E700, 0x438F98F00, 0x43A48FF00, 0x43A4E3F00, 0x43BD2E300, 0x43ED22F00, 0x43ED28F00, 0x43ED88F00, 0x4F8D2E300, 0x438EE3700, 0x438D2BF00, 0x438D2EF00, 0x438D8BF00, 0x438DB8F00, 0x438DE2F00, 0x438DE8F00, 0x43AF27300, 0x43BB27300, 0x43BD22F00, 0x43BD28F00, 0x43BD88F00, 0x4F8D22F00, 0x4F8D28F00, 0x4F8D88F00, 0x4FBD22300, 0x4FED22300, 0x006AFFF00, 0x41BF2BF00, 0x506AFFF00, 0x03F6CAF00, 0x41EF3AF00, 0x51BF8BF00, 0x034BAFF00, 0x034EAFF00, 0x034EEEF00, 0x034FABF00, 0x518BBFF00, 0x41BE2FF00, 0x41EF2BF00, 0x0E83FB700, 0x41BB2FF00, 0x41FECAF00, 0x436F2EF00, 0x437ECAF00, 0x506BBFF00, 0x060BEFF00, 0x060FBBF00, 0x43EECBD00, 0x43F4ABF00, 0x43F4EAF00, 0x43FB8BD00, 0x437A2FF00, 0x13EA1FF00, 0x437B2EF00, 0x51FEE2F00, 0x034ABFF00, 0x034AEFF00, 0x034AFBF00, 0x034BBBF00, 0x034BEBF00, 0x034BFAF00, 0x034EEBF00, 0x034FEAF00, 0x10F9AFF00, 0x4368EFF00, 0x436E3BF00, 0x436F3AF00, 0x43EFE9300, 0x43F4AEF00, 0x43F4EEB00, 0x4F4B2BF00, 0x4F4ECAF00, 0x4FA43BF00, 0x518BEFF00, 0x41FFE2B00, 0x437FE2B00, 0x438FA7F00, 0x43FBE9300, 0x51FFA2F00, 0x060EFBF00, 0x060FFAF00, 0x41ACBFF00, 0x41FFCAB00, 0x4368BFF00, 0x436E2FF00, 0x437FCAB00, 0x08DE3BF00, 0x10FBBBD00, 0x12ED8FF00, 0x438AFF700, 0x438EBF700, 0x438EFED00, 0x43EB2FD00, 0x43ED3AF00, 0x43ED8EF00, 0x43EDA3F00, 0x43F4BAF00, 0x43F4FAB00, 0x43FFA2D00, 0x463E3BF00, 0x53FA6CF00, 0x53FB98F00, 0x53FBDA300, 0x53FBE9300, 0x436F2BF00, 0x436F8BF00, 0x438EEF700, 0x4F4FE2B00, 0x03FDA2F00, 0x43A4FBF00, 0x43A63FF00, 0x43EB27F00, 0x43EBE7300, 0x43EF8BD00, 0x43FA27F00, 0x43FAE7300, 0x43FF4AB00, 0x43FF62B00, 0x43FF68B00, 0x43FF6A300, 0x43FFB8900, 0x4F4A2FF00, 0x4F4FCAB00, 0x4F623BF00, 0x4F633AF00, 0x51BFE2F00, 0x53EBE7300, 0x53EEE7300, 0x53EFE9300, 0x4FF4E2B00, 0x53EF98F00, 0x53EFDA300, 0x53FBB8D00, 0x53FFA2700, 0x53FFB2900, 0x02ED8FF00, 0x02F78EF00, 0x02FDA3F00, 0x03FA63F00, 0x03FB62F00, 0x03FB68F00, 0x03FE68F00, 0x03FF68B00, 0x03FF6A300, 0x08ED8FF00, 0x08FDA3F00, 0x08FF98F00, 0x10F7AEF00, 0x10F7BAF00, 0x12DE3BF00, 0x12DF3AF00, 0x12EFE7300, 0x13E73AF00, 0x13EBE7300, 0x13F9E2F00, 0x13FB62F00, 0x13FB68F00, 0x438EEFD00, 0x438EFBD00, 0x438F9BF00, 0x438FBE700, 0x43A4EFF00, 0x43A78FF00, 0x43BD3AF00, 0x43BD8EF00, 0x43BDA3F00, 0x43ED2BF00, 0x43ED2EF00, 0x43ED8BF00, 0x43EDB8F00, 0x43EDE2F00, 0x43EDE8F00, 0x43F68BF00, 0x43F6CAF00, 0x43F78AF00, 0x43F7A2F00, 0x43F7CAB00, 0x43F7E2B00, 0x4DCB2EF00, 0x4F4B2EF00, 0x4F632BF00, 0x4F638BF00, 0x4F8D3AF00, 0x4F8D8EF00, 0x4F8DA3F00, 0x4F8ECBD00, 0x4F8F8E700, 0x4F8F98F00, 0x4FA48FF00, 0x4FA4E3F00, 0x4FBD2E300, 0x4FED2E300, 0x4FF48AF00, 0x4FF4CAB00, 0x53EB6CF00, 0x578FE2F00, 0x57CBE2F00, 0x4F8EE3700, 0x53EFB8D00, 0x438AFFD00, 0x438EBFD00, 0x53EECB700, 0x57CEE2F00, 0x57CFE8B00, 0x02EDE3F00, 0x02F78BF00, 0x02F7E2F00, 0x02F9E3F00, 0x02FDB8F00, 0x02FDE2F00, 0x02FDE8F00, 0x08EDE3F00, 0x08F9E3F00, 0x08FDB8F00, 0x08FDE2F00, 0x08FDE8F00, 0x0E8F6CF00, 0x0FA36CF00, 0x0FB398F00, 0x0FB3DA300, 0x12DB2FF00, 0x12DE2FF00, 0x12DF2BF00, 0x12DF2EF00, 0x12DF8BF00, 0x13E62FF00, 0x13E72BF00, 0x13E72EF00, 0x13E78BF00, 0x13F68BF00, 0x13F6CAF00, 0x13F78AF00, 0x13F7A2F00, 0x13F7CAB00, 0x13F7E2B00, 0x438DAFF00, 0x438DBBF00, 0x438DBEF00, 0x438DEBF00, 0x438DEEF00, 0x438DFAF00, 0x43A4BFF00, 0x43A7E3F00, 0x43AB3DF00, 0x43AF27F00, 0x43AF2FD00, 0x43AF3B700, 0x43AF6CF00, 0x43AFE7300, 0x43BA3DF00, 0x43BB27F00, 0x43BB2FD00, 0x43BB3B700, 0x43BB6CF00, 0x43BBE7300, 0x43BD2BF00, 0x43BD2EF00, 0x43BD8BF00, 0x43BDB8F00, 0x43BDE2F00, 0x43BDE8F00, 0x43BE8DF00, 0x43BECBD00, 0x43BECE700, 0x43BF8BD00, 0x43BF8E700, 0x43BF98F00, 0x43BFCE900, 0x43BFDA300, 0x43BFE6300, 0x43BFE9300, 0x4F8D2BF00, 0x4F8D2EF00, 0x4F8D8BF00, 0x4F8DB8F00, 0x4F8DE2F00, 0x4F8DE8F00, 0x4FAF27300, 0x4FBB27300, 0x4FBD22F00, 0x4FBD28F00, 0x4FBD88F00, 0x4FEB27300, 0x4FED22F00, 0x4FED28F00, 0x4FED88F00, 0x4FFA27300, 0x4FFF4A800, 0x58EF6CF00, 0x0FB2CB700, 0x43BEE3700, 0x00000AA00, 0x00002AB00, 0x0000AAF00, 0x0002ABF00, 0x000AAFF00, 0x002ABFF00, 0x438F8AF00, 0x438FA2F00, 0x00AAFFF00, 0x43EFE2B00, 0x53EFA2F00, 0x43EA2FF00, 0x43EE8BF00, 0x43EF8AF00, 0x43EFCAB00, 0x43FBE2B00, 0x43EB2BF00, 0x43FA2BF00, 0x43FB8AF00, 0x43FBCAB00, 0x43EECAF00, 0x53EBE2F00, 0x53EEE2F00, 0x53EFE8B00, 0x10FBEAF00, 0x438FAEF00, 0x438FBAF00, 0x43AE3BF00, 0x43AF3AF00, 0x43BB3AF00, 0x4F8F8AF00, 0x4F8FA2F00, 0x58EF8EF00, 0x43AB2FF00, 0x43AE2FF00, 0x43AF2BF00, 0x43AF2EF00, 0x43AF8BF00, 0x43BA2FF00, 0x43BB2BF00, 0x43BB2EF00, 0x43BB8BF00, 0x43BE8BF00, 0x43BECAF00, 0x43BF8AF00, 0x43BFA2F00, 0x43BFCAB00, 0x43BFE2B00, 0x58EF8BF00, 0x000055400, 0x0001D5400, 0x000557C00, 0x003557C00, 0x0035DD400, 0x007751C00, 0x007753400, 0x034751C00, 0x034753400, 0x034D51C00, 0x034D53400, 0x41D351C00, 0x41D353400, 0x435351C00, 0x435353400, 0x10F51D400, 0x10F551C00, 0x550F51C00, 0x00557FC00, 0x005FDD400, 0x00F5DD400, 0x41D47DC00, 0x41D47F400, 0x43547DC00, 0x43547F400, 0x434D5DC00, 0x00FDD5400, 0x0347DD400, 0x0347F5400, 0x03547DC00, 0x03547F400, 0x04D47DC00, 0x04D47F400, 0x45347DC00, 0x45347F400, 0x41D477C00, 0x41D4DF400, 0x435477C00, 0x4354DF400, 0x04DF51C00, 0x04DF53400, 0x04F751C00, 0x04F753400, 0x41D37D400, 0x41D3DD400, 0x41FD1D400, 0x41FD35400, 0x41FD51C00, 0x41FD53400, 0x43537D400, 0x4353DD400, 0x437D1D400, 0x437D35400, 0x437D51C00, 0x437D53400, 0x0077F5400, 0x434DDD400, 0x03477D400, 0x034DF5400, 0x035477C00, 0x0354DF400, 0x03F51D400, 0x03F535400, 0x03F551C00, 0x03F553400, 0x04D477C00, 0x04D4DF400, 0x051D4FC00, 0x05354FC00, 0x053F51C00, 0x053F53400, 0x41D4FD400, 0x41D54FC00, 0x4354FD400, 0x43554FC00, 0x43F51D400, 0x43F535400, 0x43F551C00, 0x43F553400, 0x453477C00, 0x4534DF400, 0x453F51C00, 0x453F53400, 0x0F4751C00, 0x0F4753400, 0x0F4D51C00, 0x0F4D53400, 0x41DF51C00, 0x41DF53400, 0x435F51C00, 0x435F53400, 0x007757C00, 0x00775DC00, 0x00775F400, 0x034FD5400, 0x0354FD400, 0x03554FC00, 0x04D4FD400, 0x04D54FC00, 0x43F4D5400, 0x4534FD400, 0x45354FC00, 0x454D4FC00, 0x034757C00, 0x03475DC00, 0x03475F400, 0x034D57C00, 0x034D5DC00, 0x034D5F400, 0x035F51C00, 0x035F53400, 0x037751C00, 0x037753400, 0x037D51C00, 0x037D53400, 0x04FD51C00, 0x04FD53400, 0x13F51D400, 0x13F535400, 0x13F551C00, 0x13F553400, 0x41D357C00, 0x41D35DC00, 0x41D35F400, 0x41D3F5400, 0x435357C00, 0x43535DC00, 0x43535F400, 0x4353F5400, 0x47D351C00, 0x47D353400, 0x4DD351C00, 0x4DD353400, 0x4F4D1D400, 0x4F4D35400, 0x4F4D51C00, 0x4F4D53400, 0x4F5351C00, 0x4F5353400, 0x553F51C00, 0x553F53400, 0x10F557C00, 0x10F57D400, 0x550F57C00, 0x10F55DC00, 0x10F5DD400, 0x550F5DC00, 0x000185400, 0x00019D400, 0x00056DC00, 0x00215DC00, 0x434D24400, 0x10F518400, 0x002757C00, 0x00275DC00, 0x00359DC00, 0x0035DB400, 0x434D85C00, 0x002D5DC00, 0x023751C00, 0x023753400, 0x436351C00, 0x436353400, 0x4F4851C00, 0x4F4853400, 0x434D1B400, 0x00ED51C00, 0x00ED53400, 0x02147DC00, 0x02147F400, 0x41847DC00, 0x41847F400, 0x41FD18400, 0x41FD24400, 0x437D18400, 0x437D24400, 0x03F518400, 0x03F524400, 0x434D27400, 0x43F518400, 0x43F524400, 0x021477C00, 0x0214DF400, 0x418477C00, 0x4184DF400, 0x10F519C00, 0x10F51B400, 0x0214FD400, 0x02154FC00, 0x04854FC00, 0x060F51C00, 0x060F53400, 0x4184FD400, 0x41854FC00, 0x41D327400, 0x41D48F400, 0x41D49CC00, 0x41D4E1C00, 0x41D583C00, 0x41D83D400, 0x435327400, 0x43548F400, 0x43549CC00, 0x4354E1C00, 0x435583C00, 0x43583D400, 0x438D1D400, 0x438D35400, 0x438D51C00, 0x438D53400, 0x43F485400, 0x45214FC00, 0x13F518400, 0x13F524400, 0x4F4D18400, 0x4F4D24400, 0x0348F5400, 0x0349CD400, 0x034E1D400, 0x03548F400, 0x03549CC00, 0x0354E1C00, 0x035583C00, 0x03583D400, 0x04C9CD400, 0x04D48F400, 0x04D49CC00, 0x04D4E1C00, 0x04D583C00, 0x10F527400, 0x45348F400, 0x45349CC00, 0x4534E1C00, 0x453583C00, 0x454C9CC00, 0x0055BFC00, 0x005F9F400, 0x00B7DD400, 0x005F9DC00, 0x00B75DC00, 0x00F59DC00, 0x00F5DB400, 0x00EDF5400, 0x4F48F5400, 0x434DB5C00, 0x023D5DC00, 0x41B47DC00, 0x41B47F400, 0x41D277C00, 0x435277C00, 0x00767F400, 0x0067DF400, 0x02DF51C00, 0x02DF53400, 0x41BF51C00, 0x41BF53400, 0x034677C00, 0x03467DC00, 0x03467F400, 0x0346DDC00, 0x0346DF400, 0x03479DC00, 0x03479F400, 0x034D9DC00, 0x034D9F400, 0x034DB7400, 0x434D7B400, 0x03B751C00, 0x03B753400, 0x41D36DC00, 0x41D37B400, 0x41EF51C00, 0x41EF53400, 0x43536DC00, 0x43537B400, 0x0079DDC00, 0x02D47DC00, 0x02D47F400, 0x08D47DC00, 0x08D47F400, 0x12D47DC00, 0x12D47F400, 0x41D27DC00, 0x41D27F400, 0x41D46FC00, 0x41D4F9C00, 0x41D61FC00, 0x41D63DC00, 0x43527DC00, 0x43527F400, 0x43546FC00, 0x4354F9C00, 0x43561FC00, 0x43563DC00, 0x46347DC00, 0x46347F400, 0x0077B5C00, 0x0077E7400, 0x434D9DC00, 0x0346D7C00, 0x03476DC00, 0x03477B400, 0x0347B7400, 0x0349DF400, 0x034DB5C00, 0x41FD19C00, 0x41FD1B400, 0x41FD85C00, 0x41FD87400, 0x434DD9C00, 0x437D19C00, 0x437D1B400, 0x437D85C00, 0x437D87400, 0x03ED51C00, 0x03ED53400, 0x12F751C00, 0x12F753400, 0x12FD51C00, 0x12FD53400, 0x41B477C00, 0x41B4DF400, 0x41D39DC00, 0x41D39F400, 0x43539DC00, 0x43539F400, 0x437B51C00, 0x437B53400, 0x51EF51C00, 0x51EF53400, 0x51FB51C00, 0x51FB53400, 0x023757C00, 0x02375DC00, 0x02375F400, 0x436357C00, 0x43635DC00, 0x43635F400, 0x0346FD400, 0x034F9D400, 0x03546FC00, 0x0354F9C00, 0x03561FC00, 0x03563DC00, 0x0361FD400, 0x0363DD400, 0x03F519C00, 0x03F51B400, 0x03F585C00, 0x03F587400, 0x04D46FC00, 0x04D4F9C00, 0x04D61FC00, 0x04D63DC00, 0x434D9F400, 0x43F519C00, 0x43F51B400, 0x43F585C00, 0x43F587400, 0x45346FC00, 0x4534F9C00, 0x45361FC00, 0x45363DC00, 0x4F4857C00, 0x4F485DC00, 0x4F485F400, 0x08F751C00, 0x08F753400, 0x41D87DC00, 0x43587DC00, 0x436F51C00, 0x436F53400, 0x00ED57C00, 0x00ED5DC00, 0x00ED5F400, 0x434DDB400, 0x02D477C00, 0x02D4DF400, 0x0347B5C00, 0x034D7B400, 0x049D4FC00, 0x04BF51C00, 0x04BF53400, 0x08D477C00, 0x08D4DF400, 0x12D477C00, 0x12D4DF400, 0x13ED51C00, 0x13ED53400, 0x41B4FD400, 0x41B54FC00, 0x41D2FD400, 0x4352FD400, 0x43ED1D400, 0x43ED35400, 0x43ED51C00, 0x43ED53400, 0x43F49D400, 0x463477C00, 0x4634DF400, 0x4D847DC00, 0x4D847F400, 0x51BF51C00, 0x51BF53400, 0x0076DF400, 0x0347E7400, 0x0349DDC00, 0x034D6DC00, 0x03587DC00, 0x04C9DDC00, 0x051F9CC00, 0x0523DDC00, 0x0535B3C00, 0x05387DC00, 0x10F7B5400, 0x41FD27400, 0x41FD61C00, 0x434DE7400, 0x437D27400, 0x437D61C00, 0x550F7B400, 0x02D4FD400, 0x02D54FC00, 0x03F275400, 0x03F527400, 0x03F561C00, 0x04CBF5400, 0x0523FD400, 0x0538FD400, 0x05523FC00, 0x05538FC00, 0x061D4FC00, 0x08D4FD400, 0x08D54FC00, 0x10F6DD400, 0x12D4FD400, 0x12D54FC00, 0x13F519C00, 0x13F51B400, 0x13F585C00, 0x13F587400, 0x43F527400, 0x43F561C00, 0x43F61D400, 0x452D4FC00, 0x453F27400, 0x454CBF400, 0x45523FC00, 0x45538FC00, 0x458D4FC00, 0x4634FD400, 0x46354FC00, 0x4F4D19C00, 0x4F4D1B400, 0x4F4D85C00, 0x4F4D87400, 0x550F6DC00, 0x552D4FC00, 0x02F751C00, 0x02F753400, 0x02FD51C00, 0x02FD53400, 0x063F51C00, 0x063F53400, 0x06CF51C00, 0x06CF53400, 0x08FD51C00, 0x08FD53400, 0x12DF51C00, 0x12DF53400, 0x13E751C00, 0x13E753400, 0x41D3B5C00, 0x41D3B7400, 0x41D3E7400, 0x41D49FC00, 0x41D4BF400, 0x41D4EDC00, 0x41D58FC00, 0x41D5B3C00, 0x41D78F400, 0x41D79CC00, 0x41D7E1C00, 0x41D87F400, 0x41D8FD400, 0x41DB3D400, 0x41DF27400, 0x4353B5C00, 0x4353B7400, 0x4353E7400, 0x43549FC00, 0x4354BF400, 0x4354EDC00, 0x43558FC00, 0x4355B3C00, 0x43578F400, 0x43579CC00, 0x4357E1C00, 0x43587F400, 0x4358FD400, 0x435B3D400, 0x435F27400, 0x43BD1D400, 0x43BD35400, 0x43BD51C00, 0x43BD53400, 0x4D8477C00, 0x4D84DF400, 0x4DCB51C00, 0x4DCB53400, 0x4F4B51C00, 0x4F4B53400, 0x4F6351C00, 0x4F6353400, 0x4F8D1D400, 0x4F8D35400, 0x4F8D51C00, 0x4F8D53400, 0x578F51C00, 0x578F53400, 0x57CB51C00, 0x57CB53400, 0x0FF518400, 0x0FF524400, 0x1FF518400, 0x47FD18400, 0x47FD24400, 0x4DFD18400, 0x4DFD24400, 0x4F7D18400, 0x4F7D24400, 0x4FF518400, 0x4FF524400, 0x0349D7C00, 0x0349FD400, 0x034BF5400, 0x034EDD400, 0x03549FC00, 0x0354BF400, 0x0354EDC00, 0x03558FC00, 0x0355B3C00, 0x03578F400, 0x03579CC00, 0x0357E1C00, 0x03587F400, 0x0358FD400, 0x035B3D400, 0x035F27400, 0x0378F5400, 0x0379CD400, 0x037D61C00, 0x037E1D400, 0x04B54FC00, 0x04C9D7C00, 0x04C9FD400, 0x04D49FC00, 0x04D4BF400, 0x04D4EDC00, 0x04D58FC00, 0x04D5B3C00, 0x04D78F400, 0x04D79CC00, 0x04D7E1C00, 0x04F9CD400, 0x04FD61C00, 0x0523D7C00, 0x05387F400, 0x057C9CC00, 0x05F583C00, 0x060F57C00, 0x060F5DC00, 0x060F5F400, 0x07C9CD400, 0x07D48F400, 0x07D49CC00, 0x07D4E1C00, 0x07D583C00, 0x0F48F5400, 0x0F49CD400, 0x0F4E1D400, 0x0F548F400, 0x0F549CC00, 0x0F54E1C00, 0x0F5583C00, 0x0F583D400, 0x10F56DC00, 0x10F579C00, 0x10F57B400, 0x10F59DC00, 0x10F59F400, 0x13F527400, 0x13F561C00, 0x438D57C00, 0x438D5DC00, 0x438D5F400, 0x438D7D400, 0x438DDD400, 0x438DF5400, 0x43F4B5400, 0x45349FC00, 0x4534BF400, 0x4534EDC00, 0x45358FC00, 0x4535B3C00, 0x45378F400, 0x45379CC00, 0x4537E1C00, 0x454C9FC00, 0x454F9CC00, 0x457C9CC00, 0x45F48F400, 0x45F49CC00, 0x45F4E1C00, 0x45F583C00, 0x47D327400, 0x47D48F400, 0x47D49CC00, 0x47D4E1C00, 0x47D583C00, 0x47D83D400, 0x4D84FD400, 0x4D854FC00, 0x4DD327400, 0x4DD48F400, 0x4DD49CC00, 0x4DD4E1C00, 0x4DD583C00, 0x4DD83D400, 0x4F4D27400, 0x4F4D61C00, 0x4F5327400, 0x4F548F400, 0x4F549CC00, 0x4F54E1C00, 0x4F5583C00, 0x4F583D400, 0x02157FC00, 0x0215F7C00, 0x0215FDC00, 0x0215FF400, 0x021777C00, 0x02177DC00, 0x02177F400, 0x0217D7C00, 0x0217DDC00, 0x0217DF400, 0x0217FD400, 0x04857FC00, 0x41857FC00, 0x4185F7C00, 0x4185FDC00, 0x4185FF400, 0x418777C00, 0x41877DC00, 0x41877F400, 0x4187D7C00, 0x4187DDC00, 0x4187DF400, 0x4187FD400, 0x41D2D7C00, 0x41D2DDC00, 0x41D2DF400, 0x4352D7C00, 0x4352DDC00, 0x4352DF400, 0x45217FC00, 0x4FF485400, 0x00005A400, 0x418408400, 0x000199C00, 0x418409C00, 0x418421C00, 0x00056BC00, 0x418439C00, 0x41B409C00, 0x41B421C00, 0x41D488C00, 0x435488C00, 0x434D82400, 0x0046E3400, 0x438D18400, 0x438D24400, 0x03488D400, 0x035488C00, 0x04D488C00, 0x453488C00, 0x02148F400, 0x02149CC00, 0x0214E1C00, 0x021583C00, 0x41842DC00, 0x41848F400, 0x41849CC00, 0x4184E1C00, 0x418583C00, 0x41D223400, 0x435223400, 0x463421C00, 0x10F582400, 0x002677C00, 0x0047AF400, 0x41B439C00, 0x0047A7C00, 0x00359BC00, 0x003E65C00, 0x463439C00, 0x41D28DC00, 0x43528DC00, 0x0046EF400, 0x1FA051C00, 0x0077A4C00, 0x434D8E400, 0x41B42DC00, 0x434D98C00, 0x02146FC00, 0x0214F9C00, 0x02161FC00, 0x02163DC00, 0x41846FC00, 0x4184F9C00, 0x41861FC00, 0x41863DC00, 0x41D4B8C00, 0x434DA4C00, 0x4354B8C00, 0x434DA3400, 0x43ED18400, 0x43ED24400, 0x50694FC00, 0x0347A4C00, 0x0348E5C00, 0x034B8D400, 0x034D68C00, 0x034E1B400, 0x0354B8C00, 0x04D4B8C00, 0x438D19C00, 0x438D1B400, 0x438D85C00, 0x438D87400, 0x4534B8C00, 0x41D88DC00, 0x43588DC00, 0x10B9CD400, 0x10F68D400, 0x41B48F400, 0x41B49CC00, 0x41B4E1C00, 0x41B583C00, 0x41D22F400, 0x41D3A4C00, 0x41D48BC00, 0x41D4A3C00, 0x41D623C00, 0x41D82F400, 0x43522F400, 0x4353A4C00, 0x43548BC00, 0x4354A3C00, 0x435623C00, 0x43582F400, 0x550B2DC00, 0x550B9CC00, 0x550F68C00, 0x0346E3400, 0x03492DC00, 0x0349CB400, 0x03588DC00, 0x04879CC00, 0x0488DDC00, 0x04C9CB400, 0x41FD82400, 0x437D82400, 0x43BD18400, 0x43BD24400, 0x4F8D18400, 0x4F8D24400, 0x007663C00, 0x02C9CD400, 0x02D48F400, 0x02D49CC00, 0x02D4E1C00, 0x02D583C00, 0x0348BD400, 0x0349E1C00, 0x034A3D400, 0x03548BC00, 0x0354A3C00, 0x035623C00, 0x03582F400, 0x03623D400, 0x03F582400, 0x04C9E1C00, 0x04D48BC00, 0x04D4A3C00, 0x04D623C00, 0x061C9CC00, 0x07D488C00, 0x08C9CD400, 0x08D48F400, 0x08D49CC00, 0x08D4E1C00, 0x08D583C00, 0x0F488D400, 0x0F5488C00, 0x10F53A400, 0x10F568C00, 0x12D48F400, 0x12D49CC00, 0x12D4E1C00, 0x12D583C00, 0x438D27400, 0x438D61C00, 0x43F582400, 0x452C9CC00, 0x45348BC00, 0x4534A3C00, 0x453623C00, 0x458C9CC00, 0x45F488C00, 0x46342DC00, 0x46348F400, 0x46349CC00, 0x4634E1C00, 0x463583C00, 0x47D488C00, 0x4DD488C00, 0x4F5488C00, 0x02149FC00, 0x0214BF400, 0x0214EDC00, 0x02158FC00, 0x0215B3C00, 0x02178F400, 0x02179CC00, 0x0217E1C00, 0x41849FC00, 0x4184BF400, 0x4184EDC00, 0x41858FC00, 0x4185B3C00, 0x41878F400, 0x41879CC00, 0x4187E1C00, 0x41D2E3400, 0x4352E3400, 0x10F58E400, 0x10F598C00, 0x0076E3400, 0x0488D7C00, 0x13F582400, 0x47D223400, 0x4D848F400, 0x4D849CC00, 0x4D84E1C00, 0x4D8583C00, 0x4DD223400, 0x4F4D82400, 0x4F5223400, 0x0056BFC00, 0x5069FDC00, 0x434FE6400, 0x434A7DC00, 0x007EDB400, 0x00F7E6400, 0x005FA7C00, 0x005FAF400, 0x5069FF400, 0x434EDB400, 0x0069FDC00, 0x00799FC00, 0x434B7B400, 0x47B439C00, 0x0F42DB400, 0x0346BDC00, 0x0346BF400, 0x03F3A5400, 0x005BEF400, 0x0067BF400, 0x0077AF400, 0x00F59BC00, 0x00FE65C00, 0x00ED6DC00, 0x46F439C00, 0x006FE7400, 0x00ED7B400, 0x5069F7C00, 0x41D2BF400, 0x4352BF400, 0x4362DF400, 0x434DBE400, 0x41B46FC00, 0x41B4F9C00, 0x41B61FC00, 0x41B63DC00, 0x43A47DC00, 0x43A47F400, 0x1FF825400, 0x007BE7400, 0x41D2F9C00, 0x41D3FA400, 0x4352F9C00, 0x4353FA400, 0x029D4FC00, 0x0346F9C00, 0x0347FA400, 0x0349BF400, 0x034DAF400, 0x03A54FC00, 0x129D4FC00, 0x41AD4FC00, 0x41BF27400, 0x41E94FC00, 0x43F499C00, 0x43F4DA400, 0x51E94FC00, 0x02BF51C00, 0x02BF53400, 0x03479BC00, 0x034D9BC00, 0x034FA5C00, 0x034FA7400, 0x03AF51C00, 0x03AF53400, 0x060BDF400, 0x12BF51C00, 0x41D26FC00, 0x41D36BC00, 0x41D8FB400, 0x41EF27400, 0x43526FC00, 0x43536BC00, 0x4358FB400, 0x43EB51C00, 0x43EB53400, 0x43FA51C00, 0x43FA53400, 0x53FA51C00, 0x47D28DC00, 0x4DD28DC00, 0x4F528DC00, 0x00679FC00, 0x0077A7C00, 0x02CBF5400, 0x02D46FC00, 0x02D4F9C00, 0x02D61FC00, 0x02D63DC00, 0x03469FC00, 0x034FE6400, 0x03B2F5400, 0x03F265C00, 0x048BFD400, 0x04CAFD400, 0x04CBE5C00, 0x04DB2F400, 0x08B54FC00, 0x08D46FC00, 0x08D4F9C00, 0x08D61FC00, 0x08D63DC00, 0x12D46FC00, 0x12D4F9C00, 0x12D61FC00, 0x12D63DC00, 0x434DA7C00, 0x43694FC00, 0x43ED19C00, 0x43ED1B400, 0x43ED85C00, 0x43ED87400, 0x43F4E6400, 0x43F61B400, 0x452CBF400, 0x453B2F400, 0x4548BFC00, 0x454CAFC00, 0x46346FC00, 0x4634F9C00, 0x46361FC00, 0x46363DC00, 0x41D39BC00, 0x41D8BDC00, 0x43539BC00, 0x4358BDC00, 0x03466FC00, 0x03476BC00, 0x03499FC00, 0x034BE7400, 0x034DA7C00, 0x034F99C00, 0x034FDA400, 0x034FE9400, 0x1FA057C00, 0x434DAF400, 0x0076BDC00, 0x0347AF400, 0x0349BDC00, 0x034DFA400, 0x0358FB400, 0x04C9BDC00, 0x04DFA4C00, 0x04F768C00, 0x10B9DDC00, 0x10BBF5400, 0x10BEDD400, 0x10F69DC00, 0x10F6DB400, 0x10F7A5C00, 0x10F7A7400, 0x10FAF5400, 0x13A54FC00, 0x13AF51C00, 0x13AF53400, 0x41D3AF400, 0x41D4EBC00, 0x41D63BC00, 0x41D68FC00, 0x4353AF400, 0x4354EBC00, 0x43563BC00, 0x43568FC00, 0x437B27400, 0x43A477C00, 0x43A4DF400, 0x51AD4FC00, 0x53EB51C00, 0x53EB53400, 0x550BBF400, 0x550BEDC00, 0x550FAF400, 0x434D9BC00, 0x00769FC00, 0x02C9DDC00, 0x0346EF400, 0x0349FB400, 0x0358BDC00, 0x0361EDC00, 0x048BDDC00, 0x049F9CC00, 0x04C9FB400, 0x060BDDC00, 0x060F7B400, 0x08C9DDC00, 0x41FD3A400, 0x41FD68C00, 0x41FD8E400, 0x41FD98C00, 0x41FDA3400, 0x41FDA4C00, 0x436F27400, 0x437A3D400, 0x437D3A400, 0x437D68C00, 0x437D8E400, 0x437D98C00, 0x437DA3400, 0x437DA4C00, 0x438FB5400, 0x41D2BDC00, 0x4352BDC00, 0x0347A7C00, 0x034BE5C00, 0x034D6BC00, 0x034EBD400, 0x0354EBC00, 0x03563BC00, 0x03568FC00, 0x0363BD400, 0x0368FD400, 0x037E1B400, 0x03F53A400, 0x03F568C00, 0x03F58E400, 0x03F598C00, 0x03F5A3400, 0x03F5A4C00, 0x03FA4D400, 0x04D4EBC00, 0x04D63BC00, 0x04D68FC00, 0x04F663C00, 0x060F6DC00, 0x061CEDC00, 0x061DB3C00, 0x068D4FC00, 0x07D4B8C00, 0x08CEDD400, 0x08DB3D400, 0x0F47A4C00, 0x0F48E5C00, 0x0F4B8D400, 0x0F4D68C00, 0x0F4E1B400, 0x0F54B8C00, 0x10F799C00, 0x12F9CD400, 0x438EDD400, 0x43A4FD400, 0x43A54FC00, 0x43BD19C00, 0x43BD1B400, 0x43BD85C00, 0x43BD87400, 0x43ED27400, 0x43ED61C00, 0x43F4E9400, 0x43F53A400, 0x43F568C00, 0x43F58E400, 0x43F598C00, 0x43F5A3400, 0x43F5A4C00, 0x43F68D400, 0x4534EBC00, 0x45363BC00, 0x45368FC00, 0x453FA4C00, 0x458CEDC00, 0x458DB3C00, 0x45F4B8C00, 0x463B3D400, 0x47D4B8C00, 0x4D846FC00, 0x4D84F9C00, 0x4D861FC00, 0x4D863DC00, 0x4DD4B8C00, 0x4F54B8C00, 0x4F8D19C00, 0x4F8D1B400, 0x4F8D85C00, 0x4F8D87400, 0x552F9CC00, 0x1FA05DC00, 0x04E72DC00, 0x0E8F51C00, 0x0E8F53400, 0x0FA351C00, 0x0FA353400, 0x10B9D7C00, 0x10B9FD400, 0x10F69F400, 0x10F6BD400, 0x13B9CD400, 0x13FA4D400, 0x1FA351C00, 0x41B49FC00, 0x41B4BF400, 0x41B4EDC00, 0x41B58FC00, 0x41B5B3C00, 0x41B78F400, 0x41B79CC00, 0x41B7E1C00, 0x41D2EF400, 0x41D3A7C00, 0x41D4AFC00, 0x41D4BBC00, 0x41D62FC00, 0x41D6E3C00, 0x41D78BC00, 0x41D7A3C00, 0x41D8BF400, 0x41D8EF400, 0x41DA37C00, 0x41DB2F400, 0x41DB39C00, 0x41DE2F400, 0x41DE39C00, 0x41DE63C00, 0x41DF3A400, 0x41DF68C00, 0x41DF98C00, 0x41DFA4C00, 0x4352EF400, 0x4353A7C00, 0x4354AFC00, 0x4354BBC00, 0x43562FC00, 0x4356E3C00, 0x43578BC00, 0x4357A3C00, 0x4358BF400, 0x4358EF400, 0x435A37C00, 0x435B2F400, 0x435B39C00, 0x435E2F400, 0x435E39C00, 0x435E63C00, 0x435F3A400, 0x435F68C00, 0x435F98C00, 0x435FA4C00, 0x43AF51C00, 0x43AF53400, 0x43BB51C00, 0x43BB53400, 0x550B9FC00, 0x550F6BC00, 0x553B9CC00, 0x553FA4C00, 0x58EF51C00, 0x04879FC00, 0x07C9CB400, 0x0F46E3400, 0x0F492DC00, 0x0F49CB400, 0x0F588DC00, 0x47D88DC00, 0x4DD88DC00, 0x4F588DC00, 0x4FBD18400, 0x4FBD24400, 0x4FED18400, 0x4FED24400, 0x50697FC00, 0x00766FC00, 0x0076EF400, 0x0076F9C00, 0x02C9D7C00, 0x02C9FD400, 0x02D49FC00, 0x02D4BF400, 0x02D4EDC00, 0x02D58FC00, 0x02D5B3C00, 0x02D78F400, 0x02D79CC00, 0x02D7E1C00, 0x02F9CD400, 0x02FD61C00, 0x0349EDC00, 0x0349F9C00, 0x034AFD400, 0x034BBD400, 0x034E97C00, 0x034E9DC00, 0x034E9F400, 0x034ED9C00, 0x034EDB400, 0x0354AFC00, 0x0354BBC00, 0x03562FC00, 0x0356E3C00, 0x03578BC00, 0x0357A3C00, 0x0358BF400, 0x0358EF400, 0x035A37C00, 0x035B2F400, 0x035B39C00, 0x035E2F400, 0x035E39C00, 0x035E63C00, 0x035F3A400, 0x035F68C00, 0x035F98C00, 0x035FA4C00, 0x0362FD400, 0x036397C00, 0x03639DC00, 0x03639F400, 0x03663DC00, 0x03673B400, 0x03679CC00, 0x0368D7C00, 0x0368DDC00, 0x0368DF400, 0x03693F400, 0x036D8F400, 0x036D9CC00, 0x036DE1C00, 0x036E3D400, 0x037663C00, 0x03768DC00, 0x037768C00, 0x03778E400, 0x037798C00, 0x0377A4C00, 0x0378BD400, 0x0378E5C00, 0x0378E7400, 0x03798F400, 0x0379E1C00, 0x037A3D400, 0x037D68C00, 0x037D98C00, 0x037DA3400, 0x037DA4C00, 0x048BD7C00, 0x04C9EDC00, 0x04C9F9C00, 0x04D4AFC00, 0x04D4BBC00, 0x04D62FC00, 0x04D6E3C00, 0x04D78BC00, 0x04D7A3C00, 0x04E93F400, 0x04ED8F400, 0x04ED9CC00, 0x04EDE1C00, 0x04F6E3400, 0x04F98F400, 0x04F9E1C00, 0x04FD68C00, 0x04FD98C00, 0x04FDA3400, 0x04FDA4C00, 0x060BD7C00, 0x061C9FC00, 0x061F9CC00, 0x06DC9CC00, 0x079C9CC00, 0x07C9E1C00, 0x07D48BC00, 0x07D4A3C00, 0x07D623C00, 0x08C9D7C00, 0x08C9FD400, 0x08D49FC00, 0x08D4BF400, 0x08D4EDC00, 0x08D58FC00, 0x08D5B3C00, 0x08D78F400, 0x08D79CC00, 0x08D7E1C00, 0x08F9CD400, 0x08FD61C00, 0x0BC9CD400, 0x0BD48F400, 0x0BD49CC00, 0x0BD4E1C00, 0x0BD583C00, 0x0EC9CD400, 0x0ED48F400, 0x0ED49CC00, 0x0ED4E1C00, 0x0ED583C00, 0x0F48BD400, 0x0F49E1C00, 0x0F4A3D400, 0x0F548BC00, 0x0F54A3C00, 0x0F5623C00, 0x0F582F400, 0x0F623D400, 0x10F56BC00, 0x10F5AF400, 0x12D49FC00, 0x12D4BF400, 0x12D4EDC00, 0x12D58FC00, 0x12D5B3C00, 0x12D78F400, 0x12D79CC00, 0x12D7E1C00, 0x12DB3D400, 0x12DF27400, 0x13E63D400, 0x13E727400, 0x13EE35400, 0x13F53A400, 0x13F568C00, 0x13F58E400, 0x13F598C00, 0x13F5A3400, 0x13F5A4C00, 0x13F68D400, 0x1BD48F400, 0x1BD49CC00, 0x1BD4E1C00, 0x1BD583C00, 0x438D6DC00, 0x438D79C00, 0x438D7B400, 0x438D9DC00, 0x438D9F400, 0x438DB5C00, 0x438DB7400, 0x438DD9C00, 0x438DDB400, 0x438DE7400, 0x43BD27400, 0x43BD61C00, 0x43F4A5C00, 0x43F4A7400, 0x452C9FC00, 0x452F9CC00, 0x4534AFC00, 0x4534BBC00, 0x45362FC00, 0x4536E3C00, 0x45378BC00, 0x4537A3C00, 0x458C9FC00, 0x458F9CC00, 0x45BC9CC00, 0x45EC9CC00, 0x45F48BC00, 0x45F4A3C00, 0x45F623C00, 0x46349FC00, 0x4634BF400, 0x4634EDC00, 0x46358FC00, 0x4635B3C00, 0x46378F400, 0x46379CC00, 0x4637E1C00, 0x46F48F400, 0x46F49CC00, 0x46F4E1C00, 0x46F583C00, 0x47B48F400, 0x47B49CC00, 0x47B4E1C00, 0x47B583C00, 0x47D22F400, 0x47D3A4C00, 0x47D48BC00, 0x47D4A3C00, 0x47D623C00, 0x47D82F400, 0x4DB48F400, 0x4DB49CC00, 0x4DB4E1C00, 0x4DB583C00, 0x4DCB27400, 0x4DD22F400, 0x4DD3A4C00, 0x4DD48BC00, 0x4DD4A3C00, 0x4DD623C00, 0x4DD82F400, 0x4F4B27400, 0x4F4D3A400, 0x4F4D68C00, 0x4F4D8E400, 0x4F4D98C00, 0x4F4DA3400, 0x4F4DA4C00, 0x4F522F400, 0x4F53A4C00, 0x4F548BC00, 0x4F54A3C00, 0x4F5623C00, 0x4F582F400, 0x4F6327400, 0x4F8D27400, 0x4F8D61C00, 0x552DB3C00, 0x553E63C00, 0x553EE3400, 0x553F68C00, 0x0215BFC00, 0x0215EFC00, 0x02167FC00, 0x0216DFC00, 0x0216FDC00, 0x0216FF400, 0x02176FC00, 0x02179FC00, 0x0217BF400, 0x0217EDC00, 0x0217F9C00, 0x0217FB400, 0x4185BFC00, 0x4185EFC00, 0x41867FC00, 0x4186DFC00, 0x4186FDC00, 0x4186FF400, 0x41876FC00, 0x41879FC00, 0x4187BF400, 0x4187EDC00, 0x4187F9C00, 0x4187FB400, 0x41D29FC00, 0x41DB8DC00, 0x43529FC00, 0x435B8DC00, 0x553B2DC00, 0x10F59BC00, 0x10F5BE400, 0x46F42DC00, 0x035B8DC00, 0x03672DC00, 0x0376E3400, 0x0379CB400, 0x04B5B3C00, 0x04B79CC00, 0x04B8D7C00, 0x04B8DDC00, 0x04B8DF400, 0x04F9CB400, 0x0FF582400, 0x47D2E3400, 0x47FD82400, 0x4D849FC00, 0x4D84BF400, 0x4D84EDC00, 0x4D858FC00, 0x4D85B3C00, 0x4D878F400, 0x4D879CC00, 0x4D87E1C00, 0x4DD2E3400, 0x4DFD82400, 0x4F52E3400, 0x4F7D82400, 0x4FF582400, 0x1FF582400, 0x0001A8400, 0x0001AB400, 0x00352A000, 0x418428C00, 0x021488C00, 0x418488C00, 0x0005ABC00, 0x00352AC00, 0x00F52A000, 0x41B428C00, 0x434D2A000, 0x504A2DC00, 0x41842BC00, 0x0214B8C00, 0x4184B8C00, 0x41B488C00, 0x43A421C00, 0x02D488C00, 0x08D488C00, 0x12D488C00, 0x463488C00, 0x02148BC00, 0x0214A3C00, 0x021623C00, 0x41848BC00, 0x4184A3C00, 0x418623C00, 0x10F52A000, 0x438D82400, 0x4D8488C00, 0x00266FC00, 0x0035ABC00, 0x00F52AC00, 0x434D8AC00, 0x43A439C00, 0x03462BC00, 0x03478AC00, 0x41B42BC00, 0x03472AC00, 0x0348B9C00, 0x504AEDC00, 0x434EE2400, 0x434A2F400, 0x43ED0A400, 0x41D38AC00, 0x43538AC00, 0x506EE3400, 0x0209EDC00, 0x5069B3C00, 0x41B4B8C00, 0x41D22BC00, 0x41D32AC00, 0x43522BC00, 0x43532AC00, 0x434D2AC00, 0x41AC9CC00, 0x41E89CC00, 0x41FD2A000, 0x437D2A000, 0x46342BC00, 0x51CA2DC00, 0x51CE89C00, 0x51CECA400, 0x02D4B8C00, 0x03F262400, 0x03F52A000, 0x08D4B8C00, 0x10F989C00, 0x12D4B8C00, 0x43689CC00, 0x43F52A000, 0x43F622400, 0x4634B8C00, 0x0214EBC00, 0x02163BC00, 0x02168FC00, 0x04889FC00, 0x060E63C00, 0x060F68C00, 0x10B9CB400, 0x10B9E1C00, 0x10F68B400, 0x10F6A1C00, 0x10F6E2400, 0x4184EBC00, 0x41863BC00, 0x41868FC00, 0x41B48BC00, 0x41B4A3C00, 0x41B623C00, 0x438A3D400, 0x438E8D400, 0x43A42DC00, 0x02C9CB400, 0x08C9CB400, 0x463E09C00, 0x00768BC00, 0x02C9E1C00, 0x02D48BC00, 0x02D4A3C00, 0x02D623C00, 0x060B2DC00, 0x08C9E1C00, 0x08D48BC00, 0x08D4A3C00, 0x08D623C00, 0x0BD488C00, 0x0ED488C00, 0x10F52AC00, 0x10F58AC00, 0x12D48BC00, 0x12D4A3C00, 0x12D623C00, 0x13F52A000, 0x1BD488C00, 0x438D3A400, 0x438D68C00, 0x438D8E400, 0x438D98C00, 0x438DA3400, 0x438DA4C00, 0x43A48F400, 0x43A49CC00, 0x43A4E1C00, 0x43A583C00, 0x43ED82400, 0x43F4A8400, 0x46348BC00, 0x4634A3C00, 0x463623C00, 0x46F488C00, 0x47B488C00, 0x4D84B8C00, 0x4DB488C00, 0x4F4D2A000, 0x518B2DC00, 0x0214AFC00, 0x0214BBC00, 0x02162FC00, 0x0216E3C00, 0x02178BC00, 0x0217A3C00, 0x4184AFC00, 0x4184BBC00, 0x41862FC00, 0x4186E3C00, 0x41878BC00, 0x4187A3C00, 0x43BD82400, 0x4D848BC00, 0x4D84A3C00, 0x4D8623C00, 0x4F8D82400, 0x005ABFC00, 0x00F5ABC00, 0x5069EFC00, 0x434ABDC00, 0x005BBBC00, 0x518B6FC00, 0x0077AEC00, 0x0239BF400, 0x0067AFC00, 0x04DB2BC00, 0x434EEE400, 0x0077ABC00, 0x02399FC00, 0x007AFB400, 0x434DABC00, 0x47B42BC00, 0x00B6EF400, 0x13E8DB400, 0x00E9EDC00, 0x10BE97C00, 0x02CBE5C00, 0x03B2E5C00, 0x029CEDC00, 0x03A4EDC00, 0x03B639C00, 0x03B73A400, 0x506EEF400, 0x41ACEDC00, 0x41E8EDC00, 0x41EE39C00, 0x41EF3A400, 0x03A36DC00, 0x03B399C00, 0x03B768C00, 0x0E836DC00, 0x13EA1F400, 0x41BB2F400, 0x41EE2F400, 0x41EF68C00, 0x0F462BC00, 0x0F478AC00, 0x02CAFD400, 0x02DFA4C00, 0x0346AFC00, 0x034BADC00, 0x034DBAC00, 0x034EAF400, 0x03B2BD400, 0x0F472AC00, 0x0F48B9C00, 0x10B6EF400, 0x10F9FA400, 0x41D2AFC00, 0x41D3ABC00, 0x4352AFC00, 0x4353ABC00, 0x452CAFC00, 0x453B2BC00, 0x506BBF400, 0x436F98C00, 0x00ED6BC00, 0x51CAEDC00, 0x51CEB9C00, 0x51CEFA400, 0x434DBAC00, 0x0239BDC00, 0x028BDDC00, 0x0346BBC00, 0x0347ABC00, 0x0347BAC00, 0x0349BBC00, 0x0349EBC00, 0x034ABF400, 0x034AEDC00, 0x034BAF400, 0x034DAEC00, 0x034EADC00, 0x034EEE400, 0x034FAB400, 0x03A2DDC00, 0x03B7A4C00, 0x10BBE5C00, 0x12FDA4C00, 0x41BFA4C00, 0x10ABDDC00, 0x10BE9DC00, 0x10BEDB400, 0x41D2BBC00, 0x41D3BAC00, 0x41EFA4C00, 0x434AEF400, 0x4352BBC00, 0x4353BAC00, 0x4690EFC00, 0x03F26E400, 0x10F9AF400, 0x43A46FC00, 0x43A4F9C00, 0x43A61FC00, 0x43A63DC00, 0x43F62E400, 0x10ABFD400, 0x10BBBD400, 0x10BEBD400, 0x10FAED400, 0x550ABFC00, 0x550BBBC00, 0x550BEBC00, 0x550FAEC00, 0x029F9CC00, 0x0346EBC00, 0x0347EAC00, 0x0349AFC00, 0x034ABDC00, 0x034AEF400, 0x034AFB400, 0x034DABC00, 0x034EEB400, 0x03A79CC00, 0x03ED68C00, 0x03F8AD400, 0x048B9FC00, 0x10B9BDC00, 0x129F9CC00, 0x12F7A4C00, 0x12FD68C00, 0x41ACBF400, 0x41FE8B400, 0x4368BF400, 0x436E2F400, 0x437E8B400, 0x453F8AC00, 0x4F4EA1C00, 0x5069BFC00, 0x51E9B3C00, 0x51EB9CC00, 0x51EE63C00, 0x51EF68C00, 0x51EFA4C00, 0x51FA9CC00, 0x51FB68C00, 0x51FBA4C00, 0x0239EDC00, 0x028BFD400, 0x02C9BDC00, 0x03F2AD400, 0x03F68B400, 0x0498BFC00, 0x060B9FC00, 0x060EF9C00, 0x060FA7C00, 0x060FFA400, 0x0618EFC00, 0x061CEBC00, 0x088E7DC00, 0x088EFD400, 0x08B5B3C00, 0x08C9BDC00, 0x08CE9DC00, 0x08CEBD400, 0x08CEDB400, 0x08F768C00, 0x10B9FB400, 0x10BAFD400, 0x10F6ADC00, 0x10F6EE400, 0x10FABD400, 0x41B4EBC00, 0x41B63BC00, 0x41B68FC00, 0x41D2EBC00, 0x41D3EAC00, 0x4352EBC00, 0x4353EAC00, 0x4368EDC00, 0x4369B3C00, 0x436E39C00, 0x436E63C00, 0x436F3A400, 0x436F68C00, 0x437BA4C00, 0x438A7DC00, 0x438E9DC00, 0x438EDB400, 0x438FA5C00, 0x438FA7400, 0x43EB27400, 0x43FA27400, 0x4528BFC00, 0x453F2AC00, 0x4588EFC00, 0x458CEBC00, 0x550BAFC00, 0x550FABC00, 0x41FEE2400, 0x434DEAC00, 0x437EE2400, 0x02C9FB400, 0x03F6E2400, 0x08C9FB400, 0x13A79CC00, 0x13EDA4C00, 0x41AC9FC00, 0x41AF9CC00, 0x41BE2F400, 0x41E89FC00, 0x41EB9CC00, 0x41FD2AC00, 0x41FD8AC00, 0x41FDA2C00, 0x41FDA8C00, 0x436FA4C00, 0x437A2F400, 0x437D2AC00, 0x437D8AC00, 0x437DA2C00, 0x437DA8C00, 0x46F42BC00, 0x47D38AC00, 0x4DD38AC00, 0x4F538AC00, 0x518BEDC00, 0x51AF9CC00, 0x51BB9CC00, 0x51BFA4C00, 0x10ABD7C00, 0x10BE9F400, 0x51EEE3400, 0x51FA2DC00, 0x51FE89C00, 0x51FEA3400, 0x51FECA400, 0x51FFA8400, 0x028BD7C00, 0x02CBBD400, 0x02D4EBC00, 0x02D63BC00, 0x02D68FC00, 0x03A2D7C00, 0x03E92DC00, 0x03F27A400, 0x03F52AC00, 0x03F58AC00, 0x03F5A2C00, 0x03F5A8C00, 0x03F9CA400, 0x03FA61C00, 0x04F68BC00, 0x060BEDC00, 0x061CAFC00, 0x061E2FC00, 0x0623EDC00, 0x08CAFD400, 0x08D4EBC00, 0x08D63BC00, 0x08D68FC00, 0x08DB2F400, 0x08DE39C00, 0x08DE63C00, 0x08E2FD400, 0x08F663C00, 0x0A523FC00, 0x0A538FC00, 0x0BD4B8C00, 0x0ED4B8C00, 0x10F6EB400, 0x12D4EBC00, 0x12D63BC00, 0x12D68FC00, 0x12E79CC00, 0x12ED8F400, 0x12ED9CC00, 0x12F8BD400, 0x12F9E1C00, 0x13E99CC00, 0x1A523FC00, 0x1BD4B8C00, 0x43689FC00, 0x436B9CC00, 0x437A8DC00, 0x438F99C00, 0x43ED3A400, 0x43ED68C00, 0x43ED8E400, 0x43ED98C00, 0x43EDA3400, 0x43EDA4C00, 0x43F4AB400, 0x43F52AC00, 0x43F58AC00, 0x43F5A2C00, 0x43F5A8C00, 0x43F62B400, 0x43F68B400, 0x452CBBC00, 0x458CAFC00, 0x458E2FC00, 0x4634EBC00, 0x46363BC00, 0x46368FC00, 0x463B2F400, 0x463E39C00, 0x463E63C00, 0x46923FC00, 0x46938FC00, 0x46F4B8C00, 0x47B4B8C00, 0x47D22BC00, 0x47D32AC00, 0x4DB4B8C00, 0x4DD22BC00, 0x4DD32AC00, 0x4F4A2F400, 0x4F4E8B400, 0x4F4EE2400, 0x4F522BC00, 0x4F532AC00, 0x51BE63C00, 0x51BF68C00, 0x552F8BC00, 0x553E8BC00, 0x08DB8DC00, 0x08E72DC00, 0x12F9CB400, 0x463B8DC00, 0x0066BFC00, 0x0076AFC00, 0x007EBB400, 0x03F989C00, 0x03F9A3400, 0x03FDA8400, 0x060E6FC00, 0x060F6BC00, 0x063E63C00, 0x063F68C00, 0x088E7F400, 0x08CE9F400, 0x10B9EDC00, 0x10B9F9C00, 0x10F6AF400, 0x10F6BB400, 0x13A8DDC00, 0x13B8BD400, 0x13B9CB400, 0x13B9E1C00, 0x13EA1DC00, 0x13EE25C00, 0x13FA2D400, 0x13FA4B400, 0x13FA61C00, 0x13FE62400, 0x41B4AFC00, 0x41B4BBC00, 0x41B62FC00, 0x41B6E3C00, 0x41B78BC00, 0x41B7A3C00, 0x41DA2FC00, 0x41DB2BC00, 0x41DE2BC00, 0x41DE8BC00, 0x41DF2AC00, 0x41DF8AC00, 0x435A2FC00, 0x435B2BC00, 0x435E2BC00, 0x435E8BC00, 0x435F2AC00, 0x435F8AC00, 0x438A7F400, 0x438AFD400, 0x438E9F400, 0x438EBD400, 0x4D8E2F400, 0x4F6239C00, 0x4F6263C00, 0x4F633A400, 0x4F6368C00, 0x4F8A3D400, 0x4F8E8D400, 0x51ADB3C00, 0x51BEE3400, 0x553B8BC00, 0x553FA2C00, 0x578B9CC00, 0x578FA4C00, 0x57CA9CC00, 0x57CBA4C00, 0x0BC9CB400, 0x0EC9CB400, 0x51BB2DC00, 0x0066EFC00, 0x0076BBC00, 0x0076EBC00, 0x02C9EDC00, 0x02C9F9C00, 0x02D4AFC00, 0x02D4BBC00, 0x02D62FC00, 0x02D6E3C00, 0x02D78BC00, 0x02D7A3C00, 0x02E63DC00, 0x02E73B400, 0x02E79CC00, 0x02E93F400, 0x02ED8F400, 0x02ED9CC00, 0x02EDE1C00, 0x02F663C00, 0x02F68DC00, 0x02F768C00, 0x02F78E400, 0x02F798C00, 0x02F7A4C00, 0x02F98F400, 0x02F9E1C00, 0x02FD68C00, 0x02FD98C00, 0x02FDA3400, 0x02FDA4C00, 0x034AB7C00, 0x034AF9C00, 0x034BB9C00, 0x034BFA400, 0x035A2FC00, 0x035B2BC00, 0x035E2BC00, 0x035E8BC00, 0x035F2AC00, 0x035F8AC00, 0x0362B7C00, 0x0362BDC00, 0x0362F9C00, 0x0362FB400, 0x03678BC00, 0x0368BDC00, 0x0368BF400, 0x03698FC00, 0x036A3F400, 0x036D8BC00, 0x036DA3C00, 0x036E2F400, 0x03768BC00, 0x03778AC00, 0x0377A2C00, 0x0378ADC00, 0x0378AF400, 0x0379A3C00, 0x037A2F400, 0x037DA2C00, 0x037DA8C00, 0x037E2B400, 0x03FA4B400, 0x03FE62400, 0x04B63BC00, 0x04E98FC00, 0x04ED8BC00, 0x04EDA3C00, 0x04F9A3C00, 0x04FDA2C00, 0x04FDA8C00, 0x062F9CC00, 0x063FA4C00, 0x068DB3C00, 0x06CE63C00, 0x06CF68C00, 0x08C9EDC00, 0x08C9F9C00, 0x08D4AFC00, 0x08D4BBC00, 0x08D62FC00, 0x08D6E3C00, 0x08D78BC00, 0x08D7A3C00, 0x08E93F400, 0x08ED8F400, 0x08ED9CC00, 0x08EDE1C00, 0x08F6E3400, 0x08F98F400, 0x08F9E1C00, 0x08FD68C00, 0x08FD98C00, 0x08FDA3400, 0x08FDA4C00, 0x0A7C9CC00, 0x0AF583C00, 0x0B9C9CC00, 0x0BC9E1C00, 0x0BD48BC00, 0x0BD4A3C00, 0x0BD623C00, 0x0E9C9CC00, 0x0EC9E1C00, 0x0ED48BC00, 0x0ED4A3C00, 0x0ED623C00, 0x0FA49CC00, 0x0FF262400, 0x0FF52A000, 0x10F5ABC00, 0x10F5AEC00, 0x12D4AFC00, 0x12D4BBC00, 0x12D62FC00, 0x12D6E3C00, 0x12D78BC00, 0x12D7A3C00, 0x12DA37C00, 0x12DB2F400, 0x12DB39C00, 0x12DE2F400, 0x12DE39C00, 0x12DE63C00, 0x12DF3A400, 0x12DF68C00, 0x12DF98C00, 0x12DFA4C00, 0x12E72DC00, 0x13E62F400, 0x13E639C00, 0x13E73A400, 0x13E768C00, 0x13E798C00, 0x13E7A4C00, 0x13E92DC00, 0x13F52AC00, 0x13F58AC00, 0x13F5A2C00, 0x13F5A8C00, 0x13F68B400, 0x13F989C00, 0x13F9A3400, 0x13F9CA400, 0x1A7C9CC00, 0x1B9C9CC00, 0x1BD48BC00, 0x1BD4A3C00, 0x1BD623C00, 0x438D6BC00, 0x438D9BC00, 0x438DA7C00, 0x438DAF400, 0x438DBE400, 0x438DFA400, 0x43A49FC00, 0x43A4BF400, 0x43A4EDC00, 0x43A58FC00, 0x43A5B3C00, 0x43A78F400, 0x43A79CC00, 0x43A7E1C00, 0x43AB3D400, 0x43AF27400, 0x43BA3D400, 0x43BB27400, 0x43BD3A400, 0x43BD68C00, 0x43BD8E400, 0x43BD98C00, 0x43BDA3400, 0x43BDA4C00, 0x43BE8D400, 0x43F6A1C00, 0x43F6E2400, 0x4634AFC00, 0x4634BBC00, 0x46362FC00, 0x4636E3C00, 0x46378BC00, 0x4637A3C00, 0x46BC2DC00, 0x46BC9CC00, 0x46EC2DC00, 0x46EC9CC00, 0x46F48BC00, 0x46F4A3C00, 0x46F623C00, 0x47AC9CC00, 0x47B48BC00, 0x47B4A3C00, 0x47B623C00, 0x47E89CC00, 0x47FD2A000, 0x4D84EBC00, 0x4D863BC00, 0x4D868FC00, 0x4DAC9CC00, 0x4DB48BC00, 0x4DB4A3C00, 0x4DB623C00, 0x4DCB98C00, 0x4DCBA4C00, 0x4DE89CC00, 0x4DFD2A000, 0x4F4B98C00, 0x4F4BA4C00, 0x4F4D2AC00, 0x4F4D8AC00, 0x4F4DA2C00, 0x4F4DA8C00, 0x4F63A4C00, 0x4F689CC00, 0x4F7D2A000, 0x4F8D3A400, 0x4F8D68C00, 0x4F8D8E400, 0x4F8D98C00, 0x4F8DA3400, 0x4F8DA4C00, 0x4FA48F400, 0x4FA49CC00, 0x4FA4E1C00, 0x4FA583C00, 0x4FF52A000, 0x4FF622400, 0x578E63C00, 0x578EE3400, 0x578F68C00, 0x57CB68C00, 0x0216BFC00, 0x0216EFC00, 0x0216FBC00, 0x0217AFC00, 0x0217BBC00, 0x0217EBC00, 0x13A8D7C00, 0x13EA17C00, 0x4186BFC00, 0x4186EFC00, 0x4186FBC00, 0x4187AFC00, 0x4187BBC00, 0x4187EBC00, 0x578B2DC00, 0x57CA2DC00, 0x57CE89C00, 0x57CEA3400, 0x57CECA400, 0x57CFA8400, 0x1FF52A000, 0x02E72DC00, 0x02F6E3400, 0x02F9CB400, 0x04A87FC00, 0x04B62FC00, 0x04B78BC00, 0x04B89FC00, 0x06CB2DC00, 0x08F9CB400, 0x12DB8DC00, 0x13E68DC00, 0x13F6A1C00, 0x13F6E2400, 0x4D84AFC00, 0x4D84BBC00, 0x4D862FC00, 0x4D86E3C00, 0x4D878BC00, 0x4D87A3C00, 0x4FBD82400, 0x4FED82400, 0x4FF4A8400, 0x00006A800, 0x0001AAC00, 0x0006ABC00, 0x43A428C00, 0x438D2A000, 0x43A488C00, 0x0026AFC00, 0x43A42BC00, 0x518B8BC00, 0x43A4B8C00, 0x43ED2A000, 0x438A2F400, 0x438A8DC00, 0x438E8B400, 0x438EA1C00, 0x438EE2400, 0x438D2AC00, 0x438D8AC00, 0x438DA2C00, 0x438DA8C00, 0x43A48BC00, 0x43A4A3C00, 0x43A623C00, 0x43BD2A000, 0x4F8D2A000, 0x4FA488C00, 0x006ABFC00, 0x00F9ABC00, 0x00E9EBC00, 0x00EDEAC00, 0x0236EBC00, 0x00EEBB400, 0x434BBAC00, 0x434BEAC00, 0x434AEBC00, 0x434ABBC00, 0x02DE2BC00, 0x03B62BC00, 0x41ACEBC00, 0x41E8EBC00, 0x518ABFC00, 0x51BF8AC00, 0x0239AFC00, 0x41BF8AC00, 0x518BAFC00, 0x0FA09BC00, 0x506AEFC00, 0x518AEFC00, 0x51BE8BC00, 0x506AFBC00, 0x506ABFC00, 0x507EABC00, 0x0E82F9C00, 0x0E83FA400, 0x41A8BFC00, 0x41BA2FC00, 0x41BE2BC00, 0x41BF2AC00, 0x41EF8AC00, 0x02CAF9C00, 0x03A29FC00, 0x060AEFC00, 0x060BEBC00, 0x060EBBC00, 0x060FBAC00, 0x41ACAFC00, 0x41E8AFC00, 0x41EE2BC00, 0x41EF2AC00, 0x51FA8BC00, 0x1FA06BC00, 0x4368EBC00, 0x43EEA1C00, 0x0E839BC00, 0x437B8AC00, 0x034AAFC00, 0x034AEBC00, 0x034BABC00, 0x034BEAC00, 0x034EABC00, 0x034EEAC00, 0x034FAAC00, 0x034FEA800, 0x060BAFC00, 0x060FABC00, 0x4368BBC00, 0x437A2BC00, 0x437B2AC00, 0x43F4AAC00, 0x43F4EA800, 0x438AFB400, 0x53FA68C00, 0x518BBBC00, 0x506BAFC00, 0x10BBB9C00, 0x10FAE9C00, 0x13A89FC00, 0x4368AFC00, 0x436A2FC00, 0x436E2BC00, 0x436E8BC00, 0x436F2AC00, 0x436F8AC00, 0x438ABDC00, 0x438EADC00, 0x438EEE400, 0x43EBA4C00, 0x43FAA4C00, 0x43FEA2400, 0x41BB2BC00, 0x43EA2F400, 0x43EE8B400, 0x51AF8BC00, 0x51BB8BC00, 0x51BFA2C00, 0x53EBA4C00, 0x53FBA8400, 0x10F9ABC00, 0x4FA42BC00, 0x02DB2BC00, 0x08CBB9C00, 0x08DE2BC00, 0x08DE8BC00, 0x08F68BC00, 0x10F7AAC00, 0x12E78BC00, 0x12ED8BC00, 0x12EDA3C00, 0x13E98BC00, 0x438EEB400, 0x43A4EBC00, 0x43A63BC00, 0x43A68FC00, 0x43ED2AC00, 0x43ED8AC00, 0x43EDA2C00, 0x43EDA8C00, 0x463E2BC00, 0x463E8BC00, 0x4DCB8AC00, 0x4F4B8AC00, 0x4FA4B8C00, 0x53EA63C00, 0x53EB68C00, 0x438ABF400, 0x438AEF400, 0x438EAF400, 0x438EBB400, 0x43EEE2400, 0x4D8B2BC00, 0x4DCA2BC00, 0x4DCB2AC00, 0x4F4A2BC00, 0x4F4B2AC00, 0x4F622BC00, 0x4F628BC00, 0x4F632AC00, 0x4F638AC00, 0x4F8A2F400, 0x4F8A8DC00, 0x4F8E8B400, 0x4F8EA1C00, 0x4F8EE2400, 0x53EAE3400, 0x53EE89C00, 0x53EEA3400, 0x53EECA400, 0x53EFA8400, 0x578B8BC00, 0x578FA2C00, 0x57CA8BC00, 0x57CBA2C00, 0x02E78BC00, 0x02E98FC00, 0x02ED8BC00, 0x02EDA3C00, 0x02F68BC00, 0x02F78AC00, 0x02F7A2C00, 0x02F9A3C00, 0x02FDA2C00, 0x02FDA8C00, 0x08E98FC00, 0x08ED8BC00, 0x08EDA3C00, 0x08F9A3C00, 0x08FDA2C00, 0x08FDA8C00, 0x0E8E63C00, 0x0E8F68C00, 0x0FA368C00, 0x12DA2FC00, 0x12DB2BC00, 0x12DE2BC00, 0x12DE8BC00, 0x12DF2AC00, 0x12DF8AC00, 0x13E62BC00, 0x13E72AC00, 0x13E78AC00, 0x438DABC00, 0x438DAEC00, 0x438DBAC00, 0x438DEAC00, 0x43A4AFC00, 0x43A4BBC00, 0x43A62FC00, 0x43A6E3C00, 0x43A78BC00, 0x43A7A3C00, 0x43AA37C00, 0x43AB2F400, 0x43AB39C00, 0x43AE2F400, 0x43AE39C00, 0x43AE63C00, 0x43AF3A400, 0x43AF68C00, 0x43AF98C00, 0x43AFA4C00, 0x43BA2F400, 0x43BA39C00, 0x43BB3A400, 0x43BB68C00, 0x43BB98C00, 0x43BBA4C00, 0x43BD2AC00, 0x43BD8AC00, 0x43BDA2C00, 0x43BDA8C00, 0x43BE8B400, 0x4F8D2AC00, 0x4F8D8AC00, 0x4F8DA2C00, 0x4F8DA8C00, 0x4FA48BC00, 0x4FA4A3C00, 0x4FA623C00, 0x4FBD2A000, 0x4FED2A000, 0x58EB3B400, 0x58EB9CC00, 0x58EF68C00, 0x1FA398C00, 0x58EA3DC00, 0x58EF8E400, 0x58EF98C00, 0x0E8B2DC00, 0x0FA22DC00, 0x0FB289C00, 0x0FB2CA400, 0x43AB8DC00, 0x43BA8DC00, 0x43BEA1C00, 0x43BEE2400, 0x58EB2DC00, 0x00202A800, 0x0020AAC00, 0x0022ABC00, 0x002AAFC00, 0x00AABFC00, 0x0E83ABC00, 0x43EB8AC00, 0x43FA8AC00, 0x43EA2BC00, 0x43EB2AC00, 0x43FA2AC00, 0x53EA8BC00, 0x53EBA2C00, 0x438FAAC00, 0x43AA2FC00, 0x43AB2BC00, 0x43AE2BC00, 0x43AE8BC00, 0x43AF2AC00, 0x43AF8AC00, 0x43BA2BC00, 0x43BB2AC00, 0x43BB8AC00, 0x58EB8BC00, 0x58EF8AC00, 0x000555000, 0x003555000, 0x00555F000, 0x005577000, 0x005775000, 0x051D47000, 0x051D4D000, 0x053547000, 0x05354D000, 0x41D475000, 0x41D4D5000, 0x41D547000, 0x41D54D000, 0x435475000, 0x4354D5000, 0x435547000, 0x43554D000, 0x007755000, 0x034755000, 0x034D55000, 0x035475000, 0x0354D5000, 0x035547000, 0x03554D000, 0x04D475000, 0x04D4D5000, 0x04D547000, 0x04D54D000, 0x41D355000, 0x435355000, 0x453475000, 0x4534D5000, 0x453547000, 0x45354D000, 0x454D47000, 0x454D4D000, 0x10F555000, 0x550F55000, 0x005461000, 0x004915000, 0x004615000, 0x002155000, 0x005467000, 0x0049D5000, 0x004675000, 0x002755000, 0x002D55000, 0x0046D5000, 0x41D461000, 0x41D491000, 0x435461000, 0x435491000, 0x034615000, 0x034915000, 0x035461000, 0x035491000, 0x04D461000, 0x04D491000, 0x453461000, 0x453491000, 0x021475000, 0x0214D5000, 0x021547000, 0x02154D000, 0x048547000, 0x04854D000, 0x418475000, 0x4184D5000, 0x418547000, 0x41854D000, 0x41D215000, 0x435215000, 0x452147000, 0x45214D000, 0x0055B7000, 0x00567D000, 0x005B75000, 0x005677000, 0x00B755000, 0x00576D000, 0x005ED5000, 0x023D55000, 0x4523D5000, 0x023755000, 0x436355000, 0x452375000, 0x4F4855000, 0x006775000, 0x007675000, 0x00ED55000, 0x41D467000, 0x41D46D000, 0x41D617000, 0x41D61D000, 0x435467000, 0x43546D000, 0x435617000, 0x43561D000, 0x0067D5000, 0x049D47000, 0x049D4D000, 0x41B475000, 0x41B4D5000, 0x41B547000, 0x41B54D000, 0x41D275000, 0x435275000, 0x0076D5000, 0x034675000, 0x0346D5000, 0x035467000, 0x03546D000, 0x035617000, 0x03561D000, 0x036175000, 0x0361D5000, 0x04D467000, 0x04D46D000, 0x04D617000, 0x04D61D000, 0x453467000, 0x45346D000, 0x453617000, 0x45361D000, 0x02D475000, 0x02D4D5000, 0x02D547000, 0x02D54D000, 0x061D47000, 0x061D4D000, 0x08D475000, 0x08D4D5000, 0x08D547000, 0x08D54D000, 0x12D475000, 0x12D4D5000, 0x12D547000, 0x12D54D000, 0x41D49D000, 0x41D587000, 0x41D875000, 0x43549D000, 0x435587000, 0x435875000, 0x452D47000, 0x452D4D000, 0x458D47000, 0x458D4D000, 0x463475000, 0x4634D5000, 0x463547000, 0x46354D000, 0x552D47000, 0x552D4D000, 0x07D461000, 0x07D491000, 0x0F4615000, 0x0F4915000, 0x0F5461000, 0x0F5491000, 0x45F461000, 0x45F491000, 0x47D461000, 0x47D491000, 0x4DD461000, 0x4DD491000, 0x4F5461000, 0x4F5491000, 0x0349D5000, 0x03549D000, 0x035587000, 0x035875000, 0x04C9D5000, 0x04D49D000, 0x04D587000, 0x0523D5000, 0x052735000, 0x053875000, 0x05523D000, 0x055273000, 0x055387000, 0x05560F000, 0x0560F5000, 0x060F55000, 0x438D55000, 0x45349D000, 0x453587000, 0x454C9D000, 0x45523D000, 0x455273000, 0x455387000, 0x45560F000, 0x4560F5000, 0x02155F000, 0x021577000, 0x02157D000, 0x0215F5000, 0x021775000, 0x0217D5000, 0x04855F000, 0x048577000, 0x04857D000, 0x04B547000, 0x04B54D000, 0x41855F000, 0x418577000, 0x41857D000, 0x4185F5000, 0x418775000, 0x4187D5000, 0x41D2D5000, 0x4352D5000, 0x45215F000, 0x452177000, 0x45217D000, 0x47D215000, 0x4D8475000, 0x4D84D5000, 0x4D8547000, 0x4D854D000, 0x4DD215000, 0x4F5215000, 0x000569000, 0x000599000, 0x000995000, 0x504295000, 0x021461000, 0x021491000, 0x418461000, 0x418491000, 0x003569000, 0x004697000, 0x002675000, 0x002975000, 0x004799000, 0x00499D000, 0x003995000, 0x004997000, 0x504E95000, 0x0047A5000, 0x504A75000, 0x003599000, 0x506947000, 0x41B461000, 0x41B491000, 0x021467000, 0x02146D000, 0x021617000, 0x02161D000, 0x418467000, 0x41846D000, 0x418617000, 0x41861D000, 0x02D461000, 0x02D491000, 0x08D461000, 0x08D491000, 0x12D461000, 0x12D491000, 0x463461000, 0x463491000, 0x052235000, 0x055223000, 0x455223000, 0x02149D000, 0x021587000, 0x41849D000, 0x418587000, 0x41D609000, 0x435609000, 0x4D8461000, 0x4D8491000, 0x035609000, 0x036095000, 0x0488D5000, 0x04D609000, 0x453609000, 0x45488D000, 0x0055AF000, 0x0056F9000, 0x00A55F000, 0x005B67000, 0x005A77000, 0x050A77000, 0x022775000, 0x050B67000, 0x00B675000, 0x00A775000, 0x007D99000, 0x005E9D000, 0x452277000, 0x005F99000, 0x050B6D000, 0x00E975000, 0x434E95000, 0x00569F000, 0x0056BD000, 0x048E75000, 0x005FA5000, 0x506ED5000, 0x005E97000, 0x00E9D5000, 0x434A75000, 0x0227D5000, 0x506E75000, 0x45227D000, 0x04CE95000, 0x00566F000, 0x00A577000, 0x00B6D5000, 0x00F995000, 0x00F599000, 0x005B6D000, 0x007799000, 0x00665F000, 0x51CE95000, 0x006F95000, 0x5069F5000, 0x506B75000, 0x507E95000, 0x006677000, 0x006977000, 0x007997000, 0x454A37000, 0x10A577000, 0x006D9D000, 0x00799D000, 0x029D47000, 0x029D4D000, 0x03A547000, 0x03A54D000, 0x129D47000, 0x129D4D000, 0x41AD47000, 0x41AD4D000, 0x41D267000, 0x41D369000, 0x41E947000, 0x41E94D000, 0x435267000, 0x435369000, 0x4362D5000, 0x51E947000, 0x51E94D000, 0x00679D000, 0x0077A5000, 0x034697000, 0x03469D000, 0x034799000, 0x034D99000, 0x4D82D5000, 0x034667000, 0x034769000, 0x03499D000, 0x034DA5000, 0x08B547000, 0x08B54D000, 0x41B467000, 0x41B46D000, 0x41B617000, 0x41B61D000, 0x41D399000, 0x41D86D000, 0x435399000, 0x43586D000, 0x436947000, 0x43694D000, 0x00667D000, 0x434D99000, 0x434DA5000, 0x10F995000, 0x13A547000, 0x13A54D000, 0x51AD47000, 0x51AD4D000, 0x02D467000, 0x02D46D000, 0x02D617000, 0x02D61D000, 0x0347A5000, 0x034997000, 0x034D69000, 0x03586D000, 0x04C997000, 0x051E93000, 0x052397000, 0x052E35000, 0x0535A3000, 0x05386D000, 0x0552E3000, 0x08D467000, 0x08D46D000, 0x08D617000, 0x08D61D000, 0x12D467000, 0x12D46D000, 0x12D617000, 0x12D61D000, 0x4552E3000, 0x463467000, 0x46346D000, 0x463617000, 0x46361D000, 0x50695F000, 0x550F99000, 0x1FA055000, 0x007697000, 0x00769D000, 0x0486D7000, 0x068D47000, 0x068D4D000, 0x10B9D5000, 0x10F695000, 0x41B49D000, 0x41B587000, 0x41D3A5000, 0x41D4E9000, 0x41D5A3000, 0x41D639000, 0x41D663000, 0x41D68D000, 0x41D693000, 0x41DA35000, 0x4353A5000, 0x4354E9000, 0x4355A3000, 0x435639000, 0x435663000, 0x43568D000, 0x435693000, 0x435A35000, 0x43A475000, 0x43A4D5000, 0x43A547000, 0x43A54D000, 0x550B9D000, 0x550F69000, 0x0066F5000, 0x04879D000, 0x051B8D000, 0x0524B7000, 0x05272D000, 0x056237000, 0x062375000, 0x0BD461000, 0x0BD491000, 0x0ED461000, 0x0ED491000, 0x1BD461000, 0x1BD491000, 0x456237000, 0x46F461000, 0x46F491000, 0x47B461000, 0x47B491000, 0x4DB461000, 0x4DB491000, 0x506977000, 0x007667000, 0x02C9D5000, 0x02D49D000, 0x02D587000, 0x034E95000, 0x0354E9000, 0x0355A3000, 0x035639000, 0x035663000, 0x03568D000, 0x035693000, 0x035A35000, 0x036395000, 0x036635000, 0x0368D5000, 0x036935000, 0x048BD5000, 0x04D4E9000, 0x04D5A3000, 0x04D639000, 0x04D663000, 0x04D68D000, 0x04D693000, 0x04E935000, 0x0522F5000, 0x052787000, 0x0528F5000, 0x05522F000, 0x05528F000, 0x05588F000, 0x0560BD000, 0x0588F5000, 0x060BD5000, 0x061C9D000, 0x08C9D5000, 0x08D49D000, 0x08D587000, 0x10F569000, 0x12D49D000, 0x12D587000, 0x452C9D000, 0x4534E9000, 0x4535A3000, 0x453639000, 0x453663000, 0x45368D000, 0x453693000, 0x4548BD000, 0x454E93000, 0x45522F000, 0x45528F000, 0x45588F000, 0x4560BD000, 0x458C9D000, 0x46349D000, 0x463587000, 0x4D8467000, 0x4D846D000, 0x4D8617000, 0x4D861D000, 0x0215B7000, 0x0215E7000, 0x0215ED000, 0x021677000, 0x02167D000, 0x0216D7000, 0x0216DD000, 0x021767000, 0x02176D000, 0x02179D000, 0x4185B7000, 0x4185E7000, 0x4185ED000, 0x418677000, 0x41867D000, 0x4186D7000, 0x4186DD000, 0x418767000, 0x41876D000, 0x41879D000, 0x41D297000, 0x41D29D000, 0x435297000, 0x43529D000, 0x10F599000, 0x04B8D5000, 0x07D609000, 0x0F5609000, 0x0F6095000, 0x454B8D000, 0x45F609000, 0x47D609000, 0x4D849D000, 0x4D8587000, 0x4DD609000, 0x4F5609000, 0x004929000, 0x002199000, 0x048069000, 0x002169000, 0x0054A8000, 0x0046A1000, 0x418429000, 0x021609000, 0x418609000, 0x0049B9000, 0x002799000, 0x048267000, 0x002667000, 0x0054AB000, 0x0046AD000, 0x41B429000, 0x005B89000, 0x005A2D000, 0x41D4A8000, 0x41D889000, 0x4354A8000, 0x435889000, 0x04889D000, 0x43A461000, 0x43A491000, 0x550A27000, 0x550B29000, 0x0346A1000, 0x034929000, 0x034989000, 0x034A85000, 0x0354A8000, 0x035889000, 0x048693000, 0x048897000, 0x04C989000, 0x04D4A8000, 0x4534A8000, 0x463429000, 0x0214E9000, 0x0215A3000, 0x021639000, 0x021663000, 0x02168D000, 0x021693000, 0x4184E9000, 0x4185A3000, 0x418639000, 0x418663000, 0x41868D000, 0x418693000, 0x41B609000, 0x41D2A1000, 0x4352A1000, 0x006627000, 0x00668D000, 0x0076A1000, 0x02D609000, 0x08D609000, 0x12D609000, 0x463609000, 0x4D8609000, 0x00A677000, 0x0485AF000, 0x00A5B7000, 0x0069B7000, 0x005AB7000, 0x0056AF000, 0x006AF5000, 0x062277000, 0x00B799000, 0x00E99D000, 0x436399000, 0x00E66D000, 0x4D8297000, 0x506A7D000, 0x049CE9000, 0x00A76D000, 0x00ED99000, 0x434A67000, 0x048E67000, 0x506A77000, 0x434B99000, 0x023D99000, 0x005BAD000, 0x062367000, 0x06236D000, 0x02399D000, 0x434A6D000, 0x436369000, 0x4690E7000, 0x0069ED000, 0x4F4869000, 0x0518AF000, 0x051E2B000, 0x518B6D000, 0x5069E7000, 0x051CAB000, 0x0522E7000, 0x436297000, 0x005BB9000, 0x00BB95000, 0x00ED69000, 0x43629D000, 0x5069ED000, 0x1BE095000, 0x060F99000, 0x023997000, 0x02CE95000, 0x04DA87000, 0x453A87000, 0x5069B7000, 0x518B67000, 0x048B9D000, 0x41D8B9000, 0x4358B9000, 0x04E2B5000, 0x060B9D000, 0x060FA5000, 0x10B997000, 0x41AC9D000, 0x41E89D000, 0x454E2B000, 0x10ABD5000, 0x10BE95000, 0x550ABD000, 0x550BE9000, 0x028BD5000, 0x02C997000, 0x0346AD000, 0x0349B9000, 0x0358B9000, 0x0361E9000, 0x03A2D5000, 0x03B895000, 0x048AF5000, 0x048B97000, 0x0498BD000, 0x049E93000, 0x04C9B9000, 0x04CAB5000, 0x04DA2D000, 0x04DB89000, 0x060B97000, 0x08C997000, 0x43689D000, 0x43A467000, 0x43A46D000, 0x43A617000, 0x43A61D000, 0x4528BD000, 0x453A2D000, 0x453B89000, 0x4548AF000, 0x454CAB000, 0x005AED000, 0x04E729000, 0x060E67000, 0x060F69000, 0x0618E7000, 0x06198F000, 0x061CE9000, 0x061DA3000, 0x088E75000, 0x0898F5000, 0x08CE95000, 0x08DA35000, 0x12A735000, 0x12E935000, 0x41B4E9000, 0x41B5A3000, 0x41B639000, 0x41B663000, 0x41B68D000, 0x41B693000, 0x41D2AD000, 0x41D4AB000, 0x41D62B000, 0x41D68B000, 0x41D6A3000, 0x41D8AD000, 0x41DA2D000, 0x4352AD000, 0x4354AB000, 0x43562B000, 0x43568B000, 0x4356A3000, 0x4358AD000, 0x435A2D000, 0x438A75000, 0x438E95000, 0x4588E7000, 0x45898F000, 0x458CE9000, 0x458DA3000, 0x4628F5000, 0x463A35000, 0x552A73000, 0x552E93000, 0x4FA461000, 0x4FA491000, 0x0066BD000, 0x0066E7000, 0x0076AD000, 0x02D4E9000, 0x02D5A3000, 0x02D639000, 0x02D663000, 0x02D68D000, 0x02D693000, 0x02E635000, 0x02E935000, 0x0349E9000, 0x034AB5000, 0x0354AB000, 0x03562B000, 0x03568B000, 0x0356A3000, 0x0358AD000, 0x035A2D000, 0x0362B5000, 0x0368B5000, 0x036987000, 0x036A35000, 0x04869F000, 0x04C9E9000, 0x04D4AB000, 0x04D62B000, 0x04D68B000, 0x04D6A3000, 0x04E627000, 0x04E68D000, 0x04E987000, 0x04F6A1000, 0x061E93000, 0x069273000, 0x07C989000, 0x07D4A8000, 0x08D4E9000, 0x08D5A3000, 0x08D639000, 0x08D663000, 0x08D68D000, 0x08D693000, 0x08E935000, 0x0A2735000, 0x0A523D000, 0x0A5273000, 0x0A5387000, 0x0A560F000, 0x0F46A1000, 0x0F4929000, 0x0F4989000, 0x0F4A85000, 0x0F54A8000, 0x0F5889000, 0x12D4E9000, 0x12D5A3000, 0x12D639000, 0x12D663000, 0x12D68D000, 0x12D693000, 0x12DA35000, 0x1A523D000, 0x1A5273000, 0x438D69000, 0x438D99000, 0x438DA5000, 0x43A49D000, 0x43A587000, 0x452E63000, 0x452E93000, 0x4534AB000, 0x45362B000, 0x45368B000, 0x4536A3000, 0x458E93000, 0x45A273000, 0x45F4A8000, 0x4634E9000, 0x4635A3000, 0x463639000, 0x463663000, 0x46368D000, 0x463693000, 0x4690B7000, 0x46923D000, 0x469273000, 0x469387000, 0x46960F000, 0x47D4A8000, 0x47D889000, 0x4DD4A8000, 0x4DD889000, 0x4F54A8000, 0x4F5889000, 0x552DA3000, 0x0215AF000, 0x02166F000, 0x02169F000, 0x0216BD000, 0x0216F9000, 0x0217E9000, 0x13A8D5000, 0x13EA15000, 0x4185AF000, 0x41866F000, 0x41869F000, 0x4186BD000, 0x4186F9000, 0x4187E9000, 0x41DA87000, 0x41DB89000, 0x435A87000, 0x435B89000, 0x5528B7000, 0x553A27000, 0x553A8D000, 0x553B29000, 0x553EA1000, 0x035A87000, 0x035B89000, 0x036627000, 0x03668D000, 0x036729000, 0x03692D000, 0x0376A1000, 0x037989000, 0x04A4ED000, 0x04A673000, 0x04A85F000, 0x04A877000, 0x04A87D000, 0x04B5A3000, 0x04B639000, 0x04B663000, 0x04B693000, 0x04B897000, 0x04B89D000, 0x04E92D000, 0x04F989000, 0x0BD609000, 0x0ED609000, 0x1BD609000, 0x46F609000, 0x47B609000, 0x47D2A1000, 0x4D84E9000, 0x4D85A3000, 0x4D8639000, 0x4D8663000, 0x4D868D000, 0x4D8693000, 0x4DB609000, 0x4DD2A1000, 0x4F52A1000, 0x04A4B7000, 0x0005AA000, 0x504A29000, 0x0214A8000, 0x4184A8000, 0x002AB5000, 0x0026B9000, 0x0049AB000, 0x0026AD000, 0x0046AB000, 0x004AAD000, 0x00A5A3000, 0x00A4E9000, 0x0680E9000, 0x0035AA000, 0x504AE9000, 0x0209E9000, 0x506EA1000, 0x5069A3000, 0x434A89000, 0x518A8D000, 0x51CA29000, 0x418A2D000, 0x41AC29000, 0x023989000, 0x41B4A8000, 0x43A429000, 0x10B989000, 0x02C989000, 0x02D4A8000, 0x08C989000, 0x08D4A8000, 0x0A5223000, 0x12D4A8000, 0x4634A8000, 0x469223000, 0x518A27000, 0x518B29000, 0x0214AB000, 0x02162B000, 0x02168B000, 0x0216A3000, 0x060A27000, 0x060B29000, 0x4184AB000, 0x41862B000, 0x41868B000, 0x4186A3000, 0x1A5223000, 0x43A609000, 0x4D84A8000, 0x00A6F9000, 0x00AAF5000, 0x006A9F000, 0x0069AF000, 0x007AA7000, 0x00AA77000, 0x00BAB5000, 0x006DAB000, 0x006AE7000, 0x005AAF000, 0x00A6BD000, 0x00E6B9000, 0x00AE97000, 0x022DE9000, 0x0487AB000, 0x00A7E9000, 0x00A5AF000, 0x10A5AF000, 0x006AB7000, 0x00A69F000, 0x00AF99000, 0x00FA69000, 0x0683E9000, 0x005BAB000, 0x00A66F000, 0x00B6AD000, 0x418AB7000, 0x006ABD000, 0x02DA87000, 0x506AF9000, 0x00F5AA000, 0x0067AB000, 0x03A399000, 0x00E9E9000, 0x006AED000, 0x0077AA000, 0x007AE9000, 0x00AB9D000, 0x506EAD000, 0x0FA099000, 0x10AB9D000, 0x518ABD000, 0x0298E7000, 0x029CE9000, 0x03A4E9000, 0x048AE7000, 0x434AB9000, 0x03A29D000, 0x06826F000, 0x10B6AD000, 0x13A369000, 0x13A399000, 0x1FA069000, 0x41A8E7000, 0x41ACE9000, 0x41E8E9000, 0x506ABD000, 0x51CAE9000, 0x00AE9D000, 0x028E67000, 0x029DA3000, 0x03A369000, 0x03A5A3000, 0x0486EB000, 0x0E8267000, 0x0E8369000, 0x128B67000, 0x41ADA3000, 0x41E9A3000, 0x434AAD000, 0x10A66F000, 0x10AF99000, 0x1FA099000, 0x506A6F000, 0x41BA87000, 0x028B97000, 0x03A297000, 0x0E8399000, 0x10AB97000, 0x007AAD000, 0x0239B9000, 0x436A63000, 0x0239E9000, 0x029E93000, 0x0346AB000, 0x0347AA000, 0x0349AB000, 0x034AA7000, 0x034AAD000, 0x034AE9000, 0x034DAA000, 0x034EA9000, 0x03A693000, 0x048AED000, 0x129E93000, 0x13A267000, 0x41D2AB000, 0x41D3AA000, 0x4352AB000, 0x4353AA000, 0x51AE63000, 0x51E9A3000, 0x51EA93000, 0x13A89D000, 0x434DAA000, 0x5069AF000, 0x021AED000, 0x0229B7000, 0x088E6D000, 0x08B5A3000, 0x10B9B9000, 0x41AE93000, 0x41EA93000, 0x41FA89000, 0x4368E9000, 0x4369A3000, 0x438A6D000, 0x4690AF000, 0x518AE7000, 0x518BE9000, 0x03E689000, 0x10BAB5000, 0x550BAB000, 0x02C9B9000, 0x02E2B5000, 0x08C9B9000, 0x0A52E3000, 0x13A693000, 0x418AED000, 0x41A8BD000, 0x41BA2D000, 0x436A93000, 0x452E2B000, 0x4692E3000, 0x51AE93000, 0x51EEA1000, 0x51FA29000, 0x03E929000, 0x437A89000, 0x006EAD000, 0x007EA9000, 0x028AF5000, 0x02CAB5000, 0x02DA2D000, 0x0498AF000, 0x060AE7000, 0x060BE9000, 0x0618AF000, 0x061A2F000, 0x061CAB000, 0x061E2B000, 0x0622E7000, 0x0623E9000, 0x088AF5000, 0x0898BD000, 0x089A37000, 0x08A2F5000, 0x08A4B7000, 0x08CAB5000, 0x08DA2D000, 0x08DA87000, 0x08DB89000, 0x08E2B5000, 0x08E729000, 0x10B9E9000, 0x10F6A9000, 0x12A2F5000, 0x12A72D000, 0x12A787000, 0x12E8B5000, 0x12E92D000, 0x12E987000, 0x12F989000, 0x41B4AB000, 0x41B62B000, 0x41B68B000, 0x41B6A3000, 0x4528AF000, 0x452CAB000, 0x4588AF000, 0x458A2F000, 0x458CAB000, 0x458E2B000, 0x4628BD000, 0x462A37000, 0x463A2D000, 0x463A87000, 0x463B89000, 0x51A98F000, 0x51ADA3000, 0x552A2F000, 0x552E8B000, 0x0A272D000, 0x13A897000, 0x13B989000, 0x41BB89000, 0x51AB8D000, 0x51BA27000, 0x51BA8D000, 0x51BB29000, 0x51BEA1000, 0x10AAF5000, 0x10FAA5000, 0x550AAF000, 0x550FAA000, 0x1A52E3000, 0x0066AF000, 0x0076AB000, 0x02C9E9000, 0x02D4AB000, 0x02D62B000, 0x02D68B000, 0x02D6A3000, 0x02DB89000, 0x02E987000, 0x068DA3000, 0x08C9E9000, 0x08D4AB000, 0x08D62B000, 0x08D68B000, 0x08D6A3000, 0x08E627000, 0x08E68D000, 0x08E987000, 0x08F6A1000, 0x0A2787000, 0x0A522F000, 0x0A528F000, 0x0A588F000, 0x0BC989000, 0x0BD4A8000, 0x0EC989000, 0x0ED4A8000, 0x12D4AB000, 0x12D62B000, 0x12D68B000, 0x12D6A3000, 0x12DA2D000, 0x12E627000, 0x12E68D000, 0x12E729000, 0x13E929000, 0x1A522F000, 0x1BD4A8000, 0x43A4E9000, 0x43A5A3000, 0x43A639000, 0x43A663000, 0x43A68D000, 0x43A693000, 0x43AA35000, 0x4634AB000, 0x46362B000, 0x46368B000, 0x4636A3000, 0x46922F000, 0x46928F000, 0x46988F000, 0x46B827000, 0x46F4A8000, 0x47B4A8000, 0x4D8A2D000, 0x4DB4A8000, 0x0216AF000, 0x0216BB000, 0x0216EB000, 0x0217AB000, 0x4186AF000, 0x4186BB000, 0x4186EB000, 0x4187AB000, 0x4D8B89000, 0x4DCA89000, 0x4F4A89000, 0x578A27000, 0x578A8D000, 0x578B29000, 0x578EA1000, 0x57CA29000, 0x10F5AA000, 0x1A528F000, 0x58EA35000, 0x46BC29000, 0x02E627000, 0x02E68D000, 0x02E729000, 0x02E92D000, 0x02F6A1000, 0x02F989000, 0x04A62F000, 0x04B62B000, 0x04B68B000, 0x0688B7000, 0x06CA27000, 0x06CB29000, 0x08E92D000, 0x08F989000, 0x12DA87000, 0x12DB89000, 0x13E689000, 0x4D84AB000, 0x4D862B000, 0x4D868B000, 0x4D86A3000, 0x4FA609000, 0x59BE09000, 0x0022A9000, 0x0021AA000, 0x0480AA000, 0x002AA7000, 0x0026AB000, 0x0482AB000, 0x438A89000, 0x43A4A8000, 0x00AAB7000, 0x048AAF000, 0x00A6AF000, 0x0229AF000, 0x00E9AB000, 0x0226AF000, 0x0236AB000, 0x023AA7000, 0x434BAA000, 0x022AB7000, 0x00EEA9000, 0x00EAAD000, 0x0227AB000, 0x023DAA000, 0x434AAB000, 0x4363AA000, 0x0298AF000, 0x0239AB000, 0x00EDAA000, 0x506ABB000, 0x506AAF000, 0x518AAF000, 0x048EAB000, 0x41AE2B000, 0x41EA2B000, 0x41A8AF000, 0x41ACAB000, 0x41E8AB000, 0x060AAF000, 0x060BAB000, 0x060EAB000, 0x060FAA000, 0x518BAB000, 0x4368AB000, 0x436A2B000, 0x438AB9000, 0x51AA2F000, 0x51AE8B000, 0x438AAD000, 0x438EA9000, 0x4F8A89000, 0x53EAA1000, 0x438DAA000, 0x43A4AB000, 0x43A62B000, 0x43A68B000, 0x43A6A3000, 0x43AA2D000, 0x4FA4A8000, 0x0E8A27000, 0x0E8B29000, 0x0FA229000, 0x43AA87000, 0x43AB89000, 0x43BA89000, 0x58EA27000, 0x58EB29000, 0x1FA289000, 0x00A0AA000, 0x10A0AA000, 0x00A2AB000, 0x00A3AA000, 0x03A0AA000, 0x10A2AB000, 0x10A3AA000, 0x13A0AA000, 0x00AAAF000, 0x00ABAB000, 0x00AEAB000, 0x00AFAA000, 0x10ABAB000, 0x03A2AB000, 0x03A3AA000, 0x0FA0AA000, 0x13A2AB000, 0x13A3AA000, 0x10AAAF000, 0x10AFAA000, 0x0E82AB000, 0x0E83AA000, 0x1FA0AA000, 0x005554000, 0x051854000, 0x052454000, 0x055184000, 0x055244000, 0x455184000, 0x455244000, 0x021554000, 0x048554000, 0x418554000, 0x452154000, 0x454854000, 0x0055A4000, 0x005A54000, 0x005694000, 0x005664000, 0x00A554000, 0x10A554000, 0x550A54000, 0x506954000, 0x006654000, 0x055824000, 0x058254000, 0x455824000, 0x022654000, 0x452264000, 0x048664000, 0x021A54000, 0x0485A4000, 0x418A54000, 0x4521A4000, 0x518A54000, 0x0A5184000, 0x0A5244000, 0x1A5184000, 0x469184000, 0x469244000, 0x048694000, 0x051A84000, 0x0524A4000, 0x052624000, 0x052A14000, 0x0552A0000, 0x056224000, 0x062254000, 0x4552A0000, 0x456224000, 0x0215A4000, 0x021664000, 0x021694000, 0x4185A4000, 0x418664000, 0x418694000, 0x04A854000, 0x454A84000, 0x00A5A4000, 0x00A664000, 0x00A694000, 0x0681A4000, 0x10A5A4000, 0x0056A8000, 0x0069A4000, 0x006A94000, 0x068264000, 0x10A664000, 0x506A64000, 0x5069A4000, 0x005AA4000, 0x02A254000, 0x049A24000, 0x452A24000, 0x5528A4000, 0x4690A4000, 0x0A5824000, 0x469824000, 0x1A8254000, 0x55A824000, 0x1A5824000, 0x04A4A4000, 0x022A94000, 0x4522A8000, 0x0486A8000, 0x048AA4000, 0x021AA4000, 0x0229A4000, 0x418AA4000, 0x089A24000, 0x08A4A4000, 0x12A624000, 0x462A24000, 0x0A2624000, 0x0A52A0000, 0x4692A0000, 0x51AA84000, 0x0216A8000, 0x4186A8000, 0x1A52A0000, 0x0688A4000, 0x00A6A8000, 0x00AAA4000, 0x0682A8000, 0x10A6A8000, 0x10AAA4000, 0x506AA8000, +}); + +} // namespace klotski::cases diff --git a/src/core/group/internal/constant/group_union.h b/src/core/group/internal/constant/group_union.h index fe40a76..c8b4943 100644 --- a/src/core/group/internal/constant/group_union.h +++ b/src/core/group/internal/constant/group_union.h @@ -25,6 +25,24 @@ constexpr auto GROUP_NUM = std::to_array({ constexpr auto GROUP_OFFSET = to_offset(GROUP_NUM); +constexpr auto PATTERN_NUM = std::to_array({ + 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , + 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 4 , 1 , 1 , 1 , 1 , + 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , + 1 , 1 , 2 , 22 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 6 , 36 , 1 , + 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 5 , 1 , 1 , 1 , 1 , 1 , 1 , + 1 , 6 , 70 , 1 , 1 , 1 , 1 , 1 , 1 , 3 , 37 , 211, 1 , 1 , 1 , 1 , + 1 , 1 , 5 , 25 , 131, 1 , 1 , 1 , 1 , 1 , 1 , 1 , 2 , 24 , 1 , 1 , + 1 , 1 , 1 , 17 , 150, 1 , 1 , 1 , 1 , 6 , 89 , 436, 1 , 1 , 1 , 3 , + 22, 122, 589, 1 , 1 , 1 , 2 , 9 , 42 , 265, 1 , 1 , 1 , 1 , 1 , 3 , + 41, 1 , 1 , 1 , 15 , 129, 1 , 1 , 4 , 82 , 433, 2 , 3 , 27 , 160, 658, + 1 , 5 , 24 , 123, 665, 1 , 1 , 4 , 20 , 230, 1 , 1 , 1 , 1 , 21 , 1 , + 1 , 36 , 4 , 32 , 148, 8 , 48, 276, 9 , 53 , 295, 4 , 46, 306, 3 , 5 , + 58, 2 , 6 , 15 , 1 , 11 , 12, 31 , 24 , 19 , 6 , +}); + +const auto PATTERN_OFFSET = to_offset(PATTERN_NUM); + /// The maximum Group size in each GroupUnion. constexpr auto MAX_GROUP_SIZE = std::to_array({ 12 , 192 , 1440 , 6720 , 21840 , 52416 , 96096 , 137280, 154440, 137280, 96096 , 52416 , diff --git a/src/core/group/internal/group_pro.cc b/src/core/group/internal/group_pro.cc new file mode 100644 index 0000000..c7c635a --- /dev/null +++ b/src/core/group/internal/group_pro.cc @@ -0,0 +1,38 @@ +#include + +#include "group/group.h" + +using klotski::cases::GroupPro; + +using klotski::codec::CommonCode; + +using klotski::cases::RangesUnion; + +using klotski::cases::GROUP_PRO_SEED; + +RangesUnion GroupPro::cases() const { + auto seed = CommonCode::unsafe_create(GROUP_PRO_SEED[flat_id()]); + + // NOTE: convert as RawCode directly + if (mirror_toward_ == 1) { + seed = seed.to_horizontal_mirror(); + } else if (mirror_toward_ == 2) { + seed = seed.to_vertical_mirror(); + } else if (mirror_toward_ == 3) { + // NOTE: avoid multi convert + seed = seed.to_vertical_mirror().to_horizontal_mirror(); + } + + auto codes = Group::extend(seed.to_raw_code(), size()); + + RangesUnion data; + for (auto raw_code : codes) { + auto common_code = raw_code.to_common_code().unwrap(); + data[common_code >> 32].emplace_back(static_cast(common_code)); + } + + for (int head = 0; head < 16; ++head) { + std::stable_sort(data[head].begin(), data[head].end()); + } + return data; +} diff --git a/src/core/group/internal/group_pro.inl b/src/core/group/internal/group_pro.inl new file mode 100644 index 0000000..ad6b5e0 --- /dev/null +++ b/src/core/group/internal/group_pro.inl @@ -0,0 +1,111 @@ +#pragma once + +#include "constant/group_pro.h" + +namespace klotski::cases { + +constexpr uint32_t GroupPro::flat_id() const { + return PATTERN_OFFSET[type_id_] + pattern_id_; +} + +constexpr uint32_t GroupPro::size() const { + return GROUP_PRO_SIZE[flat_id()]; +} + +constexpr GroupPro::MirrorType GroupPro::mirror_type() const { + switch (GROUP_PRO_TYPE[flat_id()]) { + case 0: + return MirrorType::FullMirror; + case 1: + return MirrorType::HorizontalMirror; + case 2: + return MirrorType::CentroMirror; + case 3: + return MirrorType::VerticalMirror; + case 4: + return MirrorType::NonMirror; + } +} + +constexpr bool GroupPro::is_vertical_mirror() const { + switch (mirror_type()) { + case MirrorType::FullMirror: + return true; + case MirrorType::HorizontalMirror: + return false; + case MirrorType::CentroMirror: + return false; + case MirrorType::VerticalMirror: + return true; + case MirrorType::NonMirror: + return false; + } +} + +constexpr bool GroupPro::is_horizontal_mirror() const { + switch (mirror_type()) { + case MirrorType::FullMirror: + return true; + case MirrorType::HorizontalMirror: + return true; + case MirrorType::CentroMirror: + return false; + case MirrorType::VerticalMirror: + return false; + case MirrorType::NonMirror: + return false; + } +} + +constexpr GroupPro GroupPro::to_vertical_mirror() const { + switch (mirror_type()) { + case MirrorType::FullMirror: + return *this; + case MirrorType::HorizontalMirror: + if (mirror_toward_ == 0) { + return GroupPro::unsafe_create(type_id_, pattern_id_, 2); + } + return GroupPro::unsafe_create(type_id_, pattern_id_, 0); + case MirrorType::CentroMirror: + if (mirror_toward_ == 0) { + return GroupPro::unsafe_create(type_id_, pattern_id_, 1); + } + return GroupPro::unsafe_create(type_id_, pattern_id_, 0); + case MirrorType::VerticalMirror: + return *this; + case MirrorType::NonMirror: + if (mirror_toward_ == 0) { + return GroupPro::unsafe_create(type_id_, pattern_id_, 2); + } else if (mirror_toward_ == 1) { + return GroupPro::unsafe_create(type_id_, pattern_id_, 3); + } else if (mirror_toward_ == 2) { + return GroupPro::unsafe_create(type_id_, pattern_id_, 0); + } + return GroupPro::unsafe_create(type_id_, pattern_id_, 1); + } +} + +constexpr GroupPro GroupPro::to_horizontal_mirror() const { + switch (mirror_type()) { + case MirrorType::FullMirror: + case MirrorType::HorizontalMirror: + return *this; + case MirrorType::CentroMirror: + case MirrorType::VerticalMirror: + if (mirror_toward_ == 0) { + return GroupPro::unsafe_create(type_id_, pattern_id_, 1); + } + return GroupPro::unsafe_create(type_id_, pattern_id_, 0); + case MirrorType::NonMirror: + if (mirror_toward_ == 0) { + return GroupPro::unsafe_create(type_id_, pattern_id_, 2); + } else if (mirror_toward_ == 1) { + return GroupPro::unsafe_create(type_id_, pattern_id_, 3); + } else if (mirror_toward_ == 2) { + return GroupPro::unsafe_create(type_id_, pattern_id_, 0); + } + return GroupPro::unsafe_create(type_id_, pattern_id_, 1); + } +} + +} // namespace klotski::cases diff --git a/src/core/group/internal/group_union.inl b/src/core/group/internal/group_union.inl index c412bef..fb813be 100644 --- a/src/core/group/internal/group_union.inl +++ b/src/core/group/internal/group_union.inl @@ -53,6 +53,39 @@ inline std::optional GroupUnion::group(const uint32_t group_id) const { return std::nullopt; } +// ----------------------------------------------------------------------------------------- // +// TODO: new interface + +constexpr uint32_t GroupUnion::pattern_num() const { + return PATTERN_NUM[type_id_]; +} + +inline std::vector GroupUnion::groups_pro() const { + std::vector groups; + groups.reserve(group_num()); + for (uint32_t pattern_id = 0; pattern_id < pattern_num(); ++pattern_id) { + auto group = GroupPro::unsafe_create(type_id_, pattern_id, 0); + groups.emplace_back(group); + switch (group.mirror_type()) { + case GroupPro::MirrorType::FullMirror: + continue; + case GroupPro::MirrorType::HorizontalMirror: + groups.emplace_back(GroupPro::unsafe_create(type_id_, pattern_id, 2)); + break; + case GroupPro::MirrorType::CentroMirror: + case GroupPro::MirrorType::VerticalMirror: + groups.emplace_back(GroupPro::unsafe_create(type_id_, pattern_id, 1)); + break; + case GroupPro::MirrorType::NonMirror: + groups.emplace_back(GroupPro::unsafe_create(type_id_, pattern_id, 1)); + groups.emplace_back(GroupPro::unsafe_create(type_id_, pattern_id, 2)); + groups.emplace_back(GroupPro::unsafe_create(type_id_, pattern_id, 3)); + break; + } + } + return groups; +} + // ----------------------------------------------------------------------------------------- // inline GroupUnion GroupUnion::from_raw_code(const codec::RawCode raw_code) { diff --git a/src/core/main.cc b/src/core/main.cc index 00bfdf9..bcd0543 100644 --- a/src/core/main.cc +++ b/src/core/main.cc @@ -27,6 +27,7 @@ using klotski::codec::CommonCode; using klotski::cases::GroupUnion; using klotski::cases::Group; +using klotski::cases::GroupPro; using klotski::cases::GroupCases; using klotski::cases::GroupUnion; @@ -52,10 +53,34 @@ int main() { // std::cout << GroupCases::fast_obtain(CommonCode::unsafe_create(0x1A9BF0C00)) << std::endl; // std::cout << GroupCases::fast_obtain(CommonCode::unsafe_create(0x4FEA13400)) << std::endl; - auto group = Group::unsafe_create(123, 1446); + auto gu = GroupUnion::unsafe_create(169); + std::cout << gu.pattern_num() << std::endl; - std::cout << group.to_horizontal_mirror().group_id() << std::endl; - std::cout << group.to_vertical_mirror().group_id() << std::endl; + std::cout << gu.group_num() << std::endl; + std::cout << gu.groups_pro().size() << std::endl; + + const auto g = gu.groups_pro()[1]; + std::cout << std::format("{}-{}-{}\n", g.type_id(), g.pattern_id(), g.mirror_toward()); + + const auto codes = g.cases().codes(); + std::cout << codes.size() << std::endl; + for (const auto code : codes) { + if (code == 0x1A9BF0C00) { + std::cout << "get it" << std::endl; + } + } + + std::cout << g.is_vertical_mirror() << std::endl; + std::cout << g.is_horizontal_mirror() << std::endl; + + auto g1 = g.to_vertical_mirror(); + std::cout << std::format("{}-{}-{}\n", g1.type_id(), g1.pattern_id(), g1.mirror_toward()); + auto g2 = g.to_horizontal_mirror(); + std::cout << std::format("{}-{}-{}\n", g2.type_id(), g2.pattern_id(), g2.mirror_toward()); + +// auto gp = GroupPro::unsafe_create(169, 0, 0); +// std::cout << gp.size() << std::endl; +// std::cout << (int)gp.mirror_type() << std::endl; std::cerr << std::chrono::system_clock::now() - start << std::endl;