diff --git a/decompiler/data/TextureDB.cpp b/decompiler/data/TextureDB.cpp index 87d10568d5..ce098dd0ea 100644 --- a/decompiler/data/TextureDB.cpp +++ b/decompiler/data/TextureDB.cpp @@ -17,7 +17,8 @@ void TextureDB::add_texture(u32 tpage, const std::string& tex_name, const std::string& tpage_name, const std::vector& level_names, - u32 num_mips) { + u32 num_mips, + u32 dest) { auto existing_tpage_name = tpage_names.find(tpage); if (existing_tpage_name == tpage_names.end()) { tpage_names[tpage] = tpage_name; @@ -34,6 +35,7 @@ void TextureDB::add_texture(u32 tpage, ASSERT(existing_tex->second.rgba_bytes == data); ASSERT(existing_tex->second.page == tpage); ASSERT(existing_tex->second.num_mips == num_mips); + ASSERT(existing_tex->second.dest == dest); } else { auto& new_tex = textures[combo_id]; new_tex.rgba_bytes = data; @@ -42,6 +44,7 @@ void TextureDB::add_texture(u32 tpage, new_tex.h = h; new_tex.page = tpage; new_tex.num_mips = num_mips; + new_tex.dest = dest; } for (const auto& level_name : level_names) { texture_ids_per_level[level_name].insert(combo_id); @@ -68,4 +71,51 @@ void TextureDB::replace_textures(const fs::path& path) { } } } + +/*! + * Generate a table of offsets + */ +std::string TextureDB::generate_texture_dest_adjustment_table() const { + // group textures by page + std::map> textures_by_page; + for (const auto& [texture_id, texture] : textures) { + textures_by_page[texture.page].push_back(texture_id); + } + + std::string result = "{\n"; + // loop over pages (this overlap trick only applies within a page) + for (const auto& [tpage, texture_ids_in_page] : textures_by_page) { + // organize by tbp offset + std::map> textures_by_tbp_offset; + for (auto tid : texture_ids_in_page) { + textures_by_tbp_offset[textures.at(tid).dest].push_back(tid); + } + + // find tbp's with overlaps: + bool needs_remap = false; + for (const auto& [tbp, tex_ids] : textures_by_tbp_offset) { + if (tex_ids.size() > 1) { + needs_remap = true; + break; + } + } + + if (needs_remap) { + result += fmt::format("{{{},{{\n", tpage); + for (const auto& [tbp, tex_ids] : textures_by_tbp_offset) { + if (tex_ids.size() > 1) { + int offset = 0; + for (auto id : tex_ids) { + result += fmt::format("{{{}, {}}},", id & 0xffff, offset++); + offset++; + } + } + } + result.pop_back(); + result += "}},\n"; + } + } + result += "}\n"; + return result; +} } // namespace decompiler diff --git a/decompiler/data/TextureDB.h b/decompiler/data/TextureDB.h index 471d59374a..e7de20405a 100644 --- a/decompiler/data/TextureDB.h +++ b/decompiler/data/TextureDB.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include @@ -14,11 +15,12 @@ struct TextureDB { u16 w, h; std::string name; u32 page; + u32 dest = -1; std::vector rgba_bytes; u32 num_mips = -1; }; - std::unordered_map textures; + std::map textures; std::unordered_map tpage_names; std::unordered_map> texture_ids_per_level; @@ -30,8 +32,11 @@ struct TextureDB { const std::string& tex_name, const std::string& tpage_name, const std::vector& level_names, - u32 num_mips); + u32 num_mips, + u32 dest); void replace_textures(const fs::path& path); + + std::string generate_texture_dest_adjustment_table() const; }; } // namespace decompiler diff --git a/decompiler/data/tpage.cpp b/decompiler/data/tpage.cpp index a71e5347e5..4654f64bc0 100644 --- a/decompiler/data/tpage.cpp +++ b/decompiler/data/tpage.cpp @@ -537,7 +537,7 @@ TPageResultStats process_tpage(ObjectFileData& data, file_util::write_rgba_png(texture_dump_dir / fmt::format("{}.png", tex.name), out.data(), tex.w, tex.h); texture_db.add_texture(texture_page.id, tex_id, out, tex.w, tex.h, tex.name, - texture_page.name, level_names, tex.num_mips); + texture_page.name, level_names, tex.num_mips, tex.dest[0]); stats.successful_textures++; } else if (tex.psm == int(PSM::PSMT8) && tex.clutpsm == int(CPSM::PSMCT16)) { // will store output pixels, rgba (8888) @@ -580,7 +580,7 @@ TPageResultStats process_tpage(ObjectFileData& data, file_util::write_rgba_png(texture_dump_dir / fmt::format("{}.png", tex.name), out.data(), tex.w, tex.h); texture_db.add_texture(texture_page.id, tex_id, out, tex.w, tex.h, tex.name, - texture_page.name, level_names, tex.num_mips); + texture_page.name, level_names, tex.num_mips, tex.dest[0]); stats.successful_textures++; } else if (tex.psm == int(PSM::PSMCT16) && tex.clutpsm == 0) { // not a clut. @@ -605,7 +605,7 @@ TPageResultStats process_tpage(ObjectFileData& data, file_util::write_rgba_png(texture_dump_dir / fmt::format("{}.png", tex.name), out.data(), tex.w, tex.h); texture_db.add_texture(texture_page.id, tex_id, out, tex.w, tex.h, tex.name, - texture_page.name, level_names, tex.num_mips); + texture_page.name, level_names, tex.num_mips, tex.dest[0]); stats.successful_textures++; } else if (tex.psm == int(PSM::PSMT4) && tex.clutpsm == int(CPSM::PSMCT16)) { // will store output pixels, rgba (8888) @@ -646,7 +646,7 @@ TPageResultStats process_tpage(ObjectFileData& data, file_util::write_rgba_png(texture_dump_dir / fmt::format("{}.png", tex.name), out.data(), tex.w, tex.h); texture_db.add_texture(texture_page.id, tex_id, out, tex.w, tex.h, tex.name, - texture_page.name, level_names, tex.num_mips); + texture_page.name, level_names, tex.num_mips, tex.dest[0]); stats.successful_textures++; } else if (tex.psm == int(PSM::PSMT4) && tex.clutpsm == int(CPSM::PSMCT32)) { // will store output pixels, rgba (8888) @@ -687,7 +687,7 @@ TPageResultStats process_tpage(ObjectFileData& data, file_util::write_rgba_png(texture_dump_dir / fmt::format("{}.png", tex.name), out.data(), tex.w, tex.h); texture_db.add_texture(texture_page.id, tex_id, out, tex.w, tex.h, tex.name, - texture_page.name, level_names, tex.num_mips); + texture_page.name, level_names, tex.num_mips, tex.dest[0]); stats.successful_textures++; } else if (tex.psm == int(PSM::PSMCT32) && tex.clutpsm == 0) { // not a clut. @@ -712,7 +712,7 @@ TPageResultStats process_tpage(ObjectFileData& data, file_util::write_rgba_png(texture_dump_dir / fmt::format("{}.png", tex.name), out.data(), tex.w, tex.h); texture_db.add_texture(texture_page.id, tex_id, out, tex.w, tex.h, tex.name, - texture_page.name, level_names, tex.num_mips); + texture_page.name, level_names, tex.num_mips, tex.dest[0]); stats.successful_textures++; } diff --git a/decompiler/main.cpp b/decompiler/main.cpp index b5e76fdb95..16f6524131 100644 --- a/decompiler/main.cpp +++ b/decompiler/main.cpp @@ -251,6 +251,8 @@ int main(int argc, char** argv) { auto result = db.process_tpages(tex_db, textures_out); if (!result.empty() && config.process_tpages) { file_util::write_text_file(textures_out / "tpage-dir.txt", result); + file_util::write_text_file(textures_out / "tex-remap.txt", + tex_db.generate_texture_dest_adjustment_table()); } } diff --git a/game/CMakeLists.txt b/game/CMakeLists.txt index 766f2d2d3d..8cd000030b 100644 --- a/game/CMakeLists.txt +++ b/game/CMakeLists.txt @@ -120,6 +120,7 @@ set(RUNTIME_SOURCE overlord/ssound.cpp overlord/stream.cpp graphics/gfx.cpp + graphics/jak2_texture_remap.cpp graphics/display.cpp graphics/sceGraphicsInterface.cpp graphics/opengl_renderer/background/background_common.cpp diff --git a/game/graphics/jak2_texture_remap.cpp b/game/graphics/jak2_texture_remap.cpp new file mode 100644 index 0000000000..046baa9811 --- /dev/null +++ b/game/graphics/jak2_texture_remap.cpp @@ -0,0 +1,1541 @@ +#include "jak2_texture_remap.h" + +#include +#include +#include + +namespace { +const std::unordered_map>> data = { + {12, + {{44, 0}, + {46, 2}, + {131, 0}, + {134, 2}, + {19, 0}, + {38, 2}, + {188, 0}, + {201, 2}, + {50, 0}, + {52, 2}, + {11, 0}, + {12, 2}, + {71, 0}, + {187, 2}}}, + {31, {{0, 0}, {2, 2}}}, + {623, {{5, 0}, {6, 2}, {7, 4}}}, + {778, + {{41, 0}, + {47, 2}, + {32, 0}, + {61, 2}, + {24, 0}, + {28, 2}, + {53, 0}, + {59, 2}, + {64, 0}, + {65, 2}, + {60, 0}, + {62, 2}, + {66, 4}, + {29, 0}, + {45, 2}, + {25, 0}, + {26, 2}, + {30, 0}, + {31, 2}}}, + {779, {{9, 0}, {99, 2}, {23, 0}, {26, 2}, {40, 4}, {52, 6}, {5, 0}, {6, 2}, {7, 4}, + {8, 6}, {1, 0}, {2, 2}, {3, 4}, {47, 6}, {35, 0}, {36, 2}, {29, 0}, {30, 2}, + {28, 0}, {32, 2}, {38, 4}, {41, 6}, {27, 0}, {34, 2}, {22, 0}, {24, 2}, {31, 4}, + {39, 6}, {19, 0}, {20, 2}, {21, 4}, {37, 6}, {33, 0}, {49, 2}, {50, 4}, {51, 6}, + {77, 0}, {78, 2}, {79, 4}, {80, 6}, {67, 0}, {73, 2}, {75, 4}, {76, 6}, {64, 0}, + {66, 2}, {83, 4}, {84, 6}, {4, 0}, {11, 2}, {12, 4}, {108, 0}, {113, 2}, {106, 0}, + {109, 2}, {110, 4}, {112, 6}, {104, 0}, {105, 2}, {107, 4}, {100, 0}, {159, 2}}}, + {787, {{144, 0}, {149, 2}, {150, 4}, {167, 0}, {168, 2}, {158, 0}, {161, 2}, {159, 0}, {160, 2}, + {162, 4}, {163, 6}, {157, 0}, {164, 2}, {166, 0}, {169, 2}, {22, 0}, {44, 2}, {6, 0}, + {54, 2}, {9, 0}, {12, 2}, {36, 0}, {93, 2}, {2, 0}, {65, 2}, {38, 0}, {184, 2}, + {11, 0}, {28, 2}, {182, 4}, {32, 0}, {77, 2}, {31, 0}, {92, 2}, {18, 0}, {21, 2}, + {48, 0}, {49, 2}, {185, 4}, {25, 0}, {30, 2}, {52, 4}, {7, 0}, {16, 2}, {24, 4}, + {72, 6}, {187, 8}, {66, 0}, {75, 2}, {15, 0}, {27, 2}, {85, 4}, {4, 0}, {50, 2}, + {5, 0}, {69, 2}, {3, 0}, {10, 2}, {19, 0}, {47, 2}, {51, 4}, {152, 0}, {153, 2}, + {74, 0}, {76, 2}, {0, 0}, {13, 2}, {14, 0}, {186, 2}, {1, 0}, {40, 2}, {82, 4}, + {29, 0}, {183, 2}}}, + {788, {{0, 0}, {2, 2}}}, + {789, + {{9, 0}, + {10, 2}, + {11, 4}, + {2, 0}, + {70, 2}, + {15, 0}, + {54, 2}, + {14, 0}, + {52, 2}, + {62, 0}, + {63, 2}, + {58, 0}, + {59, 2}}}, + {851, {{31, 0}, {62, 2}, {11, 0}, {22, 2}, {57, 4}, {32, 0}, {43, 2}, {44, 4}, {45, 6}, + {52, 0}, {53, 2}, {63, 4}, {2, 0}, {9, 2}, {18, 4}, {10, 0}, {28, 2}, {37, 0}, + {39, 2}, {23, 0}, {26, 2}, {48, 0}, {49, 2}, {59, 0}, {60, 2}, {20, 0}, {42, 2}, + {16, 0}, {21, 2}, {38, 0}, {41, 2}, {47, 4}, {8, 0}, {35, 2}, {40, 0}, {46, 2}, + {51, 4}, {15, 0}, {61, 2}, {0, 0}, {7, 2}, {4, 0}, {5, 2}, {56, 4}}}, + {853, + {{4, 0}, {5, 2}, {6, 4}, {56, 0}, {57, 2}, {54, 0}, {55, 2}, {58, 4}, {52, 0}, {59, 2}, + {60, 0}, {61, 2}, {63, 4}, {64, 6}, {44, 0}, {51, 2}, {48, 0}, {49, 2}, {46, 0}, {47, 2}}}, + {856, {{11, 0}, {14, 2}, {48, 0}, {77, 2}, {47, 0}, {66, 2}, {68, 4}, {63, 0}, {80, 2}, + {43, 0}, {82, 2}, {50, 0}, {51, 2}, {45, 0}, {75, 2}, {78, 0}, {85, 2}, {69, 0}, + {83, 2}, {74, 0}, {76, 2}, {71, 0}, {81, 2}, {23, 0}, {44, 2}, {29, 0}, {67, 2}, + {24, 0}, {28, 2}, {20, 0}, {21, 2}, {22, 4}, {27, 6}, {19, 0}, {25, 2}, {26, 4}, + {37, 6}, {2, 0}, {53, 2}, {30, 0}, {72, 2}}}, + {858, + {{117, 0}, + {118, 2}, + {120, 4}, + {121, 6}, + {45, 0}, + {52, 2}, + {49, 0}, + {50, 2}, + {47, 0}, + {48, 2}, + {95, 0}, + {96, 2}}}, + {881, {{55, 0}, {89, 2}, {10, 0}, {17, 2}, {34, 4}, {41, 0}, {51, 2}, {24, 0}, {53, 2}, {36, 0}, + {43, 2}, {18, 0}, {46, 2}, {3, 0}, {19, 2}, {44, 4}, {45, 6}, {33, 0}, {40, 2}, {88, 0}, + {91, 2}, {92, 4}, {32, 0}, {84, 2}, {16, 0}, {52, 2}, {27, 0}, {28, 2}, {1, 0}, {2, 2}, + {13, 4}, {11, 0}, {12, 2}, {23, 4}, {56, 0}, {61, 2}, {62, 0}, {65, 2}, {59, 0}, {73, 2}, + {70, 0}, {82, 2}, {67, 0}, {74, 2}, {75, 0}, {76, 2}, {60, 0}, {72, 2}}}, + {918, {{50, 0}, {98, 2}, {99, 4}, {47, 0}, {96, 2}, {97, 4}, {60, 0}, {61, 2}, + {52, 0}, {53, 2}, {56, 4}, {58, 6}, {46, 0}, {94, 2}, {95, 4}, {45, 0}, + {92, 2}, {93, 4}, {24, 0}, {32, 2}, {37, 4}, {128, 0}, {129, 2}, {130, 4}}}, + {929, {{130, 0}, {131, 2}, {132, 4}, {116, 0}, {119, 2}, {117, 0}, {118, 2}, {121, 4}, {126, 0}, + {128, 2}, {115, 0}, {122, 2}, {40, 0}, {95, 2}, {80, 0}, {81, 2}, {18, 0}, {19, 2}, + {70, 4}, {78, 6}, {79, 8}, {72, 0}, {103, 2}, {104, 4}, {58, 0}, {75, 2}, {76, 4}, + {56, 0}, {57, 2}, {66, 4}, {67, 6}, {71, 0}, {73, 2}, {92, 4}, {21, 0}, {38, 2}, + {39, 4}, {12, 0}, {17, 2}, {34, 4}, {36, 6}, {31, 0}, {33, 2}, {35, 4}, {37, 6}, + {11, 0}, {29, 2}, {30, 4}, {32, 6}, {42, 0}, {43, 2}, {44, 4}, {45, 6}, {46, 8}, + {13, 0}, {15, 2}, {27, 4}, {28, 6}, {14, 0}, {16, 2}, {23, 4}, {88, 6}, {68, 0}, + {74, 2}, {77, 4}, {91, 6}, {22, 0}, {24, 2}, {25, 4}, {26, 6}, {102, 8}, {52, 0}, + {53, 2}, {54, 4}, {94, 0}, {101, 2}, {89, 0}, {98, 2}, {99, 4}, {100, 6}}}, + {930, {{30, 0}, {134, 2}, {26, 0}, {27, 2}, {28, 4}, {29, 6}, {22, 0}, {23, 2}, {24, 4}, + {31, 6}, {57, 0}, {58, 2}, {59, 4}, {60, 6}, {43, 0}, {52, 2}, {55, 4}, {56, 6}, + {40, 0}, {42, 2}, {63, 4}, {64, 6}, {25, 0}, {33, 2}, {34, 4}}}, + {932, {{82, 0}, {83, 2}, {84, 4}, {5, 0}, {6, 2}, {8, 4}, {4, 0}, {18, 2}, {20, 4}, + {12, 0}, {47, 2}, {37, 0}, {50, 2}, {1, 0}, {11, 2}, {51, 0}, {54, 2}, {49, 0}, + {53, 2}, {3, 0}, {34, 2}, {41, 4}, {48, 6}, {28, 0}, {32, 2}, {36, 4}, {15, 0}, + {23, 2}, {24, 4}, {0, 0}, {9, 2}, {10, 4}, {7, 0}, {22, 2}, {43, 4}, {44, 6}}}, + {933, {{1, 0}, {2, 2}, {12, 0}, {123, 2}, {8, 0}, {9, 2}, {10, 4}, {11, 6}, {4, 0}, + {5, 2}, {6, 4}, {13, 6}, {38, 0}, {39, 2}, {40, 4}, {41, 6}, {24, 0}, {33, 2}, + {36, 4}, {37, 6}, {21, 0}, {23, 2}, {44, 4}, {45, 6}, {7, 0}, {15, 2}, {16, 4}}}, + {955, {{65, 0}, {70, 2}, {1, 0}, {15, 2}, {16, 0}, {48, 2}, {0, 0}, {3, 2}, + {10, 4}, {12, 6}, {29, 0}, {30, 2}, {32, 4}, {36, 0}, {37, 2}, {34, 0}, + {35, 2}, {6, 0}, {26, 2}, {60, 0}, {76, 2}, {84, 4}}}, + {957, {{2, 0}, {3, 2}, {5, 4}, {6, 6}}}, + {973, + {{3, 0}, + {13, 2}, + {16, 4}, + {20, 0}, + {27, 2}, + {4, 0}, + {8, 2}, + {9, 4}, + {15, 0}, + {18, 2}, + {12, 0}, + {14, 2}, + {5, 0}, + {17, 2}}}, + {974, + {{29, 0}, {30, 2}, {55, 0}, {56, 2}, {60, 4}, {61, 6}, {20, 0}, {39, 2}, {58, 0}, {63, 2}, + {13, 0}, {27, 2}, {44, 4}, {11, 0}, {15, 2}, {45, 4}, {5, 0}, {32, 2}, {0, 0}, {1, 2}, + {4, 4}, {6, 6}, {9, 0}, {40, 2}, {7, 0}, {21, 2}, {37, 4}, {38, 6}, {2, 0}, {12, 2}}}, + {977, {{28, 0}, {30, 2}, {69, 0}, {72, 2}, {73, 4}, {74, 6}, {8, 0}, {35, 2}, {48, 0}, + {50, 2}, {71, 0}, {76, 2}, {9, 0}, {16, 2}, {43, 4}, {4, 0}, {14, 2}, {44, 4}, + {1, 0}, {31, 2}, {0, 0}, {2, 2}, {19, 4}, {33, 6}, {26, 0}, {36, 2}, {34, 0}, + {66, 2}, {17, 0}, {24, 2}, {37, 4}, {39, 6}, {7, 0}, {22, 2}}}, + {978, + {{5, 0}, + {8, 2}, + {18, 4}, + {15, 0}, + {26, 2}, + {11, 0}, + {12, 2}, + {21, 4}, + {10, 0}, + {22, 2}, + {16, 0}, + {17, 2}, + {3, 0}, + {19, 2}}}, + {979, {{14, 0}, {15, 2}, {16, 4}, {17, 6}, {10, 0}, {11, 2}, {12, 4}, {13, 6}, {0, 0}, + {1, 2}, {2, 4}, {3, 6}, {39, 0}, {40, 2}, {41, 4}, {42, 6}, {35, 0}, {36, 2}, + {37, 4}, {38, 6}, {31, 0}, {32, 2}, {33, 4}, {34, 6}, {27, 0}, {28, 2}, {29, 4}, + {30, 6}, {4, 0}, {5, 2}, {6, 4}, {7, 6}, {25, 0}, {26, 2}, {21, 0}, {22, 2}, + {23, 4}, {24, 6}, {18, 0}, {19, 2}, {20, 4}, {8, 0}, {9, 2}}}, + {998, {{63, 0}, {64, 2}, {65, 0}, {66, 2}, {60, 0}, {61, 2}, {57, 0}, + {58, 2}, {54, 0}, {55, 2}, {50, 0}, {53, 2}, {48, 0}, {51, 2}, + {45, 0}, {46, 2}, {40, 0}, {42, 2}, {44, 4}, {36, 0}, {37, 2}}}, + {1021, + {{11, 0}, + {13, 2}, + {5, 0}, + {7, 2}, + {9, 4}, + {69, 0}, + {70, 2}, + {71, 4}, + {72, 6}, + {65, 0}, + {66, 2}}}, + {1022, {{1, 0}, {6, 2}}}, + {1031, {{3, 0}, {4, 2}, {55, 0}, {56, 2}, {15, 0}, {16, 2}, {42, 0}, {64, 2}, {33, 0}, + {44, 2}, {24, 0}, {34, 2}, {48, 0}, {49, 2}, {39, 0}, {40, 2}, {66, 0}, {67, 2}, + {51, 0}, {53, 2}, {22, 0}, {27, 2}, {28, 4}, {36, 0}, {37, 2}, {9, 0}, {54, 2}}}, + {1059, + {{70, 0}, {99, 2}, {82, 0}, {86, 2}, {100, 4}, {15, 0}, {85, 2}, {21, 0}, {42, 2}, {52, 4}, + {3, 0}, {46, 2}, {19, 0}, {23, 2}, {47, 4}, {76, 0}, {78, 2}, {49, 0}, {63, 2}, {74, 0}, + {80, 2}, {89, 4}, {2, 0}, {62, 2}, {93, 4}, {39, 0}, {64, 2}, {1, 0}, {50, 2}, {92, 4}, + {4, 0}, {61, 2}, {43, 0}, {58, 2}, {51, 0}, {67, 2}, {14, 0}, {40, 2}, {0, 0}, {5, 2}, + {8, 4}, {37, 0}, {41, 2}, {13, 0}, {22, 2}, {79, 0}, {84, 2}, {83, 0}, {96, 2}, {66, 0}, + {97, 2}, {95, 0}, {103, 2}, {101, 0}, {104, 2}, {77, 0}, {81, 2}, {69, 0}, {105, 2}}}, + {1060, + {{5, 0}, {6, 2}, {3, 0}, {4, 2}, {7, 4}, {1, 0}, {8, 2}, {21, 0}, {29, 2}, + {25, 0}, {27, 2}, {23, 0}, {24, 2}, {13, 0}, {14, 2}, {15, 4}, {42, 0}, {46, 2}, + {144, 0}, {147, 2}, {149, 4}, {43, 0}, {44, 2}, {40, 0}, {41, 2}, {142, 0}, {143, 2}, + {83, 0}, {86, 2}, {82, 0}, {84, 2}, {85, 4}, {89, 0}, {139, 2}, {140, 4}, {103, 0}, + {198, 2}, {99, 0}, {100, 2}, {101, 4}, {102, 6}, {95, 0}, {96, 2}, {97, 4}, {104, 6}, + {130, 0}, {131, 2}, {132, 4}, {133, 6}, {116, 0}, {125, 2}, {128, 4}, {129, 6}, {113, 0}, + {115, 2}, {136, 4}, {137, 6}, {98, 0}, {106, 2}, {107, 4}}}, + {1117, {{8, 0}, {11, 2}, {23, 4}, {19, 0}, {21, 2}, {25, 4}}}, + {1131, + {{7, 0}, {8, 2}, {9, 4}, {10, 6}, {11, 0}, {76, 2}, {3, 0}, {4, 2}, {5, 4}, {12, 6}, + {6, 0}, {14, 2}, {15, 4}, {38, 0}, {39, 2}, {40, 4}, {41, 6}, {24, 0}, {33, 2}, {36, 4}, + {37, 6}, {21, 0}, {23, 2}, {44, 4}, {45, 6}, {60, 0}, {75, 2}, {65, 0}, {66, 2}, {70, 4}, + {72, 6}, {59, 0}, {63, 2}, {64, 4}, {71, 6}, {57, 0}, {58, 2}, {55, 0}, {56, 2}, {53, 0}, + {61, 2}, {62, 4}, {67, 6}, {51, 0}, {52, 2}, {68, 4}, {107, 6}}}, + {1133, + {{12, 0}, + {52, 2}, + {20, 0}, + {32, 2}, + {0, 0}, + {14, 2}, + {13, 0}, + {57, 2}, + {16, 0}, + {31, 2}, + {11, 0}, + {30, 2}, + {8, 0}, + {9, 2}}}, + {1135, {{57, 0}, {58, 2}, {60, 4}, {61, 6}, {59, 0}, {62, 2}}}, + {1137, {{71, 0}, {133, 2}, {114, 0}, {118, 2}, {119, 4}, {6, 0}, {9, 2}, {111, 4}, {120, 0}, + {129, 2}, {124, 0}, {125, 2}, {121, 0}, {123, 2}, {127, 4}, {68, 0}, {116, 2}, {117, 4}, + {64, 0}, {77, 2}, {0, 0}, {1, 2}, {4, 4}, {5, 0}, {7, 2}}}, + {1183, + {{8, 0}, {9, 2}, {10, 4}, {11, 6}, {12, 0}, {79, 2}, {4, 0}, {5, 2}, {6, 4}, {13, 6}, + {7, 0}, {15, 2}, {16, 4}, {55, 0}, {69, 2}, {49, 0}, {50, 2}, {48, 0}, {57, 2}, {58, 4}, + {62, 6}, {65, 0}, {66, 2}, {67, 4}, {73, 0}, {75, 2}, {76, 4}, {70, 0}, {71, 2}, {53, 0}, + {56, 2}, {59, 4}, {52, 0}, {60, 2}, {63, 4}, {64, 6}, {39, 0}, {40, 2}, {41, 4}, {42, 6}, + {25, 0}, {34, 2}, {37, 4}, {38, 6}, {22, 0}, {24, 2}, {45, 4}, {46, 6}}}, + {1204, {{12, 0}, {13, 2}, {69, 4}, {70, 6}, {51, 0}, {66, 2}, {37, 0}, {38, 2}, {97, 4}, + {26, 0}, {27, 2}, {91, 4}, {92, 6}, {24, 0}, {31, 2}, {67, 4}, {23, 0}, {36, 2}, + {81, 0}, {83, 2}, {1, 0}, {30, 2}, {8, 0}, {34, 2}, {55, 0}, {62, 2}, {68, 4}, + {45, 0}, {50, 2}, {94, 0}, {96, 2}, {25, 0}, {47, 2}}}, + {1205, {{29, 0}, {30, 2}, {31, 4}}}, + {1253, {{13, 0}, {15, 2}}}, + {1254, + {{73, 0}, {85, 2}, {86, 4}, {47, 0}, {55, 2}, {104, 4}, {110, 6}, {137, 8}, {87, 0}, + {91, 2}, {121, 4}, {123, 0}, {124, 2}, {130, 0}, {133, 2}, {134, 4}, {50, 0}, {113, 2}, + {78, 0}, {81, 2}, {79, 0}, {80, 2}, {82, 4}, {83, 6}, {93, 0}, {97, 2}, {95, 0}, + {98, 2}, {120, 4}, {30, 0}, {94, 2}, {96, 4}, {57, 0}, {77, 2}, {129, 0}, {135, 2}, + {49, 0}, {52, 2}, {54, 4}, {103, 6}, {48, 0}, {51, 2}, {53, 4}, {56, 0}, {138, 2}, + {76, 0}, {111, 2}, {112, 4}, {114, 6}, {106, 0}, {108, 2}, {109, 4}, {140, 0}, {142, 2}, + {145, 0}, {150, 2}, {88, 0}, {90, 2}, {59, 0}, {72, 2}, {74, 4}, {125, 0}, {126, 2}, + {21, 0}, {32, 2}, {23, 0}, {29, 2}, {18, 0}, {22, 2}, {8, 0}, {36, 2}, {5, 0}, + {10, 2}, {13, 4}, {14, 6}, {3, 0}, {6, 2}, {11, 4}, {9, 0}, {17, 2}, {27, 0}, + {31, 2}, {38, 4}, {39, 6}, {118, 0}, {119, 2}}}, + {1255, {{0, 0}, {2, 2}, {3, 4}, {4, 0}, {5, 2}, {6, 0}, {8, 2}}}, + {1256, {{15, 0}, {16, 2}, {18, 4}, {19, 6}}}, + {1264, + {{25, 0}, {26, 2}, {68, 0}, {70, 2}, {117, 0}, {120, 2}, {79, 0}, {80, 2}, {118, 0}, + {119, 2}, {121, 4}, {122, 6}, {67, 0}, {71, 2}, {69, 0}, {72, 2}, {86, 4}, {101, 0}, + {102, 2}, {106, 0}, {113, 2}, {114, 4}, {115, 6}, {105, 0}, {107, 2}, {108, 4}, {109, 6}, + {111, 0}, {112, 2}, {27, 0}, {28, 2}, {81, 0}, {82, 2}, {87, 4}}}, + {1266, + {{217, 0}, {218, 2}, {219, 4}, {220, 6}, {152, 0}, {153, 2}, {154, 4}, {155, 0}, {158, 2}}}, + {1268, + {{14, 0}, + {15, 2}, + {53, 0}, + {54, 2}, + {56, 4}, + {57, 0}, + {58, 2}, + {59, 4}, + {3, 0}, + {21, 2}, + {38, 4}, + {5, 0}, + {9, 2}, + {19, 4}, + {52, 6}, + {4, 0}, + {8, 2}}}, + {1269, + {{11, 0}, + {13, 2}, + {20, 4}, + {12, 0}, + {14, 2}, + {22, 0}, + {25, 2}, + {17, 0}, + {21, 2}, + {19, 0}, + {23, 2}, + {18, 0}, + {24, 2}}}, + {1303, {{0, 0}, {1, 2}, {3, 4}, {4, 6}}}, + {1308, {{0, 0}, {1, 2}, {3, 4}, {4, 6}, {2, 0}, {5, 2}}}, + {1325, {{1, 0}, {5, 2}}}, + {1369, + {{48, 0}, {51, 2}, {54, 0}, {56, 2}, {40, 0}, {41, 2}, {14, 0}, {15, 2}, {36, 0}, {37, 2}, + {34, 0}, {35, 2}, {30, 0}, {31, 2}, {12, 0}, {17, 2}, {22, 4}, {33, 0}, {49, 2}, {23, 0}, + {24, 2}, {25, 4}, {16, 0}, {45, 2}, {26, 0}, {53, 2}, {0, 0}, {1, 2}}}, + {1370, {{49, 0}, {61, 2}, {56, 0}, {62, 2}, {16, 0}, {31, 2}, {41, 4}, {5, 0}, {23, 2}, + {2, 0}, {8, 2}, {35, 4}, {69, 0}, {71, 2}, {12, 0}, {14, 2}, {53, 0}, {73, 2}, + {0, 0}, {17, 2}, {21, 4}, {9, 0}, {11, 2}, {20, 4}, {25, 0}, {46, 2}, {1, 0}, + {30, 2}, {18, 0}, {40, 2}, {4, 0}, {26, 2}, {3, 0}, {34, 2}, {36, 4}, {13, 0}, + {22, 2}, {57, 0}, {65, 2}, {63, 0}, {66, 2}, {70, 0}, {74, 2}, {48, 0}, {67, 2}}}, + {1372, + {{12, 0}, + {23, 2}, + {1, 0}, + {33, 2}, + {26, 0}, + {32, 2}, + {28, 0}, + {29, 2}, + {27, 0}, + {37, 2}, + {2, 0}, + {3, 2}, + {6, 0}, + {10, 2}}}, + {1373, {{0, 0}, {1, 2}, {3, 4}, {4, 6}, {2, 0}, {5, 2}}}, + {1387, + {{0, 0}, {1, 2}, {2, 4}, {3, 6}, {28, 0}, {29, 2}, {15, 0}, {16, 2}, {17, 4}, + {19, 0}, {80, 2}, {14, 0}, {79, 2}, {34, 0}, {35, 2}, {36, 4}, {75, 0}, {76, 2}, + {67, 0}, {70, 2}, {66, 0}, {68, 2}, {69, 4}, {63, 0}, {64, 2}, {73, 4}, {88, 0}, + {98, 2}, {94, 0}, {95, 2}, {96, 4}, {97, 6}, {90, 0}, {91, 2}, {92, 4}, {99, 6}, + {124, 0}, {125, 2}, {126, 4}, {127, 6}, {110, 0}, {119, 2}, {122, 4}, {123, 6}, {107, 0}, + {109, 2}, {130, 4}, {131, 6}, {93, 0}, {101, 2}, {102, 4}}}, + {1409, + {{52, 0}, {53, 2}, {54, 4}, {88, 0}, {89, 2}, {92, 4}, {99, 6}, {84, 0}, {105, 2}, + {107, 4}, {109, 6}, {95, 0}, {96, 2}, {97, 4}, {100, 6}, {101, 0}, {102, 2}, {104, 4}, + {106, 6}, {90, 0}, {91, 2}, {93, 4}, {87, 0}, {98, 2}, {103, 4}, {108, 6}, {85, 0}, + {86, 2}, {94, 4}, {110, 6}, {41, 0}, {185, 2}, {124, 0}, {125, 2}, {129, 4}, {37, 0}, + {38, 2}, {39, 4}, {40, 6}, {33, 0}, {34, 2}, {35, 4}, {42, 6}, {75, 0}, {76, 2}, + {77, 4}, {78, 6}, {61, 0}, {70, 2}, {73, 4}, {74, 6}, {58, 0}, {60, 2}, {81, 4}, + {82, 6}, {36, 0}, {44, 2}, {45, 4}, {127, 0}, {133, 2}, {126, 0}, {128, 2}, {130, 4}, + {134, 6}, {116, 0}, {120, 2}, {114, 0}, {122, 2}, {123, 4}, {113, 0}, {119, 2}, {112, 0}, + {115, 2}, {118, 4}, {111, 0}, {121, 2}, {131, 4}, {132, 6}, {25, 0}, {26, 2}, {28, 4}, + {30, 6}, {15, 0}, {16, 2}, {19, 4}, {22, 6}, {8, 0}, {14, 2}, {20, 4}, {24, 6}, + {7, 0}, {12, 2}, {17, 4}, {18, 6}, {6, 0}, {9, 2}, {10, 4}, {13, 6}, {4, 0}, + {5, 2}, {21, 4}, {27, 6}, {3, 0}, {11, 2}, {23, 4}, {29, 6}, {188, 0}, {189, 2}, + {190, 4}, {191, 6}}}, + {1414, {{43, 0}, {44, 2}}}, + {1416, {{4, 0}, {5, 2}, {6, 4}}}, + {1430, {{102, 0}, {104, 2}, {91, 0}, {114, 2}, {93, 0}, {115, 2}, {63, 0}, {90, 2}, + {97, 4}, {96, 0}, {100, 2}, {52, 0}, {54, 2}, {55, 4}, {73, 6}, {89, 0}, + {92, 2}, {98, 4}, {88, 0}, {94, 2}, {95, 4}, {123, 0}, {125, 2}, {128, 0}, + {133, 2}, {135, 4}, {127, 0}, {136, 2}, {126, 0}, {134, 2}}}, + {1451, + {{25, 0}, {26, 2}, {28, 4}, {30, 6}, {15, 0}, {16, 2}, {19, 4}, {22, 6}, {8, 0}, + {14, 2}, {20, 4}, {24, 6}, {7, 0}, {12, 2}, {17, 4}, {18, 6}, {6, 0}, {9, 2}, + {10, 4}, {13, 6}, {4, 0}, {5, 2}, {21, 4}, {27, 6}, {3, 0}, {11, 2}, {23, 4}, + {29, 6}, {41, 0}, {183, 2}, {171, 0}, {172, 2}, {176, 4}, {37, 0}, {38, 2}, {39, 4}, + {40, 6}, {33, 0}, {34, 2}, {35, 4}, {42, 6}, {211, 0}, {214, 2}, {215, 4}, {67, 0}, + {68, 2}, {69, 4}, {70, 6}, {53, 0}, {62, 2}, {65, 4}, {66, 6}, {50, 0}, {52, 2}, + {73, 4}, {74, 6}, {36, 0}, {44, 2}, {45, 4}, {174, 0}, {180, 2}, {173, 0}, {175, 2}, + {177, 4}, {181, 6}, {163, 0}, {167, 2}, {161, 0}, {169, 2}, {170, 4}, {160, 0}, {166, 2}, + {159, 0}, {162, 2}, {165, 4}, {158, 0}, {168, 2}, {178, 4}, {179, 6}, {189, 0}, {190, 2}, + {200, 0}, {206, 2}, {198, 0}, {199, 2}, {204, 0}, {205, 2}, {193, 0}, {194, 2}, {188, 0}, + {191, 2}, {232, 0}, {233, 2}, {234, 4}, {235, 6}, {184, 0}, {185, 2}, {82, 0}, {85, 2}, + {79, 0}, {81, 2}, {101, 0}, {102, 2}, {104, 4}, {107, 6}, {113, 8}}}, + {1496, {{16, 0}, {19, 2}, {17, 0}, {18, 2}}}, + {1557, {{10, 0}, {34, 2}, {44, 4}, {16, 0}, {17, 2}, {7, 0}, {45, 2}, {12, 0}, {15, 2}, + {29, 4}, {46, 6}, {13, 0}, {57, 2}, {88, 0}, {91, 2}, {5, 0}, {22, 2}, {27, 0}, + {28, 2}, {42, 4}, {61, 6}, {3, 0}, {30, 2}, {36, 0}, {53, 2}, {4, 0}, {20, 2}, + {24, 0}, {47, 2}, {41, 0}, {65, 2}, {50, 0}, {62, 2}, {25, 0}, {59, 2}, {21, 0}, + {26, 2}, {6, 0}, {23, 2}, {37, 0}, {40, 2}, {51, 0}, {82, 2}, {83, 0}, {90, 2}}}, + {1560, + {{47, 0}, {49, 2}, {50, 4}, {55, 0}, {56, 2}, {58, 4}, {61, 6}, {52, 0}, {53, 2}, {54, 4}, + {51, 0}, {57, 2}, {59, 4}, {60, 6}, {11, 0}, {12, 2}, {14, 4}, {15, 6}, {9, 0}, {10, 2}}}, + {1561, {{33, 0}, {48, 2}, {6, 0}, {7, 2}, {21, 0}, {28, 2}, {20, 0}, {34, 2}, {14, 0}, + {31, 2}, {25, 0}, {54, 2}, {37, 0}, {44, 2}, {4, 0}, {36, 2}, {9, 0}, {10, 2}, + {40, 0}, {41, 2}, {26, 0}, {27, 2}, {2, 0}, {3, 2}, {24, 0}, {45, 2}, {11, 0}, + {12, 2}, {5, 0}, {32, 2}, {59, 0}, {61, 2}, {49, 0}, {50, 2}, {8, 0}, {47, 2}, + {0, 0}, {38, 2}, {19, 0}, {64, 2}, {18, 0}, {62, 2}, {17, 0}, {35, 2}}}, + {1562, {{2, 0}, {3, 2}}}, + {1565, {{36, 0}, {48, 2}, {10, 0}, {11, 2}, {25, 0}, {31, 2}, {24, 0}, {37, 2}, {18, 0}, + {34, 2}, {44, 0}, {50, 2}, {8, 0}, {54, 2}, {13, 0}, {14, 2}, {40, 0}, {41, 2}, + {29, 0}, {30, 2}, {6, 0}, {7, 2}, {27, 0}, {45, 2}, {15, 0}, {16, 2}, {9, 0}, + {35, 2}, {64, 0}, {65, 2}, {2, 0}, {49, 2}, {12, 0}, {47, 2}, {4, 0}, {38, 2}, + {23, 0}, {68, 2}, {22, 0}, {66, 2}, {21, 0}, {53, 2}}}, + {1570, {{22, 0}, {52, 2}, {32, 0}, {34, 2}, {36, 4}, {0, 0}, {43, 2}, {6, 0}, {21, 2}, + {35, 0}, {37, 2}, {2, 0}, {26, 2}, {47, 4}, {10, 0}, {12, 2}, {14, 4}, {33, 0}, + {54, 2}, {1, 0}, {8, 2}, {51, 4}, {55, 0}, {56, 2}, {27, 0}, {28, 2}, {53, 4}}}, + {1573, + {{4, 0}, {14, 2}, {10, 0}, {11, 2}, {12, 4}, {13, 6}, {6, 0}, {7, 2}, {8, 4}, {15, 6}, + {41, 0}, {42, 2}, {43, 4}, {44, 6}, {27, 0}, {36, 2}, {39, 4}, {40, 6}, {24, 0}, {26, 2}, + {47, 4}, {48, 6}, {9, 0}, {17, 2}, {18, 4}, {55, 0}, {57, 2}, {60, 4}, {58, 0}, {59, 2}}}, + {1574, + {{25, 0}, {26, 2}, {28, 4}, {30, 6}, {15, 0}, {16, 2}, {19, 4}, {22, 6}, {8, 0}, + {14, 2}, {20, 4}, {24, 6}, {7, 0}, {12, 2}, {17, 4}, {18, 6}, {6, 0}, {9, 2}, + {10, 4}, {13, 6}, {4, 0}, {5, 2}, {21, 4}, {27, 6}, {3, 0}, {11, 2}, {23, 4}, + {29, 6}, {133, 0}, {154, 2}, {156, 4}, {137, 0}, {146, 2}, {132, 0}, {138, 2}, {140, 4}, + {145, 6}, {143, 0}, {155, 2}, {135, 0}, {150, 2}, {153, 4}, {139, 0}, {152, 2}, {144, 0}, + {147, 2}, {148, 4}, {136, 0}, {141, 2}, {149, 4}, {151, 6}, {121, 0}, {131, 2}, {127, 0}, + {128, 2}, {129, 4}, {158, 0}, {159, 2}, {160, 4}, {161, 6}}}, + {1577, {{0, 0}, {1, 2}, {3, 4}, {4, 6}}}, + {1578, {{42, 0}, {49, 2}, {92, 0}, {93, 2}, {45, 0}, {46, 2}, {74, 4}, {44, 0}, {62, 2}, + {47, 0}, {70, 2}, {43, 0}, {83, 2}, {63, 0}, {64, 2}, {75, 0}, {87, 2}, {67, 0}, + {72, 2}, {60, 0}, {61, 2}, {68, 0}, {69, 2}, {55, 0}, {80, 2}, {53, 0}, {65, 2}, + {79, 0}, {85, 2}, {39, 0}, {76, 2}, {56, 0}, {58, 2}, {57, 0}, {88, 2}}}, + {1580, {{4, 0}, {33, 2}, {34, 4}, {24, 0}, {32, 2}, {0, 0}, {31, 2}, {1, 0}, + {46, 2}, {14, 0}, {21, 2}, {10, 0}, {28, 2}, {39, 4}, {3, 0}, {5, 2}, + {7, 4}, {29, 0}, {53, 2}, {6, 0}, {11, 2}, {30, 4}, {42, 0}, {43, 2}}}, + {1583, {{13, 0}, {14, 2}, {18, 4}, {16, 0}, {22, 2}, {15, 0}, {17, 2}, {19, 4}, {23, 6}, + {5, 0}, {9, 2}, {3, 0}, {11, 2}, {12, 4}, {2, 0}, {8, 2}, {1, 0}, {4, 2}, + {7, 4}, {0, 0}, {10, 2}, {20, 4}, {21, 6}, {37, 0}, {38, 2}, {39, 4}, {40, 6}}}, + {1584, + {{20, 0}, {35, 2}, {36, 4}, {25, 0}, {37, 2}, {11, 0}, {29, 2}, {18, 0}, {19, 2}, {5, 0}, + {28, 2}, {42, 4}, {6, 0}, {9, 2}, {12, 4}, {8, 0}, {22, 2}, {46, 4}, {30, 0}, {31, 2}}}, + {1587, {{5, 0}, {6, 2}}}, + {1588, {{8, 0}, {10, 2}, {13, 4}, {11, 0}, {12, 2}}}, + {1589, + {{35, 0}, {37, 2}, {39, 4}, {1, 0}, {43, 2}, {0, 0}, {31, 2}, {44, 4}, {50, 6}, {5, 0}, + {7, 2}, {38, 0}, {40, 2}, {3, 0}, {30, 2}, {53, 4}, {8, 0}, {10, 2}, {12, 4}, {36, 0}, + {47, 2}, {2, 0}, {13, 2}, {48, 4}, {22, 0}, {27, 2}, {29, 4}, {67, 6}, {62, 0}, {63, 2}, + {56, 0}, {64, 2}, {61, 0}, {65, 2}, {66, 4}, {32, 0}, {33, 2}}}, + {1592, {{19, 0}, {33, 2}, {46, 4}, {23, 0}, {40, 2}, {42, 4}, {44, 0}, {45, 2}, {0, 0}, + {38, 2}, {41, 4}, {1, 0}, {36, 2}, {7, 0}, {18, 2}, {29, 0}, {52, 2}, {14, 0}, + {20, 2}, {22, 4}, {2, 0}, {9, 2}, {37, 4}, {56, 0}, {57, 2}, {13, 0}, {55, 2}, + {30, 0}, {32, 2}, {61, 4}, {24, 0}, {43, 2}, {47, 4}}}, + {1594, {{2, 0}, {18, 2}, {22, 0}, {30, 2}, {11, 0}, {13, 2}, {20, 4}, + {25, 0}, {31, 2}, {6, 0}, {21, 2}, {26, 0}, {27, 2}, {1, 0}, + {7, 2}, {8, 4}, {9, 6}, {5, 0}, {29, 2}, {4, 0}, {28, 2}}}, + {1595, {{68, 0}, {69, 2}, {70, 4}, {72, 6}, {67, 0}, {71, 2}, {75, 0}, {85, 2}, + {81, 0}, {82, 2}, {83, 4}, {84, 6}, {77, 0}, {78, 2}, {79, 4}, {86, 6}, + {110, 0}, {111, 2}, {112, 4}, {113, 6}, {97, 0}, {105, 2}, {108, 4}, {109, 6}, + {94, 0}, {96, 2}, {116, 4}, {117, 6}, {80, 0}, {88, 2}, {89, 4}}}, + {1596, {{7, 0}, {26, 2}, {4, 0}, {5, 2}, {15, 0}, {20, 2}, {29, 0}, {30, 2}, {9, 0}, + {25, 2}, {31, 0}, {32, 2}, {18, 0}, {28, 2}, {34, 0}, {45, 2}, {1, 0}, {6, 2}, + {13, 4}, {14, 6}, {8, 0}, {10, 2}, {17, 4}, {2, 0}, {27, 2}}}, + {1597, {{2, 0}, {3, 2}, {5, 4}}}, + {1598, + {{1, 0}, {16, 2}, {23, 0}, {24, 2}, {7, 0}, {8, 2}, {27, 0}, {28, 2}, {20, 0}, {25, 2}, + {2, 0}, {17, 2}, {31, 4}, {14, 0}, {15, 2}, {29, 4}, {3, 0}, {26, 2}, {18, 0}, {30, 2}}}, + {1599, {{11, 0}, {12, 2}, {16, 0}, {17, 2}, {19, 4}, {3, 0}, {4, 2}, {1, 0}, {2, 2}, {5, 4}}}, + {1601, {{2, 0}, {3, 2}}}, + {1605, {{35, 0}, {76, 2}, {57, 0}, {60, 2}, {61, 4}, {10, 0}, {12, 2}, {53, 4}, {62, 0}, + {72, 2}, {69, 0}, {70, 2}, {64, 0}, {66, 2}, {68, 4}, {27, 0}, {59, 2}, {63, 4}, + {23, 0}, {42, 2}, {2, 0}, {3, 2}, {6, 4}, {7, 0}, {9, 2}}}, + {1606, {{7, 0}, {11, 2}, {12, 4}, {10, 0}, {18, 2}, {0, 0}, {3, 2}, {8, 0}, {15, 2}}}, + {1607, + {{36, 0}, {37, 2}, {38, 4}, {45, 0}, {46, 2}, {43, 0}, {44, 2}, {47, 4}, {41, 0}, + {48, 2}, {53, 0}, {54, 2}, {57, 4}, {64, 6}, {49, 0}, {70, 2}, {72, 4}, {74, 6}, + {60, 0}, {61, 2}, {62, 4}, {65, 6}, {66, 0}, {67, 2}, {69, 4}, {71, 6}, {55, 0}, + {56, 2}, {58, 4}, {52, 0}, {63, 2}, {68, 4}, {73, 6}, {50, 0}, {51, 2}, {59, 4}, + {75, 6}, {76, 0}, {100, 2}, {83, 0}, {84, 2}, {94, 0}, {189, 2}, {92, 0}, {93, 2}, + {98, 0}, {99, 2}, {87, 0}, {88, 2}, {82, 0}, {85, 2}, {77, 0}, {78, 2}, {113, 0}, + {114, 2}, {111, 0}, {112, 2}, {115, 4}, {116, 6}, {123, 0}, {124, 2}, {125, 4}, {126, 6}, + {117, 0}, {127, 2}, {119, 0}, {120, 2}, {121, 4}, {128, 6}, {122, 0}, {130, 2}, {131, 4}, + {153, 0}, {154, 2}, {155, 4}, {156, 6}, {139, 0}, {148, 2}, {151, 4}, {152, 6}, {136, 0}, + {138, 2}, {159, 4}, {160, 6}, {164, 0}, {169, 2}, {179, 4}, {186, 0}, {187, 2}, {188, 4}, + {183, 0}, {184, 2}, {181, 0}, {185, 2}, {163, 0}, {167, 2}}}, + {1615, {{2, 0}, {3, 2}}}, + {1616, {{7, 0}, {8, 2}}}, + {1621, {{16, 0}, {17, 2}, {21, 4}, {19, 0}, {25, 2}, {18, 0}, {20, 2}, {22, 4}, {26, 6}, {8, 0}, + {12, 2}, {6, 0}, {14, 2}, {15, 4}, {5, 0}, {11, 2}, {4, 0}, {7, 2}, {10, 4}, {3, 0}, + {13, 2}, {23, 4}, {24, 6}, {51, 0}, {52, 2}, {53, 4}, {54, 6}, {31, 0}, {32, 2}}}, + {1626, {{6, 0}, {13, 2}, {9, 0}, {10, 2}, {12, 0}, {14, 2}, {0, 0}, {4, 2}, {5, 4}, {7, 6}}}, + {1627, {{132, 0}, {133, 2}, {135, 4}, {136, 6}, {2, 0}, {12, 2}, {8, 0}, {9, 2}, + {10, 4}, {11, 6}, {4, 0}, {5, 2}, {6, 4}, {13, 6}, {39, 0}, {40, 2}, + {41, 4}, {42, 6}, {25, 0}, {34, 2}, {37, 4}, {38, 6}, {22, 0}, {24, 2}, + {45, 4}, {46, 6}, {7, 0}, {15, 2}, {16, 4}, {126, 0}, {131, 2}, {124, 0}, + {127, 2}, {128, 4}, {130, 6}, {122, 0}, {123, 2}, {125, 4}}}, + {1628, + {{2, 0}, + {15, 2}, + {3, 0}, + {5, 2}, + {23, 0}, + {24, 2}, + {16, 0}, + {20, 2}, + {10, 0}, + {26, 2}, + {12, 0}, + {13, 2}, + {14, 4}, + {0, 0}, + {6, 2}, + {7, 4}, + {19, 6}, + {4, 0}, + {28, 2}}}, + {1629, + {{44, 0}, + {56, 2}, + {51, 0}, + {52, 2}, + {94, 0}, + {106, 2}, + {88, 0}, + {89, 2}, + {86, 0}, + {99, 2}, + {84, 0}, + {98, 2}, + {79, 0}, + {80, 2}, + {59, 0}, + {60, 2}}}, + {1641, {{1, 0}, {2, 2}}}, + {1719, + {{11, 0}, + {22, 2}, + {6, 0}, + {24, 2}, + {2, 0}, + {9, 2}, + {14, 4}, + {15, 6}, + {4, 0}, + {5, 2}, + {16, 4}, + {26, 6}, + {7, 0}, + {13, 2}, + {17, 0}, + {19, 2}, + {20, 4}, + {21, 6}}}, + {1720, {{0, 0}, {1, 2}, {5, 4}, {6, 0}, {7, 2}, {3, 0}, {4, 2}}}, + {1721, + {{6, 0}, {7, 2}, {8, 4}, {17, 0}, {18, 2}, {19, 4}, {20, 6}, {11, 0}, {21, 2}, {13, 0}, + {14, 2}, {15, 4}, {22, 6}, {16, 0}, {24, 2}, {25, 4}, {48, 0}, {49, 2}, {50, 4}, {51, 6}, + {34, 0}, {43, 2}, {46, 4}, {47, 6}, {31, 0}, {33, 2}, {54, 4}, {55, 6}, {76, 0}, {78, 2}}}, + {1733, {{38, 0}, {41, 2}}}, + {1735, {{30, 0}, {70, 2}, {26, 0}, {27, 2}, {28, 4}, {29, 6}, {22, 0}, {23, 2}, + {24, 4}, {31, 6}, {60, 0}, {61, 2}, {62, 4}, {63, 6}, {47, 0}, {55, 2}, + {58, 4}, {59, 6}, {44, 0}, {46, 2}, {66, 4}, {67, 6}, {38, 0}, {40, 2}, + {41, 4}, {25, 0}, {33, 2}, {34, 4}, {5, 0}, {7, 2}, {0, 0}, {1, 2}}}, + {1753, + {{23, 0}, {24, 2}, {26, 4}, {28, 6}, {13, 0}, {14, 2}, {17, 4}, {20, 6}, {6, 0}, {12, 2}, + {18, 4}, {22, 6}, {5, 0}, {10, 2}, {15, 4}, {16, 6}, {4, 0}, {7, 2}, {8, 4}, {11, 6}, + {2, 0}, {3, 2}, {19, 4}, {25, 6}, {1, 0}, {9, 2}, {21, 4}, {27, 6}, {34, 0}, {59, 2}, + {64, 4}, {65, 6}, {43, 0}, {56, 2}, {57, 4}, {60, 6}, {55, 0}, {58, 2}, {66, 4}, {45, 0}, + {46, 2}, {47, 4}, {53, 6}, {36, 0}, {41, 2}, {63, 4}, {35, 0}, {37, 2}, {49, 4}, {61, 6}, + {33, 0}, {48, 2}, {51, 4}, {52, 6}, {32, 0}, {42, 2}, {44, 4}, {67, 0}, {73, 2}}}, + {1756, + {{31, 0}, {56, 2}, {61, 4}, {62, 6}, {40, 0}, {53, 2}, {54, 4}, {57, 6}, {52, 0}, {55, 2}, + {63, 4}, {42, 0}, {43, 2}, {44, 4}, {50, 6}, {33, 0}, {38, 2}, {60, 4}, {32, 0}, {34, 2}, + {46, 4}, {58, 6}, {30, 0}, {45, 2}, {48, 4}, {49, 6}, {29, 0}, {39, 2}, {41, 4}}}, + {1764, + {{56, 0}, {66, 2}, {62, 0}, {63, 2}, {64, 4}, {65, 6}, {58, 0}, {59, 2}, {60, 4}, {67, 6}, + {92, 0}, {93, 2}, {94, 4}, {95, 6}, {79, 0}, {87, 2}, {90, 4}, {91, 6}, {76, 0}, {78, 2}, + {98, 4}, {99, 6}, {61, 0}, {69, 2}, {70, 4}, {41, 0}, {53, 2}, {46, 0}, {47, 2}, {51, 4}, + {54, 6}, {40, 0}, {44, 2}, {45, 4}, {52, 6}, {38, 0}, {39, 2}, {36, 0}, {37, 2}, {34, 0}, + {42, 2}, {43, 4}, {48, 6}, {32, 0}, {33, 2}, {49, 4}, {55, 6}}}, + {1772, + {{105, 0}, {110, 2}, {103, 0}, {106, 2}, {107, 4}, {109, 6}, {101, 0}, {102, 2}, {104, 4}, + {133, 0}, {143, 2}, {139, 0}, {140, 2}, {141, 4}, {142, 6}, {135, 0}, {136, 2}, {137, 4}, + {144, 6}, {168, 0}, {169, 2}, {170, 4}, {171, 6}, {155, 0}, {163, 2}, {166, 4}, {167, 6}, + {152, 0}, {154, 2}, {174, 4}, {175, 6}, {138, 0}, {146, 2}, {147, 4}}}, + {1773, {{60, 0}, {72, 2}, {65, 0}, {66, 2}, {70, 4}, {73, 6}, {59, 0}, {63, 2}, + {64, 4}, {71, 6}, {57, 0}, {58, 2}, {55, 0}, {56, 2}, {53, 0}, {61, 2}, + {62, 4}, {67, 6}, {51, 0}, {52, 2}, {68, 4}, {74, 6}}}, + {1774, {{15, 0}, {27, 2}, {20, 0}, {21, 2}, {25, 4}, {28, 6}, {14, 0}, {18, 2}, + {19, 4}, {26, 6}, {12, 0}, {13, 2}, {10, 0}, {11, 2}, {8, 0}, {16, 2}, + {17, 4}, {22, 6}, {6, 0}, {7, 2}, {23, 4}, {54, 6}}}, + {1862, {{0, 0}, {2, 2}}}, + {1872, + {{9, 0}, + {10, 2}, + {11, 4}, + {12, 6}, + {3, 0}, + {13, 2}, + {5, 0}, + {6, 2}, + {7, 4}, + {14, 6}, + {8, 0}, + {16, 2}, + {17, 4}}}, + {1877, {{80, 0}, {88, 2}, {86, 0}, {87, 2}, {12, 0}, {13, 2}, {9, 0}, {11, 2}, + {14, 4}, {6, 0}, {7, 2}, {67, 0}, {68, 2}, {66, 0}, {75, 2}, {28, 0}, + {49, 2}, {25, 0}, {48, 2}, {39, 0}, {41, 2}, {26, 0}, {51, 2}}}, + {1879, {{8, 0}, {9, 2}, {10, 4}, {11, 6}, {2, 0}, {12, 2}, {4, 0}, {5, 2}, {6, 4}, + {13, 6}, {7, 0}, {15, 2}, {16, 4}, {38, 0}, {39, 2}, {40, 4}, {41, 6}, {25, 0}, + {33, 2}, {36, 4}, {37, 6}, {22, 0}, {24, 2}, {44, 4}, {45, 6}}}, + {1950, + {{16, 0}, + {17, 2}, + {18, 4}, + {19, 6}, + {10, 0}, + {20, 2}, + {12, 0}, + {13, 2}, + {14, 4}, + {21, 6}, + {15, 0}, + {23, 2}, + {24, 4}}}, + {2209, {{6, 0}, {11, 2}, {2, 0}, {3, 2}, {5, 4}, {20, 0}, {23, 2}, {17, 0}, {19, 2}}}, + {2212, + {{76, 0}, {80, 2}, {2, 0}, {12, 2}, {8, 0}, {9, 2}, {10, 4}, {11, 6}, {55, 0}, {60, 2}, + {74, 4}, {77, 6}, {64, 0}, {65, 2}, {67, 4}, {4, 0}, {5, 2}, {6, 4}, {13, 6}, {38, 0}, + {39, 2}, {40, 4}, {41, 6}, {25, 0}, {33, 2}, {36, 4}, {37, 6}, {22, 0}, {24, 2}, {44, 4}, + {45, 6}, {7, 0}, {15, 2}, {16, 4}, {66, 0}, {68, 2}, {70, 4}, {78, 6}, {62, 0}, {63, 2}, + {69, 4}, {75, 6}, {58, 0}, {79, 2}, {57, 0}, {72, 2}, {73, 4}, {56, 0}, {71, 2}}}, + {2280, {{25, 0}, {29, 2}, {23, 0}, {27, 2}, {18, 0}, {21, 2}}}, + {2282, {{26, 0}, {27, 2}, {42, 0}, {53, 2}, {23, 0}, {29, 2}, {30, 4}, {5, 0}, + {6, 2}, {12, 0}, {34, 2}, {11, 0}, {13, 2}, {44, 0}, {46, 2}, {49, 4}, + {2, 0}, {47, 2}, {8, 0}, {36, 2}, {48, 4}, {4, 0}, {57, 2}}}, + {2283, {{7, 0}, {8, 2}}}, + {2284, {{47, 0}, {71, 2}, {18, 0}, {19, 2}, {23, 4}, {21, 0}, {27, 2}, {20, 0}, {22, 2}, + {24, 4}, {28, 6}, {10, 0}, {14, 2}, {8, 0}, {16, 2}, {17, 4}, {7, 0}, {13, 2}, + {6, 0}, {9, 2}, {12, 4}, {5, 0}, {15, 2}, {25, 4}, {26, 6}, {73, 0}, {74, 2}, + {75, 4}, {76, 6}, {49, 0}, {50, 2}, {66, 0}, {67, 2}, {68, 4}, {69, 6}, {53, 0}, + {54, 2}, {58, 4}, {55, 0}, {56, 2}, {57, 4}}}, + {2290, + {{33, 0}, {34, 2}, {10, 0}, {36, 2}, {26, 0}, {27, 2}, {30, 0}, {31, 2}, {32, 4}, {21, 0}, + {28, 2}, {11, 0}, {14, 2}, {48, 0}, {52, 2}, {5, 0}, {6, 2}, {17, 0}, {29, 2}, {42, 0}, + {44, 2}, {47, 4}, {2, 0}, {45, 2}, {8, 0}, {38, 2}, {46, 4}, {4, 0}, {59, 2}}}, + {2292, + {{50, 0}, + {51, 2}, + {52, 4}, + {6, 0}, + {10, 2}, + {22, 4}, + {15, 0}, + {16, 2}, + {20, 4}, + {11, 0}, + {12, 2}, + {17, 4}, + {7, 0}, + {18, 2}, + {19, 4}, + {5, 0}, + {9, 2}, + {13, 4}}}, + {2298, + {{55, 0}, {56, 2}, {57, 0}, {58, 2}, {2, 0}, {3, 2}, {10, 0}, {12, 2}, {31, 0}, {34, 2}, + {49, 4}, {4, 0}, {5, 2}, {13, 0}, {14, 2}, {19, 4}, {64, 6}, {35, 0}, {39, 2}, {40, 4}, + {53, 0}, {54, 2}, {47, 0}, {51, 2}, {59, 0}, {61, 2}, {86, 4}, {24, 0}, {30, 2}, {50, 4}, + {29, 0}, {52, 2}, {62, 0}, {72, 2}, {26, 0}, {75, 2}, {48, 0}, {68, 2}, {43, 0}, {69, 2}, + {1, 0}, {20, 2}, {15, 0}, {42, 2}, {18, 0}, {60, 2}, {17, 0}, {78, 2}}}, + {2300, {{48, 0}, {58, 2}, {12, 0}, {13, 2}, {67, 4}, {72, 6}, {36, 0}, {37, 2}, {82, 4}, + {32, 0}, {33, 2}, {70, 4}, {73, 6}, {25, 0}, {63, 2}, {19, 0}, {24, 2}, {62, 4}, + {10, 0}, {34, 2}, {64, 4}, {1, 0}, {18, 2}, {8, 0}, {27, 2}, {74, 0}, {84, 2}, + {52, 0}, {55, 2}, {66, 4}, {68, 6}, {45, 0}, {54, 2}, {44, 0}, {65, 2}, {35, 0}, + {69, 2}, {30, 0}, {71, 2}, {21, 0}, {80, 2}, {83, 4}}}, + {2324, + {{37, 0}, + {41, 2}, + {28, 0}, + {29, 2}, + {31, 0}, + {40, 2}, + {44, 0}, + {45, 2}, + {33, 0}, + {34, 2}, + {35, 4}, + {27, 0}, + {30, 2}, + {23, 0}, + {32, 2}}}, + {2354, + {{45, 0}, {47, 2}, {48, 4}, {19, 0}, {27, 2}, {74, 4}, {77, 6}, {86, 8}, {49, 0}, + {52, 2}, {106, 4}, {107, 0}, {110, 2}, {111, 4}, {115, 0}, {116, 2}, {99, 0}, {102, 2}, + {120, 0}, {122, 2}, {22, 0}, {59, 2}, {100, 0}, {101, 2}, {103, 4}, {104, 6}, {121, 0}, + {123, 2}, {29, 0}, {65, 2}, {98, 4}, {112, 0}, {125, 2}, {21, 0}, {24, 2}, {26, 4}, + {67, 6}, {20, 0}, {23, 2}, {25, 4}, {28, 0}, {55, 2}, {56, 4}, {76, 6}, {81, 0}, + {82, 2}, {83, 4}, {85, 6}, {57, 0}, {78, 2}, {80, 4}, {84, 6}, {58, 0}, {63, 2}, + {79, 4}, {50, 0}, {51, 2}, {71, 4}, {72, 6}, {31, 0}, {46, 2}, {53, 4}, {62, 6}, + {10, 0}, {90, 2}, {117, 0}, {118, 2}, {1, 0}, {2, 2}, {7, 4}, {9, 6}, {5, 0}, + {8, 2}, {6, 0}, {92, 2}, {93, 0}, {97, 2}, {0, 0}, {3, 2}, {95, 0}, {96, 2}, + {14, 0}, {16, 2}, {15, 0}, {18, 2}, {11, 0}, {12, 2}, {60, 4}, {35, 0}, {61, 2}, + {88, 0}, {89, 2}}}, + {2356, {{0, 0}, {2, 2}}}, + {2357, {{0, 0}, {1, 2}, {3, 4}, {4, 6}, {30, 0}, {31, 2}}}, + {2360, {{41, 0}, {64, 2}, {66, 4}, {43, 0}, {67, 2}}}, + {2363, {{0, 0}, {1, 2}, {3, 4}, {4, 6}}}, + {2371, {{26, 0}, {27, 2}, {28, 0}, {32, 2}, {33, 4}}}, + {2372, {{0, 0}, {1, 2}, {3, 4}, {4, 6}, {2, 0}, {5, 2}}}, + {2373, {{1, 0}, {2, 2}, {3, 4}, {5, 6}, {9, 0}, {10, 2}, {6, 0}, {7, 2}, {11, 4}}}, + {2374, {{6, 0}, {20, 2}, {3, 0}, {26, 2}, {10, 0}, {11, 2}, {15, 0}, + {22, 2}, {2, 0}, {5, 2}, {19, 0}, {21, 2}, {0, 0}, {1, 2}, + {7, 4}, {25, 6}, {8, 0}, {16, 2}, {24, 4}, {4, 0}, {9, 2}}}, + {2375, {{0, 0}, {1, 2}, {3, 4}, {7, 6}, {13, 0}, {17, 2}, {11, 0}, {16, 2}}}, + {2406, + {{18, 0}, {29, 2}, {40, 0}, {41, 2}, {35, 0}, {42, 2}, {20, 0}, {24, 2}, {19, 0}, {32, 2}, + {2, 0}, {4, 2}, {10, 0}, {11, 2}, {43, 4}, {1, 0}, {13, 2}, {7, 0}, {9, 2}, {15, 4}}}, + {2407, {{25, 0}, {35, 2}, {31, 0}, {32, 2}, {33, 4}, {34, 6}, {27, 0}, {28, 2}, {29, 4}, + {36, 6}, {61, 0}, {62, 2}, {63, 4}, {64, 6}, {48, 0}, {56, 2}, {59, 4}, {60, 6}, + {45, 0}, {47, 2}, {67, 4}, {68, 6}, {30, 0}, {38, 2}, {39, 4}}}, + {2423, + {{20, 0}, + {21, 2}, + {22, 4}, + {3, 0}, + {5, 2}, + {12, 0}, + {13, 2}, + {1, 0}, + {9, 2}, + {10, 4}, + {7, 0}, + {27, 2}, + {24, 0}, + {26, 2}, + {30, 0}, + {32, 2}, + {2, 0}, + {8, 2}, + {11, 4}}}, + {2426, {{72, 0}, {82, 2}, {78, 0}, {79, 2}, {80, 4}, {81, 6}, {74, 0}, {75, 2}, {76, 4}, + {83, 6}, {107, 0}, {108, 2}, {109, 4}, {110, 6}, {94, 0}, {102, 2}, {105, 4}, {106, 6}, + {91, 0}, {93, 2}, {113, 4}, {114, 6}, {77, 0}, {85, 2}, {86, 4}}}, + {2438, + {{8, 0}, + {9, 2}, + {2, 0}, + {3, 2}, + {0, 0}, + {4, 2}, + {5, 4}, + {6, 6}, + {24, 0}, + {29, 2}, + {28, 0}, + {30, 2}, + {32, 0}, + {33, 2}}}, + {2445, {{0, 0}, {1, 2}, {3, 4}, {4, 6}, {2, 0}, {5, 2}}}, + {2525, + {{20, 0}, {21, 2}, {24, 4}, {26, 6}, {18, 0}, {30, 2}, {17, 0}, {28, 2}, {15, 0}, {29, 2}, + {12, 0}, {13, 2}, {9, 0}, {23, 2}, {8, 0}, {10, 2}, {7, 0}, {22, 2}, {6, 0}, {19, 2}, + {25, 4}, {27, 6}, {2, 0}, {3, 2}, {67, 0}, {68, 2}, {69, 4}, {70, 6}, {61, 0}, {71, 2}, + {63, 0}, {64, 2}, {65, 4}, {72, 6}, {66, 0}, {74, 2}, {75, 4}, {49, 0}, {57, 2}}}, + {2526, {{2, 0}, {82, 2}, {9, 0}, {71, 2}, {72, 4}, {59, 0}, {60, 2}, {88, 0}, {94, 2}, + {79, 0}, {83, 2}, {84, 4}, {90, 6}, {78, 0}, {80, 2}, {92, 0}, {93, 2}, {87, 0}, + {96, 2}, {75, 0}, {86, 2}, {85, 0}, {89, 2}, {95, 4}, {65, 0}, {66, 2}, {62, 0}, + {64, 2}, {70, 4}, {6, 0}, {8, 2}, {68, 4}, {7, 0}, {36, 2}}}, + {2527, + {{0, 0}, + {1, 2}, + {3, 4}, + {4, 6}, + {2, 0}, + {6, 2}, + {25, 0}, + {26, 2}, + {23, 0}, + {24, 2}, + {28, 0}, + {29, 2}, + {7, 0}, + {8, 2}}}, + {2535, {{32, 0}, {33, 2}, {34, 4}, {15, 0}, {19, 2}, {14, 0}, {16, 2}, {17, 4}, + {20, 6}, {12, 0}, {18, 2}, {5, 0}, {8, 2}, {11, 4}, {119, 0}, {120, 2}, + {100, 0}, {118, 2}, {94, 0}, {96, 2}, {128, 0}, {129, 2}, {130, 0}, {131, 2}, + {134, 0}, {145, 2}, {125, 0}, {126, 2}, {142, 4}, {146, 0}, {147, 2}}}, + {2537, + {{9, 0}, {10, 2}, {12, 0}, {65, 2}, {82, 0}, {84, 2}, {93, 4}, {85, 0}, {87, 2}, {89, 0}, + {90, 2}, {83, 0}, {99, 2}, {80, 0}, {92, 2}, {30, 0}, {31, 2}, {11, 0}, {27, 2}, {7, 0}, + {8, 2}, {47, 0}, {51, 2}, {64, 4}, {41, 0}, {58, 2}, {59, 0}, {62, 2}}}, + {2539, {{0, 0}, {3, 2}, {4, 4}, {7, 0}, {8, 2}, {10, 4}, {11, 6}, {14, 0}, + {24, 2}, {20, 0}, {21, 2}, {22, 4}, {23, 6}, {16, 0}, {17, 2}, {18, 4}, + {25, 6}, {50, 0}, {51, 2}, {52, 4}, {53, 6}, {37, 0}, {45, 2}, {48, 4}, + {49, 6}, {34, 0}, {36, 2}, {56, 4}, {57, 6}, {19, 0}, {27, 2}, {28, 4}}}, + {2553, {{7, 0}, {13, 2}}}, + {2558, {{21, 0}, {22, 2}, {25, 4}, {27, 6}, {19, 0}, {31, 2}, {18, 0}, {29, 2}, + {16, 0}, {30, 2}, {13, 0}, {14, 2}, {10, 0}, {24, 2}, {9, 0}, {11, 2}, + {8, 0}, {23, 2}, {7, 0}, {20, 2}, {26, 4}, {28, 6}, {3, 0}, {4, 2}}}, + {2568, + {{173, 0}, {174, 2}, {178, 4}, {62, 0}, {63, 2}, {64, 4}, {65, 6}, {56, 0}, {66, 2}, + {10, 0}, {24, 2}, {26, 4}, {58, 0}, {59, 2}, {60, 4}, {67, 6}, {138, 0}, {147, 2}, + {184, 0}, {187, 2}, {190, 4}, {191, 6}, {185, 0}, {186, 2}, {189, 4}, {192, 6}, {145, 0}, + {148, 2}, {143, 0}, {144, 2}, {142, 0}, {156, 2}, {140, 0}, {151, 2}, {18, 0}, {19, 2}, + {22, 4}, {23, 6}, {9, 0}, {11, 2}, {21, 4}, {7, 0}, {14, 2}, {20, 4}, {5, 0}, + {15, 2}, {16, 4}, {4, 0}, {8, 2}, {13, 4}, {17, 6}, {61, 0}, {69, 2}, {70, 4}, + {176, 0}, {182, 2}, {175, 0}, {177, 2}, {179, 4}, {183, 6}, {165, 0}, {169, 2}, {163, 0}, + {171, 2}, {172, 4}, {162, 0}, {168, 2}, {161, 0}, {164, 2}, {167, 4}, {160, 0}, {170, 2}, + {180, 4}, {181, 6}, {204, 0}, {205, 2}, {206, 4}, {207, 6}}}, + {2572, + {{26, 0}, {28, 2}, {29, 4}, {0, 0}, {8, 2}, {50, 4}, {56, 6}, {62, 8}, {86, 0}, {87, 2}, + {30, 0}, {34, 2}, {76, 4}, {88, 0}, {90, 2}, {81, 0}, {96, 2}, {97, 4}, {3, 0}, {41, 2}, + {69, 0}, {72, 2}, {70, 0}, {71, 2}, {73, 4}, {74, 6}, {89, 0}, {91, 2}, {10, 0}, {47, 2}, + {68, 4}, {78, 0}, {93, 2}, {2, 0}, {5, 2}, {7, 4}, {48, 6}, {1, 0}, {4, 2}, {6, 4}, + {9, 0}, {37, 2}, {38, 4}, {55, 6}, {60, 0}, {63, 2}, {64, 4}, {65, 6}, {39, 0}, {57, 2}, + {59, 4}, {61, 6}, {40, 0}, {45, 2}, {58, 4}, {31, 0}, {33, 2}, {51, 4}, {52, 6}, {12, 0}, + {27, 2}, {35, 4}, {44, 6}, {82, 0}, {83, 2}}}, + {2573, {{0, 0}, {2, 2}}}, + {2574, + {{57, 0}, {61, 2}, {56, 0}, {58, 2}, {59, 4}, {62, 6}, {51, 0}, {71, 2}, {49, 0}, {72, 2}, + {73, 4}, {48, 0}, {70, 2}, {47, 0}, {50, 2}, {53, 4}, {2, 0}, {12, 2}, {55, 0}, {74, 2}, + {75, 4}, {8, 0}, {9, 2}, {10, 4}, {11, 6}, {4, 0}, {5, 2}, {6, 4}, {13, 6}, {77, 0}, + {80, 2}, {81, 4}, {38, 0}, {39, 2}, {40, 4}, {41, 6}, {25, 0}, {33, 2}, {36, 4}, {37, 6}, + {22, 0}, {24, 2}, {44, 4}, {45, 6}, {7, 0}, {15, 2}, {16, 4}, {54, 0}, {60, 2}, {69, 4}, + {76, 6}, {82, 0}, {83, 2}, {84, 4}, {85, 6}}}, + {2597, + {{52, 0}, {53, 2}, {63, 0}, {69, 2}, {67, 0}, {68, 2}, {72, 0}, {73, 2}, {61, 0}, {62, 2}, + {51, 0}, {54, 2}, {47, 0}, {48, 2}, {8, 0}, {9, 2}, {10, 4}, {11, 6}, {2, 0}, {12, 2}, + {4, 0}, {5, 2}, {6, 4}, {13, 6}, {7, 0}, {15, 2}, {16, 4}, {38, 0}, {39, 2}, {40, 4}, + {41, 6}, {25, 0}, {33, 2}, {36, 4}, {37, 6}, {22, 0}, {24, 2}, {44, 4}, {45, 6}}}, + {2618, {{3, 0}, {6, 2}, {4, 0}, {5, 2}, {1, 0}, {2, 2}}}, + {2657, {{75, 0}, {76, 2}, {21, 0}, {22, 2}, {25, 4}, {27, 6}, {19, 0}, {31, 2}, {18, 0}, + {29, 2}, {16, 0}, {30, 2}, {13, 0}, {14, 2}, {10, 0}, {24, 2}, {9, 0}, {11, 2}, + {8, 0}, {23, 2}, {7, 0}, {20, 2}, {26, 4}, {28, 6}, {3, 0}, {4, 2}, {46, 0}, + {69, 2}, {70, 4}, {82, 0}, {83, 2}, {86, 4}, {89, 6}, {84, 0}, {85, 2}, {87, 4}, + {88, 6}, {44, 0}, {67, 2}, {68, 4}, {43, 0}, {65, 2}, {66, 4}, {77, 0}, {78, 2}, + {81, 4}, {73, 0}, {74, 2}, {80, 4}, {71, 0}, {72, 2}, {79, 4}, {34, 0}, {36, 2}}}, + {2658, + {{47, 0}, + {48, 2}, + {49, 4}, + {50, 6}, + {34, 0}, + {42, 2}, + {45, 4}, + {46, 6}, + {31, 0}, + {33, 2}, + {53, 4}, + {54, 6}}}, + {2662, {{3, 0}, {4, 2}}}, + {2679, {{85, 0}, {86, 2}, {87, 4}, {88, 6}, {79, 0}, {89, 2}, {81, 0}, {82, 2}, {83, 4}, + {90, 6}, {114, 0}, {115, 2}, {116, 4}, {117, 6}, {101, 0}, {109, 2}, {112, 4}, {113, 6}, + {98, 0}, {100, 2}, {120, 4}, {121, 6}, {84, 0}, {92, 2}, {93, 4}, {19, 0}, {20, 2}, + {23, 4}, {25, 6}, {17, 0}, {29, 2}, {16, 0}, {27, 2}, {14, 0}, {28, 2}, {11, 0}, + {12, 2}, {9, 0}, {22, 2}, {8, 0}, {77, 2}, {7, 0}, {21, 2}, {6, 0}, {18, 2}, + {24, 4}, {26, 6}, {2, 0}, {3, 2}, {72, 0}, {73, 2}, {70, 0}, {71, 2}}}, + {2691, {{23, 0}, {24, 2}, {26, 4}, {28, 6}, {13, 0}, {14, 2}, {17, 4}, {20, 6}, {6, 0}, {12, 2}, + {18, 4}, {22, 6}, {5, 0}, {10, 2}, {15, 4}, {16, 6}, {4, 0}, {7, 2}, {8, 4}, {11, 6}, + {2, 0}, {3, 2}, {19, 4}, {25, 6}, {1, 0}, {9, 2}, {21, 4}, {27, 6}}}, + {2699, {{5, 0}, {30, 2}, {35, 4}, {36, 6}, {14, 0}, {27, 2}, {28, 4}, {31, 6}, + {26, 0}, {29, 2}, {37, 4}, {16, 0}, {17, 2}, {18, 4}, {24, 6}, {7, 0}, + {12, 2}, {34, 4}, {6, 0}, {8, 2}, {20, 4}, {32, 6}, {4, 0}, {19, 2}, + {22, 4}, {23, 6}, {3, 0}, {13, 2}, {15, 4}, {64, 0}, {66, 2}, {68, 4}}}, + {2701, + {{44, 0}, {45, 2}, {49, 4}, {47, 0}, {53, 2}, {46, 0}, {48, 2}, {50, 4}, {54, 6}, {36, 0}, + {40, 2}, {34, 0}, {42, 2}, {43, 4}, {33, 0}, {39, 2}, {32, 0}, {35, 2}, {38, 4}, {31, 0}, + {41, 2}, {51, 4}, {52, 6}, {24, 0}, {25, 2}, {27, 4}, {29, 6}, {14, 0}, {15, 2}, {18, 4}, + {21, 6}, {7, 0}, {13, 2}, {19, 4}, {23, 6}, {6, 0}, {11, 2}, {16, 4}, {17, 6}, {5, 0}, + {8, 2}, {9, 4}, {12, 6}, {3, 0}, {4, 2}, {20, 4}, {26, 6}, {2, 0}, {10, 2}, {22, 4}, + {28, 6}, {111, 0}, {112, 2}, {113, 4}, {114, 6}}}, + {2703, + {{13, 0}, {14, 2}, {18, 4}, {16, 0}, {22, 2}, {15, 0}, {17, 2}, {19, 4}, {23, 6}, {5, 0}, + {9, 2}, {3, 0}, {11, 2}, {12, 4}, {2, 0}, {8, 2}, {1, 0}, {4, 2}, {7, 4}, {0, 0}, + {10, 2}, {20, 4}, {21, 6}, {79, 0}, {80, 2}, {82, 4}, {84, 6}, {69, 0}, {70, 2}, {73, 4}, + {76, 6}, {62, 0}, {68, 2}, {74, 4}, {78, 6}, {61, 0}, {66, 2}, {71, 4}, {72, 6}, {60, 0}, + {63, 2}, {64, 4}, {67, 6}, {58, 0}, {59, 2}, {75, 4}, {81, 6}, {57, 0}, {65, 2}, {77, 4}, + {83, 6}, {46, 0}, {47, 2}, {50, 4}, {52, 6}, {44, 0}, {56, 2}, {43, 0}, {54, 2}, {41, 0}, + {55, 2}, {38, 0}, {39, 2}, {35, 0}, {49, 2}, {34, 0}, {36, 2}, {33, 0}, {48, 2}, {32, 0}, + {45, 2}, {51, 4}, {53, 6}, {28, 0}, {29, 2}}}, + {2705, {{23, 0}, {27, 2}, {2, 0}, {7, 2}, {21, 4}, {24, 6}, {11, 0}, {12, 2}, + {14, 4}, {13, 0}, {15, 2}, {17, 4}, {25, 6}, {9, 0}, {10, 2}, {16, 4}, + {22, 6}, {5, 0}, {26, 2}, {4, 0}, {19, 2}, {20, 4}, {3, 0}, {18, 2}}}, + {2707, {{43, 0}, {44, 2}, {48, 4}, {46, 0}, {52, 2}, {45, 0}, {47, 2}, {49, 4}, {53, 6}, + {35, 0}, {39, 2}, {33, 0}, {41, 2}, {42, 4}, {32, 0}, {38, 2}, {31, 0}, {34, 2}, + {37, 4}, {30, 0}, {40, 2}, {50, 4}, {51, 6}, {23, 0}, {24, 2}, {26, 4}, {28, 6}, + {13, 0}, {14, 2}, {17, 4}, {20, 6}, {6, 0}, {12, 2}, {18, 4}, {22, 6}, {5, 0}, + {10, 2}, {15, 4}, {16, 6}, {4, 0}, {7, 2}, {8, 4}, {11, 6}, {2, 0}, {3, 2}, + {19, 4}, {25, 6}, {1, 0}, {9, 2}, {21, 4}, {27, 6}}}, + {2731, + {{27, 0}, + {28, 2}, + {29, 4}, + {30, 6}, + {46, 0}, + {47, 2}, + {55, 0}, + {60, 2}, + {61, 4}, + {20, 0}, + {21, 2}, + {56, 0}, + {57, 2}, + {31, 0}, + {39, 2}, + {45, 0}, + {50, 2}}}, + {2733, {{4, 0}, {14, 2}, {10, 0}, {11, 2}, {12, 4}, {13, 6}, {6, 0}, {7, 2}, {8, 4}, + {15, 6}, {40, 0}, {41, 2}, {42, 4}, {43, 6}, {27, 0}, {35, 2}, {38, 4}, {39, 6}, + {24, 0}, {26, 2}, {46, 4}, {47, 6}, {9, 0}, {17, 2}, {18, 4}}}, + {2751, + {{11, 0}, + {17, 2}, + {20, 4}, + {25, 6}, + {9, 0}, + {10, 2}, + {21, 4}, + {27, 6}, + {13, 0}, + {14, 2}, + {18, 4}, + {26, 6}, + {15, 0}, + {16, 2}, + {22, 4}, + {23, 6}}}, + {2752, {{8, 0}, {13, 2}, {6, 0}, {7, 2}, {5, 0}, {11, 2}, {19, 4}, {18, 0}, {23, 2}, + {28, 0}, {30, 2}, {36, 4}, {38, 0}, {44, 2}, {46, 4}, {35, 0}, {47, 2}, {34, 0}, + {37, 2}, {42, 4}, {32, 0}, {33, 2}, {31, 0}, {45, 2}, {40, 0}, {53, 2}, {9, 0}, + {14, 2}, {17, 4}, {25, 6}, {4, 0}, {12, 2}, {21, 4}, {3, 0}, {15, 2}, {16, 4}}}, + {2755, {{26, 0}, {42, 2}, {43, 4}, {0, 0}, {8, 2}, {91, 4}, {96, 6}, {111, 8}, {50, 0}, + {51, 2}, {27, 0}, {44, 2}, {48, 4}, {55, 0}, {57, 2}, {61, 0}, {64, 2}, {65, 4}, + {3, 0}, {103, 2}, {35, 0}, {38, 2}, {36, 0}, {37, 2}, {39, 4}, {40, 6}, {69, 0}, + {93, 2}, {56, 0}, {58, 2}, {70, 4}, {10, 0}, {34, 2}, {41, 4}, {101, 6}, {60, 0}, + {66, 2}, {2, 0}, {5, 2}, {7, 4}, {89, 6}, {1, 0}, {4, 2}, {6, 4}, {9, 0}, + {30, 2}, {31, 4}, {90, 6}, {105, 0}, {106, 2}, {107, 4}, {110, 6}, {32, 0}, {94, 2}, + {104, 4}, {108, 6}, {95, 0}, {102, 2}, {109, 4}, {45, 0}, {47, 2}, {97, 4}, {98, 6}, + {12, 0}, {25, 2}, {28, 4}, {87, 6}, {52, 0}, {53, 2}, {112, 0}, {113, 2}}}, + {2756, {{0, 0}, {2, 2}}}, + {2863, + {{6, 0}, {16, 2}, {38, 0}, {59, 2}, {60, 4}, {12, 0}, {13, 2}, {14, 4}, {15, 6}, {8, 0}, + {9, 2}, {10, 4}, {17, 6}, {42, 0}, {43, 2}, {44, 4}, {45, 6}, {36, 0}, {57, 2}, {58, 4}, + {35, 0}, {55, 2}, {56, 4}, {34, 0}, {53, 2}, {54, 4}, {33, 0}, {51, 2}, {52, 4}, {29, 0}, + {37, 2}, {40, 4}, {41, 6}, {26, 0}, {28, 2}, {48, 4}, {49, 6}, {11, 0}, {19, 2}, {20, 4}}}, + {2865, {{22, 0}, {86, 2}, {96, 4}, {84, 0}, {109, 2}, {116, 4}, {81, 0}, {107, 2}, {125, 4}, + {94, 0}, {95, 2}, {113, 0}, {124, 2}, {101, 0}, {110, 2}, {117, 4}, {79, 0}, {80, 2}, + {82, 4}, {85, 0}, {102, 2}, {108, 4}, {104, 0}, {126, 2}, {83, 0}, {93, 2}, {87, 0}, + {90, 2}, {98, 0}, {123, 2}, {7, 0}, {8, 2}, {29, 0}, {40, 2}}}, + {2866, {{7, 0}, {9, 2}}}, + {2867, {{48, 0}, {71, 2}, {76, 0}, {84, 2}, {51, 0}, {75, 2}, {85, 4}, {11, 0}, {12, 2}, + {14, 4}, {15, 6}, {78, 0}, {87, 2}, {34, 0}, {35, 2}, {39, 4}, {37, 0}, {43, 2}, + {36, 0}, {38, 2}, {40, 4}, {44, 6}, {26, 0}, {30, 2}, {24, 0}, {32, 2}, {33, 4}, + {23, 0}, {29, 2}, {22, 0}, {25, 2}, {28, 4}, {21, 0}, {31, 2}, {41, 4}, {42, 6}, + {60, 0}, {61, 2}, {55, 0}, {56, 2}, {88, 0}, {89, 2}, {90, 4}, {91, 6}}}, + {2869, {{0, 0}, {1, 2}, {17, 0}, {19, 2}, {12, 0}, {15, 2}, {16, 4}}}, + {2889, + {{35, 0}, + {38, 2}, + {41, 4}, + {42, 6}, + {36, 0}, + {37, 2}, + {40, 4}, + {43, 6}, + {49, 0}, + {50, 2}, + {51, 4}, + {46, 0}, + {47, 2}, + {31, 0}, + {32, 2}, + {33, 4}}}, + {2929, + {{12, 0}, {16, 2}, {19, 0}, {20, 2}, {87, 4}, {88, 6}, {7, 0}, {8, 2}, {21, 0}, + {23, 2}, {90, 4}, {13, 0}, {14, 2}, {17, 4}, {10, 0}, {11, 2}, {86, 4}, {9, 0}, + {89, 2}, {6, 0}, {18, 2}, {52, 4}, {53, 6}, {4, 0}, {85, 2}, {2, 0}, {3, 2}, + {111, 0}, {112, 2}, {116, 4}, {42, 0}, {50, 2}, {51, 4}, {41, 0}, {43, 2}, {44, 4}, + {46, 6}, {40, 0}, {47, 2}, {48, 4}, {49, 6}, {114, 0}, {120, 2}, {113, 0}, {115, 2}, + {117, 4}, {121, 6}, {103, 0}, {107, 2}, {101, 0}, {109, 2}, {110, 4}, {100, 0}, {106, 2}, + {99, 0}, {102, 2}, {105, 4}, {98, 0}, {108, 2}, {118, 4}, {119, 6}, {71, 0}, {72, 2}, + {61, 0}, {62, 2}, {31, 0}, {93, 2}, {26, 0}, {33, 2}, {28, 0}, {29, 2}, {30, 4}, + {35, 0}, {37, 2}, {38, 4}, {39, 6}, {67, 0}, {76, 2}, {73, 0}, {75, 2}, {74, 0}, + {79, 2}, {80, 4}, {78, 0}, {94, 2}, {65, 0}, {66, 2}, {60, 0}, {63, 2}, {57, 0}, + {70, 2}, {123, 0}, {124, 2}, {125, 4}, {126, 6}, {82, 0}, {83, 2}, {25, 0}, {27, 2}, + {24, 0}, {55, 2}, {81, 0}, {92, 2}}}, + {2932, + {{4, 0}, + {5, 2}, + {7, 4}, + {17, 6}, + {6, 0}, + {8, 2}, + {9, 4}, + {10, 6}, + {11, 0}, + {12, 2}, + {13, 4}, + {15, 6}, + {1, 0}, + {2, 2}, + {0, 0}, + {3, 2}, + {14, 4}}}, + {2949, + {{45, 0}, {70, 2}, {75, 4}, {76, 6}, {54, 0}, {67, 2}, {68, 4}, {71, 6}, {66, 0}, {69, 2}, + {77, 4}, {56, 0}, {57, 2}, {58, 4}, {64, 6}, {47, 0}, {52, 2}, {74, 4}, {46, 0}, {48, 2}, + {60, 4}, {72, 6}, {44, 0}, {59, 2}, {62, 4}, {63, 6}, {43, 0}, {53, 2}, {55, 4}}}, + {2953, {{0, 0}, {2, 2}}}, + {2956, + {{191, 0}, {192, 2}, {193, 4}, {48, 0}, {52, 2}, {27, 0}, {32, 2}, {46, 4}, {49, 6}, + {36, 0}, {37, 2}, {39, 4}, {38, 0}, {40, 2}, {42, 4}, {50, 6}, {34, 0}, {35, 2}, + {41, 4}, {47, 6}, {30, 0}, {51, 2}, {29, 0}, {44, 2}, {45, 4}, {28, 0}, {43, 2}, + {236, 0}, {240, 2}, {246, 4}, {256, 6}, {253, 0}, {255, 2}, {182, 0}, {183, 2}, {176, 0}, + {177, 2}, {174, 0}, {178, 2}, {179, 4}, {180, 6}, {233, 0}, {238, 2}, {251, 4}, {254, 6}, + {239, 0}, {241, 2}, {242, 4}, {243, 6}, {244, 0}, {245, 2}, {247, 4}, {250, 6}, {234, 0}, + {235, 2}, {248, 4}, {249, 6}}}, + {2957, + {{45, 0}, + {46, 2}, + {50, 0}, + {57, 2}, + {48, 0}, + {52, 2}, + {49, 0}, + {72, 2}, + {60, 0}, + {61, 2}, + {44, 0}, + {53, 2}}}, + {2964, {{20, 0}, {21, 2}, {24, 4}, {26, 6}, {18, 0}, {30, 2}, {17, 0}, {28, 2}, {15, 0}, + {29, 2}, {12, 0}, {13, 2}, {9, 0}, {23, 2}, {8, 0}, {10, 2}, {7, 0}, {22, 2}, + {6, 0}, {19, 2}, {25, 4}, {27, 6}, {2, 0}, {3, 2}, {74, 0}, {75, 2}, {79, 4}, + {77, 0}, {83, 2}, {76, 0}, {78, 2}, {80, 4}, {84, 6}, {66, 0}, {70, 2}, {64, 0}, + {72, 2}, {73, 4}, {63, 0}, {69, 2}, {62, 0}, {65, 2}, {68, 4}, {61, 0}, {71, 2}, + {81, 4}, {82, 6}, {54, 0}, {55, 2}, {57, 4}, {59, 6}, {44, 0}, {45, 2}, {48, 4}, + {51, 6}, {37, 0}, {43, 2}, {49, 4}, {53, 6}, {36, 0}, {41, 2}, {46, 4}, {47, 6}, + {35, 0}, {38, 2}, {39, 4}, {42, 6}, {33, 0}, {34, 2}, {50, 4}, {56, 6}, {32, 0}, + {40, 2}, {52, 4}, {58, 6}, {201, 0}, {203, 2}, {204, 0}, {205, 2}, {206, 4}, {207, 6}}}, + {2972, + {{4, 0}, {5, 2}, {6, 4}, {29, 0}, {30, 2}, {34, 4}, {32, 0}, {38, 2}, {31, 0}, {33, 2}, + {35, 4}, {39, 6}, {21, 0}, {25, 2}, {19, 0}, {27, 2}, {28, 4}, {18, 0}, {24, 2}, {17, 0}, + {20, 2}, {23, 4}, {16, 0}, {26, 2}, {36, 4}, {37, 6}, {48, 0}, {49, 2}, {50, 4}, {51, 6}, + {12, 0}, {13, 2}, {59, 0}, {60, 2}, {68, 0}, {69, 2}, {70, 4}, {71, 6}, {52, 0}, {55, 2}, + {46, 0}, {47, 2}, {14, 0}, {15, 2}, {8, 0}, {11, 2}}}, + {2986, + {{5, 0}, {6, 2}, {7, 4}, {9, 0}, {12, 2}, {13, 4}, {16, 6}, {18, 0}, {21, 2}, + {22, 4}, {24, 6}, {17, 0}, {19, 2}, {20, 4}, {23, 6}, {8, 0}, {10, 2}, {11, 4}, + {14, 6}, {118, 0}, {127, 2}, {116, 0}, {122, 2}, {117, 0}, {121, 2}, {119, 0}, {120, 2}, + {32, 0}, {42, 2}, {63, 0}, {109, 2}, {110, 4}, {38, 0}, {39, 2}, {40, 4}, {41, 6}, + {34, 0}, {35, 2}, {36, 4}, {43, 6}, {133, 0}, {139, 2}, {130, 0}, {132, 2}, {67, 0}, + {68, 2}, {69, 4}, {70, 6}, {61, 0}, {107, 2}, {108, 4}, {60, 0}, {105, 2}, {106, 4}, + {59, 0}, {103, 2}, {104, 4}, {58, 0}, {101, 2}, {102, 4}, {54, 0}, {62, 2}, {65, 4}, + {66, 6}, {51, 0}, {53, 2}, {73, 4}, {74, 6}, {37, 0}, {45, 2}, {46, 4}, {76, 0}, + {80, 2}, {83, 0}, {86, 2}, {143, 0}, {144, 2}, {147, 4}, {149, 6}, {111, 0}, {112, 2}, + {113, 4}, {148, 6}, {114, 0}, {115, 2}, {145, 4}, {146, 6}}}, + {2988, {{22, 0}, {64, 2}, {43, 0}, {44, 2}, {50, 0}, {59, 2}, {17, 0}, {18, 2}, + {20, 0}, {60, 2}, {1, 0}, {2, 2}, {5, 4}, {3, 0}, {41, 2}, {47, 0}, + {57, 2}, {45, 0}, {46, 2}, {48, 0}, {49, 2}, {14, 0}, {16, 2}}}, + {2990, {{3, 0}, {4, 2}, {5, 4}, {6, 0}, {9, 2}, {10, 4}, {28, 0}, {29, 2}, {25, 0}, {26, 2}}}, + {2992, {{75, 0}, {76, 2}, {54, 0}, {59, 2}, {42, 0}, {43, 2}, {64, 0}, {77, 2}, + {11, 0}, {16, 2}, {52, 0}, {79, 2}, {67, 0}, {74, 2}, {46, 0}, {65, 2}, + {44, 0}, {56, 2}, {5, 0}, {18, 2}, {39, 0}, {60, 2}, {3, 0}, {4, 2}}}, + {2996, + {{92, 0}, {99, 2}, {106, 4}, {135, 6}, {101, 0}, {107, 2}, {118, 4}, {95, 0}, {108, 2}, + {96, 0}, {97, 2}, {91, 0}, {105, 2}, {109, 4}, {110, 6}, {130, 0}, {137, 2}, {94, 0}, + {100, 2}, {129, 4}, {93, 0}, {126, 2}, {136, 4}, {134, 0}, {138, 2}, {98, 0}, {102, 2}, + {103, 4}, {48, 0}, {125, 2}, {32, 0}, {33, 2}, {131, 4}, {132, 6}}}, + {2997, {{0, 0}, {1, 2}, {3, 4}, {4, 6}, {10, 0}, {35, 2}, {40, 4}, {41, 6}, {19, 0}, + {32, 2}, {33, 4}, {36, 6}, {31, 0}, {34, 2}, {42, 4}, {21, 0}, {22, 2}, {23, 4}, + {29, 6}, {12, 0}, {17, 2}, {39, 4}, {11, 0}, {13, 2}, {25, 4}, {37, 6}, {9, 0}, + {24, 2}, {27, 4}, {28, 6}, {8, 0}, {18, 2}, {20, 4}, {94, 0}, {97, 2}, {83, 0}, + {85, 2}, {98, 4}, {102, 6}, {55, 0}, {56, 2}, {91, 0}, {100, 2}, {103, 4}, {104, 6}, + {84, 0}, {88, 2}, {89, 4}, {99, 6}, {81, 0}, {93, 2}, {86, 0}, {96, 2}, {101, 4}, + {82, 0}, {87, 2}, {90, 4}, {92, 6}, {108, 0}, {118, 2}}}, + {3023, + {{5, 0}, {6, 2}, {7, 0}, {12, 2}, {4, 0}, {10, 2}, {18, 4}, {17, 0}, {22, 2}, {8, 0}, + {13, 2}, {16, 4}, {24, 6}, {3, 0}, {11, 2}, {20, 4}, {2, 0}, {14, 2}, {15, 4}, {33, 0}, + {35, 2}, {38, 0}, {43, 2}, {45, 4}, {37, 0}, {46, 2}, {36, 0}, {44, 2}}}, + {3029, {{4, 0}, {5, 2}, {8, 0}, {9, 2}, {16, 0}, {17, 2}, {6, 0}, {7, 2}, + {2, 0}, {3, 2}, {29, 0}, {34, 2}, {33, 0}, {36, 2}, {43, 0}, {46, 2}, + {42, 0}, {45, 2}, {27, 0}, {28, 2}, {21, 0}, {30, 2}, {24, 0}, {32, 2}}}, + {3030, {{124, 0}, {128, 2}, {105, 0}, {151, 2}, {106, 0}, {107, 2}, {152, 4}, {142, 0}, + {144, 2}, {111, 0}, {122, 2}, {115, 0}, {155, 2}, {100, 0}, {113, 2}, {104, 0}, + {108, 2}, {154, 4}, {99, 0}, {153, 2}, {121, 0}, {137, 2}, {139, 0}, {140, 2}, + {98, 0}, {123, 2}, {132, 0}, {143, 2}, {96, 0}, {101, 2}}}, + {3031, + {{79, 0}, {80, 2}, {83, 4}, {85, 6}, {77, 0}, {89, 2}, {76, 0}, {87, 2}, {74, 0}, + {88, 2}, {71, 0}, {72, 2}, {68, 0}, {82, 2}, {67, 0}, {69, 2}, {66, 0}, {81, 2}, + {65, 0}, {78, 2}, {84, 4}, {86, 6}, {61, 0}, {62, 2}, {0, 0}, {1, 2}, {3, 4}, + {4, 6}, {7, 0}, {17, 2}, {132, 0}, {133, 2}, {137, 4}, {13, 0}, {14, 2}, {15, 4}, + {16, 6}, {9, 0}, {10, 2}, {11, 4}, {18, 6}, {43, 0}, {44, 2}, {45, 4}, {46, 6}, + {30, 0}, {38, 2}, {41, 4}, {42, 6}, {27, 0}, {29, 2}, {49, 4}, {50, 6}, {12, 0}, + {20, 2}, {21, 4}, {135, 0}, {141, 2}, {134, 0}, {136, 2}, {138, 4}, {142, 6}, {124, 0}, + {128, 2}, {122, 0}, {130, 2}, {131, 4}, {121, 0}, {127, 2}, {120, 0}, {123, 2}, {126, 4}, + {119, 0}, {129, 2}, {139, 4}, {140, 6}, {112, 0}, {113, 2}, {115, 4}, {117, 6}, {102, 0}, + {103, 2}, {106, 4}, {109, 6}, {95, 0}, {101, 2}, {107, 4}, {111, 6}, {94, 0}, {99, 2}, + {104, 4}, {105, 6}, {93, 0}, {96, 2}, {97, 4}, {100, 6}, {91, 0}, {92, 2}, {108, 4}, + {114, 6}, {90, 0}, {98, 2}, {110, 4}, {116, 6}, {222, 0}, {223, 2}, {224, 4}, {225, 6}}}, + {3033, + {{2, 0}, {3, 2}, {0, 0}, {1, 2}, {4, 4}, {5, 6}, {16, 0}, {24, 2}, {30, 4}, {15, 0}, + {29, 2}, {33, 0}, {36, 2}, {37, 4}, {40, 6}, {42, 0}, {45, 2}, {46, 4}, {48, 6}, {41, 0}, + {43, 2}, {44, 4}, {47, 6}, {32, 0}, {34, 2}, {35, 4}, {38, 6}, {13, 0}, {21, 2}, {22, 4}, + {11, 0}, {20, 2}, {27, 4}, {10, 0}, {26, 2}, {28, 4}, {9, 0}, {23, 2}}}, + {3034, {{1, 0}, {99, 2}, {10, 0}, {69, 2}, {4, 0}, {6, 2}, {86, 4}, {3, 0}, + {7, 2}, {17, 4}, {103, 6}, {20, 0}, {33, 2}, {67, 0}, {70, 2}, {72, 4}, + {2, 0}, {100, 2}, {13, 0}, {31, 2}, {77, 0}, {85, 2}, {78, 0}, {79, 2}}}, + {3037, + {{6, 0}, {16, 2}, {12, 0}, {13, 2}, {14, 4}, {15, 6}, {8, 0}, {9, 2}, {10, 4}, {17, 6}, + {42, 0}, {43, 2}, {44, 4}, {45, 6}, {29, 0}, {37, 2}, {40, 4}, {41, 6}, {26, 0}, {28, 2}, + {48, 4}, {49, 6}, {11, 0}, {19, 2}, {20, 4}, {69, 0}, {70, 2}, {73, 4}, {74, 0}, {75, 2}, + {76, 4}, {66, 0}, {67, 2}, {68, 4}, {71, 6}, {91, 0}, {96, 2}, {90, 0}, {92, 2}, {93, 4}, + {89, 0}, {94, 2}, {95, 4}, {88, 0}, {98, 2}, {99, 4}, {100, 6}, {63, 0}, {64, 2}, {65, 4}}}, + {3039, + {{59, 0}, {60, 2}, {62, 4}, {71, 0}, {79, 2}, {80, 4}, {70, 0}, {72, 2}, {73, 4}, + {75, 6}, {69, 0}, {76, 2}, {77, 4}, {78, 6}, {61, 0}, {65, 2}, {11, 0}, {12, 2}, + {63, 4}, {66, 6}, {51, 0}, {55, 2}, {49, 0}, {57, 2}, {58, 4}, {48, 0}, {54, 2}, + {10, 0}, {50, 2}, {53, 4}, {13, 0}, {47, 2}, {56, 4}, {64, 6}, {8, 0}, {9, 2}, + {3, 0}, {4, 2}, {89, 0}, {90, 2}, {91, 4}, {92, 6}, {118, 0}, {119, 2}, {104, 0}, + {105, 2}, {29, 0}, {36, 2}, {31, 0}, {40, 2}, {33, 0}, {34, 2}, {35, 4}, {42, 0}, + {44, 2}, {45, 4}, {46, 6}, {113, 0}, {123, 2}, {120, 0}, {122, 2}, {121, 0}, {126, 2}, + {127, 4}, {110, 0}, {125, 2}, {108, 0}, {109, 2}, {103, 0}, {106, 2}, {100, 0}, {117, 2}, + {129, 0}, {130, 2}, {93, 0}, {96, 2}, {86, 0}, {87, 2}, {88, 4}, {68, 0}, {85, 2}, + {37, 0}, {38, 2}, {30, 0}, {32, 2}, {25, 0}, {98, 2}, {24, 0}, {28, 2}}}, + {3045, + {{27, 0}, {28, 2}, {9, 0}, {34, 2}, {21, 0}, {40, 2}, {19, 0}, {20, 2}, {35, 4}, {45, 6}, + {36, 0}, {39, 2}, {24, 0}, {26, 2}, {23, 0}, {33, 2}, {42, 4}, {44, 6}, {38, 0}, {48, 2}, + {41, 0}, {46, 2}, {18, 0}, {47, 2}, {22, 0}, {29, 2}, {10, 0}, {49, 2}, {50, 4}}}, + {3048, {{2, 0}, {14, 2}, {0, 0}, {1, 2}, {3, 4}, {4, 6}, {45, 0}, {55, 2}, {51, 0}, + {52, 2}, {53, 4}, {54, 6}, {47, 0}, {48, 2}, {49, 4}, {56, 6}, {81, 0}, {82, 2}, + {83, 4}, {84, 6}, {68, 0}, {76, 2}, {79, 4}, {80, 6}, {65, 0}, {67, 2}, {87, 4}, + {88, 6}, {50, 0}, {58, 2}, {59, 4}, {96, 0}, {102, 2}, {10, 0}, {11, 2}, {12, 4}}}, + {3051, + {{43, 0}, + {44, 2}, + {23, 0}, + {35, 2}, + {39, 0}, + {41, 2}, + {30, 0}, + {32, 2}, + {27, 0}, + {47, 2}, + {45, 0}, + {46, 2}, + {40, 0}, + {42, 2}}}, + {3053, {{29, 0}, {30, 2}, {31, 4}, {2, 0}, {3, 2}, {0, 0}, {1, 2}, {4, 4}, {5, 6}, + {36, 0}, {40, 2}, {50, 4}, {57, 0}, {58, 2}, {59, 4}, {54, 0}, {55, 2}, {52, 0}, + {56, 2}, {35, 0}, {39, 2}, {72, 0}, {73, 2}, {74, 4}, {75, 6}}}, + {3073, {{4, 0}, {7, 2}, {5, 0}, {6, 2}, {1, 0}, {2, 2}}}, + {3091, + {{9, 0}, + {10, 2}, + {11, 4}, + {12, 6}, + {3, 0}, + {13, 2}, + {5, 0}, + {6, 2}, + {7, 4}, + {14, 6}, + {8, 0}, + {16, 2}, + {17, 4}}}, + {3112, {{0, 0}, {2, 2}}}, + {3159, {{75, 0}, {86, 2}, {89, 4}, {92, 6}, {72, 0}, {87, 2}, {94, 4}, {74, 0}, + {79, 2}, {90, 4}, {68, 0}, {83, 2}, {88, 4}, {98, 6}, {67, 0}, {69, 2}, + {71, 4}, {80, 6}, {91, 0}, {95, 2}, {96, 4}, {97, 6}, {78, 0}, {81, 2}, + {76, 0}, {84, 2}, {73, 0}, {82, 2}, {85, 4}, {93, 6}, {70, 0}, {77, 2}}}, + {3162, {{75, 0}, {86, 2}, {89, 4}, {92, 6}, {72, 0}, {87, 2}, {94, 4}, {74, 0}, {79, 2}, + {90, 4}, {59, 0}, {63, 2}, {64, 4}, {68, 0}, {83, 2}, {88, 4}, {98, 6}, {67, 0}, + {69, 2}, {71, 4}, {80, 6}, {58, 0}, {60, 2}, {61, 4}, {57, 0}, {62, 2}, {65, 4}, + {66, 6}, {91, 0}, {95, 2}, {96, 4}, {97, 6}, {78, 0}, {81, 2}, {76, 0}, {84, 2}, + {73, 0}, {82, 2}, {85, 4}, {93, 6}, {70, 0}, {77, 2}}}, + {3169, {{11, 0}, {14, 2}, {8, 0}, {53, 2}, {3, 0}, {35, 2}, {17, 0}, {36, 2}, {2, 0}, + {6, 2}, {5, 0}, {7, 2}, {15, 4}, {27, 0}, {29, 2}, {12, 0}, {13, 2}, {44, 0}, + {45, 2}, {0, 0}, {33, 2}, {4, 0}, {22, 2}, {1, 0}, {28, 2}, {23, 0}, {31, 2}, + {34, 0}, {46, 2}, {20, 0}, {43, 2}, {51, 0}, {52, 2}}}, + {3170, {{2, 0}, {3, 2}}}, + {3171, {{1, 0}, {34, 2}, {3, 0}, {4, 2}, {6, 4}, {7, 6}, {21, 0}, {22, 2}, {26, 4}, + {24, 0}, {30, 2}, {23, 0}, {25, 2}, {27, 4}, {31, 6}, {13, 0}, {17, 2}, {11, 0}, + {19, 2}, {20, 4}, {10, 0}, {16, 2}, {9, 0}, {12, 2}, {15, 4}, {8, 0}, {18, 2}, + {28, 4}, {29, 6}, {61, 0}, {62, 2}, {63, 4}, {64, 6}}}, + {3172, + {{21, 0}, {37, 2}, {38, 4}, {11, 0}, {32, 2}, {3, 0}, {4, 2}, {42, 4}, {43, 6}, {1, 0}, + {19, 2}, {5, 0}, {24, 2}, {25, 4}, {20, 0}, {40, 2}, {22, 0}, {23, 2}, {10, 0}, {39, 2}}}, + {3182, + {{5, 0}, {6, 2}, {7, 0}, {12, 2}, {4, 0}, {10, 2}, {18, 4}, {17, 0}, {22, 2}, {8, 0}, + {13, 2}, {16, 4}, {24, 6}, {3, 0}, {11, 2}, {20, 4}, {2, 0}, {14, 2}, {15, 4}, {29, 0}, + {30, 2}, {35, 0}, {49, 2}, {28, 0}, {37, 2}, {38, 4}, {42, 6}, {45, 0}, {46, 2}, {47, 4}, + {33, 0}, {36, 2}, {39, 4}, {32, 0}, {40, 2}, {43, 4}, {44, 6}, {53, 0}, {58, 2}, {52, 0}, + {54, 2}, {55, 4}, {51, 0}, {56, 2}, {57, 4}, {50, 0}, {61, 2}, {62, 4}, {63, 6}}}, + {3185, {{48, 0}, {49, 2}, {53, 0}, {60, 2}, {51, 0}, {55, 2}, {47, 0}, {56, 2}}}, + {3186, + {{98, 0}, {102, 2}, {77, 0}, {82, 2}, {96, 4}, {99, 6}, {86, 0}, {87, 2}, {89, 4}, + {109, 0}, {110, 2}, {113, 4}, {6, 0}, {9, 2}, {20, 0}, {26, 2}, {28, 4}, {17, 0}, + {29, 2}, {10, 0}, {27, 2}, {114, 0}, {115, 2}, {106, 0}, {107, 2}, {108, 4}, {111, 6}, + {88, 0}, {90, 2}, {92, 4}, {100, 6}, {84, 0}, {85, 2}, {91, 4}, {97, 6}, {80, 0}, + {101, 2}, {79, 0}, {94, 2}, {95, 4}, {78, 0}, {93, 2}, {125, 0}, {127, 2}, {118, 0}, + {119, 2}, {120, 4}, {117, 0}, {121, 2}, {126, 4}, {122, 0}, {123, 2}, {124, 4}, {130, 6}}}, + {3188, {{21, 0}, {22, 2}, {23, 4}, {24, 6}, {8, 0}, {16, 2}, {19, 4}, {20, 6}, {5, 0}, + {7, 2}, {27, 4}, {28, 6}, {36, 0}, {37, 2}, {38, 4}, {39, 6}, {30, 0}, {40, 2}, + {32, 0}, {33, 2}, {34, 4}, {41, 6}, {35, 0}, {43, 2}, {44, 4}}}, + {3190, {{0, 0}, {4, 2}, {6, 0}, {36, 2}, {23, 0}, {32, 2}, {13, 0}, {22, 2}, + {28, 4}, {7, 0}, {18, 2}, {19, 4}, {20, 0}, {21, 2}, {34, 4}, {29, 0}, + {30, 2}, {31, 4}, {26, 0}, {27, 2}, {1, 0}, {2, 2}}}, + {3192, {{10, 0}, {14, 2}, {9, 0}, {11, 2}, {12, 4}, {15, 6}, {4, 0}, {21, 2}, {2, 0}, + {22, 2}, {23, 4}, {1, 0}, {20, 2}, {0, 0}, {3, 2}, {6, 4}, {8, 0}, {24, 2}, + {25, 4}, {7, 0}, {13, 2}, {19, 4}, {26, 6}, {31, 0}, {32, 2}, {33, 4}, {34, 6}}}, + {3194, {{41, 0}, {54, 2}, {46, 0}, {47, 2}, {51, 4}, {55, 6}, {40, 0}, {44, 2}, + {45, 4}, {52, 6}, {38, 0}, {39, 2}, {36, 0}, {37, 2}, {34, 0}, {42, 2}, + {43, 4}, {48, 6}, {32, 0}, {33, 2}, {49, 4}, {53, 6}, {56, 0}, {58, 2}}}, + {3199, + {{63, 0}, {64, 2}, {67, 4}, {29, 0}, {31, 2}, {32, 4}, {25, 0}, {27, 2}, {68, 0}, {69, 2}, + {60, 0}, {61, 2}, {62, 4}, {65, 6}, {89, 0}, {94, 2}, {87, 0}, {90, 2}, {91, 4}, {93, 6}, + {85, 0}, {86, 2}, {88, 4}, {82, 0}, {83, 2}, {84, 4}, {92, 6}, {95, 0}, {97, 2}, {99, 4}}}, + {3214, {{7, 0}, {8, 2}, {9, 4}, {10, 0}, {13, 2}, {5, 0}, {6, 2}}}, + {3221, + {{20, 0}, {26, 2}, {72, 4}, {79, 6}, {99, 8}, {48, 0}, {49, 2}, {53, 0}, {55, 2}, {59, 0}, + {62, 2}, {63, 4}, {22, 0}, {91, 2}, {14, 0}, {16, 2}, {1, 0}, {15, 2}, {17, 4}, {18, 6}, + {77, 0}, {105, 2}, {54, 0}, {56, 2}, {106, 4}, {13, 0}, {19, 2}, {27, 4}, {92, 6}, {58, 0}, + {64, 2}, {6, 0}, {10, 2}, {25, 4}, {75, 6}, {21, 0}, {23, 2}, {24, 4}, {8, 0}, {9, 2}, + {11, 4}, {80, 6}, {95, 0}, {96, 2}, {97, 4}, {98, 6}, {82, 0}, {83, 2}, {0, 0}, {86, 2}, + {88, 4}, {90, 6}, {89, 0}, {93, 2}, {94, 4}, {39, 0}, {44, 2}, {29, 0}, {31, 2}, {32, 4}, + {73, 6}, {50, 0}, {51, 2}, {28, 0}, {84, 2}, {35, 0}, {74, 2}, {100, 0}, {101, 2}}}, + {3222, {{0, 0}, {2, 2}}}, + {3224, + {{31, 0}, {37, 2}, {46, 4}, {47, 0}, {48, 2}, {49, 4}, {5, 0}, {16, 2}, {26, 0}, {40, 2}, + {43, 4}, {44, 6}, {30, 0}, {45, 2}, {28, 0}, {29, 2}, {27, 0}, {34, 2}, {35, 4}, {25, 0}, + {33, 2}, {39, 4}, {24, 0}, {38, 2}, {41, 4}, {42, 6}, {21, 0}, {22, 2}, {23, 4}, {36, 6}, + {13, 0}, {15, 2}, {17, 4}, {6, 0}, {7, 2}, {12, 4}, {14, 6}, {4, 0}, {10, 2}, {11, 4}}}, + {3237, {{42, 0}, {44, 2}, {52, 0}, {53, 2}, {54, 4}, {47, 0}, {50, 2}, {51, 4}, {55, 6}, + {43, 0}, {45, 2}, {46, 4}, {38, 0}, {56, 2}, {57, 4}, {58, 6}, {36, 0}, {37, 2}, + {59, 4}, {34, 0}, {35, 2}, {48, 4}, {33, 0}, {40, 2}, {41, 4}, {25, 0}, {27, 2}, + {29, 4}, {30, 6}, {24, 0}, {26, 2}, {28, 4}, {14, 0}, {15, 2}, {16, 4}, {19, 6}, + {10, 0}, {17, 2}, {18, 4}, {22, 6}, {9, 0}, {23, 2}, {5, 0}, {8, 2}, {11, 4}, + {12, 6}, {4, 0}, {13, 2}, {20, 4}, {21, 6}, {2, 0}, {3, 2}, {6, 4}, {7, 6}}}, + {3239, + {{32, 0}, {33, 2}, {34, 4}, {14, 0}, {21, 2}, {31, 4}, {8, 0}, {25, 2}, {28, 4}, {29, 6}, + {13, 0}, {30, 2}, {36, 0}, {37, 2}, {39, 0}, {43, 2}, {45, 4}, {38, 0}, {40, 2}, {41, 4}, + {44, 6}, {10, 0}, {12, 2}, {9, 0}, {18, 2}, {19, 4}, {7, 0}, {24, 2}, {47, 4}, {6, 0}, + {23, 2}, {26, 4}, {27, 6}, {3, 0}, {4, 2}, {5, 4}, {20, 6}}}, + {3240, + {{23, 0}, {25, 2}, {27, 4}, {28, 6}, {22, 0}, {24, 2}, {26, 4}, {12, 0}, {13, 2}, {14, 4}, + {17, 6}, {8, 0}, {15, 2}, {16, 4}, {20, 6}, {7, 0}, {21, 2}, {3, 0}, {6, 2}, {9, 4}, + {10, 6}, {2, 0}, {11, 2}, {18, 4}, {19, 6}, {0, 0}, {1, 2}, {4, 4}, {5, 6}}}, + {3241, {{42, 0}, {53, 2}, {56, 0}, {57, 2}, {39, 0}, {43, 2}, {12, 0}, {14, 2}, {49, 0}, + {52, 2}, {35, 0}, {37, 2}, {33, 0}, {34, 2}, {48, 4}, {51, 6}, {32, 0}, {36, 2}, + {41, 4}, {22, 0}, {23, 2}, {24, 4}, {17, 0}, {20, 2}, {21, 4}, {25, 6}, {13, 0}, + {15, 2}, {16, 4}, {8, 0}, {26, 2}, {27, 4}, {28, 6}, {6, 0}, {7, 2}, {29, 4}, + {4, 0}, {5, 2}, {18, 4}, {3, 0}, {10, 2}, {11, 4}}}, + {3242, {{13, 0}, {15, 2}, {23, 0}, {24, 2}, {25, 4}, {18, 0}, {21, 2}, {22, 4}, {26, 6}, + {14, 0}, {16, 2}, {17, 4}, {9, 0}, {27, 2}, {28, 4}, {29, 6}, {7, 0}, {8, 2}, + {30, 4}, {5, 0}, {6, 2}, {19, 4}, {4, 0}, {11, 2}, {12, 4}}}, + {3243, {{2, 0}, {4, 2}, {8, 4}, {5, 0}, {6, 2}, {9, 4}, {12, 6}}}, + {3244, + {{23, 0}, {25, 2}, {27, 4}, {28, 6}, {22, 0}, {24, 2}, {26, 4}, {12, 0}, {13, 2}, {14, 4}, + {17, 6}, {8, 0}, {15, 2}, {16, 4}, {20, 6}, {7, 0}, {21, 2}, {3, 0}, {6, 2}, {9, 4}, + {10, 6}, {2, 0}, {11, 2}, {18, 4}, {19, 6}, {0, 0}, {1, 2}, {4, 4}, {5, 6}}}, + {3245, {{30, 0}, {36, 2}, {37, 4}, {4, 0}, {15, 2}, {18, 0}, {19, 2}, {22, 4}, {32, 0}, + {38, 2}, {39, 4}, {40, 6}, {20, 0}, {21, 2}, {25, 4}, {12, 0}, {14, 2}, {16, 4}, + {5, 0}, {6, 2}, {11, 4}, {13, 6}, {3, 0}, {9, 2}, {10, 4}}}, + {3246, {{35, 0}, {46, 2}, {53, 0}, {59, 2}, {60, 4}, {49, 0}, {50, 2}, {32, 0}, + {36, 2}, {2, 0}, {3, 2}, {6, 4}, {4, 0}, {5, 2}, {9, 4}, {15, 6}, + {42, 0}, {45, 2}, {28, 0}, {30, 2}, {26, 0}, {27, 2}, {41, 4}, {44, 6}, + {25, 0}, {29, 2}, {34, 4}, {55, 0}, {61, 2}, {62, 4}, {63, 6}}}, + {3248, + {{4, 0}, {7, 2}, {33, 4}, {3, 0}, {5, 2}, {12, 4}, {8, 0}, {10, 2}, {42, 4}, {22, 0}, + {23, 2}, {25, 4}, {26, 6}, {6, 0}, {21, 2}, {31, 4}, {37, 6}, {43, 0}, {45, 2}, {49, 4}, + {46, 0}, {47, 2}, {50, 4}, {53, 6}, {32, 0}, {38, 2}, {39, 4}, {40, 6}, {28, 0}, {34, 2}, + {35, 4}, {36, 6}, {27, 0}, {30, 2}, {17, 0}, {18, 2}, {19, 4}, {20, 6}, {15, 0}, {16, 2}, + {24, 4}, {11, 0}, {13, 2}, {29, 4}, {9, 0}, {14, 2}}}, + {3249, + {{27, 0}, + {33, 2}, + {34, 4}, + {3, 0}, + {5, 2}, + {9, 4}, + {6, 0}, + {7, 2}, + {10, 4}, + {13, 6}, + {29, 0}, + {35, 2}, + {36, 4}, + {37, 6}}}, + {3250, + {{13, 0}, {19, 2}, {28, 4}, {29, 0}, {30, 2}, {31, 4}, {8, 0}, {22, 2}, {25, 4}, {26, 6}, + {12, 0}, {27, 2}, {10, 0}, {11, 2}, {9, 0}, {16, 2}, {17, 4}, {7, 0}, {15, 2}, {21, 4}, + {6, 0}, {20, 2}, {23, 4}, {24, 6}, {3, 0}, {4, 2}, {5, 4}, {18, 6}}}, + {3251, + {{15, 0}, + {21, 2}, + {22, 4}, + {3, 0}, + {4, 2}, + {7, 4}, + {17, 0}, + {23, 2}, + {24, 4}, + {25, 6}, + {5, 0}, + {6, 2}, + {10, 4}}}, + {3252, + {{23, 0}, {25, 2}, {27, 4}, {28, 6}, {22, 0}, {24, 2}, {26, 4}, {12, 0}, {13, 2}, {14, 4}, + {17, 6}, {8, 0}, {15, 2}, {16, 4}, {20, 6}, {7, 0}, {21, 2}, {3, 0}, {6, 2}, {9, 4}, + {10, 6}, {2, 0}, {11, 2}, {18, 4}, {19, 6}, {0, 0}, {1, 2}, {4, 4}, {5, 6}}}, + {3253, + {{28, 0}, {34, 2}, {43, 4}, {44, 0}, {45, 2}, {46, 4}, {4, 0}, {15, 2}, {23, 0}, {37, 2}, + {40, 4}, {41, 6}, {27, 0}, {42, 2}, {25, 0}, {26, 2}, {24, 0}, {31, 2}, {32, 4}, {22, 0}, + {30, 2}, {36, 4}, {21, 0}, {35, 2}, {38, 4}, {39, 6}, {18, 0}, {19, 2}, {20, 4}, {33, 6}, + {12, 0}, {14, 2}, {16, 4}, {5, 0}, {6, 2}, {11, 4}, {13, 6}, {3, 0}, {9, 2}, {10, 4}}}, + {3254, + {{12, 0}, + {23, 2}, + {26, 0}, + {27, 2}, + {9, 0}, + {13, 2}, + {19, 0}, + {22, 2}, + {5, 0}, + {7, 2}, + {3, 0}, + {4, 2}, + {18, 4}, + {21, 6}, + {2, 0}, + {6, 2}, + {11, 4}}}, + {3255, + {{15, 0}, + {21, 2}, + {22, 4}, + {3, 0}, + {4, 2}, + {7, 4}, + {17, 0}, + {23, 2}, + {24, 4}, + {25, 6}, + {5, 0}, + {6, 2}, + {10, 4}}}, + {3256, + {{12, 0}, + {23, 2}, + {26, 0}, + {27, 2}, + {9, 0}, + {13, 2}, + {19, 0}, + {22, 2}, + {5, 0}, + {7, 2}, + {3, 0}, + {4, 2}, + {18, 4}, + {21, 6}, + {2, 0}, + {6, 2}, + {11, 4}}}, + {3257, + {{4, 0}, {7, 2}, {33, 4}, {3, 0}, {5, 2}, {12, 4}, {8, 0}, {10, 2}, {42, 4}, {22, 0}, + {23, 2}, {25, 4}, {26, 6}, {6, 0}, {21, 2}, {31, 4}, {37, 6}, {32, 0}, {38, 2}, {39, 4}, + {40, 6}, {28, 0}, {34, 2}, {35, 4}, {36, 6}, {27, 0}, {30, 2}, {17, 0}, {18, 2}, {19, 4}, + {20, 6}, {15, 0}, {16, 2}, {24, 4}, {11, 0}, {13, 2}, {29, 4}, {9, 0}, {14, 2}}}, + {3260, + {{27, 0}, + {33, 2}, + {34, 4}, + {2, 0}, + {3, 2}, + {6, 4}, + {4, 0}, + {5, 2}, + {9, 4}, + {15, 6}, + {29, 0}, + {35, 2}, + {36, 4}, + {37, 6}}}, + {3261, {{30, 0}, {36, 2}, {37, 4}, {4, 0}, {15, 2}, {18, 0}, {19, 2}, {22, 4}, {32, 0}, + {38, 2}, {39, 4}, {40, 6}, {20, 0}, {21, 2}, {25, 4}, {12, 0}, {14, 2}, {16, 4}, + {5, 0}, {6, 2}, {11, 4}, {13, 6}, {3, 0}, {9, 2}, {10, 4}}}, + {3262, + {{15, 0}, + {21, 2}, + {22, 4}, + {3, 0}, + {4, 2}, + {7, 4}, + {17, 0}, + {23, 2}, + {24, 4}, + {25, 6}, + {5, 0}, + {6, 2}, + {10, 4}}}, + {3263, {{35, 0}, {46, 2}, {49, 0}, {50, 2}, {32, 0}, {36, 2}, {2, 0}, {4, 2}, + {8, 4}, {5, 0}, {6, 2}, {9, 4}, {12, 6}, {42, 0}, {45, 2}, {28, 0}, + {30, 2}, {26, 0}, {27, 2}, {41, 4}, {44, 6}, {25, 0}, {29, 2}, {34, 4}}}, + {3264, + {{4, 0}, {7, 2}, {33, 4}, {3, 0}, {5, 2}, {12, 4}, {8, 0}, {10, 2}, {42, 4}, {22, 0}, + {23, 2}, {25, 4}, {26, 6}, {6, 0}, {21, 2}, {31, 4}, {37, 6}, {32, 0}, {38, 2}, {39, 4}, + {40, 6}, {28, 0}, {34, 2}, {35, 4}, {36, 6}, {27, 0}, {30, 2}, {17, 0}, {18, 2}, {19, 4}, + {20, 6}, {15, 0}, {16, 2}, {24, 4}, {11, 0}, {13, 2}, {29, 4}, {9, 0}, {14, 2}}}, + {3265, + {{23, 0}, {25, 2}, {27, 4}, {28, 6}, {22, 0}, {24, 2}, {26, 4}, {12, 0}, {13, 2}, {14, 4}, + {17, 6}, {8, 0}, {15, 2}, {16, 4}, {20, 6}, {7, 0}, {21, 2}, {3, 0}, {6, 2}, {9, 4}, + {10, 6}, {2, 0}, {11, 2}, {18, 4}, {19, 6}, {0, 0}, {1, 2}, {4, 4}, {5, 6}}}, + {3266, + {{23, 0}, {25, 2}, {27, 4}, {28, 6}, {22, 0}, {24, 2}, {26, 4}, {12, 0}, {13, 2}, {14, 4}, + {17, 6}, {8, 0}, {15, 2}, {16, 4}, {20, 6}, {7, 0}, {21, 2}, {3, 0}, {6, 2}, {9, 4}, + {10, 6}, {2, 0}, {11, 2}, {18, 4}, {19, 6}, {0, 0}, {1, 2}, {4, 4}, {5, 6}}}, + {3267, + {{4, 0}, {7, 2}, {33, 4}, {3, 0}, {5, 2}, {12, 4}, {8, 0}, {10, 2}, {42, 4}, {22, 0}, + {23, 2}, {25, 4}, {26, 6}, {6, 0}, {21, 2}, {31, 4}, {37, 6}, {32, 0}, {38, 2}, {39, 4}, + {40, 6}, {28, 0}, {34, 2}, {35, 4}, {36, 6}, {27, 0}, {30, 2}, {17, 0}, {18, 2}, {19, 4}, + {20, 6}, {15, 0}, {16, 2}, {24, 4}, {11, 0}, {13, 2}, {29, 4}, {9, 0}, {14, 2}}}, + {3268, {{2, 0}, {4, 2}, {8, 4}, {5, 0}, {6, 2}, {9, 4}, {12, 6}}}, + {3269, + {{53, 0}, {64, 2}, {4, 0}, {7, 2}, {33, 4}, {3, 0}, {5, 2}, {12, 4}, {8, 0}, {10, 2}, + {42, 4}, {22, 0}, {23, 2}, {25, 4}, {26, 6}, {6, 0}, {21, 2}, {31, 4}, {37, 6}, {67, 0}, + {68, 2}, {50, 0}, {54, 2}, {60, 0}, {63, 2}, {46, 0}, {48, 2}, {44, 0}, {45, 2}, {59, 4}, + {62, 6}, {43, 0}, {47, 2}, {52, 4}, {32, 0}, {38, 2}, {39, 4}, {40, 6}, {28, 0}, {34, 2}, + {35, 4}, {36, 6}, {27, 0}, {30, 2}, {17, 0}, {18, 2}, {19, 4}, {20, 6}, {15, 0}, {16, 2}, + {24, 4}, {11, 0}, {13, 2}, {29, 4}, {9, 0}, {14, 2}}}, + {3270, + {{4, 0}, {7, 2}, {33, 4}, {3, 0}, {5, 2}, {12, 4}, {8, 0}, {10, 2}, {42, 4}, {22, 0}, + {23, 2}, {25, 4}, {26, 6}, {6, 0}, {21, 2}, {31, 4}, {37, 6}, {32, 0}, {38, 2}, {39, 4}, + {40, 6}, {28, 0}, {34, 2}, {35, 4}, {36, 6}, {27, 0}, {30, 2}, {17, 0}, {18, 2}, {19, 4}, + {20, 6}, {15, 0}, {16, 2}, {24, 4}, {11, 0}, {13, 2}, {29, 4}, {9, 0}, {14, 2}}}, + {3271, {{65, 0}, {76, 2}, {79, 0}, {80, 2}, {62, 0}, {66, 2}, {32, 0}, {34, 2}, {38, 4}, + {35, 0}, {36, 2}, {39, 4}, {42, 6}, {72, 0}, {75, 2}, {58, 0}, {60, 2}, {56, 0}, + {57, 2}, {71, 4}, {74, 6}, {55, 0}, {59, 2}, {64, 4}, {23, 0}, {25, 2}, {27, 4}, + {28, 6}, {22, 0}, {24, 2}, {26, 4}, {12, 0}, {13, 2}, {14, 4}, {17, 6}, {8, 0}, + {15, 2}, {16, 4}, {20, 6}, {7, 0}, {21, 2}, {3, 0}, {6, 2}, {9, 4}, {10, 6}, + {2, 0}, {11, 2}, {18, 4}, {19, 6}, {0, 0}, {1, 2}, {4, 4}, {5, 6}}}, + {3272, {{12, 0}, {14, 2}, {22, 0}, {23, 2}, {24, 4}, {17, 0}, {20, 2}, {21, 4}, {25, 6}, + {13, 0}, {15, 2}, {16, 4}, {8, 0}, {26, 2}, {27, 4}, {28, 6}, {6, 0}, {7, 2}, + {29, 4}, {4, 0}, {5, 2}, {18, 4}, {3, 0}, {10, 2}, {11, 4}}}, + {3275, {{44, 0}, {45, 2}, {46, 4}, {59, 0}, {65, 2}, {66, 4}, {28, 0}, {34, 2}, {43, 4}, + {4, 0}, {15, 2}, {23, 0}, {37, 2}, {40, 4}, {41, 6}, {27, 0}, {42, 2}, {47, 0}, + {48, 2}, {51, 4}, {61, 0}, {67, 2}, {68, 4}, {69, 6}, {49, 0}, {50, 2}, {54, 4}, + {25, 0}, {26, 2}, {24, 0}, {31, 2}, {32, 4}, {22, 0}, {30, 2}, {36, 4}, {21, 0}, + {35, 2}, {38, 4}, {39, 6}, {18, 0}, {19, 2}, {20, 4}, {33, 6}, {12, 0}, {14, 2}, + {16, 4}, {5, 0}, {6, 2}, {11, 4}, {13, 6}, {3, 0}, {9, 2}, {10, 4}}}, + {3276, {{12, 0}, {14, 2}, {22, 0}, {23, 2}, {24, 4}, {17, 0}, {20, 2}, {21, 4}, {25, 6}, + {13, 0}, {15, 2}, {16, 4}, {8, 0}, {26, 2}, {27, 4}, {28, 6}, {6, 0}, {7, 2}, + {29, 4}, {4, 0}, {5, 2}, {18, 4}, {3, 0}, {10, 2}, {11, 4}}}, + {3278, + {{28, 0}, {34, 2}, {43, 4}, {44, 0}, {45, 2}, {46, 4}, {4, 0}, {15, 2}, {23, 0}, {37, 2}, + {40, 4}, {41, 6}, {27, 0}, {42, 2}, {25, 0}, {26, 2}, {24, 0}, {31, 2}, {32, 4}, {22, 0}, + {30, 2}, {36, 4}, {21, 0}, {35, 2}, {38, 4}, {39, 6}, {18, 0}, {19, 2}, {20, 4}, {33, 6}, + {12, 0}, {14, 2}, {16, 4}, {5, 0}, {6, 2}, {11, 4}, {13, 6}, {3, 0}, {9, 2}, {10, 4}}}, + {3280, + {{27, 0}, + {33, 2}, + {34, 4}, + {3, 0}, + {5, 2}, + {9, 4}, + {6, 0}, + {7, 2}, + {10, 4}, + {13, 6}, + {29, 0}, + {35, 2}, + {36, 4}, + {37, 6}}}, + {3315, + {{23, 0}, {25, 2}, {27, 4}, {28, 6}, {22, 0}, {24, 2}, {26, 4}, {12, 0}, {13, 2}, {14, 4}, + {17, 6}, {8, 0}, {15, 2}, {16, 4}, {20, 6}, {7, 0}, {21, 2}, {3, 0}, {6, 2}, {9, 4}, + {10, 6}, {2, 0}, {11, 2}, {18, 4}, {19, 6}, {0, 0}, {1, 2}, {4, 4}, {5, 6}}}, + {3323, + {{14, 0}, + {15, 2}, + {17, 4}, + {20, 6}, + {11, 0}, + {12, 2}, + {13, 4}, + {10, 0}, + {16, 2}, + {18, 4}, + {19, 6}}}, + {3336, {{2, 0}, {3, 2}, {4, 4}, {1, 0}, {5, 2}}}, + {3341, + {{2, 0}, + {3, 2}, + {29, 0}, + {34, 2}, + {32, 0}, + {35, 2}, + {18, 0}, + {40, 2}, + {8, 0}, + {12, 2}, + {22, 4}, + {1, 0}, + {20, 2}, + {14, 0}, + {15, 2}, + {4, 0}, + {5, 2}}}, + {3343, + {{65, 0}, {66, 2}, {67, 4}, {12, 0}, {22, 2}, {8, 0}, {9, 2}, {18, 0}, {19, 2}, {20, 4}, + {21, 6}, {14, 0}, {15, 2}, {16, 4}, {23, 6}, {48, 0}, {49, 2}, {50, 4}, {51, 6}, {35, 0}, + {43, 2}, {46, 4}, {47, 6}, {32, 0}, {34, 2}, {54, 4}, {55, 6}, {17, 0}, {25, 2}, {26, 4}, + {5, 0}, {6, 2}, {3, 0}, {4, 2}, {78, 0}, {87, 2}, {89, 4}, {79, 0}, {88, 2}, {92, 4}, + {81, 0}, {82, 2}, {83, 4}, {95, 6}, {80, 0}, {84, 2}, {93, 4}, {94, 6}, {68, 0}, {69, 2}, + {74, 0}, {75, 2}, {76, 4}, {77, 6}, {63, 0}, {64, 2}}}, + {3378, + {{4, 0}, + {15, 2}, + {12, 0}, + {14, 2}, + {16, 4}, + {5, 0}, + {6, 2}, + {11, 4}, + {13, 6}, + {3, 0}, + {9, 2}, + {10, 4}}}, + {3435, {{13, 0}, {25, 2}, {8, 0}, {18, 2}, {19, 4}, {2, 0}, {14, 2}, + {15, 4}, {6, 0}, {7, 2}, {1, 0}, {4, 2}, {12, 4}, {26, 6}, + {3, 0}, {20, 2}, {21, 4}, {5, 0}, {9, 2}, {17, 4}, {27, 6}}}, + {3442, {{6, 0}, {44, 2}, {27, 0}, {37, 2}, {28, 0}, {60, 2}, {18, 0}, {24, 2}, + {19, 0}, {31, 2}, {3, 0}, {39, 2}, {26, 0}, {30, 2}, {11, 0}, {38, 2}, + {48, 0}, {49, 2}, {33, 0}, {55, 2}, {68, 4}, {15, 0}, {56, 2}, {23, 0}, + {36, 2}, {50, 0}, {53, 2}, {67, 4}, {1, 0}, {64, 2}, {0, 0}, {2, 2}}}, + {3445, {{12, 0}, {15, 2}, {8, 0}, {14, 2}}}, + {3447, {{23, 0}, {27, 2}, {15, 0}, {43, 2}, {34, 0}, {78, 2}, {6, 0}, {8, 2}, {39, 0}, + {42, 2}, {47, 0}, {76, 2}, {10, 0}, {41, 2}, {21, 0}, {52, 2}, {5, 0}, {48, 2}, + {38, 0}, {55, 2}, {50, 0}, {71, 2}, {14, 0}, {84, 2}, {61, 0}, {82, 2}, {62, 0}, + {63, 2}, {33, 0}, {65, 2}, {30, 0}, {68, 2}, {74, 4}, {12, 0}, {32, 2}, {9, 0}, + {60, 2}, {77, 4}, {0, 0}, {66, 2}, {1, 0}, {4, 2}}}, + {3450, {{12, 0}, {15, 2}, {8, 0}, {14, 2}}}, + {3451, {{36, 0}, {38, 2}, {0, 0}, {24, 2}, {16, 0}, {18, 2}, {45, 0}, {49, 2}, {26, 0}, + {64, 2}, {32, 0}, {39, 2}, {22, 0}, {29, 2}, {27, 0}, {34, 2}, {15, 0}, {56, 2}, + {11, 0}, {51, 2}, {47, 0}, {48, 2}, {7, 0}, {60, 2}, {20, 0}, {58, 2}, {1, 0}, + {9, 2}, {19, 0}, {46, 2}, {13, 0}, {61, 2}, {12, 0}, {14, 2}}}, + {3454, {{12, 0}, {15, 2}, {8, 0}, {14, 2}}}, +}; + +} + +int lookup_jak2_texture_dest_offset(int tpage, int texture_idx) { + auto it = data.find(tpage); + if (it == data.end()) { + return 0; + } + for (auto& p : it->second) { + if (p.first == texture_idx) { + return p.second; + } + } + return 0; +} \ No newline at end of file diff --git a/game/graphics/jak2_texture_remap.h b/game/graphics/jak2_texture_remap.h new file mode 100644 index 0000000000..fcc629d893 --- /dev/null +++ b/game/graphics/jak2_texture_remap.h @@ -0,0 +1,3 @@ +#pragma once + +int lookup_jak2_texture_dest_offset(int tpage, int texture_idx); \ No newline at end of file diff --git a/game/kernel/jak2/kmachine.cpp b/game/kernel/jak2/kmachine.cpp index 685db072d0..604748071d 100644 --- a/game/kernel/jak2/kmachine.cpp +++ b/game/kernel/jak2/kmachine.cpp @@ -9,6 +9,7 @@ #include "common/util/FileUtil.h" #include "game/discord.h" +#include "game/graphics/jak2_texture_remap.h" #include "game/kernel/common/Symbol4.h" #include "game/kernel/common/fileio.h" #include "game/kernel/common/kboot.h" @@ -625,6 +626,7 @@ void InitMachine_PCPort() { make_function_symbol_from_c("__pc-texture-relocate", (void*)pc_texture_relocate); make_function_symbol_from_c("__pc-get-mips2c", (void*)pc_get_mips2c); make_function_symbol_from_c("__pc-set-levels", (void*)pc_set_levels); + make_function_symbol_from_c("__pc-get-tex-remap", (void*)lookup_jak2_texture_dest_offset); // pad stuff make_function_symbol_from_c("pc-pad-get-mapped-button", (void*)Gfx::get_mapped_button); diff --git a/goal_src/jak2/engine/gfx/texture/texture.gc b/goal_src/jak2/engine/gfx/texture/texture.gc index deb0e583a7..808a777703 100644 --- a/goal_src/jak2/engine/gfx/texture/texture.gc +++ b/goal_src/jak2/engine/gfx/texture/texture.gc @@ -2346,6 +2346,20 @@ additionally, some texture pages have a chunk system that allows more specific c ;; set up dests (no idea why the tpage doesn't come with this set properly) (set! (-> obj segment 1 dest) (-> obj segment 0 size)) (set! (-> obj segment 2 dest) (+ (-> obj segment 0 size) (-> obj segment 1 size))) + + ;; PC port: added texture remap + (dotimes (texture-idx (-> obj length)) + (let ((tex (-> obj data texture-idx))) + (when (and tex (nonzero? tex)) + (let ((offset (__pc-get-tex-remap (the int (-> obj id)) texture-idx))) + (when (nonzero? offset) + ) + (+! (-> tex dest 0) offset) + ) + ) + ) + ) + (let* ((tpage-id (-> obj id)) (dir-entry (-> *texture-page-dir* entries tpage-id)) ) diff --git a/goal_src/jak2/kernel-defs.gc b/goal_src/jak2/kernel-defs.gc index 5d209fabe8..4dd2cef03d 100644 --- a/goal_src/jak2/kernel-defs.gc +++ b/goal_src/jak2/kernel-defs.gc @@ -150,6 +150,7 @@ (define-extern __pc-texture-relocate (function object object object none)) (define-extern __pc-get-mips2c (function string function)) (define-extern __pc-set-levels (function (pointer string) none)) +(define-extern __pc-get-tex-remap (function int int int)) (define-extern pc-pad-input-mode-set (function symbol none)) (define-extern pc-pad-input-pad-set (function int none)) (define-extern pc-pad-input-mode-get (function int))