diff options
-rwxr-xr-x | gen/string/gbrk | 243 | ||||
l--------- | gen/string/lib.py | 1 | ||||
-rw-r--r-- | include/unicode/_gbrk.h | 4568 | ||||
-rw-r--r-- | lib/unicode/string/u8gnext.c | 52 |
4 files changed, 3205 insertions, 1659 deletions
diff --git a/gen/string/gbrk b/gen/string/gbrk index e0acca7..8397e90 100755 --- a/gen/string/gbrk +++ b/gen/string/gbrk @@ -1,97 +1,174 @@ -#!/bin/sh +#!/usr/bin/python3 + +import math + +from lib import * + + +MAP = { + 'Control': 1, + 'Extended_Pictographic': 2, + 'Extend': 3, + 'L': 4, + 'LV': 5, + 'LVT': 6, + 'Prepend': 7, + 'Regional_Indicator': 8, + 'SpacingMark': 9, + 'T': 10, + 'V': 11, + 'ZWJ': 12, + + 'InCB; Consonant': 0b0100_0000, + 'InCB; Extend': 0b1000_0000, + 'InCB; Linker': 0b1100_0000, +} + +longest = 3 + +def parse(*files: str) -> list[bool]: + global longest + + xs = [0] * 0x110000 + + lines = [] + for file in files: + with open(file, 'r') as f: + lines.extend(f.readlines()) + + for line in lines: + if len(line.strip()) == 0 or line[0] == '#': + continue + + parts = line.split(';') + ranges = [int(x, 16) for x in parts[0].strip().split('..')] + + if parts[1].strip() == 'InCB': + p = 'InCB; ' + parts[2].split('#')[0].strip() + else: + p = parts[1].split('#')[0].strip() + if p not in MAP: + continue + + for i in range(ranges[0], ranges[len(ranges) - 1] + 1): + xs[i] |= MAP[p] + return list(map(str, xs)) -set -e -cd "${0%/*}/../.." -exec >include/unicode/_gbrk.h +def genfile(cs: list[tuple[bool, ...]], blksize: int) -> None: + Cs = cs + cs = list(dict.fromkeys(Cs)) -cat <<C + print('''\ /* This file is autogenerated by gen/string/gbrk; DO NOT EDIT. */ #ifndef MLIB_UNICODE__GBRK_H #define MLIB_UNICODE__GBRK_H -/* clang-format off */ +#include <stdint.h> +#include "_attrs.h" #include "_rune.h" -typedef enum { - GBP_OTHER = 0, - - GBP_CTRL = 1 << 0, /* Control */ - GBP_EXT = 1 << 1, /* Extend */ - GBP_PIC = 1 << 2, /* Extended_Pictographic */ - GBP_PREP = 1 << 3, /* Prepend */ - GBP_RI = 1 << 4, /* Regional_Indicator */ - GBP_SM = 1 << 5, /* SpacingMark */ - GBP_ZWJ = 1 << 6, /* ZWJ */ - - GBP_HNGL_L = 1 << 7, /* Hangul L */ - GBP_HNGL_LV = 1 << 8, /* Hangul LV */ - GBP_HNGL_LVT = 1 << 9, /* Hangul LVT */ - GBP_HNGL_T = 1 << 10, /* Hangul T */ - GBP_HNGL_V = 1 << 11, /* Hangul V */ - - GBP_INDC_CNSNT = 1 << 12, /* Indic Consonant */ - GBP_INDC_EXT = 1 << 13, /* Indic Extend */ - GBP_INDC_LNK = 1 << 14, /* Indic Linker */ -} gbrk_prop; - -static const struct { - rune lo, hi; - gbrk_prop val; -} gbrk_prop_tbl[] = { -C - -gawk ' -BEGIN { - FS = "( *#.*| +; +)" - map["Control"] = "CTRL" - map["Extend"] = "EXT" - map["Extended_Pictographic"] = "PIC" - map["Prepend"] = "PREP" - map["Regional_Indicator"] = "RI" - map["SpacingMark"] = "SM" - map["ZWJ"] = "ZWJ" - - map["L"] = "HNGL_L" - map["LV"] = "HNGL_LV" - map["LVT"] = "HNGL_LVT" - map["T"] = "HNGL_T" - map["V"] = "HNGL_V" - - map["InCB; Consonant"] = "INDC_CNSNT" - map["InCB; Extend"] = "INDC_EXT" - map["InCB; Linker"] = "INDC_LNK" -} +#define GBRK_PROP_HI(x) ((x) >> 6) +#define GBRK_PROP_LO(x) ((x) & 63) -map[$2] { - n = split($1, a, /\.\./) - lo = strtonum("0X" a[1]) - hi = strtonum("0X" a[n]) - - for (i = lo; i <= hi; i++) { - s = "GBP_" map[$2] - props[i] = props[i] ? props[i] " | " s : s - } -} - -END { - for (i = 0; i <= 0x10FFFF; i++) { - if (!props[i]) - continue - lo = i - while (props[lo] == props[i + 1]) - i++ - printf "\t{0x%06X, 0x%06X, %s},\n", lo, i, props[lo] - } -} -' data/GraphemeBreakProperty \ - data/DerivedCoreProperties \ - data/emoji-data \ -| sort +enum uprop_gbrk_indc { + GBRK_INDC_CNSNT = 1, /* Consonant */ + GBRK_INDC_EXT, /* Extend */ + GBRK_INDC_LNK, /* Linker */ +}; -cat <<C +enum uprop_gbrk { + GBRK_XX = 0, /* Other */ + GBRK_CN, /* Control */ + GBRK_EXT_PICT, /* Extended Pictographic */ + GBRK_EX, /* Extend */ + GBRK_HST_L, /* L */ + GBRK_HST_LV, /* LV */ + GBRK_HST_LVT, /* LVT */ + GBRK_PP, /* Prepend */ + GBRK_RI, /* Regional Indicator */ + GBRK_SM, /* SpacingMark */ + GBRK_HST_T, /* T */ + GBRK_HST_V, /* V */ + GBRK_ZWJ, /* ZWJ */ + _GBRK_LO_CNT, }; -#endif /* !MLIB_UNICODE__GBRK_H */ -C +static_assert(_GBRK_LO_CNT - 1 <= 0b0011'1111, + "2 bits are required to pack Indic syllables"); +''') + + print(f'static constexpr {typename(len(cs) - 1)} stage1[] = {{') + for i, c in enumerate(Cs): + print(f'%c%{len(str(len(cs) - 1))}d,' % ('\t' if i % 16 == 0 else ' ', cs.index(c)), end='') + if i % 16 == 15: + print() + print('};') + + print() + + ppc = columns(blksize, longest + 1) + print(f'static constexpr uint8_t stage2[][{blksize}] = {{') + for c in cs: + for i in range(blksize // ppc): + print('\t{' if i == 0 else '\t ', end='') + for j in range(ppc): + print(c[i*ppc + j], end='') + if i < blksize // ppc - 1 or j < ppc - 1: + print(',', end='') + if j < ppc - 1: + print(' ' * (longest + 1 - len(c[i*ppc + j])), end='') + if i < blksize // ppc - 1: + print() + print('},') + print('};') + + print() + + print(f'''\ +[[_mlib_pure, _mlib_inline]] +static void +uprop_get_gbrk(enum uprop_gbrk *x, enum uprop_gbrk_indc *y, rune ch) +{{ + uint8_t z = stage2[stage1[ch / {blksize}]][ch % {blksize}]; + *x = GBRK_PROP_LO(z); + *y = GBRK_PROP_HI(z); +}} + +#endif /* !MLIB_UNICODE__GBRK_H */''') + +def main() -> None: + cwd_init() + xs = parse( + 'data/GraphemeBreakProperty', + 'data/DerivedCoreProperties', + 'data/emoji-data', + ) + + blksize = -1 + smallest = math.inf + + for bs in powers_of_2(): + if bs > len(xs): + break + Cs = [tuple(x) for x in chunks(xs, bs)] + cs = set(Cs) + + sz_s1 = len(Cs) * isize(len(cs) - 1) + sz_s2 = len(cs) * bs + sz = sz_s1 + sz_s2 + + if sz < smallest: + smallest = sz + blksize = bs + + Cs = [tuple(x) for x in chunks(xs, blksize)] + with open('include/unicode/_gbrk.h', 'w') as f: + sys.stdout = f + genfile(Cs, blksize) + + report_size(len(xs), smallest) + +if __name__ == '__main__': + main() diff --git a/gen/string/lib.py b/gen/string/lib.py new file mode 120000 index 0000000..33218f3 --- /dev/null +++ b/gen/string/lib.py @@ -0,0 +1 @@ +../prop/lib.py
\ No newline at end of file diff --git a/include/unicode/_gbrk.h b/include/unicode/_gbrk.h index cfcdb34..ba1c1b0 100644 --- a/include/unicode/_gbrk.h +++ b/include/unicode/_gbrk.h @@ -3,1565 +3,3029 @@ #ifndef MLIB_UNICODE__GBRK_H #define MLIB_UNICODE__GBRK_H -/* clang-format off */ +#include <stdint.h> +#include "_attrs.h" #include "_rune.h" -typedef enum { - GBP_OTHER = 0, +#define GBRK_PROP_HI(x) ((x) >> 6) +#define GBRK_PROP_LO(x) ((x) & 63) - GBP_CTRL = 1 << 0, /* Control */ - GBP_EXT = 1 << 1, /* Extend */ - GBP_PIC = 1 << 2, /* Extended_Pictographic */ - GBP_PREP = 1 << 3, /* Prepend */ - GBP_RI = 1 << 4, /* Regional_Indicator */ - GBP_SM = 1 << 5, /* SpacingMark */ - GBP_ZWJ = 1 << 6, /* ZWJ */ +enum uprop_gbrk_indc { + GBRK_INDC_CNSNT = 1, /* Consonant */ + GBRK_INDC_EXT, /* Extend */ + GBRK_INDC_LNK, /* Linker */ +}; - GBP_HNGL_L = 1 << 7, /* Hangul L */ - GBP_HNGL_LV = 1 << 8, /* Hangul LV */ - GBP_HNGL_LVT = 1 << 9, /* Hangul LVT */ - GBP_HNGL_T = 1 << 10, /* Hangul T */ - GBP_HNGL_V = 1 << 11, /* Hangul V */ +enum uprop_gbrk { + GBRK_XX = 0, /* Other */ + GBRK_CN, /* Control */ + GBRK_EXT_PICT, /* Extended Pictographic */ + GBRK_EX, /* Extend */ + GBRK_HST_L, /* L */ + GBRK_HST_LV, /* LV */ + GBRK_HST_LVT, /* LVT */ + GBRK_PP, /* Prepend */ + GBRK_RI, /* Regional Indicator */ + GBRK_SM, /* SpacingMark */ + GBRK_HST_T, /* T */ + GBRK_HST_V, /* V */ + GBRK_ZWJ, /* ZWJ */ + _GBRK_LO_CNT, +}; - GBP_INDC_CNSNT = 1 << 12, /* Indic Consonant */ - GBP_INDC_EXT = 1 << 13, /* Indic Extend */ - GBP_INDC_LNK = 1 << 14, /* Indic Linker */ -} gbrk_prop; +static_assert(_GBRK_LO_CNT - 1 <= 0b0011'1111, + "2 bits are required to pack Indic syllables"); -static const struct { - rune lo, hi; - gbrk_prop val; -} gbrk_prop_tbl[] = { - {0x000000, 0x000009, GBP_CTRL}, - {0x00000B, 0x00000C, GBP_CTRL}, - {0x00000E, 0x00001F, GBP_CTRL}, - {0x00007F, 0x00009F, GBP_CTRL}, - {0x0000A9, 0x0000A9, GBP_PIC}, - {0x0000AD, 0x0000AD, GBP_CTRL}, - {0x0000AE, 0x0000AE, GBP_PIC}, - {0x000300, 0x00034E, GBP_EXT | GBP_INDC_EXT}, - {0x00034F, 0x00034F, GBP_EXT}, - {0x000350, 0x00036F, GBP_EXT | GBP_INDC_EXT}, - {0x000483, 0x000487, GBP_EXT | GBP_INDC_EXT}, - {0x000488, 0x000489, GBP_EXT}, - {0x000591, 0x0005BD, GBP_EXT | GBP_INDC_EXT}, - {0x0005BF, 0x0005BF, GBP_EXT | GBP_INDC_EXT}, - {0x0005C1, 0x0005C2, GBP_EXT | GBP_INDC_EXT}, - {0x0005C4, 0x0005C5, GBP_EXT | GBP_INDC_EXT}, - {0x0005C7, 0x0005C7, GBP_EXT | GBP_INDC_EXT}, - {0x000600, 0x000605, GBP_PREP}, - {0x000610, 0x00061A, GBP_EXT | GBP_INDC_EXT}, - {0x00061C, 0x00061C, GBP_CTRL}, - {0x00064B, 0x00065F, GBP_EXT | GBP_INDC_EXT}, - {0x000670, 0x000670, GBP_EXT | GBP_INDC_EXT}, - {0x0006D6, 0x0006DC, GBP_EXT | GBP_INDC_EXT}, - {0x0006DD, 0x0006DD, GBP_PREP}, - {0x0006DF, 0x0006E4, GBP_EXT | GBP_INDC_EXT}, - {0x0006E7, 0x0006E8, GBP_EXT | GBP_INDC_EXT}, - {0x0006EA, 0x0006ED, GBP_EXT | GBP_INDC_EXT}, - {0x00070F, 0x00070F, GBP_PREP}, - {0x000711, 0x000711, GBP_EXT | GBP_INDC_EXT}, - {0x000730, 0x00074A, GBP_EXT | GBP_INDC_EXT}, - {0x0007A6, 0x0007B0, GBP_EXT}, - {0x0007EB, 0x0007F3, GBP_EXT | GBP_INDC_EXT}, - {0x0007FD, 0x0007FD, GBP_EXT | GBP_INDC_EXT}, - {0x000816, 0x000819, GBP_EXT | GBP_INDC_EXT}, - {0x00081B, 0x000823, GBP_EXT | GBP_INDC_EXT}, - {0x000825, 0x000827, GBP_EXT | GBP_INDC_EXT}, - {0x000829, 0x00082D, GBP_EXT | GBP_INDC_EXT}, - {0x000859, 0x00085B, GBP_EXT | GBP_INDC_EXT}, - {0x000890, 0x000891, GBP_PREP}, - {0x000898, 0x00089F, GBP_EXT | GBP_INDC_EXT}, - {0x0008CA, 0x0008E1, GBP_EXT | GBP_INDC_EXT}, - {0x0008E2, 0x0008E2, GBP_PREP}, - {0x0008E3, 0x0008FF, GBP_EXT | GBP_INDC_EXT}, - {0x000900, 0x000902, GBP_EXT}, - {0x000903, 0x000903, GBP_SM}, - {0x000915, 0x000939, GBP_INDC_CNSNT}, - {0x00093A, 0x00093A, GBP_EXT}, - {0x00093B, 0x00093B, GBP_SM}, - {0x00093C, 0x00093C, GBP_EXT | GBP_INDC_EXT}, - {0x00093E, 0x000940, GBP_SM}, - {0x000941, 0x000948, GBP_EXT}, - {0x000949, 0x00094C, GBP_SM}, - {0x00094D, 0x00094D, GBP_EXT | GBP_INDC_LNK}, - {0x00094E, 0x00094F, GBP_SM}, - {0x000951, 0x000954, GBP_EXT | GBP_INDC_EXT}, - {0x000955, 0x000957, GBP_EXT}, - {0x000958, 0x00095F, GBP_INDC_CNSNT}, - {0x000962, 0x000963, GBP_EXT}, - {0x000978, 0x00097F, GBP_INDC_CNSNT}, - {0x000981, 0x000981, GBP_EXT}, - {0x000982, 0x000983, GBP_SM}, - {0x000995, 0x0009A8, GBP_INDC_CNSNT}, - {0x0009AA, 0x0009B0, GBP_INDC_CNSNT}, - {0x0009B2, 0x0009B2, GBP_INDC_CNSNT}, - {0x0009B6, 0x0009B9, GBP_INDC_CNSNT}, - {0x0009BC, 0x0009BC, GBP_EXT | GBP_INDC_EXT}, - {0x0009BE, 0x0009BE, GBP_EXT}, - {0x0009BF, 0x0009C0, GBP_SM}, - {0x0009C1, 0x0009C4, GBP_EXT}, - {0x0009C7, 0x0009C8, GBP_SM}, - {0x0009CB, 0x0009CC, GBP_SM}, - {0x0009CD, 0x0009CD, GBP_EXT | GBP_INDC_LNK}, - {0x0009D7, 0x0009D7, GBP_EXT}, - {0x0009DC, 0x0009DD, GBP_INDC_CNSNT}, - {0x0009DF, 0x0009DF, GBP_INDC_CNSNT}, - {0x0009E2, 0x0009E3, GBP_EXT}, - {0x0009F0, 0x0009F1, GBP_INDC_CNSNT}, - {0x0009FE, 0x0009FE, GBP_EXT | GBP_INDC_EXT}, - {0x000A01, 0x000A02, GBP_EXT}, - {0x000A03, 0x000A03, GBP_SM}, - {0x000A3C, 0x000A3C, GBP_EXT | GBP_INDC_EXT}, - {0x000A3E, 0x000A40, GBP_SM}, - {0x000A41, 0x000A42, GBP_EXT}, - {0x000A47, 0x000A48, GBP_EXT}, - {0x000A4B, 0x000A4D, GBP_EXT}, - {0x000A51, 0x000A51, GBP_EXT}, - {0x000A70, 0x000A71, GBP_EXT}, - {0x000A75, 0x000A75, GBP_EXT}, - {0x000A81, 0x000A82, GBP_EXT}, - {0x000A83, 0x000A83, GBP_SM}, - {0x000A95, 0x000AA8, GBP_INDC_CNSNT}, - {0x000AAA, 0x000AB0, GBP_INDC_CNSNT}, - {0x000AB2, 0x000AB3, GBP_INDC_CNSNT}, - {0x000AB5, 0x000AB9, GBP_INDC_CNSNT}, - {0x000ABC, 0x000ABC, GBP_EXT | GBP_INDC_EXT}, - {0x000ABE, 0x000AC0, GBP_SM}, - {0x000AC1, 0x000AC5, GBP_EXT}, - {0x000AC7, 0x000AC8, GBP_EXT}, - {0x000AC9, 0x000AC9, GBP_SM}, - {0x000ACB, 0x000ACC, GBP_SM}, - {0x000ACD, 0x000ACD, GBP_EXT | GBP_INDC_LNK}, - {0x000AE2, 0x000AE3, GBP_EXT}, - {0x000AF9, 0x000AF9, GBP_INDC_CNSNT}, - {0x000AFA, 0x000AFF, GBP_EXT}, - {0x000B01, 0x000B01, GBP_EXT}, - {0x000B02, 0x000B03, GBP_SM}, - {0x000B15, 0x000B28, GBP_INDC_CNSNT}, - {0x000B2A, 0x000B30, GBP_INDC_CNSNT}, - {0x000B32, 0x000B33, GBP_INDC_CNSNT}, - {0x000B35, 0x000B39, GBP_INDC_CNSNT}, - {0x000B3C, 0x000B3C, GBP_EXT | GBP_INDC_EXT}, - {0x000B3E, 0x000B3F, GBP_EXT}, - {0x000B40, 0x000B40, GBP_SM}, - {0x000B41, 0x000B44, GBP_EXT}, - {0x000B47, 0x000B48, GBP_SM}, - {0x000B4B, 0x000B4C, GBP_SM}, - {0x000B4D, 0x000B4D, GBP_EXT | GBP_INDC_LNK}, - {0x000B55, 0x000B57, GBP_EXT}, - {0x000B5C, 0x000B5D, GBP_INDC_CNSNT}, - {0x000B5F, 0x000B5F, GBP_INDC_CNSNT}, - {0x000B62, 0x000B63, GBP_EXT}, - {0x000B71, 0x000B71, GBP_INDC_CNSNT}, - {0x000B82, 0x000B82, GBP_EXT}, - {0x000BBE, 0x000BBE, GBP_EXT}, - {0x000BBF, 0x000BBF, GBP_SM}, - {0x000BC0, 0x000BC0, GBP_EXT}, - {0x000BC1, 0x000BC2, GBP_SM}, - {0x000BC6, 0x000BC8, GBP_SM}, - {0x000BCA, 0x000BCC, GBP_SM}, - {0x000BCD, 0x000BCD, GBP_EXT}, - {0x000BD7, 0x000BD7, GBP_EXT}, - {0x000C00, 0x000C00, GBP_EXT}, - {0x000C01, 0x000C03, GBP_SM}, - {0x000C04, 0x000C04, GBP_EXT}, - {0x000C15, 0x000C28, GBP_INDC_CNSNT}, - {0x000C2A, 0x000C39, GBP_INDC_CNSNT}, - {0x000C3C, 0x000C3C, GBP_EXT | GBP_INDC_EXT}, - {0x000C3E, 0x000C40, GBP_EXT}, - {0x000C41, 0x000C44, GBP_SM}, - {0x000C46, 0x000C48, GBP_EXT}, - {0x000C4A, 0x000C4C, GBP_EXT}, - {0x000C4D, 0x000C4D, GBP_EXT | GBP_INDC_LNK}, - {0x000C55, 0x000C56, GBP_EXT | GBP_INDC_EXT}, - {0x000C58, 0x000C5A, GBP_INDC_CNSNT}, - {0x000C62, 0x000C63, GBP_EXT}, - {0x000C81, 0x000C81, GBP_EXT}, - {0x000C82, 0x000C83, GBP_SM}, - {0x000CBC, 0x000CBC, GBP_EXT | GBP_INDC_EXT}, - {0x000CBE, 0x000CBE, GBP_SM}, - {0x000CBF, 0x000CBF, GBP_EXT}, - {0x000CC0, 0x000CC1, GBP_SM}, - {0x000CC2, 0x000CC2, GBP_EXT}, - {0x000CC3, 0x000CC4, GBP_SM}, - {0x000CC6, 0x000CC6, GBP_EXT}, - {0x000CC7, 0x000CC8, GBP_SM}, - {0x000CCA, 0x000CCB, GBP_SM}, - {0x000CCC, 0x000CCD, GBP_EXT}, - {0x000CD5, 0x000CD6, GBP_EXT}, - {0x000CE2, 0x000CE3, GBP_EXT}, - {0x000CF3, 0x000CF3, GBP_SM}, - {0x000D00, 0x000D01, GBP_EXT}, - {0x000D02, 0x000D03, GBP_SM}, - {0x000D15, 0x000D3A, GBP_INDC_CNSNT}, - {0x000D3B, 0x000D3C, GBP_EXT | GBP_INDC_EXT}, - {0x000D3E, 0x000D3E, GBP_EXT}, - {0x000D3F, 0x000D40, GBP_SM}, - {0x000D41, 0x000D44, GBP_EXT}, - {0x000D46, 0x000D48, GBP_SM}, - {0x000D4A, 0x000D4C, GBP_SM}, - {0x000D4D, 0x000D4D, GBP_EXT | GBP_INDC_LNK}, - {0x000D4E, 0x000D4E, GBP_PREP}, - {0x000D57, 0x000D57, GBP_EXT}, - {0x000D62, 0x000D63, GBP_EXT}, - {0x000D81, 0x000D81, GBP_EXT}, - {0x000D82, 0x000D83, GBP_SM}, - {0x000DCA, 0x000DCA, GBP_EXT}, - {0x000DCF, 0x000DCF, GBP_EXT}, - {0x000DD0, 0x000DD1, GBP_SM}, - {0x000DD2, 0x000DD4, GBP_EXT}, - {0x000DD6, 0x000DD6, GBP_EXT}, - {0x000DD8, 0x000DDE, GBP_SM}, - {0x000DDF, 0x000DDF, GBP_EXT}, - {0x000DF2, 0x000DF3, GBP_SM}, - {0x000E31, 0x000E31, GBP_EXT}, - {0x000E33, 0x000E33, GBP_SM}, - {0x000E34, 0x000E37, GBP_EXT}, - {0x000E38, 0x000E3A, GBP_EXT | GBP_INDC_EXT}, - {0x000E47, 0x000E47, GBP_EXT}, - {0x000E48, 0x000E4B, GBP_EXT | GBP_INDC_EXT}, - {0x000E4C, 0x000E4E, GBP_EXT}, - {0x000EB1, 0x000EB1, GBP_EXT}, - {0x000EB3, 0x000EB3, GBP_SM}, - {0x000EB4, 0x000EB7, GBP_EXT}, - {0x000EB8, 0x000EBA, GBP_EXT | GBP_INDC_EXT}, - {0x000EBB, 0x000EBC, GBP_EXT}, - {0x000EC8, 0x000ECB, GBP_EXT | GBP_INDC_EXT}, - {0x000ECC, 0x000ECE, GBP_EXT}, - {0x000F18, 0x000F19, GBP_EXT | GBP_INDC_EXT}, - {0x000F35, 0x000F35, GBP_EXT | GBP_INDC_EXT}, - {0x000F37, 0x000F37, GBP_EXT | GBP_INDC_EXT}, - {0x000F39, 0x000F39, GBP_EXT | GBP_INDC_EXT}, - {0x000F3E, 0x000F3F, GBP_SM}, - {0x000F71, 0x000F72, GBP_EXT | GBP_INDC_EXT}, - {0x000F73, 0x000F73, GBP_EXT}, - {0x000F74, 0x000F74, GBP_EXT | GBP_INDC_EXT}, - {0x000F75, 0x000F79, GBP_EXT}, - {0x000F7A, 0x000F7D, GBP_EXT | GBP_INDC_EXT}, - {0x000F7E, 0x000F7E, GBP_EXT}, - {0x000F7F, 0x000F7F, GBP_SM}, - {0x000F80, 0x000F80, GBP_EXT | GBP_INDC_EXT}, - {0x000F81, 0x000F81, GBP_EXT}, - {0x000F82, 0x000F84, GBP_EXT | GBP_INDC_EXT}, - {0x000F86, 0x000F87, GBP_EXT | GBP_INDC_EXT}, - {0x000F8D, 0x000F97, GBP_EXT}, - {0x000F99, 0x000FBC, GBP_EXT}, - {0x000FC6, 0x000FC6, GBP_EXT | GBP_INDC_EXT}, - {0x00102D, 0x001030, GBP_EXT}, - {0x001031, 0x001031, GBP_SM}, - {0x001032, 0x001036, GBP_EXT}, - {0x001037, 0x001037, GBP_EXT | GBP_INDC_EXT}, - {0x001039, 0x00103A, GBP_EXT | GBP_INDC_EXT}, - {0x00103B, 0x00103C, GBP_SM}, - {0x00103D, 0x00103E, GBP_EXT}, - {0x001056, 0x001057, GBP_SM}, - {0x001058, 0x001059, GBP_EXT}, - {0x00105E, 0x001060, GBP_EXT}, - {0x001071, 0x001074, GBP_EXT}, - {0x001082, 0x001082, GBP_EXT}, - {0x001084, 0x001084, GBP_SM}, - {0x001085, 0x001086, GBP_EXT}, - {0x00108D, 0x00108D, GBP_EXT | GBP_INDC_EXT}, - {0x00109D, 0x00109D, GBP_EXT}, - {0x001100, 0x00115F, GBP_HNGL_L}, - {0x001160, 0x0011A7, GBP_HNGL_V}, - {0x0011A8, 0x0011FF, GBP_HNGL_T}, - {0x00135D, 0x00135F, GBP_EXT | GBP_INDC_EXT}, - {0x001712, 0x001713, GBP_EXT}, - {0x001714, 0x001714, GBP_EXT | GBP_INDC_EXT}, - {0x001715, 0x001715, GBP_SM}, - {0x001732, 0x001733, GBP_EXT}, - {0x001734, 0x001734, GBP_SM}, - {0x001752, 0x001753, GBP_EXT}, - {0x001772, 0x001773, GBP_EXT}, - {0x0017B4, 0x0017B5, GBP_EXT}, - {0x0017B6, 0x0017B6, GBP_SM}, - {0x0017B7, 0x0017BD, GBP_EXT}, - {0x0017BE, 0x0017C5, GBP_SM}, - {0x0017C6, 0x0017C6, GBP_EXT}, - {0x0017C7, 0x0017C8, GBP_SM}, - {0x0017C9, 0x0017D1, GBP_EXT}, - {0x0017D2, 0x0017D2, GBP_EXT | GBP_INDC_EXT}, - {0x0017D3, 0x0017D3, GBP_EXT}, - {0x0017DD, 0x0017DD, GBP_EXT | GBP_INDC_EXT}, - {0x00180B, 0x00180D, GBP_EXT}, - {0x00180E, 0x00180E, GBP_CTRL}, - {0x00180F, 0x00180F, GBP_EXT}, - {0x001885, 0x001886, GBP_EXT}, - {0x0018A9, 0x0018A9, GBP_EXT | GBP_INDC_EXT}, - {0x001920, 0x001922, GBP_EXT}, - {0x001923, 0x001926, GBP_SM}, - {0x001927, 0x001928, GBP_EXT}, - {0x001929, 0x00192B, GBP_SM}, - {0x001930, 0x001931, GBP_SM}, - {0x001932, 0x001932, GBP_EXT}, - {0x001933, 0x001938, GBP_SM}, - {0x001939, 0x00193B, GBP_EXT | GBP_INDC_EXT}, - {0x001A17, 0x001A18, GBP_EXT | GBP_INDC_EXT}, - {0x001A19, 0x001A1A, GBP_SM}, - {0x001A1B, 0x001A1B, GBP_EXT}, - {0x001A55, 0x001A55, GBP_SM}, - {0x001A56, 0x001A56, GBP_EXT}, - {0x001A57, 0x001A57, GBP_SM}, - {0x001A58, 0x001A5E, GBP_EXT}, - {0x001A60, 0x001A60, GBP_EXT | GBP_INDC_EXT}, - {0x001A62, 0x001A62, GBP_EXT}, - {0x001A65, 0x001A6C, GBP_EXT}, - {0x001A6D, 0x001A72, GBP_SM}, - {0x001A73, 0x001A74, GBP_EXT}, - {0x001A75, 0x001A7C, GBP_EXT | GBP_INDC_EXT}, - {0x001A7F, 0x001A7F, GBP_EXT | GBP_INDC_EXT}, - {0x001AB0, 0x001ABD, GBP_EXT | GBP_INDC_EXT}, - {0x001ABE, 0x001ABE, GBP_EXT}, - {0x001ABF, 0x001ACE, GBP_EXT | GBP_INDC_EXT}, - {0x001B00, 0x001B03, GBP_EXT}, - {0x001B04, 0x001B04, GBP_SM}, - {0x001B34, 0x001B34, GBP_EXT | GBP_INDC_EXT}, - {0x001B35, 0x001B3A, GBP_EXT}, - {0x001B3B, 0x001B3B, GBP_SM}, - {0x001B3C, 0x001B3C, GBP_EXT}, - {0x001B3D, 0x001B41, GBP_SM}, - {0x001B42, 0x001B42, GBP_EXT}, - {0x001B43, 0x001B44, GBP_SM}, - {0x001B6B, 0x001B73, GBP_EXT | GBP_INDC_EXT}, - {0x001B80, 0x001B81, GBP_EXT}, - {0x001B82, 0x001B82, GBP_SM}, - {0x001BA1, 0x001BA1, GBP_SM}, - {0x001BA2, 0x001BA5, GBP_EXT}, - {0x001BA6, 0x001BA7, GBP_SM}, - {0x001BA8, 0x001BA9, GBP_EXT}, - {0x001BAA, 0x001BAA, GBP_SM}, - {0x001BAB, 0x001BAB, GBP_EXT | GBP_INDC_EXT}, - {0x001BAC, 0x001BAD, GBP_EXT}, - {0x001BE6, 0x001BE6, GBP_EXT | GBP_INDC_EXT}, - {0x001BE7, 0x001BE7, GBP_SM}, - {0x001BE8, 0x001BE9, GBP_EXT}, - {0x001BEA, 0x001BEC, GBP_SM}, - {0x001BED, 0x001BED, GBP_EXT}, - {0x001BEE, 0x001BEE, GBP_SM}, - {0x001BEF, 0x001BF1, GBP_EXT}, - {0x001BF2, 0x001BF3, GBP_SM}, - {0x001C24, 0x001C2B, GBP_SM}, - {0x001C2C, 0x001C33, GBP_EXT}, - {0x001C34, 0x001C35, GBP_SM}, - {0x001C36, 0x001C36, GBP_EXT}, - {0x001C37, 0x001C37, GBP_EXT | GBP_INDC_EXT}, - {0x001CD0, 0x001CD2, GBP_EXT | GBP_INDC_EXT}, - {0x001CD4, 0x001CE0, GBP_EXT | GBP_INDC_EXT}, - {0x001CE1, 0x001CE1, GBP_SM}, - {0x001CE2, 0x001CE8, GBP_EXT | GBP_INDC_EXT}, - {0x001CED, 0x001CED, GBP_EXT | GBP_INDC_EXT}, - {0x001CF4, 0x001CF4, GBP_EXT | GBP_INDC_EXT}, - {0x001CF7, 0x001CF7, GBP_SM}, - {0x001CF8, 0x001CF9, GBP_EXT | GBP_INDC_EXT}, - {0x001DC0, 0x001DFF, GBP_EXT | GBP_INDC_EXT}, - {0x00200B, 0x00200B, GBP_CTRL}, - {0x00200C, 0x00200C, GBP_EXT}, - {0x00200D, 0x00200D, GBP_ZWJ | GBP_INDC_EXT}, - {0x00200E, 0x00200F, GBP_CTRL}, - {0x002028, 0x00202E, GBP_CTRL}, - {0x00203C, 0x00203C, GBP_PIC}, - {0x002049, 0x002049, GBP_PIC}, - {0x002060, 0x00206F, GBP_CTRL}, - {0x0020D0, 0x0020DC, GBP_EXT | GBP_INDC_EXT}, - {0x0020DD, 0x0020E0, GBP_EXT}, - {0x0020E1, 0x0020E1, GBP_EXT | GBP_INDC_EXT}, - {0x0020E2, 0x0020E4, GBP_EXT}, - {0x0020E5, 0x0020F0, GBP_EXT | GBP_INDC_EXT}, - {0x002122, 0x002122, GBP_PIC}, - {0x002139, 0x002139, GBP_PIC}, - {0x002194, 0x002199, GBP_PIC}, - {0x0021A9, 0x0021AA, GBP_PIC}, - {0x00231A, 0x00231B, GBP_PIC}, - {0x002328, 0x002328, GBP_PIC}, - {0x002388, 0x002388, GBP_PIC}, - {0x0023CF, 0x0023CF, GBP_PIC}, - {0x0023E9, 0x0023F3, GBP_PIC}, - {0x0023F8, 0x0023FA, GBP_PIC}, - {0x0024C2, 0x0024C2, GBP_PIC}, - {0x0025AA, 0x0025AB, GBP_PIC}, - {0x0025B6, 0x0025B6, GBP_PIC}, - {0x0025C0, 0x0025C0, GBP_PIC}, - {0x0025FB, 0x0025FE, GBP_PIC}, - {0x002600, 0x002605, GBP_PIC}, - {0x002607, 0x002612, GBP_PIC}, - {0x002614, 0x002685, GBP_PIC}, - {0x002690, 0x002705, GBP_PIC}, - {0x002708, 0x002712, GBP_PIC}, - {0x002714, 0x002714, GBP_PIC}, - {0x002716, 0x002716, GBP_PIC}, - {0x00271D, 0x00271D, GBP_PIC}, - {0x002721, 0x002721, GBP_PIC}, - {0x002728, 0x002728, GBP_PIC}, - {0x002733, 0x002734, GBP_PIC}, - {0x002744, 0x002744, GBP_PIC}, - {0x002747, 0x002747, GBP_PIC}, - {0x00274C, 0x00274C, GBP_PIC}, - {0x00274E, 0x00274E, GBP_PIC}, - {0x002753, 0x002755, GBP_PIC}, - {0x002757, 0x002757, GBP_PIC}, - {0x002763, 0x002767, GBP_PIC}, - {0x002795, 0x002797, GBP_PIC}, - {0x0027A1, 0x0027A1, GBP_PIC}, - {0x0027B0, 0x0027B0, GBP_PIC}, - {0x0027BF, 0x0027BF, GBP_PIC}, - {0x002934, 0x002935, GBP_PIC}, - {0x002B05, 0x002B07, GBP_PIC}, - {0x002B1B, 0x002B1C, GBP_PIC}, - {0x002B50, 0x002B50, GBP_PIC}, - {0x002B55, 0x002B55, GBP_PIC}, - {0x002CEF, 0x002CF1, GBP_EXT | GBP_INDC_EXT}, - {0x002D7F, 0x002D7F, GBP_EXT | GBP_INDC_EXT}, - {0x002DE0, 0x002DFF, GBP_EXT | GBP_INDC_EXT}, - {0x00302A, 0x00302F, GBP_EXT | GBP_INDC_EXT}, - {0x003030, 0x003030, GBP_PIC}, - {0x00303D, 0x00303D, GBP_PIC}, - {0x003099, 0x00309A, GBP_EXT | GBP_INDC_EXT}, - {0x003297, 0x003297, GBP_PIC}, - {0x003299, 0x003299, GBP_PIC}, - {0x00A66F, 0x00A66F, GBP_EXT | GBP_INDC_EXT}, - {0x00A670, 0x00A672, GBP_EXT}, - {0x00A674, 0x00A67D, GBP_EXT | GBP_INDC_EXT}, - {0x00A69E, 0x00A69F, GBP_EXT | GBP_INDC_EXT}, - {0x00A6F0, 0x00A6F1, GBP_EXT | GBP_INDC_EXT}, - {0x00A802, 0x00A802, GBP_EXT}, - {0x00A806, 0x00A806, GBP_EXT}, - {0x00A80B, 0x00A80B, GBP_EXT}, - {0x00A823, 0x00A824, GBP_SM}, - {0x00A825, 0x00A826, GBP_EXT}, - {0x00A827, 0x00A827, GBP_SM}, - {0x00A82C, 0x00A82C, GBP_EXT | GBP_INDC_EXT}, - {0x00A880, 0x00A881, GBP_SM}, - {0x00A8B4, 0x00A8C3, GBP_SM}, - {0x00A8C4, 0x00A8C5, GBP_EXT}, - {0x00A8E0, 0x00A8F1, GBP_EXT | GBP_INDC_EXT}, - {0x00A8FF, 0x00A8FF, GBP_EXT}, - {0x00A926, 0x00A92A, GBP_EXT}, - {0x00A92B, 0x00A92D, GBP_EXT | GBP_INDC_EXT}, - {0x00A947, 0x00A951, GBP_EXT}, - {0x00A952, 0x00A953, GBP_SM}, - {0x00A960, 0x00A97C, GBP_HNGL_L}, - {0x00A980, 0x00A982, GBP_EXT}, - {0x00A983, 0x00A983, GBP_SM}, - {0x00A9B3, 0x00A9B3, GBP_EXT | GBP_INDC_EXT}, - {0x00A9B4, 0x00A9B5, GBP_SM}, - {0x00A9B6, 0x00A9B9, GBP_EXT}, - {0x00A9BA, 0x00A9BB, GBP_SM}, - {0x00A9BC, 0x00A9BD, GBP_EXT}, - {0x00A9BE, 0x00A9C0, GBP_SM}, - {0x00A9E5, 0x00A9E5, GBP_EXT}, - {0x00AA29, 0x00AA2E, GBP_EXT}, - {0x00AA2F, 0x00AA30, GBP_SM}, - {0x00AA31, 0x00AA32, GBP_EXT}, - {0x00AA33, 0x00AA34, GBP_SM}, - {0x00AA35, 0x00AA36, GBP_EXT}, - {0x00AA43, 0x00AA43, GBP_EXT}, - {0x00AA4C, 0x00AA4C, GBP_EXT}, - {0x00AA4D, 0x00AA4D, GBP_SM}, - {0x00AA7C, 0x00AA7C, GBP_EXT}, - {0x00AAB0, 0x00AAB0, GBP_EXT | GBP_INDC_EXT}, - {0x00AAB2, 0x00AAB4, GBP_EXT | GBP_INDC_EXT}, - {0x00AAB7, 0x00AAB8, GBP_EXT | GBP_INDC_EXT}, - {0x00AABE, 0x00AABF, GBP_EXT | GBP_INDC_EXT}, - {0x00AAC1, 0x00AAC1, GBP_EXT | GBP_INDC_EXT}, - {0x00AAEB, 0x00AAEB, GBP_SM}, - {0x00AAEC, 0x00AAED, GBP_EXT}, - {0x00AAEE, 0x00AAEF, GBP_SM}, - {0x00AAF5, 0x00AAF5, GBP_SM}, - {0x00AAF6, 0x00AAF6, GBP_EXT | GBP_INDC_EXT}, - {0x00ABE3, 0x00ABE4, GBP_SM}, - {0x00ABE5, 0x00ABE5, GBP_EXT}, - {0x00ABE6, 0x00ABE7, GBP_SM}, - {0x00ABE8, 0x00ABE8, GBP_EXT}, - {0x00ABE9, 0x00ABEA, GBP_SM}, - {0x00ABEC, 0x00ABEC, GBP_SM}, - {0x00ABED, 0x00ABED, GBP_EXT | GBP_INDC_EXT}, - {0x00AC00, 0x00AC00, GBP_HNGL_LV}, - {0x00AC01, 0x00AC1B, GBP_HNGL_LVT}, - {0x00AC1C, 0x00AC1C, GBP_HNGL_LV}, - {0x00AC1D, 0x00AC37, GBP_HNGL_LVT}, - {0x00AC38, 0x00AC38, GBP_HNGL_LV}, - {0x00AC39, 0x00AC53, GBP_HNGL_LVT}, - {0x00AC54, 0x00AC54, GBP_HNGL_LV}, - {0x00AC55, 0x00AC6F, GBP_HNGL_LVT}, - {0x00AC70, 0x00AC70, GBP_HNGL_LV}, - {0x00AC71, 0x00AC8B, GBP_HNGL_LVT}, - {0x00AC8C, 0x00AC8C, GBP_HNGL_LV}, - {0x00AC8D, 0x00ACA7, GBP_HNGL_LVT}, - {0x00ACA8, 0x00ACA8, GBP_HNGL_LV}, - {0x00ACA9, 0x00ACC3, GBP_HNGL_LVT}, - {0x00ACC4, 0x00ACC4, GBP_HNGL_LV}, - {0x00ACC5, 0x00ACDF, GBP_HNGL_LVT}, - {0x00ACE0, 0x00ACE0, GBP_HNGL_LV}, - {0x00ACE1, 0x00ACFB, GBP_HNGL_LVT}, - {0x00ACFC, 0x00ACFC, GBP_HNGL_LV}, - {0x00ACFD, 0x00AD17, GBP_HNGL_LVT}, - {0x00AD18, 0x00AD18, GBP_HNGL_LV}, - {0x00AD19, 0x00AD33, GBP_HNGL_LVT}, - {0x00AD34, 0x00AD34, GBP_HNGL_LV}, - {0x00AD35, 0x00AD4F, GBP_HNGL_LVT}, - {0x00AD50, 0x00AD50, GBP_HNGL_LV}, - {0x00AD51, 0x00AD6B, GBP_HNGL_LVT}, - {0x00AD6C, 0x00AD6C, GBP_HNGL_LV}, - {0x00AD6D, 0x00AD87, GBP_HNGL_LVT}, - {0x00AD88, 0x00AD88, GBP_HNGL_LV}, - {0x00AD89, 0x00ADA3, GBP_HNGL_LVT}, - {0x00ADA4, 0x00ADA4, GBP_HNGL_LV}, - {0x00ADA5, 0x00ADBF, GBP_HNGL_LVT}, - {0x00ADC0, 0x00ADC0, GBP_HNGL_LV}, - {0x00ADC1, 0x00ADDB, GBP_HNGL_LVT}, - {0x00ADDC, 0x00ADDC, GBP_HNGL_LV}, - {0x00ADDD, 0x00ADF7, GBP_HNGL_LVT}, - {0x00ADF8, 0x00ADF8, GBP_HNGL_LV}, - {0x00ADF9, 0x00AE13, GBP_HNGL_LVT}, - {0x00AE14, 0x00AE14, GBP_HNGL_LV}, - {0x00AE15, 0x00AE2F, GBP_HNGL_LVT}, - {0x00AE30, 0x00AE30, GBP_HNGL_LV}, - {0x00AE31, 0x00AE4B, GBP_HNGL_LVT}, - {0x00AE4C, 0x00AE4C, GBP_HNGL_LV}, - {0x00AE4D, 0x00AE67, GBP_HNGL_LVT}, - {0x00AE68, 0x00AE68, GBP_HNGL_LV}, - {0x00AE69, 0x00AE83, GBP_HNGL_LVT}, - {0x00AE84, 0x00AE84, GBP_HNGL_LV}, - {0x00AE85, 0x00AE9F, GBP_HNGL_LVT}, - {0x00AEA0, 0x00AEA0, GBP_HNGL_LV}, - {0x00AEA1, 0x00AEBB, GBP_HNGL_LVT}, - {0x00AEBC, 0x00AEBC, GBP_HNGL_LV}, - {0x00AEBD, 0x00AED7, GBP_HNGL_LVT}, - {0x00AED8, 0x00AED8, GBP_HNGL_LV}, - {0x00AED9, 0x00AEF3, GBP_HNGL_LVT}, - {0x00AEF4, 0x00AEF4, GBP_HNGL_LV}, - {0x00AEF5, 0x00AF0F, GBP_HNGL_LVT}, - {0x00AF10, 0x00AF10, GBP_HNGL_LV}, - {0x00AF11, 0x00AF2B, GBP_HNGL_LVT}, - {0x00AF2C, 0x00AF2C, GBP_HNGL_LV}, - {0x00AF2D, 0x00AF47, GBP_HNGL_LVT}, - {0x00AF48, 0x00AF48, GBP_HNGL_LV}, - {0x00AF49, 0x00AF63, GBP_HNGL_LVT}, - {0x00AF64, 0x00AF64, GBP_HNGL_LV}, - {0x00AF65, 0x00AF7F, GBP_HNGL_LVT}, - {0x00AF80, 0x00AF80, GBP_HNGL_LV}, - {0x00AF81, 0x00AF9B, GBP_HNGL_LVT}, - {0x00AF9C, 0x00AF9C, GBP_HNGL_LV}, - {0x00AF9D, 0x00AFB7, GBP_HNGL_LVT}, - {0x00AFB8, 0x00AFB8, GBP_HNGL_LV}, - {0x00AFB9, 0x00AFD3, GBP_HNGL_LVT}, - {0x00AFD4, 0x00AFD4, GBP_HNGL_LV}, - {0x00AFD5, 0x00AFEF, GBP_HNGL_LVT}, - {0x00AFF0, 0x00AFF0, GBP_HNGL_LV}, - {0x00AFF1, 0x00B00B, GBP_HNGL_LVT}, - {0x00B00C, 0x00B00C, GBP_HNGL_LV}, - {0x00B00D, 0x00B027, GBP_HNGL_LVT}, - {0x00B028, 0x00B028, GBP_HNGL_LV}, - {0x00B029, 0x00B043, GBP_HNGL_LVT}, - {0x00B044, 0x00B044, GBP_HNGL_LV}, - {0x00B045, 0x00B05F, GBP_HNGL_LVT}, - {0x00B060, 0x00B060, GBP_HNGL_LV}, - {0x00B061, 0x00B07B, GBP_HNGL_LVT}, - {0x00B07C, 0x00B07C, GBP_HNGL_LV}, - {0x00B07D, 0x00B097, GBP_HNGL_LVT}, - {0x00B098, 0x00B098, GBP_HNGL_LV}, - {0x00B099, 0x00B0B3, GBP_HNGL_LVT}, - {0x00B0B4, 0x00B0B4, GBP_HNGL_LV}, - {0x00B0B5, 0x00B0CF, GBP_HNGL_LVT}, - {0x00B0D0, 0x00B0D0, GBP_HNGL_LV}, - {0x00B0D1, 0x00B0EB, GBP_HNGL_LVT}, - {0x00B0EC, 0x00B0EC, GBP_HNGL_LV}, - {0x00B0ED, 0x00B107, GBP_HNGL_LVT}, - {0x00B108, 0x00B108, GBP_HNGL_LV}, - {0x00B109, 0x00B123, GBP_HNGL_LVT}, - {0x00B124, 0x00B124, GBP_HNGL_LV}, - {0x00B125, 0x00B13F, GBP_HNGL_LVT}, - {0x00B140, 0x00B140, GBP_HNGL_LV}, - {0x00B141, 0x00B15B, GBP_HNGL_LVT}, - {0x00B15C, 0x00B15C, GBP_HNGL_LV}, - {0x00B15D, 0x00B177, GBP_HNGL_LVT}, - {0x00B178, 0x00B178, GBP_HNGL_LV}, - {0x00B179, 0x00B193, GBP_HNGL_LVT}, - {0x00B194, 0x00B194, GBP_HNGL_LV}, - {0x00B195, 0x00B1AF, GBP_HNGL_LVT}, - {0x00B1B0, 0x00B1B0, GBP_HNGL_LV}, - {0x00B1B1, 0x00B1CB, GBP_HNGL_LVT}, - {0x00B1CC, 0x00B1CC, GBP_HNGL_LV}, - {0x00B1CD, 0x00B1E7, GBP_HNGL_LVT}, - {0x00B1E8, 0x00B1E8, GBP_HNGL_LV}, - {0x00B1E9, 0x00B203, GBP_HNGL_LVT}, - {0x00B204, 0x00B204, GBP_HNGL_LV}, - {0x00B205, 0x00B21F, GBP_HNGL_LVT}, - {0x00B220, 0x00B220, GBP_HNGL_LV}, - {0x00B221, 0x00B23B, GBP_HNGL_LVT}, - {0x00B23C, 0x00B23C, GBP_HNGL_LV}, - {0x00B23D, 0x00B257, GBP_HNGL_LVT}, - {0x00B258, 0x00B258, GBP_HNGL_LV}, - {0x00B259, 0x00B273, GBP_HNGL_LVT}, - {0x00B274, 0x00B274, GBP_HNGL_LV}, - {0x00B275, 0x00B28F, GBP_HNGL_LVT}, - {0x00B290, 0x00B290, GBP_HNGL_LV}, - {0x00B291, 0x00B2AB, GBP_HNGL_LVT}, - {0x00B2AC, 0x00B2AC, GBP_HNGL_LV}, - {0x00B2AD, 0x00B2C7, GBP_HNGL_LVT}, - {0x00B2C8, 0x00B2C8, GBP_HNGL_LV}, - {0x00B2C9, 0x00B2E3, GBP_HNGL_LVT}, - {0x00B2E4, 0x00B2E4, GBP_HNGL_LV}, - {0x00B2E5, 0x00B2FF, GBP_HNGL_LVT}, - {0x00B300, 0x00B300, GBP_HNGL_LV}, - {0x00B301, 0x00B31B, GBP_HNGL_LVT}, - {0x00B31C, 0x00B31C, GBP_HNGL_LV}, - {0x00B31D, 0x00B337, GBP_HNGL_LVT}, - {0x00B338, 0x00B338, GBP_HNGL_LV}, - {0x00B339, 0x00B353, GBP_HNGL_LVT}, - {0x00B354, 0x00B354, GBP_HNGL_LV}, - {0x00B355, 0x00B36F, GBP_HNGL_LVT}, - {0x00B370, 0x00B370, GBP_HNGL_LV}, - {0x00B371, 0x00B38B, GBP_HNGL_LVT}, - {0x00B38C, 0x00B38C, GBP_HNGL_LV}, - {0x00B38D, 0x00B3A7, GBP_HNGL_LVT}, - {0x00B3A8, 0x00B3A8, GBP_HNGL_LV}, - {0x00B3A9, 0x00B3C3, GBP_HNGL_LVT}, - {0x00B3C4, 0x00B3C4, GBP_HNGL_LV}, - {0x00B3C5, 0x00B3DF, GBP_HNGL_LVT}, - {0x00B3E0, 0x00B3E0, GBP_HNGL_LV}, - {0x00B3E1, 0x00B3FB, GBP_HNGL_LVT}, - {0x00B3FC, 0x00B3FC, GBP_HNGL_LV}, - {0x00B3FD, 0x00B417, GBP_HNGL_LVT}, - {0x00B418, 0x00B418, GBP_HNGL_LV}, - {0x00B419, 0x00B433, GBP_HNGL_LVT}, - {0x00B434, 0x00B434, GBP_HNGL_LV}, - {0x00B435, 0x00B44F, GBP_HNGL_LVT}, - {0x00B450, 0x00B450, GBP_HNGL_LV}, - {0x00B451, 0x00B46B, GBP_HNGL_LVT}, - {0x00B46C, 0x00B46C, GBP_HNGL_LV}, - {0x00B46D, 0x00B487, GBP_HNGL_LVT}, - {0x00B488, 0x00B488, GBP_HNGL_LV}, - {0x00B489, 0x00B4A3, GBP_HNGL_LVT}, - {0x00B4A4, 0x00B4A4, GBP_HNGL_LV}, - {0x00B4A5, 0x00B4BF, GBP_HNGL_LVT}, - {0x00B4C0, 0x00B4C0, GBP_HNGL_LV}, - {0x00B4C1, 0x00B4DB, GBP_HNGL_LVT}, - {0x00B4DC, 0x00B4DC, GBP_HNGL_LV}, - {0x00B4DD, 0x00B4F7, GBP_HNGL_LVT}, - {0x00B4F8, 0x00B4F8, GBP_HNGL_LV}, - {0x00B4F9, 0x00B513, GBP_HNGL_LVT}, - {0x00B514, 0x00B514, GBP_HNGL_LV}, - {0x00B515, 0x00B52F, GBP_HNGL_LVT}, - {0x00B530, 0x00B530, GBP_HNGL_LV}, - {0x00B531, 0x00B54B, GBP_HNGL_LVT}, - {0x00B54C, 0x00B54C, GBP_HNGL_LV}, - {0x00B54D, 0x00B567, GBP_HNGL_LVT}, - {0x00B568, 0x00B568, GBP_HNGL_LV}, - {0x00B569, 0x00B583, GBP_HNGL_LVT}, - {0x00B584, 0x00B584, GBP_HNGL_LV}, - {0x00B585, 0x00B59F, GBP_HNGL_LVT}, - {0x00B5A0, 0x00B5A0, GBP_HNGL_LV}, - {0x00B5A1, 0x00B5BB, GBP_HNGL_LVT}, - {0x00B5BC, 0x00B5BC, GBP_HNGL_LV}, - {0x00B5BD, 0x00B5D7, GBP_HNGL_LVT}, - {0x00B5D8, 0x00B5D8, GBP_HNGL_LV}, - {0x00B5D9, 0x00B5F3, GBP_HNGL_LVT}, - {0x00B5F4, 0x00B5F4, GBP_HNGL_LV}, - {0x00B5F5, 0x00B60F, GBP_HNGL_LVT}, - {0x00B610, 0x00B610, GBP_HNGL_LV}, - {0x00B611, 0x00B62B, GBP_HNGL_LVT}, - {0x00B62C, 0x00B62C, GBP_HNGL_LV}, - {0x00B62D, 0x00B647, GBP_HNGL_LVT}, - {0x00B648, 0x00B648, GBP_HNGL_LV}, - {0x00B649, 0x00B663, GBP_HNGL_LVT}, - {0x00B664, 0x00B664, GBP_HNGL_LV}, - {0x00B665, 0x00B67F, GBP_HNGL_LVT}, - {0x00B680, 0x00B680, GBP_HNGL_LV}, - {0x00B681, 0x00B69B, GBP_HNGL_LVT}, - {0x00B69C, 0x00B69C, GBP_HNGL_LV}, - {0x00B69D, 0x00B6B7, GBP_HNGL_LVT}, - {0x00B6B8, 0x00B6B8, GBP_HNGL_LV}, - {0x00B6B9, 0x00B6D3, GBP_HNGL_LVT}, - {0x00B6D4, 0x00B6D4, GBP_HNGL_LV}, - {0x00B6D5, 0x00B6EF, GBP_HNGL_LVT}, - {0x00B6F0, 0x00B6F0, GBP_HNGL_LV}, - {0x00B6F1, 0x00B70B, GBP_HNGL_LVT}, - {0x00B70C, 0x00B70C, GBP_HNGL_LV}, - {0x00B70D, 0x00B727, GBP_HNGL_LVT}, - {0x00B728, 0x00B728, GBP_HNGL_LV}, - {0x00B729, 0x00B743, GBP_HNGL_LVT}, - {0x00B744, 0x00B744, GBP_HNGL_LV}, - {0x00B745, 0x00B75F, GBP_HNGL_LVT}, - {0x00B760, 0x00B760, GBP_HNGL_LV}, - {0x00B761, 0x00B77B, GBP_HNGL_LVT}, - {0x00B77C, 0x00B77C, GBP_HNGL_LV}, - {0x00B77D, 0x00B797, GBP_HNGL_LVT}, - {0x00B798, 0x00B798, GBP_HNGL_LV}, - {0x00B799, 0x00B7B3, GBP_HNGL_LVT}, - {0x00B7B4, 0x00B7B4, GBP_HNGL_LV}, - {0x00B7B5, 0x00B7CF, GBP_HNGL_LVT}, - {0x00B7D0, 0x00B7D0, GBP_HNGL_LV}, - {0x00B7D1, 0x00B7EB, GBP_HNGL_LVT}, - {0x00B7EC, 0x00B7EC, GBP_HNGL_LV}, - {0x00B7ED, 0x00B807, GBP_HNGL_LVT}, - {0x00B808, 0x00B808, GBP_HNGL_LV}, - {0x00B809, 0x00B823, GBP_HNGL_LVT}, - {0x00B824, 0x00B824, GBP_HNGL_LV}, - {0x00B825, 0x00B83F, GBP_HNGL_LVT}, - {0x00B840, 0x00B840, GBP_HNGL_LV}, - {0x00B841, 0x00B85B, GBP_HNGL_LVT}, - {0x00B85C, 0x00B85C, GBP_HNGL_LV}, - {0x00B85D, 0x00B877, GBP_HNGL_LVT}, - {0x00B878, 0x00B878, GBP_HNGL_LV}, - {0x00B879, 0x00B893, GBP_HNGL_LVT}, - {0x00B894, 0x00B894, GBP_HNGL_LV}, - {0x00B895, 0x00B8AF, GBP_HNGL_LVT}, - {0x00B8B0, 0x00B8B0, GBP_HNGL_LV}, - {0x00B8B1, 0x00B8CB, GBP_HNGL_LVT}, - {0x00B8CC, 0x00B8CC, GBP_HNGL_LV}, - {0x00B8CD, 0x00B8E7, GBP_HNGL_LVT}, - {0x00B8E8, 0x00B8E8, GBP_HNGL_LV}, - {0x00B8E9, 0x00B903, GBP_HNGL_LVT}, - {0x00B904, 0x00B904, GBP_HNGL_LV}, - {0x00B905, 0x00B91F, GBP_HNGL_LVT}, - {0x00B920, 0x00B920, GBP_HNGL_LV}, - {0x00B921, 0x00B93B, GBP_HNGL_LVT}, - {0x00B93C, 0x00B93C, GBP_HNGL_LV}, - {0x00B93D, 0x00B957, GBP_HNGL_LVT}, - {0x00B958, 0x00B958, GBP_HNGL_LV}, - {0x00B959, 0x00B973, GBP_HNGL_LVT}, - {0x00B974, 0x00B974, GBP_HNGL_LV}, - {0x00B975, 0x00B98F, GBP_HNGL_LVT}, - {0x00B990, 0x00B990, GBP_HNGL_LV}, - {0x00B991, 0x00B9AB, GBP_HNGL_LVT}, - {0x00B9AC, 0x00B9AC, GBP_HNGL_LV}, - {0x00B9AD, 0x00B9C7, GBP_HNGL_LVT}, - {0x00B9C8, 0x00B9C8, GBP_HNGL_LV}, - {0x00B9C9, 0x00B9E3, GBP_HNGL_LVT}, - {0x00B9E4, 0x00B9E4, GBP_HNGL_LV}, - {0x00B9E5, 0x00B9FF, GBP_HNGL_LVT}, - {0x00BA00, 0x00BA00, GBP_HNGL_LV}, - {0x00BA01, 0x00BA1B, GBP_HNGL_LVT}, - {0x00BA1C, 0x00BA1C, GBP_HNGL_LV}, - {0x00BA1D, 0x00BA37, GBP_HNGL_LVT}, - {0x00BA38, 0x00BA38, GBP_HNGL_LV}, - {0x00BA39, 0x00BA53, GBP_HNGL_LVT}, - {0x00BA54, 0x00BA54, GBP_HNGL_LV}, - {0x00BA55, 0x00BA6F, GBP_HNGL_LVT}, - {0x00BA70, 0x00BA70, GBP_HNGL_LV}, - {0x00BA71, 0x00BA8B, GBP_HNGL_LVT}, - {0x00BA8C, 0x00BA8C, GBP_HNGL_LV}, - {0x00BA8D, 0x00BAA7, GBP_HNGL_LVT}, - {0x00BAA8, 0x00BAA8, GBP_HNGL_LV}, - {0x00BAA9, 0x00BAC3, GBP_HNGL_LVT}, - {0x00BAC4, 0x00BAC4, GBP_HNGL_LV}, - {0x00BAC5, 0x00BADF, GBP_HNGL_LVT}, - {0x00BAE0, 0x00BAE0, GBP_HNGL_LV}, - {0x00BAE1, 0x00BAFB, GBP_HNGL_LVT}, - {0x00BAFC, 0x00BAFC, GBP_HNGL_LV}, - {0x00BAFD, 0x00BB17, GBP_HNGL_LVT}, - {0x00BB18, 0x00BB18, GBP_HNGL_LV}, - {0x00BB19, 0x00BB33, GBP_HNGL_LVT}, - {0x00BB34, 0x00BB34, GBP_HNGL_LV}, - {0x00BB35, 0x00BB4F, GBP_HNGL_LVT}, - {0x00BB50, 0x00BB50, GBP_HNGL_LV}, - {0x00BB51, 0x00BB6B, GBP_HNGL_LVT}, - {0x00BB6C, 0x00BB6C, GBP_HNGL_LV}, - {0x00BB6D, 0x00BB87, GBP_HNGL_LVT}, - {0x00BB88, 0x00BB88, GBP_HNGL_LV}, - {0x00BB89, 0x00BBA3, GBP_HNGL_LVT}, - {0x00BBA4, 0x00BBA4, GBP_HNGL_LV}, - {0x00BBA5, 0x00BBBF, GBP_HNGL_LVT}, - {0x00BBC0, 0x00BBC0, GBP_HNGL_LV}, - {0x00BBC1, 0x00BBDB, GBP_HNGL_LVT}, - {0x00BBDC, 0x00BBDC, GBP_HNGL_LV}, - {0x00BBDD, 0x00BBF7, GBP_HNGL_LVT}, - {0x00BBF8, 0x00BBF8, GBP_HNGL_LV}, - {0x00BBF9, 0x00BC13, GBP_HNGL_LVT}, - {0x00BC14, 0x00BC14, GBP_HNGL_LV}, - {0x00BC15, 0x00BC2F, GBP_HNGL_LVT}, - {0x00BC30, 0x00BC30, GBP_HNGL_LV}, - {0x00BC31, 0x00BC4B, GBP_HNGL_LVT}, - {0x00BC4C, 0x00BC4C, GBP_HNGL_LV}, - {0x00BC4D, 0x00BC67, GBP_HNGL_LVT}, - {0x00BC68, 0x00BC68, GBP_HNGL_LV}, - {0x00BC69, 0x00BC83, GBP_HNGL_LVT}, - {0x00BC84, 0x00BC84, GBP_HNGL_LV}, - {0x00BC85, 0x00BC9F, GBP_HNGL_LVT}, - {0x00BCA0, 0x00BCA0, GBP_HNGL_LV}, - {0x00BCA1, 0x00BCBB, GBP_HNGL_LVT}, - {0x00BCBC, 0x00BCBC, GBP_HNGL_LV}, - {0x00BCBD, 0x00BCD7, GBP_HNGL_LVT}, - {0x00BCD8, 0x00BCD8, GBP_HNGL_LV}, - {0x00BCD9, 0x00BCF3, GBP_HNGL_LVT}, - {0x00BCF4, 0x00BCF4, GBP_HNGL_LV}, - {0x00BCF5, 0x00BD0F, GBP_HNGL_LVT}, - {0x00BD10, 0x00BD10, GBP_HNGL_LV}, - {0x00BD11, 0x00BD2B, GBP_HNGL_LVT}, - {0x00BD2C, 0x00BD2C, GBP_HNGL_LV}, - {0x00BD2D, 0x00BD47, GBP_HNGL_LVT}, - {0x00BD48, 0x00BD48, GBP_HNGL_LV}, - {0x00BD49, 0x00BD63, GBP_HNGL_LVT}, - {0x00BD64, 0x00BD64, GBP_HNGL_LV}, - {0x00BD65, 0x00BD7F, GBP_HNGL_LVT}, - {0x00BD80, 0x00BD80, GBP_HNGL_LV}, - {0x00BD81, 0x00BD9B, GBP_HNGL_LVT}, - {0x00BD9C, 0x00BD9C, GBP_HNGL_LV}, - {0x00BD9D, 0x00BDB7, GBP_HNGL_LVT}, - {0x00BDB8, 0x00BDB8, GBP_HNGL_LV}, - {0x00BDB9, 0x00BDD3, GBP_HNGL_LVT}, - {0x00BDD4, 0x00BDD4, GBP_HNGL_LV}, - {0x00BDD5, 0x00BDEF, GBP_HNGL_LVT}, - {0x00BDF0, 0x00BDF0, GBP_HNGL_LV}, - {0x00BDF1, 0x00BE0B, GBP_HNGL_LVT}, - {0x00BE0C, 0x00BE0C, GBP_HNGL_LV}, - {0x00BE0D, 0x00BE27, GBP_HNGL_LVT}, - {0x00BE28, 0x00BE28, GBP_HNGL_LV}, - {0x00BE29, 0x00BE43, GBP_HNGL_LVT}, - {0x00BE44, 0x00BE44, GBP_HNGL_LV}, - {0x00BE45, 0x00BE5F, GBP_HNGL_LVT}, - {0x00BE60, 0x00BE60, GBP_HNGL_LV}, - {0x00BE61, 0x00BE7B, GBP_HNGL_LVT}, - {0x00BE7C, 0x00BE7C, GBP_HNGL_LV}, - {0x00BE7D, 0x00BE97, GBP_HNGL_LVT}, - {0x00BE98, 0x00BE98, GBP_HNGL_LV}, - {0x00BE99, 0x00BEB3, GBP_HNGL_LVT}, - {0x00BEB4, 0x00BEB4, GBP_HNGL_LV}, - {0x00BEB5, 0x00BECF, GBP_HNGL_LVT}, - {0x00BED0, 0x00BED0, GBP_HNGL_LV}, - {0x00BED1, 0x00BEEB, GBP_HNGL_LVT}, - {0x00BEEC, 0x00BEEC, GBP_HNGL_LV}, - {0x00BEED, 0x00BF07, GBP_HNGL_LVT}, - {0x00BF08, 0x00BF08, GBP_HNGL_LV}, - {0x00BF09, 0x00BF23, GBP_HNGL_LVT}, - {0x00BF24, 0x00BF24, GBP_HNGL_LV}, - {0x00BF25, 0x00BF3F, GBP_HNGL_LVT}, - {0x00BF40, 0x00BF40, GBP_HNGL_LV}, - {0x00BF41, 0x00BF5B, GBP_HNGL_LVT}, - {0x00BF5C, 0x00BF5C, GBP_HNGL_LV}, - {0x00BF5D, 0x00BF77, GBP_HNGL_LVT}, - {0x00BF78, 0x00BF78, GBP_HNGL_LV}, - {0x00BF79, 0x00BF93, GBP_HNGL_LVT}, - {0x00BF94, 0x00BF94, GBP_HNGL_LV}, - {0x00BF95, 0x00BFAF, GBP_HNGL_LVT}, - {0x00BFB0, 0x00BFB0, GBP_HNGL_LV}, - {0x00BFB1, 0x00BFCB, GBP_HNGL_LVT}, - {0x00BFCC, 0x00BFCC, GBP_HNGL_LV}, - {0x00BFCD, 0x00BFE7, GBP_HNGL_LVT}, - {0x00BFE8, 0x00BFE8, GBP_HNGL_LV}, - {0x00BFE9, 0x00C003, GBP_HNGL_LVT}, - {0x00C004, 0x00C004, GBP_HNGL_LV}, - {0x00C005, 0x00C01F, GBP_HNGL_LVT}, - {0x00C020, 0x00C020, GBP_HNGL_LV}, - {0x00C021, 0x00C03B, GBP_HNGL_LVT}, - {0x00C03C, 0x00C03C, GBP_HNGL_LV}, - {0x00C03D, 0x00C057, GBP_HNGL_LVT}, - {0x00C058, 0x00C058, GBP_HNGL_LV}, - {0x00C059, 0x00C073, GBP_HNGL_LVT}, - {0x00C074, 0x00C074, GBP_HNGL_LV}, - {0x00C075, 0x00C08F, GBP_HNGL_LVT}, - {0x00C090, 0x00C090, GBP_HNGL_LV}, - {0x00C091, 0x00C0AB, GBP_HNGL_LVT}, - {0x00C0AC, 0x00C0AC, GBP_HNGL_LV}, - {0x00C0AD, 0x00C0C7, GBP_HNGL_LVT}, - {0x00C0C8, 0x00C0C8, GBP_HNGL_LV}, - {0x00C0C9, 0x00C0E3, GBP_HNGL_LVT}, - {0x00C0E4, 0x00C0E4, GBP_HNGL_LV}, - {0x00C0E5, 0x00C0FF, GBP_HNGL_LVT}, - {0x00C100, 0x00C100, GBP_HNGL_LV}, - {0x00C101, 0x00C11B, GBP_HNGL_LVT}, - {0x00C11C, 0x00C11C, GBP_HNGL_LV}, - {0x00C11D, 0x00C137, GBP_HNGL_LVT}, - {0x00C138, 0x00C138, GBP_HNGL_LV}, - {0x00C139, 0x00C153, GBP_HNGL_LVT}, - {0x00C154, 0x00C154, GBP_HNGL_LV}, - {0x00C155, 0x00C16F, GBP_HNGL_LVT}, - {0x00C170, 0x00C170, GBP_HNGL_LV}, - {0x00C171, 0x00C18B, GBP_HNGL_LVT}, - {0x00C18C, 0x00C18C, GBP_HNGL_LV}, - {0x00C18D, 0x00C1A7, GBP_HNGL_LVT}, - {0x00C1A8, 0x00C1A8, GBP_HNGL_LV}, - {0x00C1A9, 0x00C1C3, GBP_HNGL_LVT}, - {0x00C1C4, 0x00C1C4, GBP_HNGL_LV}, - {0x00C1C5, 0x00C1DF, GBP_HNGL_LVT}, - {0x00C1E0, 0x00C1E0, GBP_HNGL_LV}, - {0x00C1E1, 0x00C1FB, GBP_HNGL_LVT}, - {0x00C1FC, 0x00C1FC, GBP_HNGL_LV}, - {0x00C1FD, 0x00C217, GBP_HNGL_LVT}, - {0x00C218, 0x00C218, GBP_HNGL_LV}, - {0x00C219, 0x00C233, GBP_HNGL_LVT}, - {0x00C234, 0x00C234, GBP_HNGL_LV}, - {0x00C235, 0x00C24F, GBP_HNGL_LVT}, - {0x00C250, 0x00C250, GBP_HNGL_LV}, - {0x00C251, 0x00C26B, GBP_HNGL_LVT}, - {0x00C26C, 0x00C26C, GBP_HNGL_LV}, - {0x00C26D, 0x00C287, GBP_HNGL_LVT}, - {0x00C288, 0x00C288, GBP_HNGL_LV}, - {0x00C289, 0x00C2A3, GBP_HNGL_LVT}, - {0x00C2A4, 0x00C2A4, GBP_HNGL_LV}, - {0x00C2A5, 0x00C2BF, GBP_HNGL_LVT}, - {0x00C2C0, 0x00C2C0, GBP_HNGL_LV}, - {0x00C2C1, 0x00C2DB, GBP_HNGL_LVT}, - {0x00C2DC, 0x00C2DC, GBP_HNGL_LV}, - {0x00C2DD, 0x00C2F7, GBP_HNGL_LVT}, - {0x00C2F8, 0x00C2F8, GBP_HNGL_LV}, - {0x00C2F9, 0x00C313, GBP_HNGL_LVT}, - {0x00C314, 0x00C314, GBP_HNGL_LV}, - {0x00C315, 0x00C32F, GBP_HNGL_LVT}, - {0x00C330, 0x00C330, GBP_HNGL_LV}, - {0x00C331, 0x00C34B, GBP_HNGL_LVT}, - {0x00C34C, 0x00C34C, GBP_HNGL_LV}, - {0x00C34D, 0x00C367, GBP_HNGL_LVT}, - {0x00C368, 0x00C368, GBP_HNGL_LV}, - {0x00C369, 0x00C383, GBP_HNGL_LVT}, - {0x00C384, 0x00C384, GBP_HNGL_LV}, - {0x00C385, 0x00C39F, GBP_HNGL_LVT}, - {0x00C3A0, 0x00C3A0, GBP_HNGL_LV}, - {0x00C3A1, 0x00C3BB, GBP_HNGL_LVT}, - {0x00C3BC, 0x00C3BC, GBP_HNGL_LV}, - {0x00C3BD, 0x00C3D7, GBP_HNGL_LVT}, - {0x00C3D8, 0x00C3D8, GBP_HNGL_LV}, - {0x00C3D9, 0x00C3F3, GBP_HNGL_LVT}, - {0x00C3F4, 0x00C3F4, GBP_HNGL_LV}, - {0x00C3F5, 0x00C40F, GBP_HNGL_LVT}, - {0x00C410, 0x00C410, GBP_HNGL_LV}, - {0x00C411, 0x00C42B, GBP_HNGL_LVT}, - {0x00C42C, 0x00C42C, GBP_HNGL_LV}, - {0x00C42D, 0x00C447, GBP_HNGL_LVT}, - {0x00C448, 0x00C448, GBP_HNGL_LV}, - {0x00C449, 0x00C463, GBP_HNGL_LVT}, - {0x00C464, 0x00C464, GBP_HNGL_LV}, - {0x00C465, 0x00C47F, GBP_HNGL_LVT}, - {0x00C480, 0x00C480, GBP_HNGL_LV}, - {0x00C481, 0x00C49B, GBP_HNGL_LVT}, - {0x00C49C, 0x00C49C, GBP_HNGL_LV}, - {0x00C49D, 0x00C4B7, GBP_HNGL_LVT}, - {0x00C4B8, 0x00C4B8, GBP_HNGL_LV}, - {0x00C4B9, 0x00C4D3, GBP_HNGL_LVT}, - {0x00C4D4, 0x00C4D4, GBP_HNGL_LV}, - {0x00C4D5, 0x00C4EF, GBP_HNGL_LVT}, - {0x00C4F0, 0x00C4F0, GBP_HNGL_LV}, - {0x00C4F1, 0x00C50B, GBP_HNGL_LVT}, - {0x00C50C, 0x00C50C, GBP_HNGL_LV}, - {0x00C50D, 0x00C527, GBP_HNGL_LVT}, - {0x00C528, 0x00C528, GBP_HNGL_LV}, - {0x00C529, 0x00C543, GBP_HNGL_LVT}, - {0x00C544, 0x00C544, GBP_HNGL_LV}, - {0x00C545, 0x00C55F, GBP_HNGL_LVT}, - {0x00C560, 0x00C560, GBP_HNGL_LV}, - {0x00C561, 0x00C57B, GBP_HNGL_LVT}, - {0x00C57C, 0x00C57C, GBP_HNGL_LV}, - {0x00C57D, 0x00C597, GBP_HNGL_LVT}, - {0x00C598, 0x00C598, GBP_HNGL_LV}, - {0x00C599, 0x00C5B3, GBP_HNGL_LVT}, - {0x00C5B4, 0x00C5B4, GBP_HNGL_LV}, - {0x00C5B5, 0x00C5CF, GBP_HNGL_LVT}, - {0x00C5D0, 0x00C5D0, GBP_HNGL_LV}, - {0x00C5D1, 0x00C5EB, GBP_HNGL_LVT}, - {0x00C5EC, 0x00C5EC, GBP_HNGL_LV}, - {0x00C5ED, 0x00C607, GBP_HNGL_LVT}, - {0x00C608, 0x00C608, GBP_HNGL_LV}, - {0x00C609, 0x00C623, GBP_HNGL_LVT}, - {0x00C624, 0x00C624, GBP_HNGL_LV}, - {0x00C625, 0x00C63F, GBP_HNGL_LVT}, - {0x00C640, 0x00C640, GBP_HNGL_LV}, - {0x00C641, 0x00C65B, GBP_HNGL_LVT}, - {0x00C65C, 0x00C65C, GBP_HNGL_LV}, - {0x00C65D, 0x00C677, GBP_HNGL_LVT}, - {0x00C678, 0x00C678, GBP_HNGL_LV}, - {0x00C679, 0x00C693, GBP_HNGL_LVT}, - {0x00C694, 0x00C694, GBP_HNGL_LV}, - {0x00C695, 0x00C6AF, GBP_HNGL_LVT}, - {0x00C6B0, 0x00C6B0, GBP_HNGL_LV}, - {0x00C6B1, 0x00C6CB, GBP_HNGL_LVT}, - {0x00C6CC, 0x00C6CC, GBP_HNGL_LV}, - {0x00C6CD, 0x00C6E7, GBP_HNGL_LVT}, - {0x00C6E8, 0x00C6E8, GBP_HNGL_LV}, - {0x00C6E9, 0x00C703, GBP_HNGL_LVT}, - {0x00C704, 0x00C704, GBP_HNGL_LV}, - {0x00C705, 0x00C71F, GBP_HNGL_LVT}, - {0x00C720, 0x00C720, GBP_HNGL_LV}, - {0x00C721, 0x00C73B, GBP_HNGL_LVT}, - {0x00C73C, 0x00C73C, GBP_HNGL_LV}, - {0x00C73D, 0x00C757, GBP_HNGL_LVT}, - {0x00C758, 0x00C758, GBP_HNGL_LV}, - {0x00C759, 0x00C773, GBP_HNGL_LVT}, - {0x00C774, 0x00C774, GBP_HNGL_LV}, - {0x00C775, 0x00C78F, GBP_HNGL_LVT}, - {0x00C790, 0x00C790, GBP_HNGL_LV}, - {0x00C791, 0x00C7AB, GBP_HNGL_LVT}, - {0x00C7AC, 0x00C7AC, GBP_HNGL_LV}, - {0x00C7AD, 0x00C7C7, GBP_HNGL_LVT}, - {0x00C7C8, 0x00C7C8, GBP_HNGL_LV}, - {0x00C7C9, 0x00C7E3, GBP_HNGL_LVT}, - {0x00C7E4, 0x00C7E4, GBP_HNGL_LV}, - {0x00C7E5, 0x00C7FF, GBP_HNGL_LVT}, - {0x00C800, 0x00C800, GBP_HNGL_LV}, - {0x00C801, 0x00C81B, GBP_HNGL_LVT}, - {0x00C81C, 0x00C81C, GBP_HNGL_LV}, - {0x00C81D, 0x00C837, GBP_HNGL_LVT}, - {0x00C838, 0x00C838, GBP_HNGL_LV}, - {0x00C839, 0x00C853, GBP_HNGL_LVT}, - {0x00C854, 0x00C854, GBP_HNGL_LV}, - {0x00C855, 0x00C86F, GBP_HNGL_LVT}, - {0x00C870, 0x00C870, GBP_HNGL_LV}, - {0x00C871, 0x00C88B, GBP_HNGL_LVT}, - {0x00C88C, 0x00C88C, GBP_HNGL_LV}, - {0x00C88D, 0x00C8A7, GBP_HNGL_LVT}, - {0x00C8A8, 0x00C8A8, GBP_HNGL_LV}, - {0x00C8A9, 0x00C8C3, GBP_HNGL_LVT}, - {0x00C8C4, 0x00C8C4, GBP_HNGL_LV}, - {0x00C8C5, 0x00C8DF, GBP_HNGL_LVT}, - {0x00C8E0, 0x00C8E0, GBP_HNGL_LV}, - {0x00C8E1, 0x00C8FB, GBP_HNGL_LVT}, - {0x00C8FC, 0x00C8FC, GBP_HNGL_LV}, - {0x00C8FD, 0x00C917, GBP_HNGL_LVT}, - {0x00C918, 0x00C918, GBP_HNGL_LV}, - {0x00C919, 0x00C933, GBP_HNGL_LVT}, - {0x00C934, 0x00C934, GBP_HNGL_LV}, - {0x00C935, 0x00C94F, GBP_HNGL_LVT}, - {0x00C950, 0x00C950, GBP_HNGL_LV}, - {0x00C951, 0x00C96B, GBP_HNGL_LVT}, - {0x00C96C, 0x00C96C, GBP_HNGL_LV}, - {0x00C96D, 0x00C987, GBP_HNGL_LVT}, - {0x00C988, 0x00C988, GBP_HNGL_LV}, - {0x00C989, 0x00C9A3, GBP_HNGL_LVT}, - {0x00C9A4, 0x00C9A4, GBP_HNGL_LV}, - {0x00C9A5, 0x00C9BF, GBP_HNGL_LVT}, - {0x00C9C0, 0x00C9C0, GBP_HNGL_LV}, - {0x00C9C1, 0x00C9DB, GBP_HNGL_LVT}, - {0x00C9DC, 0x00C9DC, GBP_HNGL_LV}, - {0x00C9DD, 0x00C9F7, GBP_HNGL_LVT}, - {0x00C9F8, 0x00C9F8, GBP_HNGL_LV}, - {0x00C9F9, 0x00CA13, GBP_HNGL_LVT}, - {0x00CA14, 0x00CA14, GBP_HNGL_LV}, - {0x00CA15, 0x00CA2F, GBP_HNGL_LVT}, - {0x00CA30, 0x00CA30, GBP_HNGL_LV}, - {0x00CA31, 0x00CA4B, GBP_HNGL_LVT}, - {0x00CA4C, 0x00CA4C, GBP_HNGL_LV}, - {0x00CA4D, 0x00CA67, GBP_HNGL_LVT}, - {0x00CA68, 0x00CA68, GBP_HNGL_LV}, - {0x00CA69, 0x00CA83, GBP_HNGL_LVT}, - {0x00CA84, 0x00CA84, GBP_HNGL_LV}, - {0x00CA85, 0x00CA9F, GBP_HNGL_LVT}, - {0x00CAA0, 0x00CAA0, GBP_HNGL_LV}, - {0x00CAA1, 0x00CABB, GBP_HNGL_LVT}, - {0x00CABC, 0x00CABC, GBP_HNGL_LV}, - {0x00CABD, 0x00CAD7, GBP_HNGL_LVT}, - {0x00CAD8, 0x00CAD8, GBP_HNGL_LV}, - {0x00CAD9, 0x00CAF3, GBP_HNGL_LVT}, - {0x00CAF4, 0x00CAF4, GBP_HNGL_LV}, - {0x00CAF5, 0x00CB0F, GBP_HNGL_LVT}, - {0x00CB10, 0x00CB10, GBP_HNGL_LV}, - {0x00CB11, 0x00CB2B, GBP_HNGL_LVT}, - {0x00CB2C, 0x00CB2C, GBP_HNGL_LV}, - {0x00CB2D, 0x00CB47, GBP_HNGL_LVT}, - {0x00CB48, 0x00CB48, GBP_HNGL_LV}, - {0x00CB49, 0x00CB63, GBP_HNGL_LVT}, - {0x00CB64, 0x00CB64, GBP_HNGL_LV}, - {0x00CB65, 0x00CB7F, GBP_HNGL_LVT}, - {0x00CB80, 0x00CB80, GBP_HNGL_LV}, - {0x00CB81, 0x00CB9B, GBP_HNGL_LVT}, - {0x00CB9C, 0x00CB9C, GBP_HNGL_LV}, - {0x00CB9D, 0x00CBB7, GBP_HNGL_LVT}, - {0x00CBB8, 0x00CBB8, GBP_HNGL_LV}, - {0x00CBB9, 0x00CBD3, GBP_HNGL_LVT}, - {0x00CBD4, 0x00CBD4, GBP_HNGL_LV}, - {0x00CBD5, 0x00CBEF, GBP_HNGL_LVT}, - {0x00CBF0, 0x00CBF0, GBP_HNGL_LV}, - {0x00CBF1, 0x00CC0B, GBP_HNGL_LVT}, - {0x00CC0C, 0x00CC0C, GBP_HNGL_LV}, - {0x00CC0D, 0x00CC27, GBP_HNGL_LVT}, - {0x00CC28, 0x00CC28, GBP_HNGL_LV}, - {0x00CC29, 0x00CC43, GBP_HNGL_LVT}, - {0x00CC44, 0x00CC44, GBP_HNGL_LV}, - {0x00CC45, 0x00CC5F, GBP_HNGL_LVT}, - {0x00CC60, 0x00CC60, GBP_HNGL_LV}, - {0x00CC61, 0x00CC7B, GBP_HNGL_LVT}, - {0x00CC7C, 0x00CC7C, GBP_HNGL_LV}, - {0x00CC7D, 0x00CC97, GBP_HNGL_LVT}, - {0x00CC98, 0x00CC98, GBP_HNGL_LV}, - {0x00CC99, 0x00CCB3, GBP_HNGL_LVT}, - {0x00CCB4, 0x00CCB4, GBP_HNGL_LV}, - {0x00CCB5, 0x00CCCF, GBP_HNGL_LVT}, - {0x00CCD0, 0x00CCD0, GBP_HNGL_LV}, - {0x00CCD1, 0x00CCEB, GBP_HNGL_LVT}, - {0x00CCEC, 0x00CCEC, GBP_HNGL_LV}, - {0x00CCED, 0x00CD07, GBP_HNGL_LVT}, - {0x00CD08, 0x00CD08, GBP_HNGL_LV}, - {0x00CD09, 0x00CD23, GBP_HNGL_LVT}, - {0x00CD24, 0x00CD24, GBP_HNGL_LV}, - {0x00CD25, 0x00CD3F, GBP_HNGL_LVT}, - {0x00CD40, 0x00CD40, GBP_HNGL_LV}, - {0x00CD41, 0x00CD5B, GBP_HNGL_LVT}, - {0x00CD5C, 0x00CD5C, GBP_HNGL_LV}, - {0x00CD5D, 0x00CD77, GBP_HNGL_LVT}, - {0x00CD78, 0x00CD78, GBP_HNGL_LV}, - {0x00CD79, 0x00CD93, GBP_HNGL_LVT}, - {0x00CD94, 0x00CD94, GBP_HNGL_LV}, - {0x00CD95, 0x00CDAF, GBP_HNGL_LVT}, - {0x00CDB0, 0x00CDB0, GBP_HNGL_LV}, - {0x00CDB1, 0x00CDCB, GBP_HNGL_LVT}, - {0x00CDCC, 0x00CDCC, GBP_HNGL_LV}, - {0x00CDCD, 0x00CDE7, GBP_HNGL_LVT}, - {0x00CDE8, 0x00CDE8, GBP_HNGL_LV}, - {0x00CDE9, 0x00CE03, GBP_HNGL_LVT}, - {0x00CE04, 0x00CE04, GBP_HNGL_LV}, - {0x00CE05, 0x00CE1F, GBP_HNGL_LVT}, - {0x00CE20, 0x00CE20, GBP_HNGL_LV}, - {0x00CE21, 0x00CE3B, GBP_HNGL_LVT}, - {0x00CE3C, 0x00CE3C, GBP_HNGL_LV}, - {0x00CE3D, 0x00CE57, GBP_HNGL_LVT}, - {0x00CE58, 0x00CE58, GBP_HNGL_LV}, - {0x00CE59, 0x00CE73, GBP_HNGL_LVT}, - {0x00CE74, 0x00CE74, GBP_HNGL_LV}, - {0x00CE75, 0x00CE8F, GBP_HNGL_LVT}, - {0x00CE90, 0x00CE90, GBP_HNGL_LV}, - {0x00CE91, 0x00CEAB, GBP_HNGL_LVT}, - {0x00CEAC, 0x00CEAC, GBP_HNGL_LV}, - {0x00CEAD, 0x00CEC7, GBP_HNGL_LVT}, - {0x00CEC8, 0x00CEC8, GBP_HNGL_LV}, - {0x00CEC9, 0x00CEE3, GBP_HNGL_LVT}, - {0x00CEE4, 0x00CEE4, GBP_HNGL_LV}, - {0x00CEE5, 0x00CEFF, GBP_HNGL_LVT}, - {0x00CF00, 0x00CF00, GBP_HNGL_LV}, - {0x00CF01, 0x00CF1B, GBP_HNGL_LVT}, - {0x00CF1C, 0x00CF1C, GBP_HNGL_LV}, - {0x00CF1D, 0x00CF37, GBP_HNGL_LVT}, - {0x00CF38, 0x00CF38, GBP_HNGL_LV}, - {0x00CF39, 0x00CF53, GBP_HNGL_LVT}, - {0x00CF54, 0x00CF54, GBP_HNGL_LV}, - {0x00CF55, 0x00CF6F, GBP_HNGL_LVT}, - {0x00CF70, 0x00CF70, GBP_HNGL_LV}, - {0x00CF71, 0x00CF8B, GBP_HNGL_LVT}, - {0x00CF8C, 0x00CF8C, GBP_HNGL_LV}, - {0x00CF8D, 0x00CFA7, GBP_HNGL_LVT}, - {0x00CFA8, 0x00CFA8, GBP_HNGL_LV}, - {0x00CFA9, 0x00CFC3, GBP_HNGL_LVT}, - {0x00CFC4, 0x00CFC4, GBP_HNGL_LV}, - {0x00CFC5, 0x00CFDF, GBP_HNGL_LVT}, - {0x00CFE0, 0x00CFE0, GBP_HNGL_LV}, - {0x00CFE1, 0x00CFFB, GBP_HNGL_LVT}, - {0x00CFFC, 0x00CFFC, GBP_HNGL_LV}, - {0x00CFFD, 0x00D017, GBP_HNGL_LVT}, - {0x00D018, 0x00D018, GBP_HNGL_LV}, - {0x00D019, 0x00D033, GBP_HNGL_LVT}, - {0x00D034, 0x00D034, GBP_HNGL_LV}, - {0x00D035, 0x00D04F, GBP_HNGL_LVT}, - {0x00D050, 0x00D050, GBP_HNGL_LV}, - {0x00D051, 0x00D06B, GBP_HNGL_LVT}, - {0x00D06C, 0x00D06C, GBP_HNGL_LV}, - {0x00D06D, 0x00D087, GBP_HNGL_LVT}, - {0x00D088, 0x00D088, GBP_HNGL_LV}, - {0x00D089, 0x00D0A3, GBP_HNGL_LVT}, - {0x00D0A4, 0x00D0A4, GBP_HNGL_LV}, - {0x00D0A5, 0x00D0BF, GBP_HNGL_LVT}, - {0x00D0C0, 0x00D0C0, GBP_HNGL_LV}, - {0x00D0C1, 0x00D0DB, GBP_HNGL_LVT}, - {0x00D0DC, 0x00D0DC, GBP_HNGL_LV}, - {0x00D0DD, 0x00D0F7, GBP_HNGL_LVT}, - {0x00D0F8, 0x00D0F8, GBP_HNGL_LV}, - {0x00D0F9, 0x00D113, GBP_HNGL_LVT}, - {0x00D114, 0x00D114, GBP_HNGL_LV}, - {0x00D115, 0x00D12F, GBP_HNGL_LVT}, - {0x00D130, 0x00D130, GBP_HNGL_LV}, - {0x00D131, 0x00D14B, GBP_HNGL_LVT}, - {0x00D14C, 0x00D14C, GBP_HNGL_LV}, - {0x00D14D, 0x00D167, GBP_HNGL_LVT}, - {0x00D168, 0x00D168, GBP_HNGL_LV}, - {0x00D169, 0x00D183, GBP_HNGL_LVT}, - {0x00D184, 0x00D184, GBP_HNGL_LV}, - {0x00D185, 0x00D19F, GBP_HNGL_LVT}, - {0x00D1A0, 0x00D1A0, GBP_HNGL_LV}, - {0x00D1A1, 0x00D1BB, GBP_HNGL_LVT}, - {0x00D1BC, 0x00D1BC, GBP_HNGL_LV}, - {0x00D1BD, 0x00D1D7, GBP_HNGL_LVT}, - {0x00D1D8, 0x00D1D8, GBP_HNGL_LV}, - {0x00D1D9, 0x00D1F3, GBP_HNGL_LVT}, - {0x00D1F4, 0x00D1F4, GBP_HNGL_LV}, - {0x00D1F5, 0x00D20F, GBP_HNGL_LVT}, - {0x00D210, 0x00D210, GBP_HNGL_LV}, - {0x00D211, 0x00D22B, GBP_HNGL_LVT}, - {0x00D22C, 0x00D22C, GBP_HNGL_LV}, - {0x00D22D, 0x00D247, GBP_HNGL_LVT}, - {0x00D248, 0x00D248, GBP_HNGL_LV}, - {0x00D249, 0x00D263, GBP_HNGL_LVT}, - {0x00D264, 0x00D264, GBP_HNGL_LV}, - {0x00D265, 0x00D27F, GBP_HNGL_LVT}, - {0x00D280, 0x00D280, GBP_HNGL_LV}, - {0x00D281, 0x00D29B, GBP_HNGL_LVT}, - {0x00D29C, 0x00D29C, GBP_HNGL_LV}, - {0x00D29D, 0x00D2B7, GBP_HNGL_LVT}, - {0x00D2B8, 0x00D2B8, GBP_HNGL_LV}, - {0x00D2B9, 0x00D2D3, GBP_HNGL_LVT}, - {0x00D2D4, 0x00D2D4, GBP_HNGL_LV}, - {0x00D2D5, 0x00D2EF, GBP_HNGL_LVT}, - {0x00D2F0, 0x00D2F0, GBP_HNGL_LV}, - {0x00D2F1, 0x00D30B, GBP_HNGL_LVT}, - {0x00D30C, 0x00D30C, GBP_HNGL_LV}, - {0x00D30D, 0x00D327, GBP_HNGL_LVT}, - {0x00D328, 0x00D328, GBP_HNGL_LV}, - {0x00D329, 0x00D343, GBP_HNGL_LVT}, - {0x00D344, 0x00D344, GBP_HNGL_LV}, - {0x00D345, 0x00D35F, GBP_HNGL_LVT}, - {0x00D360, 0x00D360, GBP_HNGL_LV}, - {0x00D361, 0x00D37B, GBP_HNGL_LVT}, - {0x00D37C, 0x00D37C, GBP_HNGL_LV}, - {0x00D37D, 0x00D397, GBP_HNGL_LVT}, - {0x00D398, 0x00D398, GBP_HNGL_LV}, - {0x00D399, 0x00D3B3, GBP_HNGL_LVT}, - {0x00D3B4, 0x00D3B4, GBP_HNGL_LV}, - {0x00D3B5, 0x00D3CF, GBP_HNGL_LVT}, - {0x00D3D0, 0x00D3D0, GBP_HNGL_LV}, - {0x00D3D1, 0x00D3EB, GBP_HNGL_LVT}, - {0x00D3EC, 0x00D3EC, GBP_HNGL_LV}, - {0x00D3ED, 0x00D407, GBP_HNGL_LVT}, - {0x00D408, 0x00D408, GBP_HNGL_LV}, - {0x00D409, 0x00D423, GBP_HNGL_LVT}, - {0x00D424, 0x00D424, GBP_HNGL_LV}, - {0x00D425, 0x00D43F, GBP_HNGL_LVT}, - {0x00D440, 0x00D440, GBP_HNGL_LV}, - {0x00D441, 0x00D45B, GBP_HNGL_LVT}, - {0x00D45C, 0x00D45C, GBP_HNGL_LV}, - {0x00D45D, 0x00D477, GBP_HNGL_LVT}, - {0x00D478, 0x00D478, GBP_HNGL_LV}, - {0x00D479, 0x00D493, GBP_HNGL_LVT}, - {0x00D494, 0x00D494, GBP_HNGL_LV}, - {0x00D495, 0x00D4AF, GBP_HNGL_LVT}, - {0x00D4B0, 0x00D4B0, GBP_HNGL_LV}, - {0x00D4B1, 0x00D4CB, GBP_HNGL_LVT}, - {0x00D4CC, 0x00D4CC, GBP_HNGL_LV}, - {0x00D4CD, 0x00D4E7, GBP_HNGL_LVT}, - {0x00D4E8, 0x00D4E8, GBP_HNGL_LV}, - {0x00D4E9, 0x00D503, GBP_HNGL_LVT}, - {0x00D504, 0x00D504, GBP_HNGL_LV}, - {0x00D505, 0x00D51F, GBP_HNGL_LVT}, - {0x00D520, 0x00D520, GBP_HNGL_LV}, - {0x00D521, 0x00D53B, GBP_HNGL_LVT}, - {0x00D53C, 0x00D53C, GBP_HNGL_LV}, - {0x00D53D, 0x00D557, GBP_HNGL_LVT}, - {0x00D558, 0x00D558, GBP_HNGL_LV}, - {0x00D559, 0x00D573, GBP_HNGL_LVT}, - {0x00D574, 0x00D574, GBP_HNGL_LV}, - {0x00D575, 0x00D58F, GBP_HNGL_LVT}, - {0x00D590, 0x00D590, GBP_HNGL_LV}, - {0x00D591, 0x00D5AB, GBP_HNGL_LVT}, - {0x00D5AC, 0x00D5AC, GBP_HNGL_LV}, - {0x00D5AD, 0x00D5C7, GBP_HNGL_LVT}, - {0x00D5C8, 0x00D5C8, GBP_HNGL_LV}, - {0x00D5C9, 0x00D5E3, GBP_HNGL_LVT}, - {0x00D5E4, 0x00D5E4, GBP_HNGL_LV}, - {0x00D5E5, 0x00D5FF, GBP_HNGL_LVT}, - {0x00D600, 0x00D600, GBP_HNGL_LV}, - {0x00D601, 0x00D61B, GBP_HNGL_LVT}, - {0x00D61C, 0x00D61C, GBP_HNGL_LV}, - {0x00D61D, 0x00D637, GBP_HNGL_LVT}, - {0x00D638, 0x00D638, GBP_HNGL_LV}, - {0x00D639, 0x00D653, GBP_HNGL_LVT}, - {0x00D654, 0x00D654, GBP_HNGL_LV}, - {0x00D655, 0x00D66F, GBP_HNGL_LVT}, - {0x00D670, 0x00D670, GBP_HNGL_LV}, - {0x00D671, 0x00D68B, GBP_HNGL_LVT}, - {0x00D68C, 0x00D68C, GBP_HNGL_LV}, - {0x00D68D, 0x00D6A7, GBP_HNGL_LVT}, - {0x00D6A8, 0x00D6A8, GBP_HNGL_LV}, - {0x00D6A9, 0x00D6C3, GBP_HNGL_LVT}, - {0x00D6C4, 0x00D6C4, GBP_HNGL_LV}, - {0x00D6C5, 0x00D6DF, GBP_HNGL_LVT}, - {0x00D6E0, 0x00D6E0, GBP_HNGL_LV}, - {0x00D6E1, 0x00D6FB, GBP_HNGL_LVT}, - {0x00D6FC, 0x00D6FC, GBP_HNGL_LV}, - {0x00D6FD, 0x00D717, GBP_HNGL_LVT}, - {0x00D718, 0x00D718, GBP_HNGL_LV}, - {0x00D719, 0x00D733, GBP_HNGL_LVT}, - {0x00D734, 0x00D734, GBP_HNGL_LV}, - {0x00D735, 0x00D74F, GBP_HNGL_LVT}, - {0x00D750, 0x00D750, GBP_HNGL_LV}, - {0x00D751, 0x00D76B, GBP_HNGL_LVT}, - {0x00D76C, 0x00D76C, GBP_HNGL_LV}, - {0x00D76D, 0x00D787, GBP_HNGL_LVT}, - {0x00D788, 0x00D788, GBP_HNGL_LV}, - {0x00D789, 0x00D7A3, GBP_HNGL_LVT}, - {0x00D7B0, 0x00D7C6, GBP_HNGL_V}, - {0x00D7CB, 0x00D7FB, GBP_HNGL_T}, - {0x00FB1E, 0x00FB1E, GBP_EXT | GBP_INDC_EXT}, - {0x00FE00, 0x00FE0F, GBP_EXT}, - {0x00FE20, 0x00FE2F, GBP_EXT | GBP_INDC_EXT}, - {0x00FEFF, 0x00FEFF, GBP_CTRL}, - {0x00FF9E, 0x00FF9F, GBP_EXT}, - {0x00FFF0, 0x00FFFB, GBP_CTRL}, - {0x0101FD, 0x0101FD, GBP_EXT | GBP_INDC_EXT}, - {0x0102E0, 0x0102E0, GBP_EXT | GBP_INDC_EXT}, - {0x010376, 0x01037A, GBP_EXT | GBP_INDC_EXT}, - {0x010A01, 0x010A03, GBP_EXT}, - {0x010A05, 0x010A06, GBP_EXT}, - {0x010A0C, 0x010A0C, GBP_EXT}, - {0x010A0D, 0x010A0D, GBP_EXT | GBP_INDC_EXT}, - {0x010A0E, 0x010A0E, GBP_EXT}, - {0x010A0F, 0x010A0F, GBP_EXT | GBP_INDC_EXT}, - {0x010A38, 0x010A3A, GBP_EXT | GBP_INDC_EXT}, - {0x010A3F, 0x010A3F, GBP_EXT | GBP_INDC_EXT}, - {0x010AE5, 0x010AE6, GBP_EXT | GBP_INDC_EXT}, - {0x010D24, 0x010D27, GBP_EXT | GBP_INDC_EXT}, - {0x010EAB, 0x010EAC, GBP_EXT | GBP_INDC_EXT}, - {0x010EFD, 0x010EFF, GBP_EXT | GBP_INDC_EXT}, - {0x010F46, 0x010F50, GBP_EXT | GBP_INDC_EXT}, - {0x010F82, 0x010F85, GBP_EXT | GBP_INDC_EXT}, - {0x011000, 0x011000, GBP_SM}, - {0x011001, 0x011001, GBP_EXT}, - {0x011002, 0x011002, GBP_SM}, - {0x011038, 0x011046, GBP_EXT}, - {0x011070, 0x011070, GBP_EXT | GBP_INDC_EXT}, - {0x011073, 0x011074, GBP_EXT}, - {0x01107F, 0x01107F, GBP_EXT | GBP_INDC_EXT}, - {0x011080, 0x011081, GBP_EXT}, - {0x011082, 0x011082, GBP_SM}, - {0x0110B0, 0x0110B2, GBP_SM}, - {0x0110B3, 0x0110B6, GBP_EXT}, - {0x0110B7, 0x0110B8, GBP_SM}, - {0x0110B9, 0x0110B9, GBP_EXT}, - {0x0110BA, 0x0110BA, GBP_EXT | GBP_INDC_EXT}, - {0x0110BD, 0x0110BD, GBP_PREP}, - {0x0110C2, 0x0110C2, GBP_EXT}, - {0x0110CD, 0x0110CD, GBP_PREP}, - {0x011100, 0x011102, GBP_EXT | GBP_INDC_EXT}, - {0x011127, 0x01112B, GBP_EXT}, - {0x01112C, 0x01112C, GBP_SM}, - {0x01112D, 0x011132, GBP_EXT}, - {0x011133, 0x011134, GBP_EXT | GBP_INDC_EXT}, - {0x011145, 0x011146, GBP_SM}, - {0x011173, 0x011173, GBP_EXT | GBP_INDC_EXT}, - {0x011180, 0x011181, GBP_EXT}, - {0x011182, 0x011182, GBP_SM}, - {0x0111B3, 0x0111B5, GBP_SM}, - {0x0111B6, 0x0111BE, GBP_EXT}, - {0x0111BF, 0x0111C0, GBP_SM}, - {0x0111C2, 0x0111C3, GBP_PREP}, - {0x0111C9, 0x0111C9, GBP_EXT}, - {0x0111CA, 0x0111CA, GBP_EXT | GBP_INDC_EXT}, - {0x0111CB, 0x0111CC, GBP_EXT}, - {0x0111CE, 0x0111CE, GBP_SM}, - {0x0111CF, 0x0111CF, GBP_EXT}, - {0x01122C, 0x01122E, GBP_SM}, - {0x01122F, 0x011231, GBP_EXT}, - {0x011232, 0x011233, GBP_SM}, - {0x011234, 0x011234, GBP_EXT}, - {0x011235, 0x011235, GBP_SM}, - {0x011236, 0x011236, GBP_EXT | GBP_INDC_EXT}, - {0x011237, 0x011237, GBP_EXT}, - {0x01123E, 0x01123E, GBP_EXT}, - {0x011241, 0x011241, GBP_EXT}, - {0x0112DF, 0x0112DF, GBP_EXT}, - {0x0112E0, 0x0112E2, GBP_SM}, - {0x0112E3, 0x0112E8, GBP_EXT}, - {0x0112E9, 0x0112EA, GBP_EXT | GBP_INDC_EXT}, - {0x011300, 0x011301, GBP_EXT}, - {0x011302, 0x011303, GBP_SM}, - {0x01133B, 0x01133C, GBP_EXT | GBP_INDC_EXT}, - {0x01133E, 0x01133E, GBP_EXT}, - {0x01133F, 0x01133F, GBP_SM}, - {0x011340, 0x011340, GBP_EXT}, - {0x011341, 0x011344, GBP_SM}, - {0x011347, 0x011348, GBP_SM}, - {0x01134B, 0x01134D, GBP_SM}, - {0x011357, 0x011357, GBP_EXT}, - {0x011362, 0x011363, GBP_SM}, - {0x011366, 0x01136C, GBP_EXT | GBP_INDC_EXT}, - {0x011370, 0x011374, GBP_EXT | GBP_INDC_EXT}, - {0x011435, 0x011437, GBP_SM}, - {0x011438, 0x01143F, GBP_EXT}, - {0x011440, 0x011441, GBP_SM}, - {0x011442, 0x011444, GBP_EXT}, - {0x011445, 0x011445, GBP_SM}, - {0x011446, 0x011446, GBP_EXT | GBP_INDC_EXT}, - {0x01145E, 0x01145E, GBP_EXT | GBP_INDC_EXT}, - {0x0114B0, 0x0114B0, GBP_EXT}, - {0x0114B1, 0x0114B2, GBP_SM}, - {0x0114B3, 0x0114B8, GBP_EXT}, - {0x0114B9, 0x0114B9, GBP_SM}, - {0x0114BA, 0x0114BA, GBP_EXT}, - {0x0114BB, 0x0114BC, GBP_SM}, - {0x0114BD, 0x0114BD, GBP_EXT}, - {0x0114BE, 0x0114BE, GBP_SM}, - {0x0114BF, 0x0114C0, GBP_EXT}, - {0x0114C1, 0x0114C1, GBP_SM}, - {0x0114C2, 0x0114C2, GBP_EXT}, - {0x0114C3, 0x0114C3, GBP_EXT | GBP_INDC_EXT}, - {0x0115AF, 0x0115AF, GBP_EXT}, - {0x0115B0, 0x0115B1, GBP_SM}, - {0x0115B2, 0x0115B5, GBP_EXT}, - {0x0115B8, 0x0115BB, GBP_SM}, - {0x0115BC, 0x0115BD, GBP_EXT}, - {0x0115BE, 0x0115BE, GBP_SM}, - {0x0115BF, 0x0115BF, GBP_EXT}, - {0x0115C0, 0x0115C0, GBP_EXT | GBP_INDC_EXT}, - {0x0115DC, 0x0115DD, GBP_EXT}, - {0x011630, 0x011632, GBP_SM}, - {0x011633, 0x01163A, GBP_EXT}, - {0x01163B, 0x01163C, GBP_SM}, - {0x01163D, 0x01163D, GBP_EXT}, - {0x01163E, 0x01163E, GBP_SM}, - {0x01163F, 0x011640, GBP_EXT}, - {0x0116AB, 0x0116AB, GBP_EXT}, - {0x0116AC, 0x0116AC, GBP_SM}, - {0x0116AD, 0x0116AD, GBP_EXT}, - {0x0116AE, 0x0116AF, GBP_SM}, - {0x0116B0, 0x0116B5, GBP_EXT}, - {0x0116B6, 0x0116B6, GBP_SM}, - {0x0116B7, 0x0116B7, GBP_EXT | GBP_INDC_EXT}, - {0x01171D, 0x01171F, GBP_EXT}, - {0x011722, 0x011725, GBP_EXT}, - {0x011726, 0x011726, GBP_SM}, - {0x011727, 0x01172A, GBP_EXT}, - {0x01172B, 0x01172B, GBP_EXT | GBP_INDC_EXT}, - {0x01182C, 0x01182E, GBP_SM}, - {0x01182F, 0x011837, GBP_EXT}, - {0x011838, 0x011838, GBP_SM}, - {0x011839, 0x011839, GBP_EXT}, - {0x01183A, 0x01183A, GBP_EXT | GBP_INDC_EXT}, - {0x011930, 0x011930, GBP_EXT}, - {0x011931, 0x011935, GBP_SM}, - {0x011937, 0x011938, GBP_SM}, - {0x01193B, 0x01193C, GBP_EXT}, - {0x01193D, 0x01193D, GBP_SM}, - {0x01193E, 0x01193E, GBP_EXT | GBP_INDC_EXT}, - {0x01193F, 0x01193F, GBP_PREP}, - {0x011940, 0x011940, GBP_SM}, - {0x011941, 0x011941, GBP_PREP}, - {0x011942, 0x011942, GBP_SM}, - {0x011943, 0x011943, GBP_EXT | GBP_INDC_EXT}, - {0x0119D1, 0x0119D3, GBP_SM}, - {0x0119D4, 0x0119D7, GBP_EXT}, - {0x0119DA, 0x0119DB, GBP_EXT}, - {0x0119DC, 0x0119DF, GBP_SM}, - {0x0119E0, 0x0119E0, GBP_EXT}, - {0x0119E4, 0x0119E4, GBP_SM}, - {0x011A01, 0x011A0A, GBP_EXT}, - {0x011A33, 0x011A33, GBP_EXT}, - {0x011A34, 0x011A34, GBP_EXT | GBP_INDC_EXT}, - {0x011A35, 0x011A38, GBP_EXT}, - {0x011A39, 0x011A39, GBP_SM}, - {0x011A3A, 0x011A3A, GBP_PREP}, - {0x011A3B, 0x011A3E, GBP_EXT}, - {0x011A47, 0x011A47, GBP_EXT | GBP_INDC_EXT}, - {0x011A51, 0x011A56, GBP_EXT}, - {0x011A57, 0x011A58, GBP_SM}, - {0x011A59, 0x011A5B, GBP_EXT}, - {0x011A84, 0x011A89, GBP_PREP}, - {0x011A8A, 0x011A96, GBP_EXT}, - {0x011A97, 0x011A97, GBP_SM}, - {0x011A98, 0x011A98, GBP_EXT}, - {0x011A99, 0x011A99, GBP_EXT | GBP_INDC_EXT}, - {0x011C2F, 0x011C2F, GBP_SM}, - {0x011C30, 0x011C36, GBP_EXT}, - {0x011C38, 0x011C3D, GBP_EXT}, - {0x011C3E, 0x011C3E, GBP_SM}, - {0x011C3F, 0x011C3F, GBP_EXT}, - {0x011C92, 0x011CA7, GBP_EXT}, - {0x011CA9, 0x011CA9, GBP_SM}, - {0x011CAA, 0x011CB0, GBP_EXT}, - {0x011CB1, 0x011CB1, GBP_SM}, - {0x011CB2, 0x011CB3, GBP_EXT}, - {0x011CB4, 0x011CB4, GBP_SM}, - {0x011CB5, 0x011CB6, GBP_EXT}, - {0x011D31, 0x011D36, GBP_EXT}, - {0x011D3A, 0x011D3A, GBP_EXT}, - {0x011D3C, 0x011D3D, GBP_EXT}, - {0x011D3F, 0x011D41, GBP_EXT}, - {0x011D42, 0x011D42, GBP_EXT | GBP_INDC_EXT}, - {0x011D43, 0x011D43, GBP_EXT}, - {0x011D44, 0x011D45, GBP_EXT | GBP_INDC_EXT}, - {0x011D46, 0x011D46, GBP_PREP}, - {0x011D47, 0x011D47, GBP_EXT}, - {0x011D8A, 0x011D8E, GBP_SM}, - {0x011D90, 0x011D91, GBP_EXT}, - {0x011D93, 0x011D94, GBP_SM}, - {0x011D95, 0x011D95, GBP_EXT}, - {0x011D96, 0x011D96, GBP_SM}, - {0x011D97, 0x011D97, GBP_EXT | GBP_INDC_EXT}, - {0x011EF3, 0x011EF4, GBP_EXT}, - {0x011EF5, 0x011EF6, GBP_SM}, - {0x011F00, 0x011F01, GBP_EXT}, - {0x011F02, 0x011F02, GBP_PREP}, - {0x011F03, 0x011F03, GBP_SM}, - {0x011F34, 0x011F35, GBP_SM}, - {0x011F36, 0x011F3A, GBP_EXT}, - {0x011F3E, 0x011F3F, GBP_SM}, - {0x011F40, 0x011F40, GBP_EXT}, - {0x011F41, 0x011F41, GBP_SM}, - {0x011F42, 0x011F42, GBP_EXT | GBP_INDC_EXT}, - {0x013430, 0x01343F, GBP_CTRL}, - {0x013440, 0x013440, GBP_EXT}, - {0x013447, 0x013455, GBP_EXT}, - {0x016AF0, 0x016AF4, GBP_EXT | GBP_INDC_EXT}, - {0x016B30, 0x016B36, GBP_EXT | GBP_INDC_EXT}, - {0x016F4F, 0x016F4F, GBP_EXT}, - {0x016F51, 0x016F87, GBP_SM}, - {0x016F8F, 0x016F92, GBP_EXT}, - {0x016FE4, 0x016FE4, GBP_EXT}, - {0x016FF0, 0x016FF1, GBP_SM}, - {0x01BC9D, 0x01BC9D, GBP_EXT}, - {0x01BC9E, 0x01BC9E, GBP_EXT | GBP_INDC_EXT}, - {0x01BCA0, 0x01BCA3, GBP_CTRL}, - {0x01CF00, 0x01CF2D, GBP_EXT}, - {0x01CF30, 0x01CF46, GBP_EXT}, - {0x01D165, 0x01D165, GBP_EXT | GBP_INDC_EXT}, - {0x01D166, 0x01D166, GBP_SM}, - {0x01D167, 0x01D169, GBP_EXT | GBP_INDC_EXT}, - {0x01D16D, 0x01D16D, GBP_SM}, - {0x01D16E, 0x01D172, GBP_EXT | GBP_INDC_EXT}, - {0x01D173, 0x01D17A, GBP_CTRL}, - {0x01D17B, 0x01D182, GBP_EXT | GBP_INDC_EXT}, - {0x01D185, 0x01D18B, GBP_EXT | GBP_INDC_EXT}, - {0x01D1AA, 0x01D1AD, GBP_EXT | GBP_INDC_EXT}, - {0x01D242, 0x01D244, GBP_EXT | GBP_INDC_EXT}, - {0x01DA00, 0x01DA36, GBP_EXT}, - {0x01DA3B, 0x01DA6C, GBP_EXT}, - {0x01DA75, 0x01DA75, GBP_EXT}, - {0x01DA84, 0x01DA84, GBP_EXT}, - {0x01DA9B, 0x01DA9F, GBP_EXT}, - {0x01DAA1, 0x01DAAF, GBP_EXT}, - {0x01E000, 0x01E006, GBP_EXT | GBP_INDC_EXT}, - {0x01E008, 0x01E018, GBP_EXT | GBP_INDC_EXT}, - {0x01E01B, 0x01E021, GBP_EXT | GBP_INDC_EXT}, - {0x01E023, 0x01E024, GBP_EXT | GBP_INDC_EXT}, - {0x01E026, 0x01E02A, GBP_EXT | GBP_INDC_EXT}, - {0x01E08F, 0x01E08F, GBP_EXT | GBP_INDC_EXT}, - {0x01E130, 0x01E136, GBP_EXT | GBP_INDC_EXT}, - {0x01E2AE, 0x01E2AE, GBP_EXT | GBP_INDC_EXT}, - {0x01E2EC, 0x01E2EF, GBP_EXT | GBP_INDC_EXT}, - {0x01E4EC, 0x01E4EF, GBP_EXT | GBP_INDC_EXT}, - {0x01E8D0, 0x01E8D6, GBP_EXT | GBP_INDC_EXT}, - {0x01E944, 0x01E94A, GBP_EXT | GBP_INDC_EXT}, - {0x01F000, 0x01F0FF, GBP_PIC}, - {0x01F10D, 0x01F10F, GBP_PIC}, - {0x01F12F, 0x01F12F, GBP_PIC}, - {0x01F16C, 0x01F171, GBP_PIC}, - {0x01F17E, 0x01F17F, GBP_PIC}, - {0x01F18E, 0x01F18E, GBP_PIC}, - {0x01F191, 0x01F19A, GBP_PIC}, - {0x01F1AD, 0x01F1E5, GBP_PIC}, - {0x01F1E6, 0x01F1FF, GBP_RI}, - {0x01F201, 0x01F20F, GBP_PIC}, - {0x01F21A, 0x01F21A, GBP_PIC}, - {0x01F22F, 0x01F22F, GBP_PIC}, - {0x01F232, 0x01F23A, GBP_PIC}, - {0x01F23C, 0x01F23F, GBP_PIC}, - {0x01F249, 0x01F3FA, GBP_PIC}, - {0x01F3FB, 0x01F3FF, GBP_EXT}, - {0x01F400, 0x01F53D, GBP_PIC}, - {0x01F546, 0x01F64F, GBP_PIC}, - {0x01F680, 0x01F6FF, GBP_PIC}, - {0x01F774, 0x01F77F, GBP_PIC}, - {0x01F7D5, 0x01F7FF, GBP_PIC}, - {0x01F80C, 0x01F80F, GBP_PIC}, - {0x01F848, 0x01F84F, GBP_PIC}, - {0x01F85A, 0x01F85F, GBP_PIC}, - {0x01F888, 0x01F88F, GBP_PIC}, - {0x01F8AE, 0x01F8FF, GBP_PIC}, - {0x01F90C, 0x01F93A, GBP_PIC}, - {0x01F93C, 0x01F945, GBP_PIC}, - {0x01F947, 0x01FAFF, GBP_PIC}, - {0x01FC00, 0x01FFFD, GBP_PIC}, - {0x0E0000, 0x0E001F, GBP_CTRL}, - {0x0E0020, 0x0E007F, GBP_EXT}, - {0x0E0080, 0x0E00FF, GBP_CTRL}, - {0x0E0100, 0x0E01EF, GBP_EXT}, - {0x0E01F0, 0x0E0FFF, GBP_CTRL}, +static constexpr uint8_t stage1[] = { + 0, 1, 2, 2, 2, 2, 3, 2, 2, 4, 2, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 2, 2, 30, 2, 2, 2, 2, 2, 2, 2, 31, 32, + 33, 34, 35, 2, 36, 37, 38, 39, 40, 41, 2, 42, 2, 2, 2, 2, + 43, 44, 45, 46, 2, 2, 47, 48, 2, 49, 2, 50, 51, 52, 53, 54, + 2, 2, 55, 2, 2, 2, 56, 2, 2, 57, 58, 59, 2, 2, 2, 2, + 60, 61, 2, 2, 2, 62, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 63, 64, 2, 2, + 65, 66, 67, 68, 69, 70, 2, 71, 72, 73, 74, 75, 76, 77, 78, 72, + 73, 74, 75, 76, 77, 78, 72, 73, 74, 75, 76, 77, 78, 72, 73, 74, + 75, 76, 77, 78, 72, 73, 74, 75, 76, 77, 78, 72, 73, 74, 75, 76, + 77, 78, 72, 73, 74, 75, 76, 77, 78, 72, 73, 74, 75, 76, 77, 78, + 72, 73, 74, 75, 76, 77, 78, 72, 73, 74, 75, 76, 77, 78, 72, 73, + 74, 75, 76, 77, 78, 72, 73, 74, 75, 76, 77, 78, 72, 73, 74, 79, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 80, 2, 2, 2, 2, 2, 81, 82, 2, 83, + 2, 2, 2, 84, 2, 85, 86, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 87, 88, 2, 2, 2, 2, 89, 2, 2, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 2, 100, 101, 2, 102, 103, 104, 105, 2, + 106, 2, 107, 108, 109, 110, 2, 2, 111, 112, 113, 114, 2, 115, 116, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 117, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 118, 119, 2, 2, 2, 2, 2, 2, 2, 120, 121, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 122, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 123, 2, + 2, 2, 124, 125, 126, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 127, 128, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 129, 130, 119, 2, 2, 131, 2, 2, 2, 132, 2, 2, 2, 2, 2, 2, + 2, 133, 134, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 135, 135, 136, 137, 138, 135, 135, 139, 135, 135, 140, 135, 141, 135, 142, 143, + 144, 145, 146, 135, 135, 135, 2, 2, 135, 135, 135, 135, 135, 135, 135, 147, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 148, 149, 150, 151, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, }; +static constexpr uint8_t stage2[][128] = { + {1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 1, 1, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 3, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 131, 131, 131, 131, 131, + 3, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 0, 131, + 0, 131, 131, 0, 131, 131, 0, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {7, 7, 7, 7, 7, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 131, + 131, 131, 131, 131, 131, 7, 0, 131, + 131, 131, 131, 131, 131, 0, 0, 131, + 131, 0, 131, 131, 131, 131, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, + 0, 131, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 131, + 131, 131, 0, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 0, 131, 131, 131, + 0, 131, 131, 131, 131, 131, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 131, 131, 131, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 7, 7, 0, 0, 0, 0, 0, 0, + 131, 131, 131, 131, 131, 131, 131, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 7, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131}, + {3, 3, 3, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 3, 9, 131, 0, 9, 9, + 9, 3, 3, 3, 3, 3, 3, 3, + 3, 9, 9, 9, 9, 195, 9, 9, + 0, 131, 131, 131, 131, 3, 3, 3, + 64, 64, 64, 64, 64, 64, 64, 64, + 0, 0, 3, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 64, 64, 64, 64, 64, 64, 64, 64}, + {0, 3, 9, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 0, 64, 64, 64, 64, 64, 64, + 64, 0, 64, 0, 0, 0, 64, 64, + 64, 64, 0, 0, 131, 0, 3, 9, + 9, 3, 3, 3, 3, 0, 0, 9, + 9, 0, 0, 9, 9, 195, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 0, 64, 64, 0, 64, + 0, 0, 3, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 64, 64, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 0}, + {0, 3, 3, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 0, 9, 9, + 9, 3, 3, 0, 0, 0, 0, 3, + 3, 0, 0, 3, 3, 3, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 3, 3, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 3, 3, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 0, 64, 64, 64, 64, 64, 64, + 64, 0, 64, 64, 0, 64, 64, 64, + 64, 64, 0, 0, 131, 0, 9, 9, + 9, 3, 3, 3, 3, 3, 0, 3, + 3, 9, 0, 9, 9, 195, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 3, 3, 3, 3, 3, 3}, + {0, 3, 9, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 0, 64, 64, 64, 64, 64, 64, + 64, 0, 64, 64, 0, 64, 64, 64, + 64, 64, 0, 0, 131, 0, 3, 3, + 9, 3, 3, 3, 3, 0, 0, 9, + 9, 0, 0, 9, 9, 195, 0, 0, + 0, 0, 0, 0, 0, 3, 3, 3, + 0, 0, 0, 0, 64, 64, 0, 64, + 0, 0, 3, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 9, + 3, 9, 9, 0, 0, 0, 9, 9, + 9, 0, 9, 9, 9, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {3, 9, 9, 9, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 0, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 0, 0, 131, 0, 3, 3, + 3, 9, 9, 9, 9, 0, 3, 3, + 3, 0, 3, 3, 3, 195, 0, 0, + 0, 0, 0, 0, 0, 131, 131, 0, + 64, 64, 64, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 3, 9, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 0, 9, 3, + 9, 9, 3, 9, 9, 0, 3, 9, + 9, 0, 9, 9, 3, 3, 0, 0, + 0, 0, 0, 0, 0, 3, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {3, 3, 9, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 131, 131, 0, 3, 9, + 9, 3, 3, 3, 3, 0, 9, 9, + 9, 0, 9, 9, 9, 195, 7, 0, + 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 3, 9, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 3, + 9, 9, 3, 3, 3, 0, 3, 0, + 9, 9, 9, 9, 9, 9, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 9, 3, 3, 3, 3, + 131, 131, 131, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, + 131, 131, 131, 131, 3, 3, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 9, 3, 3, 3, 3, + 131, 131, 131, 3, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 131, 131, 131, 3, 3, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 131, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 0, 131, + 0, 131, 0, 0, 0, 0, 9, 9, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 131, 131, 3, 131, 3, 3, 3, + 3, 3, 131, 131, 131, 131, 3, 9}, + {131, 3, 131, 131, 131, 0, 131, 131, + 0, 0, 0, 0, 0, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 0, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 3, 3, + 3, 9, 3, 3, 3, 3, 3, 131, + 0, 131, 131, 9, 9, 3, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 9, 9, + 3, 3, 0, 0, 0, 0, 3, 3, + 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 3, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 3, 0, 9, 3, 3, 0, + 0, 0, 0, 0, 0, 131, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11}, + {11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 131, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 131, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 3, 9, 3, + 3, 3, 3, 3, 3, 3, 9, 9, + 9, 9, 9, 9, 9, 9, 3, 9, + 9, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 131, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 3, 3, 1, 3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 3, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 131, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 3, 3, 3, 9, 9, 9, 9, 3, + 3, 9, 9, 9, 0, 0, 0, 0, + 9, 9, 3, 9, 9, 9, 9, 9, + 9, 131, 131, 131, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 131, + 131, 9, 9, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 3, 9, + 3, 3, 3, 3, 3, 3, 3, 0, + 131, 0, 3, 0, 0, 3, 3, 3, + 3, 3, 3, 3, 3, 9, 9, 9, + 9, 9, 9, 3, 3, 131, 131, 131, + 131, 131, 131, 131, 131, 0, 0, 131}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 3, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {3, 3, 3, 3, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 3, 3, 3, + 3, 3, 3, 9, 3, 9, 9, 9, + 9, 9, 3, 9, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {3, 3, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 9, 3, 3, 3, 3, 9, 9, + 3, 3, 9, 131, 3, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 9, + 3, 3, 9, 9, 9, 3, 9, 3, + 3, 3, 9, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 9, 9, 9, + 9, 9, 9, 9, 3, 3, 3, 3, + 3, 3, 3, 3, 9, 9, 3, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 131, 131, 0, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 9, 131, 131, 131, 131, 131, 131, + 131, 0, 0, 0, 0, 131, 0, 0, + 0, 0, 0, 0, 131, 0, 0, 9, + 131, 131, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 3, 140, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 3, 3, 3, + 3, 131, 3, 3, 3, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 2, 2, + 2, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 0, 0, 0, 0, + 2, 2, 2, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 2, 2, 0}, + {2, 2, 2, 2, 2, 2, 0, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 0, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2, 2, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 0, 2, 0, 2, 0, + 0, 0, 0, 0, 0, 2, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 2, + 0, 0, 0, 0, 2, 0, 2, 0, + 0, 0, 0, 2, 2, 2, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 2, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 2, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 131, + 131, 131, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 131}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 131, 131, 131, 131, 131, 131, + 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 131, 131, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, + 0, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 131, + 3, 3, 3, 0, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 131, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 3, 0, 0, 0, 3, 0, + 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 9, 3, 3, 9, + 0, 0, 0, 0, 131, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {9, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 3, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 3, + 3, 3, 3, 131, 131, 131, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 9, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 0, 0, 0}, + {3, 3, 3, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 131, 9, 9, 3, 3, + 3, 3, 9, 9, 3, 3, 9, 9, + 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 3, 3, 3, 3, 9, + 9, 3, 3, 9, 9, 3, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 0, 131, 131, 131, 0, 0, 131, + 131, 0, 0, 0, 0, 0, 131, 131, + 0, 131, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 3, 3, 9, 9, + 0, 0, 0, 0, 0, 9, 131, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 9, 3, 9, 9, + 3, 9, 9, 0, 9, 131, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6}, + {6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 5, 6, 6, 6}, + {6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6}, + {6, 6, 6, 6, 6, 6, 6, 6, + 5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 5, 6, 6, 6, 6, 6, 6, 6}, + {6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6}, + {6, 6, 6, 6, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6}, + {6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6}, + {6, 6, 6, 6, 6, 6, 6, 6, + 5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 0, + 0, 0, 0, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 131, + 131, 131, 131, 0, 0, 0, 0, 0}, + {0, 3, 3, 3, 0, 3, 3, 0, + 0, 0, 0, 0, 3, 131, 3, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 131, 131, 0, 0, 0, 0, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 131, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 131, 131, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 131, 131, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 131, 131}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 131, 131, 131, 131, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {9, 3, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 0, 0, 3, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 131}, + {3, 3, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 9, 9, 9, 3, 3, 3, 3, 9, + 9, 3, 131, 0, 0, 7, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {131, 131, 131, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, + 3, 3, 3, 3, 9, 3, 3, 3, + 3, 3, 3, 131, 131, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 9, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 131, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {3, 3, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 9, 9, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 9, + 9, 0, 7, 7, 0, 0, 0, 0, + 0, 3, 131, 3, 3, 0, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 9, 9, 3, + 3, 3, 9, 9, 3, 9, 131, 3, + 0, 0, 0, 0, 0, 0, 3, 0, + 0, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, + 9, 9, 9, 3, 3, 3, 3, 3, + 3, 131, 131, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {3, 3, 9, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 131, 131, 0, 3, 9, + 3, 9, 9, 9, 9, 0, 0, 9, + 9, 0, 0, 9, 9, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 9, 0, 0, 131, 131, + 131, 131, 131, 131, 131, 0, 0, 0, + 131, 131, 131, 131, 131, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 9, 9, + 3, 3, 3, 3, 3, 3, 3, 3, + 9, 9, 3, 3, 3, 9, 131, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 3, 9, 9, 3, 3, 3, 3, 3, + 3, 9, 3, 9, 9, 3, 9, 3, + 3, 9, 3, 131, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, + 9, 9, 3, 3, 3, 3, 0, 0, + 9, 9, 9, 9, 3, 3, 9, 3, + 131, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 9, 9, 9, 3, 3, 3, 3, 3, + 3, 3, 3, 9, 9, 3, 9, 3, + 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 9, 3, 9, 9, + 3, 3, 3, 3, 3, 3, 9, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 3, 3, + 0, 0, 3, 3, 3, 3, 9, 3, + 3, 3, 3, 131, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 9, 9, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 9, 3, 131, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 3, 9, 9, 9, 9, 9, 0, 9, + 9, 0, 0, 3, 3, 9, 131, 7, + 9, 7, 9, 131, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 9, 9, 9, 3, 3, 3, 3, + 0, 0, 3, 3, 9, 9, 9, 9, + 3, 0, 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 131, 3, 3, 3, + 3, 9, 7, 3, 3, 3, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 3, 3, 3, 3, 9, + 9, 3, 3, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 7, 7, 7, 7, + 7, 7, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 9, + 3, 131, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, + 3, 3, 3, 3, 3, 3, 3, 0, + 3, 3, 3, 3, 3, 3, 9, 3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 0, 9, 3, 3, 3, 3, 3, 3, + 3, 9, 3, 3, 9, 3, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 3, 3, 3, 3, 3, 0, + 0, 0, 3, 0, 3, 3, 0, 3, + 3, 3, 131, 3, 131, 131, 7, 3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 9, 9, 9, 9, 0, + 3, 3, 0, 9, 9, 3, 9, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 3, 9, 9, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {3, 3, 7, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 9, 3, 3, + 3, 3, 3, 0, 0, 0, 9, 9, + 3, 9, 131, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 3, 0, 0, 0, 0, 0, 0, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 131, 131, 131, 131, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 131, 131, 131, 131, 131, 131, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, + 0, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9}, + {9, 9, 9, 9, 9, 9, 9, 9, + 0, 0, 0, 0, 0, 0, 0, 3, + 3, 3, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 9, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 131, 0, + 1, 1, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 0, 0, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 9, 131, + 131, 131, 0, 0, 0, 9, 131, 131, + 131, 131, 131, 1, 1, 1, 1, 1, + 1, 1, 1, 131, 131, 131, 131, 131}, + {131, 131, 131, 0, 0, 131, 131, 131, + 131, 131, 131, 131, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 131, 131, 131, 131, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 131, 131, 131, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 0, + 0, 0, 0, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 3, 3, 3, 3, + 0, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {131, 131, 131, 131, 131, 131, 131, 0, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, + 131, 0, 0, 131, 131, 131, 131, 131, + 131, 131, 0, 131, 131, 0, 131, 131, + 131, 131, 131, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 131, 131, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 131, 131, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 131, 131, 131, 131, 131, 131, 131, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 131, 131, 131, + 131, 131, 131, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 2, 2, + 2, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 0, + 0, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8}, + {0, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 0, 2, 2, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 3, 3, 3, 3, 3}, + {2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 2, 2, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 0, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 0, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 0, 0}, + {1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3}, + {1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1}, + {3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3}, + {3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1}, +}; + +[[_mlib_pure, _mlib_inline]] +static void +uprop_get_gbrk(enum uprop_gbrk *x, enum uprop_gbrk_indc *y, rune ch) +{ + uint8_t z = stage2[stage1[ch / 128]][ch % 128]; + *x = GBRK_PROP_LO(z); + *y = GBRK_PROP_HI(z); +} + #endif /* !MLIB_UNICODE__GBRK_H */ diff --git a/lib/unicode/string/u8gnext.c b/lib/unicode/string/u8gnext.c index 3b0b410..272711f 100644 --- a/lib/unicode/string/u8gnext.c +++ b/lib/unicode/string/u8gnext.c @@ -1,6 +1,5 @@ #include <stddef.h> -#include "_bsearch.h" #include "mbstring.h" #include "unicode/_gbrk.h" #include "unicode/string.h" @@ -17,8 +16,6 @@ struct gbrk_state { static bool u8isgbrk(rune, rune, struct gbrk_state *); -_MLIB_DEFINE_BSEARCH(gbrk_prop, gbrk_prop_tbl, GBP_OTHER) - size_t u8gnext(struct u8view *g, struct u8view *sv) { @@ -58,7 +55,8 @@ u8gnext(struct u8view *g, struct u8view *sv) bool u8isgbrk(rune a, rune b, struct gbrk_state *gs) { - gbrk_prop ap, bp; + enum uprop_gbrk ap, bp; + enum uprop_gbrk_indc aip, bip; /* GB1 & GB2 */ if (!a || !b) @@ -72,67 +70,73 @@ u8isgbrk(rune a, rune b, struct gbrk_state *gs) } /* GB4 */ - if (a == '\r' || a == '\n' || ((ap = mlib_lookup(a)) & GBP_CTRL)) + uprop_get_gbrk(&ap, &aip, a); + if (a == '\r' || a == '\n' || ap == GBRK_CN) goto do_break; /* GB5 */ - if (b == '\r' || b == '\n' || ((bp = mlib_lookup(b)) & GBP_CTRL)) + uprop_get_gbrk(&bp, &bip, b); + if (b == '\r' || b == '\n' || bp == GBRK_CN) goto do_break; /* Setting flags for GB9c */ - if (ap & GBP_INDC_CNSNT) + if (aip == GBRK_INDC_CNSNT) gs->gb9c = GB9C_CNSNT; - else if ((ap & GBP_INDC_LNK) && gs->gb9c == GB9C_CNSNT) + else if (aip == GBRK_INDC_LNK && gs->gb9c == GB9C_CNSNT) gs->gb9c = GB9C_LNK; /* GB6 */ - if ((ap & GBP_HNGL_L) - && (bp & (GBP_HNGL_L | GBP_HNGL_V | GBP_HNGL_LV | GBP_HNGL_LVT))) + if (ap == GBRK_HST_L + && (bp == GBRK_HST_L || bp == GBRK_HST_V || bp == GBRK_HST_LV + || bp == GBRK_HST_LVT)) { return false; } /* GB7 */ - if ((ap & (GBP_HNGL_LV | GBP_HNGL_V)) && (bp & (GBP_HNGL_V | GBP_HNGL_T))) + if ((ap == GBRK_HST_V || ap == GBRK_HST_LV) + && (bp == GBRK_HST_V || bp == GBRK_HST_T)) + { return false; + } /* GB8 */ - if ((ap & (GBP_HNGL_LVT | GBP_HNGL_T)) && (bp & GBP_HNGL_T)) + if ((ap == GBRK_HST_LVT || ap == GBRK_HST_T) && bp == GBRK_HST_T) return false; /* GB9 */ - if (bp & (GBP_EXT | GBP_ZWJ)) { - if (ap & GBP_PIC) + if (bp == GBRK_EX || bp == GBRK_ZWJ) { + if (ap == GBRK_EXT_PICT) gs->gb11 = true; return false; } /* GB9a */ - if (bp & GBP_SM) + if (bp == GBRK_SM) return false; /* GB9b */ - if (ap & GBP_PREP) + if (ap == GBRK_PP) return false; /* GB9c */ - if ((ap & (GBP_INDC_EXT | GBP_INDC_LNK)) && (bp & GBP_INDC_CNSNT) + if ((aip == GBRK_INDC_EXT || aip == GBRK_INDC_LNK) && bip == GBRK_INDC_CNSNT && gs->gb9c == GB9C_LNK) { return false; } /* GB11 */ - if (gs->gb11) { - if ((ap & GBP_EXT) && (bp & (GBP_EXT | GBP_ZWJ))) - return false; - if ((ap & GBP_ZWJ) && (bp & GBP_PIC)) - return false; + if (gs->gb11 + && ((ap == GBRK_EX && (bp == GBRK_EX || bp == GBRK_ZWJ)) + || (ap == GBRK_ZWJ && bp == GBRK_EXT_PICT))) + { + return false; } /* GB12 & GB13 */ - if (ap & GBP_RI) { - if (gs->gb12 || !(bp & GBP_RI)) + if (ap == GBRK_RI) { + if (gs->gb12 || bp != GBRK_RI) goto do_break; gs->gb12 = true; return false; |