michael@0: /* Generated by make_unicode.py DO NOT MODIFY */ michael@0: michael@0: /* michael@0: * Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/licenses/publicdomain/ michael@0: */ michael@0: #include "vm/Unicode.h" michael@0: michael@0: using namespace js; michael@0: using namespace js::unicode; michael@0: michael@0: /* michael@0: * So how does indexing work? michael@0: * First let's have a look at a jschar, 16-bits: michael@0: * [................] michael@0: * Step 1: michael@0: * Extracting the upper 11 bits from the jschar. michael@0: * upper = char >> 5 ([***********.....]) michael@0: * Step 2: michael@0: * Using these bits to get an reduced index from index1. michael@0: * index = index1[upper] michael@0: * Step 3: michael@0: * Combining the index and the bottom 5 bits of the original jschar. michael@0: * real_index = index2[(index << 5) + (char & ((1 << 5) - 1))] ([...********+++++]) michael@0: * michael@0: * The advantage here is that the biggest number in index1 doesn't need 10 bits, michael@0: * but 7 and we save some memory. michael@0: * michael@0: * Step 4: michael@0: * Get the character informations by looking up real_index in js_charinfo. michael@0: * michael@0: * Pseudocode of generation: michael@0: * michael@0: * let table be the mapping of jschar => js_charinfo_index michael@0: * let index1 be an empty array michael@0: * let index2 be an empty array michael@0: * let cache be a hash map michael@0: * michael@0: * while shift is less then maximal amount you can shift 0xffff before it's 0 michael@0: * let chunks be table split in chunks of size 2**shift michael@0: * michael@0: * for every chunk in chunks michael@0: * if chunk is in cache michael@0: * let index be cache[chunk] michael@0: * else michael@0: * let index be the max key of index2 + 1 michael@0: * for element in chunk michael@0: * push element to index2 michael@0: * put index as chunk in cache michael@0: * michael@0: * push index >> shift to index1 michael@0: * michael@0: * increase shift michael@0: * stop if you found the best shift michael@0: */ michael@0: const CharacterInfo unicode::js_charinfo[] = { michael@0: {0, 0, 0}, michael@0: {0, 0, 1}, michael@0: {0, 0, 4}, michael@0: {0, 32, 2}, michael@0: {65504, 0, 2}, michael@0: {0, 0, 2}, michael@0: {743, 0, 2}, michael@0: {121, 0, 2}, michael@0: {0, 1, 2}, michael@0: {65535, 0, 2}, michael@0: {0, 65337, 2}, michael@0: {65304, 0, 2}, michael@0: {0, 65415, 2}, michael@0: {65236, 0, 2}, michael@0: {195, 0, 2}, michael@0: {0, 210, 2}, michael@0: {0, 206, 2}, michael@0: {0, 205, 2}, michael@0: {0, 79, 2}, michael@0: {0, 202, 2}, michael@0: {0, 203, 2}, michael@0: {0, 207, 2}, michael@0: {97, 0, 2}, michael@0: {0, 211, 2}, michael@0: {0, 209, 2}, michael@0: {163, 0, 2}, michael@0: {0, 213, 2}, michael@0: {130, 0, 2}, michael@0: {0, 214, 2}, michael@0: {0, 218, 2}, michael@0: {0, 217, 2}, michael@0: {0, 219, 2}, michael@0: {56, 0, 2}, michael@0: {0, 2, 2}, michael@0: {65535, 1, 2}, michael@0: {65534, 0, 2}, michael@0: {65457, 0, 2}, michael@0: {0, 65439, 2}, michael@0: {0, 65480, 2}, michael@0: {0, 65406, 2}, michael@0: {0, 10795, 2}, michael@0: {0, 65373, 2}, michael@0: {0, 10792, 2}, michael@0: {10815, 0, 2}, michael@0: {0, 65341, 2}, michael@0: {0, 69, 2}, michael@0: {0, 71, 2}, michael@0: {10783, 0, 2}, michael@0: {10780, 0, 2}, michael@0: {10782, 0, 2}, michael@0: {65326, 0, 2}, michael@0: {65330, 0, 2}, michael@0: {65331, 0, 2}, michael@0: {65334, 0, 2}, michael@0: {65333, 0, 2}, michael@0: {65329, 0, 2}, michael@0: {42280, 0, 2}, michael@0: {42308, 0, 2}, michael@0: {65327, 0, 2}, michael@0: {65325, 0, 2}, michael@0: {10743, 0, 2}, michael@0: {10749, 0, 2}, michael@0: {65323, 0, 2}, michael@0: {65322, 0, 2}, michael@0: {10727, 0, 2}, michael@0: {65318, 0, 2}, michael@0: {65467, 0, 2}, michael@0: {65319, 0, 2}, michael@0: {65465, 0, 2}, michael@0: {65317, 0, 2}, michael@0: {84, 0, 4}, michael@0: {0, 38, 2}, michael@0: {0, 37, 2}, michael@0: {0, 64, 2}, michael@0: {0, 63, 2}, michael@0: {65498, 0, 2}, michael@0: {65499, 0, 2}, michael@0: {65505, 0, 2}, michael@0: {65472, 0, 2}, michael@0: {65473, 0, 2}, michael@0: {0, 8, 2}, michael@0: {65474, 0, 2}, michael@0: {65479, 0, 2}, michael@0: {65489, 0, 2}, michael@0: {65482, 0, 2}, michael@0: {65528, 0, 2}, michael@0: {65450, 0, 2}, michael@0: {65456, 0, 2}, michael@0: {7, 0, 2}, michael@0: {0, 65476, 2}, michael@0: {65440, 0, 2}, michael@0: {0, 65529, 2}, michael@0: {0, 80, 2}, michael@0: {0, 15, 2}, michael@0: {65521, 0, 2}, michael@0: {0, 48, 2}, michael@0: {65488, 0, 2}, michael@0: {0, 7264, 2}, michael@0: {35332, 0, 2}, michael@0: {3814, 0, 2}, michael@0: {65477, 0, 2}, michael@0: {0, 57921, 2}, michael@0: {8, 0, 2}, michael@0: {0, 65528, 2}, michael@0: {74, 0, 2}, michael@0: {86, 0, 2}, michael@0: {100, 0, 2}, michael@0: {128, 0, 2}, michael@0: {112, 0, 2}, michael@0: {126, 0, 2}, michael@0: {9, 0, 2}, michael@0: {0, 65462, 2}, michael@0: {0, 65527, 2}, michael@0: {58331, 0, 2}, michael@0: {0, 65450, 2}, michael@0: {0, 65436, 2}, michael@0: {0, 65424, 2}, michael@0: {0, 65408, 2}, michael@0: {0, 65410, 2}, michael@0: {0, 58019, 2}, michael@0: {0, 57153, 2}, michael@0: {0, 57274, 2}, michael@0: {0, 28, 2}, michael@0: {65508, 0, 2}, michael@0: {0, 16, 2}, michael@0: {65520, 0, 2}, michael@0: {0, 26, 0}, michael@0: {65510, 0, 0}, michael@0: {0, 54793, 2}, michael@0: {0, 61722, 2}, michael@0: {0, 54809, 2}, michael@0: {54741, 0, 2}, michael@0: {54744, 0, 2}, michael@0: {0, 54756, 2}, michael@0: {0, 54787, 2}, michael@0: {0, 54753, 2}, michael@0: {0, 54754, 2}, michael@0: {0, 54721, 2}, michael@0: {58272, 0, 2}, michael@0: {0, 30204, 2}, michael@0: {0, 23256, 2}, michael@0: {0, 23228, 2}, michael@0: }; michael@0: michael@0: const uint8_t unicode::index1[] = { michael@0: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 8, 16, michael@0: 17, 18, 19, 20, 21, 22, 23, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 8, michael@0: 33, 8, 34, 8, 8, 35, 36, 37, 38, 39, 40, 41, 42, 20, 43, 44, 20, 20, michael@0: 45, 46, 47, 48, 49, 20, 20, 50, 51, 52, 53, 54, 55, 4, 4, 56, 4, 57, michael@0: 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 62, 71, michael@0: 74, 75, 76, 77, 78, 79, 80, 81, 82, 73, 83, 84, 85, 86, 83, 87, 88, 89, michael@0: 90, 91, 92, 93, 94, 95, 96, 4, 97, 98, 99, 4, 100, 101, 102, 103, 104, 105, michael@0: 106, 4, 20, 107, 108, 109, 110, 111, 112, 113, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 114, 20, 115, 116, 117, 20, 118, 20, 119, 4, 120, 20, 20, 121, 94, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 122, michael@0: 123, 20, 20, 124, 125, 126, 127, 128, 20, 129, 130, 131, 132, 20, 20, 133, 20, 134, michael@0: 20, 135, 136, 137, 138, 139, 20, 140, 141, 4, 142, 20, 143, 144, 145, 146, 4, 4, michael@0: 147, 129, 148, 149, 150, 151, 20, 152, 20, 153, 154, 155, 4, 4, 156, 157, 20, 20, michael@0: 20, 158, 20, 20, 23, 159, 8, 8, 8, 8, 160, 8, 8, 8, 161, 162, 163, 164, michael@0: 162, 165, 166, 167, 168, 169, 170, 171, 172, 4, 173, 174, 175, 176, 177, 178, 179, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 180, 181, 182, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 183, 184, 185, 186, 8, 8, 8, 187, michael@0: 188, 189, 20, 190, 191, 192, 192, 23, 4, 193, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 194, 195, 94, 20, 196, 94, 20, 113, 197, 198, 20, 20, michael@0: 199, 200, 4, 201, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 135, 4, 4, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 202, 4, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 202, 4, 201, 155, 20, 20, 20, 20, 20, 20, 20, 20, 203, 204, 8, 205, michael@0: 206, 20, 20, 207, 208, 209, 8, 210, 211, 212, 4, 213, 214, 215, 20, 216, 217, 129, michael@0: 218, 219, 51, 220, 221, 136, 58, 222, 223, 4, 20, 224, 225, 226, 20, 227, 228, 229, michael@0: 230, 231, 4, 4, 4, 4, 20, 232, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 233, 234, 235, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 20, 20, 20, 20, 20, 20, michael@0: 20, 20, 20, 20, 20, 236, 20, 20, 237, 4, 238, 239, 240, 20, 20, 241, 242, 20, michael@0: 20, 20, 20, 20, 20, 20, 20, 20, 20, 155, 201, 20, 243, 20, 244, 245, 246, 247, michael@0: 248, 249, 20, 20, 20, 250, 251, 2, 3, 252, 20, 253, 254, 4, michael@0: }; michael@0: michael@0: const uint8_t unicode::index2[] = { michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, michael@0: 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, michael@0: 3, 0, 0, 0, 0, 2, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 6, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, michael@0: 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, michael@0: 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, michael@0: 4, 4, 4, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, michael@0: 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, michael@0: 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 10, 11, michael@0: 8, 9, 8, 9, 8, 9, 5, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, michael@0: 9, 8, 9, 8, 9, 5, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, michael@0: 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, michael@0: 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 12, 8, michael@0: 9, 8, 9, 8, 9, 13, 14, 15, 8, 9, 8, 9, 16, 8, 9, 17, 17, 8, michael@0: 9, 5, 18, 19, 20, 8, 9, 17, 21, 22, 23, 24, 8, 9, 25, 5, 23, 26, michael@0: 27, 28, 8, 9, 8, 9, 8, 9, 29, 8, 9, 29, 5, 5, 8, 9, 29, 8, michael@0: 9, 30, 30, 8, 9, 8, 9, 31, 8, 9, 5, 5, 8, 9, 5, 32, 5, 5, michael@0: 5, 5, 33, 34, 35, 33, 34, 35, 33, 34, 35, 8, 9, 8, 9, 8, 9, 8, michael@0: 9, 8, 9, 8, 9, 8, 9, 8, 9, 36, 8, 9, 8, 9, 8, 9, 8, 9, michael@0: 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 5, 33, 34, 35, 8, 9, 37, 38, michael@0: 8, 9, 8, 9, 8, 9, 8, 9, 39, 5, 8, 9, 8, 9, 8, 9, 8, 9, michael@0: 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 5, 5, 5, 5, 5, 5, 40, 8, michael@0: 9, 41, 42, 43, 43, 8, 9, 44, 45, 46, 8, 9, 8, 9, 8, 9, 8, 9, michael@0: 8, 9, 47, 48, 49, 50, 51, 5, 52, 52, 5, 53, 5, 54, 5, 5, 5, 5, michael@0: 52, 5, 5, 55, 5, 56, 57, 5, 58, 59, 5, 60, 5, 5, 5, 59, 5, 61, michael@0: 62, 5, 5, 63, 5, 5, 5, 5, 5, 5, 5, 64, 5, 5, 65, 5, 5, 65, michael@0: 5, 5, 5, 5, 65, 66, 67, 67, 68, 5, 5, 5, 5, 5, 69, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 5, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 70, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 8, 9, 8, 9, 5, 0, 8, 9, 0, 0, 5, 27, michael@0: 27, 27, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 72, 72, 72, 0, 73, 0, michael@0: 74, 74, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, michael@0: 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 75, 76, 76, 76, 5, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 77, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 78, 79, 79, 80, 81, 82, 5, 5, 5, 83, michael@0: 84, 85, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, michael@0: 8, 9, 8, 9, 8, 9, 8, 9, 86, 87, 88, 5, 89, 90, 0, 8, 9, 91, michael@0: 8, 9, 5, 39, 39, 39, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, michael@0: 92, 92, 92, 92, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, michael@0: 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, michael@0: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 87, 87, 87, 87, michael@0: 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 8, 9, 0, 2, 2, 2, michael@0: 2, 2, 0, 0, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, michael@0: 8, 9, 8, 9, 8, 9, 8, 9, 93, 8, 9, 8, 9, 8, 9, 8, 9, 8, michael@0: 9, 8, 9, 8, 9, 94, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, michael@0: 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, michael@0: 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, michael@0: 95, 95, 95, 95, 95, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 96, 96, 96, michael@0: 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, michael@0: 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 5, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 0, 2, 0, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 5, 5, 5, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, michael@0: 5, 5, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 0, 5, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, michael@0: 2, 5, 5, 2, 2, 0, 2, 2, 2, 2, 5, 5, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 5, 5, 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 5, 0, 0, 0, 0, 5, 0, michael@0: 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 2, 2, 5, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 5, 2, 2, 2, 5, 2, 2, 2, 2, 2, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 2, 2, 2, 0, 0, 0, 0, 5, 0, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 0, 2, 2, 2, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 2, 2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 2, 2, 2, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 0, 0, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 0, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, michael@0: 5, 5, 5, 5, 0, 2, 2, 2, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, michael@0: 0, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 0, michael@0: 5, 0, 0, 0, 5, 5, 5, 5, 0, 0, 2, 5, 2, 2, 2, 2, 2, 2, michael@0: 2, 0, 0, 2, 2, 0, 0, 2, 2, 2, 5, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 2, 0, 0, 0, 0, 5, 5, 0, 5, 5, 5, 2, 2, 0, 0, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 5, 5, 5, 5, 5, 5, 0, michael@0: 0, 0, 0, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, michael@0: 5, 0, 5, 5, 0, 5, 5, 0, 5, 5, 0, 0, 2, 0, 2, 2, 2, 2, michael@0: 2, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0, 2, 0, 0, michael@0: 0, 0, 0, 0, 0, 5, 5, 5, 5, 0, 5, 0, 0, 0, 0, 0, 0, 0, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 5, 5, 2, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 0, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, michael@0: 5, 5, 5, 0, 5, 5, 0, 5, 5, 5, 5, 5, 0, 0, 2, 5, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 0, 0, 5, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 2, 2, michael@0: 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 2, michael@0: 2, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, michael@0: 0, 0, 5, 5, 0, 5, 5, 5, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 2, 5, 0, 5, 5, 5, 5, 5, 5, 0, 0, 0, 5, 5, michael@0: 5, 0, 5, 5, 5, 5, 0, 0, 0, 5, 5, 0, 5, 0, 5, 5, 0, 0, michael@0: 0, 5, 5, 0, 0, 0, 5, 5, 5, 0, 0, 0, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, michael@0: 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 2, 2, 2, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, michael@0: 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 0, 5, 5, 5, 5, 5, 0, 0, 0, 5, 2, 2, 2, 2, 2, 2, michael@0: 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, michael@0: 2, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 0, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 0, 0, 2, 5, michael@0: 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, michael@0: 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 5, 5, michael@0: 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 5, 5, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 0, 0, 5, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, michael@0: 2, 2, 2, 2, 5, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 5, 5, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, michael@0: 0, 0, 2, 2, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 0, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 0, michael@0: 0, 0, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 5, 5, michael@0: 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, michael@0: 5, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 0, 0, 0, 0, 0, 0, 0, 5, 5, 0, 5, 0, 0, 5, 5, 0, michael@0: 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 0, 5, 5, 5, michael@0: 5, 5, 5, 5, 0, 5, 5, 5, 0, 5, 0, 5, 0, 0, 5, 5, 0, 5, michael@0: 5, 5, 5, 2, 5, 5, 2, 2, 2, 2, 2, 2, 0, 2, 2, 5, 0, 0, michael@0: 5, 5, 5, 5, 5, 0, 5, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 5, 5, 5, 5, 5, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, michael@0: 0, 0, 0, 0, 2, 2, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, michael@0: 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 0, 2, 2, 5, 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 5, 5, michael@0: 5, 5, 5, 5, 2, 2, 2, 2, 5, 5, 5, 5, 2, 2, 2, 5, 2, 2, michael@0: 2, 5, 5, 2, 2, 2, 2, 2, 2, 2, 5, 5, 5, 2, 2, 2, 2, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, michael@0: 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, michael@0: 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 0, 0, 0, 0, 0, 97, 0, 0, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 0, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 0, michael@0: 5, 0, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, michael@0: 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 0, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 0, michael@0: 5, 0, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, michael@0: 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 0, 0, 2, 2, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 0, 0, 0, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, michael@0: 5, 5, 5, 5, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 0, 5, 5, 5, 0, 2, 2, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 0, 0, 0, 5, 0, 0, 0, 0, 5, 2, 0, 0, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 2, 2, 2, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 5, 0, 0, 0, michael@0: 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, michael@0: 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 5, 5, 5, 5, michael@0: 5, 5, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 2, 2, 2, michael@0: 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 2, 2, 2, 2, 2, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 0, 0, 0, 5, 5, 5, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 5, 5, 5, 2, 5, 5, michael@0: 5, 5, 2, 2, 2, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 98, 5, 5, 5, 99, 5, 5, 2, 2, 2, 2, 2, 2, michael@0: 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 2, 2, 2, 2, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, michael@0: 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 5, 5, 5, 5, 5, 100, michael@0: 5, 5, 101, 5, 102, 102, 102, 102, 102, 102, 102, 102, 103, 103, 103, 103, 103, 103, michael@0: 103, 103, 102, 102, 102, 102, 102, 102, 0, 0, 103, 103, 103, 103, 103, 103, 0, 0, michael@0: 102, 102, 102, 102, 102, 102, 102, 102, 103, 103, 103, 103, 103, 103, 103, 103, 102, 102, michael@0: 102, 102, 102, 102, 102, 102, 103, 103, 103, 103, 103, 103, 103, 103, 102, 102, 102, 102, michael@0: 102, 102, 0, 0, 103, 103, 103, 103, 103, 103, 0, 0, 5, 102, 5, 102, 5, 102, michael@0: 5, 102, 0, 103, 0, 103, 0, 103, 0, 103, 102, 102, 102, 102, 102, 102, 102, 102, michael@0: 103, 103, 103, 103, 103, 103, 103, 103, 104, 104, 105, 105, 105, 105, 106, 106, 107, 107, michael@0: 108, 108, 109, 109, 0, 0, 102, 102, 102, 102, 102, 102, 102, 102, 103, 103, 103, 103, michael@0: 103, 103, 103, 103, 102, 102, 5, 110, 5, 0, 5, 5, 103, 103, 111, 111, 112, 0, michael@0: 113, 0, 0, 0, 5, 110, 5, 0, 5, 5, 114, 114, 114, 114, 112, 0, 0, 0, michael@0: 102, 102, 5, 5, 0, 0, 5, 5, 103, 103, 115, 115, 0, 0, 0, 0, 102, 102, michael@0: 5, 5, 5, 88, 5, 5, 103, 103, 116, 116, 91, 0, 0, 0, 0, 0, 5, 110, michael@0: 5, 0, 5, 5, 117, 117, 118, 118, 112, 0, 0, 0, 1, 1, 1, 1, 1, 1, michael@0: 1, 1, 1, 1, 1, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, michael@0: 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 5, 0, 0, 0, 0, 5, 0, 0, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 0, 5, 0, 0, 0, 5, 5, 5, 5, 5, 0, 0, 0, 0, michael@0: 0, 0, 5, 0, 119, 0, 5, 0, 120, 121, 5, 5, 0, 5, 5, 5, 122, 5, michael@0: 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 0, 5, michael@0: 5, 5, 5, 5, 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, michael@0: 124, 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, michael@0: 125, 125, 125, 125, 5, 5, 5, 8, 9, 5, 5, 5, 5, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, michael@0: 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 127, 127, 127, 127, 127, 127, michael@0: 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, michael@0: 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, michael@0: 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, michael@0: 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 0, michael@0: 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, michael@0: 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, michael@0: 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 0, 8, 9, 128, 129, 130, 131, michael@0: 132, 8, 9, 8, 9, 8, 9, 133, 134, 135, 136, 5, 8, 9, 5, 8, 9, 5, michael@0: 5, 5, 5, 5, 5, 5, 137, 137, 8, 9, 8, 9, 5, 0, 0, 0, 0, 0, michael@0: 0, 8, 9, 8, 9, 2, 2, 2, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, michael@0: 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, michael@0: 138, 138, 138, 138, 138, 138, 0, 138, 0, 0, 0, 0, 0, 138, 0, 0, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, michael@0: 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, michael@0: 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, michael@0: 0, 0, 0, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, 0, 5, 5, 5, 5, 5, 0, 0, michael@0: 5, 5, 5, 5, 5, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 2, 2, 0, michael@0: 0, 5, 5, 5, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, michael@0: 8, 9, 8, 9, 5, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 0, 5, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, michael@0: 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 0, 0, 0, 0, 0, 0, 0, 2, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 8, 9, 8, 9, 8, 9, michael@0: 8, 9, 8, 9, 8, 9, 8, 9, 5, 5, 8, 9, 8, 9, 8, 9, 8, 9, michael@0: 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, michael@0: 8, 9, 8, 9, 5, 5, 5, 5, 5, 5, 5, 5, 5, 8, 9, 8, 9, 139, michael@0: 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 5, 0, 0, 8, 9, 140, 5, 0, michael@0: 8, 9, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, michael@0: 8, 9, 8, 9, 8, 9, 8, 9, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 5, 5, 5, 2, 5, 5, 5, michael@0: 5, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 2, 2, 2, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 5, 5, 5, 5, 5, 5, 0, 0, 0, 5, 0, 0, michael@0: 0, 0, 5, 5, 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, michael@0: 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 5, 5, 5, 2, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 0, 0, 2, 2, michael@0: 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 0, 0, 0, 5, 2, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 2, 5, 2, 2, 2, 5, 5, 2, 2, 5, michael@0: 5, 5, 5, 5, 2, 2, 5, 2, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, michael@0: 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 2, 2, 2, michael@0: 0, 0, 5, 5, 5, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, michael@0: 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, michael@0: 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, michael@0: 5, 0, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, michael@0: 0, 0, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, michael@0: 0, 0, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 5, 2, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 0, 5, 5, 5, 5, 5, 0, 5, 0, 5, 5, 0, 5, 5, 0, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, michael@0: 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 0, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, michael@0: 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, michael@0: 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 5, 5, 5, 5, 5, 5, michael@0: 0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 0, 0, michael@0: 5, 5, 5, 0, 0, 0, michael@0: }; michael@0: michael@0: