diff options
-rw-r--r-- | Doc/c-api/unicode.rst | 9 | ||||
-rw-r--r-- | Doc/library/stdtypes.rst | 3 | ||||
-rw-r--r-- | Include/unicodeobject.h | 23 | ||||
-rw-r--r-- | Lib/test/string_tests.py | 2 | ||||
-rw-r--r-- | Lib/test/test_unicode.py | 44 | ||||
-rw-r--r-- | Lib/test/test_unicodedata.py | 2 | ||||
-rw-r--r-- | Misc/NEWS | 2 | ||||
-rw-r--r-- | Objects/unicodectype.c | 97 | ||||
-rw-r--r-- | Objects/unicodeobject.c | 345 | ||||
-rw-r--r-- | Objects/unicodetype_db.h | 5687 | ||||
-rw-r--r-- | Tools/unicode/makeunicodedata.py | 101 |
11 files changed, 4596 insertions, 1719 deletions
diff --git a/Doc/c-api/unicode.rst b/Doc/c-api/unicode.rst index 37e08d6..a74a73d 100644 --- a/Doc/c-api/unicode.rst +++ b/Doc/c-api/unicode.rst @@ -318,16 +318,25 @@ These APIs can be used for fast direct character conversions: Return the character *ch* converted to lower case. + .. deprecated:: 3.3 + This function uses simple case mappings. + .. c:function:: Py_UNICODE Py_UNICODE_TOUPPER(Py_UNICODE ch) Return the character *ch* converted to upper case. + .. deprecated:: 3.3 + This function uses simple case mappings. + .. c:function:: Py_UNICODE Py_UNICODE_TOTITLE(Py_UNICODE ch) Return the character *ch* converted to title case. + .. deprecated:: 3.3 + This function uses simple case mappings. + .. c:function:: int Py_UNICODE_TODECIMAL(Py_UNICODE ch) diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst index 49222f5..bfeaab9 100644 --- a/Doc/library/stdtypes.rst +++ b/Doc/library/stdtypes.rst @@ -1360,7 +1360,8 @@ functions based on regular expressions. .. method:: str.swapcase() Return a copy of the string with uppercase characters converted to lowercase and - vice versa. + vice versa. Note that it is not necessarily true that + ``s.swapcase().swapcase() == s``. .. method:: str.title() diff --git a/Include/unicodeobject.h b/Include/unicodeobject.h index 6255dc3..39dfba9 100644 --- a/Include/unicodeobject.h +++ b/Include/unicodeobject.h @@ -2008,6 +2008,29 @@ PyAPI_FUNC(Py_UCS4) _PyUnicode_ToTitlecase( Py_UCS4 ch /* Unicode character */ ); +PyAPI_FUNC(int) _PyUnicode_ToLowerFull( + Py_UCS4 ch, /* Unicode character */ + Py_UCS4 *res + ); + +PyAPI_FUNC(int) _PyUnicode_ToTitleFull( + Py_UCS4 ch, /* Unicode character */ + Py_UCS4 *res + ); + +PyAPI_FUNC(int) _PyUnicode_ToUpperFull( + Py_UCS4 ch, /* Unicode character */ + Py_UCS4 *res + ); + +PyAPI_FUNC(int) _PyUnicode_IsCaseIgnorable( + const Py_UCS4 ch /* Unicode character */ + ); + +PyAPI_FUNC(int) _PyUnicode_IsCased( + const Py_UCS4 ch /* Unicode character */ + ); + PyAPI_FUNC(int) _PyUnicode_ToDecimalDigit( Py_UCS4 ch /* Unicode character */ ); diff --git a/Lib/test/string_tests.py b/Lib/test/string_tests.py index 43ecf2a..feeb4ce 100644 --- a/Lib/test/string_tests.py +++ b/Lib/test/string_tests.py @@ -669,7 +669,7 @@ class CommonTest(BaseTest): # check that titlecased chars are lowered correctly # \u1ffc is the titlecased char - self.checkequal('\u1ffc\u1ff3\u1ff3\u1ff3', + self.checkequal('\u03a9\u0399\u1ff3\u1ff3\u1ff3', '\u1ff3\u1ff3\u1ffc\u1ffc', 'capitalize') # check with cased non-letter chars self.checkequal('\u24c5\u24e8\u24e3\u24d7\u24de\u24dd', diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py index 72aae8f..cc933b6 100644 --- a/Lib/test/test_unicode.py +++ b/Lib/test/test_unicode.py @@ -369,6 +369,8 @@ class UnicodeTest(string_tests.CommonTest, def test_islower(self): string_tests.MixinStrUnicodeUserStringTest.test_islower(self) self.checkequalnofix(False, '\u1FFc', 'islower') + self.assertFalse('\u2167'.islower()) + self.assertTrue('\u2177'.islower()) # non-BMP, uppercase self.assertFalse('\U00010401'.islower()) self.assertFalse('\U00010427'.islower()) @@ -383,6 +385,8 @@ class UnicodeTest(string_tests.CommonTest, string_tests.MixinStrUnicodeUserStringTest.test_isupper(self) if not sys.platform.startswith('java'): self.checkequalnofix(False, '\u1FFc', 'isupper') + self.assertTrue('\u2167'.isupper()) + self.assertFalse('\u2177'.isupper()) # non-BMP, uppercase self.assertTrue('\U00010401'.isupper()) self.assertTrue('\U00010427'.isupper()) @@ -548,6 +552,18 @@ class UnicodeTest(string_tests.CommonTest, '\U0001044F\U0001044F') self.assertEqual('X\U00010427x\U0001044F'.lower(), 'x\U0001044Fx\U0001044F') + self.assertEqual('fi'.lower(), 'fi') + self.assertEqual('\u0130'.lower(), '\u0069\u0307') + # Special case for GREEK CAPITAL LETTER SIGMA U+03A3 + self.assertEqual('\u03a3'.lower(), '\u03c3') + self.assertEqual('\u0345\u03a3'.lower(), '\u0345\u03c3') + self.assertEqual('A\u0345\u03a3'.lower(), 'a\u0345\u03c2') + self.assertEqual('A\u0345\u03a3a'.lower(), 'a\u0345\u03c3a') + self.assertEqual('A\u0345\u03a3'.lower(), 'a\u0345\u03c2') + self.assertEqual('A\u03a3\u0345'.lower(), 'a\u03c2\u0345') + self.assertEqual('\u03a3\u0345 '.lower(), '\u03c3\u0345 ') + self.assertEqual('\U0008fffe'.lower(), '\U0008fffe') + self.assertEqual('\u2177'.lower(), '\u2177') def test_upper(self): string_tests.CommonTest.test_upper(self) @@ -558,6 +574,13 @@ class UnicodeTest(string_tests.CommonTest, '\U00010427\U00010427') self.assertEqual('X\U00010427x\U0001044F'.upper(), 'X\U00010427X\U00010427') + self.assertEqual('fi'.upper(), 'FI') + self.assertEqual('\u0130'.upper(), '\u0130') + self.assertEqual('\u03a3'.upper(), '\u03a3') + self.assertEqual('ß'.upper(), 'SS') + self.assertEqual('\u1fd2'.upper(), '\u0399\u0308\u0300') + self.assertEqual('\U0008fffe'.upper(), '\U0008fffe') + self.assertEqual('\u2177'.upper(), '\u2167') def test_capitalize(self): string_tests.CommonTest.test_capitalize(self) @@ -570,6 +593,11 @@ class UnicodeTest(string_tests.CommonTest, '\U00010427\U0001044F') self.assertEqual('X\U00010427x\U0001044F'.capitalize(), 'X\U0001044Fx\U0001044F') + self.assertEqual('h\u0130'.capitalize(), 'H\u0069\u0307') + exp = '\u0399\u0308\u0300\u0069\u0307' + self.assertEqual('\u1fd2\u0130'.capitalize(), exp) + self.assertEqual('finnish'.capitalize(), 'FInnish') + self.assertEqual('A\u0345\u03a3'.capitalize(), 'A\u0345\u03c2') def test_title(self): string_tests.MixinStrUnicodeUserStringTest.test_title(self) @@ -584,6 +612,9 @@ class UnicodeTest(string_tests.CommonTest, '\U00010427\U0001044F \U00010427\U0001044F') self.assertEqual('X\U00010427x\U0001044F X\U00010427x\U0001044F'.title(), 'X\U0001044Fx\U0001044F X\U0001044Fx\U0001044F') + self.assertEqual('fiNNISH'.title(), 'Finnish') + self.assertEqual('A\u03a3 \u1fa1xy'.title(), 'A\u03c2 \u1fa9xy') + self.assertEqual('A\u03a3A'.title(), 'A\u03c3a') def test_swapcase(self): string_tests.CommonTest.test_swapcase(self) @@ -597,6 +628,19 @@ class UnicodeTest(string_tests.CommonTest, '\U00010427\U0001044F') self.assertEqual('X\U00010427x\U0001044F'.swapcase(), 'x\U0001044FX\U00010427') + self.assertEqual('fi'.swapcase(), 'FI') + self.assertEqual('\u0130'.swapcase(), '\u0069\u0307') + # Special case for GREEK CAPITAL LETTER SIGMA U+03A3 + self.assertEqual('\u03a3'.swapcase(), '\u03c3') + self.assertEqual('\u0345\u03a3'.swapcase(), '\u0399\u03c3') + self.assertEqual('A\u0345\u03a3'.swapcase(), 'a\u0399\u03c2') + self.assertEqual('A\u0345\u03a3a'.swapcase(), 'a\u0399\u03c3A') + self.assertEqual('A\u0345\u03a3'.swapcase(), 'a\u0399\u03c2') + self.assertEqual('A\u03a3\u0345'.swapcase(), 'a\u03c2\u0399') + self.assertEqual('\u03a3\u0345 '.swapcase(), '\u03c3\u0399 ') + self.assertEqual('\u03a3'.swapcase(), '\u03c3') + self.assertEqual('ß'.swapcase(), 'SS') + self.assertEqual('\u1fd2'.swapcase(), '\u0399\u0308\u0300') def test_contains(self): # Testing Unicode contains method diff --git a/Lib/test/test_unicodedata.py b/Lib/test/test_unicodedata.py index 7715376..f775aea 100644 --- a/Lib/test/test_unicodedata.py +++ b/Lib/test/test_unicodedata.py @@ -21,7 +21,7 @@ errors = 'surrogatepass' class UnicodeMethodsTest(unittest.TestCase): # update this, if the database changes - expectedchecksum = '21b90f1aed00081b81ca7942b22196af090015a0' + expectedchecksum = 'df0b3ca6785a070b21f837b227dbdbdff3c2e921' def test_method_checksum(self): h = hashlib.sha1() @@ -10,6 +10,8 @@ What's New in Python 3.3 Alpha 1? Core and Builtins ----------------- +- Issue #12736: Use full unicode case mappings for upper, lower, and title case. + - Issue #12760: Add a create mode to open(). Patch by David Townshend. - Issue #13738: Simplify implementation of bytes.lower() and bytes.upper(). diff --git a/Objects/unicodectype.c b/Objects/unicodectype.c index 9f6ac89..05b63cc 100644 --- a/Objects/unicodectype.c +++ b/Objects/unicodectype.c @@ -21,8 +21,10 @@ #define XID_START_MASK 0x100 #define XID_CONTINUE_MASK 0x200 #define PRINTABLE_MASK 0x400 -#define NODELTA_MASK 0x800 -#define NUMERIC_MASK 0x1000 +#define NUMERIC_MASK 0x800 +#define CASE_IGNORABLE_MASK 0x1000 +#define CASED_MASK 0x2000 +#define EXTENDED_CASE_MASK 0x4000 typedef struct { const Py_UCS4 upper; @@ -57,15 +59,8 @@ gettyperecord(Py_UCS4 code) Py_UCS4 _PyUnicode_ToTitlecase(register Py_UCS4 ch) { const _PyUnicode_TypeRecord *ctype = gettyperecord(ch); - int delta = ctype->title; - if (ctype->flags & NODELTA_MASK) - return delta; - - if (delta >= 32768) - delta -= 65536; - - return ch + delta; + return ctype->title ? ctype->title : ch; } /* Returns 1 for Unicode characters having the category 'Lt', 0 @@ -188,12 +183,10 @@ int _PyUnicode_IsUppercase(Py_UCS4 ch) Py_UCS4 _PyUnicode_ToUppercase(Py_UCS4 ch) { const _PyUnicode_TypeRecord *ctype = gettyperecord(ch); - int delta = ctype->upper; - if (ctype->flags & NODELTA_MASK) - return delta; - if (delta >= 32768) - delta -= 65536; - return ch + delta; + + if (ctype->flags & EXTENDED_CASE_MASK) + return _PyUnicode_ExtendedCase[ctype->upper & 0xFFFFFF]; + return ctype->upper ? ctype->upper : ch; } /* Returns the lowercase Unicode characters corresponding to ch or just @@ -202,12 +195,72 @@ Py_UCS4 _PyUnicode_ToUppercase(Py_UCS4 ch) Py_UCS4 _PyUnicode_ToLowercase(Py_UCS4 ch) { const _PyUnicode_TypeRecord *ctype = gettyperecord(ch); - int delta = ctype->lower; - if (ctype->flags & NODELTA_MASK) - return delta; - if (delta >= 32768) - delta -= 65536; - return ch + delta; + + if (ctype->flags & EXTENDED_CASE_MASK) + return _PyUnicode_ExtendedCase[ctype->lower & 0xFFFFFF]; + return ctype->lower ? ctype->lower : ch; +} + +int _PyUnicode_ToLowerFull(Py_UCS4 ch, Py_UCS4 *res) +{ + const _PyUnicode_TypeRecord *ctype = gettyperecord(ch); + + if (ctype->flags & EXTENDED_CASE_MASK) { + int index = ctype->lower & 0xFFFFFF; + int n = ctype->lower >> 24; + int i; + for (i = 0; i < n; i++) + res[i] = _PyUnicode_ExtendedCase[index + i]; + return n; + } + res[0] = ctype->lower ? ctype->lower : ch; + return 1; +} + +int _PyUnicode_ToTitleFull(Py_UCS4 ch, Py_UCS4 *res) +{ + const _PyUnicode_TypeRecord *ctype = gettyperecord(ch); + + if (ctype->flags & EXTENDED_CASE_MASK) { + int index = ctype->title & 0xFFFFFF; + int n = ctype->title >> 24; + int i; + for (i = 0; i < n; i++) + res[i] = _PyUnicode_ExtendedCase[index + i]; + return n; + } + res[0] = ctype->title ? ctype->title : ch; + return 1; +} + +int _PyUnicode_ToUpperFull(Py_UCS4 ch, Py_UCS4 *res) +{ + const _PyUnicode_TypeRecord *ctype = gettyperecord(ch); + + if (ctype->flags & EXTENDED_CASE_MASK) { + int index = ctype->upper & 0xFFFFFF; + int n = ctype->upper >> 24; + int i; + for (i = 0; i < n; i++) + res[i] = _PyUnicode_ExtendedCase[index + i]; + return n; + } + res[0] = ctype->upper ? ctype->upper : ch; + return 1; +} + +int _PyUnicode_IsCased(Py_UCS4 ch) +{ + const _PyUnicode_TypeRecord *ctype = gettyperecord(ch); + + return (ctype->flags & CASED_MASK) != 0; +} + +int _PyUnicode_IsCaseIgnorable(Py_UCS4 ch) +{ + const _PyUnicode_TypeRecord *ctype = gettyperecord(ch); + + return (ctype->flags & CASE_IGNORABLE_MASK) != 0; } /* Returns 1 for Unicode characters having the category 'Ll', 'Lu', 'Lt', diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 5ca2c53..cff97f7 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -41,6 +41,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #define PY_SSIZE_T_CLEAN #include "Python.h" #include "ucnhash.h" +#include "bytes_methods.h" #ifdef MS_WINDOWS #include <windows.h> @@ -9428,188 +9429,222 @@ fixup(PyObject *self, return v; } -static Py_UCS4 -fixupper(PyObject *self) +static PyObject * +ascii_upper_or_lower(PyObject *self, int lower) { - /* No need to call PyUnicode_READY(self) because this function is only - called as a callback from fixup() which does it already. */ - const Py_ssize_t len = PyUnicode_GET_LENGTH(self); - const int kind = PyUnicode_KIND(self); - void *data = PyUnicode_DATA(self); - int touched = 0; - Py_UCS4 maxchar = 0; - Py_ssize_t i; - - for (i = 0; i < len; ++i) { - const Py_UCS4 ch = PyUnicode_READ(kind, data, i); - const Py_UCS4 up = Py_UNICODE_TOUPPER(ch); - if (up != ch) { - if (up > maxchar) - maxchar = up; - PyUnicode_WRITE(kind, data, i, up); - touched = 1; - } - else if (ch > maxchar) - maxchar = ch; - } + Py_ssize_t len = PyUnicode_GET_LENGTH(self); + char *resdata, *data = PyUnicode_DATA(self); + PyObject *res; - if (touched) - return maxchar; + res = PyUnicode_New(len, 127); + if (res == NULL) + return NULL; + resdata = PyUnicode_DATA(res); + if (lower) + _Py_bytes_lower(resdata, data, len); else - return 0; + _Py_bytes_upper(resdata, data, len); + return res; } static Py_UCS4 -fixlower(PyObject *self) +handle_capital_sigma(int kind, void *data, Py_ssize_t length, Py_ssize_t i) { - /* No need to call PyUnicode_READY(self) because fixup() which does it. */ - const Py_ssize_t len = PyUnicode_GET_LENGTH(self); - const int kind = PyUnicode_KIND(self); - void *data = PyUnicode_DATA(self); - int touched = 0; - Py_UCS4 maxchar = 0; - Py_ssize_t i; + Py_ssize_t j; + int final_sigma; + Py_UCS4 c; + /* U+03A3 is in the Final_Sigma context when, it is found like this: - for(i = 0; i < len; ++i) { - const Py_UCS4 ch = PyUnicode_READ(kind, data, i); - const Py_UCS4 lo = Py_UNICODE_TOLOWER(ch); - if (lo != ch) { - if (lo > maxchar) - maxchar = lo; - PyUnicode_WRITE(kind, data, i, lo); - touched = 1; + \p{cased}\p{case-ignorable}*U+03A3!(\p{case-ignorable}*\p{cased}) + + where ! is a negation and \p{xxx} is a character with property xxx. + */ + for (j = i - 1; j >= 0; j--) { + c = PyUnicode_READ(kind, data, j); + if (!_PyUnicode_IsCaseIgnorable(c)) + break; + } + final_sigma = j >= 0 && _PyUnicode_IsCased(c); + if (final_sigma) { + for (j = i + 1; j < length; j++) { + c = PyUnicode_READ(kind, data, j); + if (!_PyUnicode_IsCaseIgnorable(c)) + break; } - else if (ch > maxchar) - maxchar = ch; + final_sigma = j == length || !_PyUnicode_IsCased(c); } + return (final_sigma) ? 0x3C2 : 0x3C3; +} - if (touched) - return maxchar; - else - return 0; +static int +lower_ucs4(int kind, void *data, Py_ssize_t length, Py_ssize_t i, + Py_UCS4 c, Py_UCS4 *mapped) +{ + /* Obscure special case. */ + if (c == 0x3A3) { + mapped[0] = handle_capital_sigma(kind, data, length, i); + return 1; + } + return _PyUnicode_ToLowerFull(c, mapped); } -static Py_UCS4 -fixswapcase(PyObject *self) +static Py_ssize_t +do_capitalize(int kind, void *data, Py_ssize_t length, Py_UCS4 *res, Py_UCS4 *maxchar) { - /* No need to call PyUnicode_READY(self) because fixup() which does it. */ - const Py_ssize_t len = PyUnicode_GET_LENGTH(self); - const int kind = PyUnicode_KIND(self); - void *data = PyUnicode_DATA(self); - int touched = 0; - Py_UCS4 maxchar = 0; - Py_ssize_t i; + Py_ssize_t i, k = 0; + int n_res, j; + Py_UCS4 c, mapped[3]; - for(i = 0; i < len; ++i) { - const Py_UCS4 ch = PyUnicode_READ(kind, data, i); - Py_UCS4 nu = 0; + c = PyUnicode_READ(kind, data, 0); + n_res = _PyUnicode_ToUpperFull(c, mapped); + for (j = 0; j < n_res; j++) { + if (mapped[j] > *maxchar) + *maxchar = mapped[j]; + res[k++] = mapped[j]; + } + for (i = 1; i < length; i++) { + c = PyUnicode_READ(kind, data, i); + n_res = lower_ucs4(kind, data, length, i, c, mapped); + for (j = 0; j < n_res; j++) { + if (mapped[j] > *maxchar) + *maxchar = mapped[j]; + res[k++] = mapped[j]; + } + } + return k; +} - if (Py_UNICODE_ISUPPER(ch)) - nu = Py_UNICODE_TOLOWER(ch); - else if (Py_UNICODE_ISLOWER(ch)) - nu = Py_UNICODE_TOUPPER(ch); +static Py_ssize_t +do_swapcase(int kind, void *data, Py_ssize_t length, Py_UCS4 *res, Py_UCS4 *maxchar) { + Py_ssize_t i, k = 0; - if (nu != 0) { - if (nu > maxchar) - maxchar = nu; - PyUnicode_WRITE(kind, data, i, nu); - touched = 1; + for (i = 0; i < length; i++) { + Py_UCS4 c = PyUnicode_READ(kind, data, i), mapped[3]; + int n_res, j; + if (Py_UNICODE_ISUPPER(c)) { + n_res = lower_ucs4(kind, data, length, i, c, mapped); + } + else if (Py_UNICODE_ISLOWER(c)) { + n_res = _PyUnicode_ToUpperFull(c, mapped); + } + else { + n_res = 1; + mapped[0] = c; + } + for (j = 0; j < n_res; j++) { + if (mapped[j] > *maxchar) + *maxchar = mapped[j]; + res[k++] = mapped[j]; } - else if (ch > maxchar) - maxchar = ch; } - - if (touched) - return maxchar; - else - return 0; + return k; } -static Py_UCS4 -fixcapitalize(PyObject *self) +static Py_ssize_t +do_upper_or_lower(int kind, void *data, Py_ssize_t length, Py_UCS4 *res, + Py_UCS4 *maxchar, int lower) { - /* No need to call PyUnicode_READY(self) because fixup() which does it. */ - const Py_ssize_t len = PyUnicode_GET_LENGTH(self); - const int kind = PyUnicode_KIND(self); - void *data = PyUnicode_DATA(self); - int touched = 0; - Py_UCS4 maxchar = 0; - Py_ssize_t i = 0; - Py_UCS4 ch; + Py_ssize_t i, k = 0; - if (len == 0) - return 0; - - ch = PyUnicode_READ(kind, data, i); - if (!Py_UNICODE_ISUPPER(ch)) { - maxchar = Py_UNICODE_TOUPPER(ch); - PyUnicode_WRITE(kind, data, i, maxchar); - touched = 1; - } - ++i; - for(; i < len; ++i) { - ch = PyUnicode_READ(kind, data, i); - if (!Py_UNICODE_ISLOWER(ch)) { - const Py_UCS4 lo = Py_UNICODE_TOLOWER(ch); - if (lo > maxchar) - maxchar = lo; - PyUnicode_WRITE(kind, data, i, lo); - touched = 1; + for (i = 0; i < length; i++) { + Py_UCS4 c = PyUnicode_READ(kind, data, i), mapped[3]; + int n_res, j; + if (lower) + n_res = lower_ucs4(kind, data, length, i, c, mapped); + else + n_res = _PyUnicode_ToUpperFull(c, mapped); + for (j = 0; j < n_res; j++) { + if (mapped[j] > *maxchar) + *maxchar = mapped[j]; + res[k++] = mapped[j]; } - else if (ch > maxchar) - maxchar = ch; } + return k; +} - if (touched) - return maxchar; - else - return 0; +static Py_ssize_t +do_upper(int kind, void *data, Py_ssize_t length, Py_UCS4 *res, Py_UCS4 *maxchar) +{ + return do_upper_or_lower(kind, data, length, res, maxchar, 0); } -static Py_UCS4 -fixtitle(PyObject *self) +static Py_ssize_t +do_lower(int kind, void *data, Py_ssize_t length, Py_UCS4 *res, Py_UCS4 *maxchar) { - /* No need to call PyUnicode_READY(self) because fixup() which does it. */ - const Py_ssize_t len = PyUnicode_GET_LENGTH(self); - const int kind = PyUnicode_KIND(self); - void *data = PyUnicode_DATA(self); - Py_UCS4 maxchar = 0; - Py_ssize_t i = 0; - int previous_is_cased; + return do_upper_or_lower(kind, data, length, res, maxchar, 1); +} - /* Shortcut for single character strings */ - if (len == 1) { - const Py_UCS4 ch = PyUnicode_READ(kind, data, i); - const Py_UCS4 ti = Py_UNICODE_TOTITLE(ch); - if (ti != ch) { - PyUnicode_WRITE(kind, data, i, ti); - return ti; - } - else - return 0; +static PyObject * +case_operation(PyObject *self, + Py_ssize_t (*perform)(int, void *, Py_ssize_t, Py_UCS4 *, Py_UCS4 *)) +{ + PyObject *res = NULL; + Py_ssize_t length, newlength = 0; + int kind, outkind; + void *data, *outdata; + Py_UCS4 maxchar = 0, *tmp, *tmpend; + + if (PyUnicode_READY(self) == -1) + return NULL; + + kind = PyUnicode_KIND(self); + data = PyUnicode_DATA(self); + length = PyUnicode_GET_LENGTH(self); + tmp = PyMem_MALLOC(sizeof(Py_UCS4) * 3 * length); + if (tmp == NULL) + return PyErr_NoMemory(); + newlength = perform(kind, data, length, tmp, &maxchar); + res = PyUnicode_New(newlength, maxchar); + if (res == NULL) + goto leave; + tmpend = tmp + newlength; + outdata = PyUnicode_DATA(res); + outkind = PyUnicode_KIND(res); + switch (outkind) { + case PyUnicode_1BYTE_KIND: + _PyUnicode_CONVERT_BYTES(Py_UCS4, Py_UCS1, tmp, tmpend, outdata); + break; + case PyUnicode_2BYTE_KIND: + _PyUnicode_CONVERT_BYTES(Py_UCS4, Py_UCS2, tmp, tmpend, outdata); + break; + case PyUnicode_4BYTE_KIND: + memcpy(outdata, tmp, sizeof(Py_UCS4) * newlength); + break; + default: + assert(0); + break; } + leave: + PyMem_FREE(tmp); + return res; +} + +static Py_ssize_t +do_title(int kind, void *data, Py_ssize_t length, Py_UCS4 *res, Py_UCS4 *maxchar) +{ + Py_ssize_t i, k = 0; + int previous_is_cased; + previous_is_cased = 0; - for(; i < len; ++i) { - const Py_UCS4 ch = PyUnicode_READ(kind, data, i); - Py_UCS4 nu; + for (i = 0; i < length; i++) { + const Py_UCS4 c = PyUnicode_READ(kind, data, i); + Py_UCS4 mapped[3]; + int n_res, j; if (previous_is_cased) - nu = Py_UNICODE_TOLOWER(ch); + n_res = lower_ucs4(kind, data, length, i, c, mapped); else - nu = Py_UNICODE_TOTITLE(ch); + n_res = _PyUnicode_ToTitleFull(c, mapped); - if (nu > maxchar) - maxchar = nu; - PyUnicode_WRITE(kind, data, i, nu); + for (j = 0; j < n_res; j++) { + if (mapped[j] > *maxchar) + *maxchar = mapped[j]; + res[k++] = mapped[j]; + } - if (Py_UNICODE_ISLOWER(ch) || - Py_UNICODE_ISUPPER(ch) || - Py_UNICODE_ISTITLE(ch)) - previous_is_cased = 1; - else - previous_is_cased = 0; + previous_is_cased = _PyUnicode_IsCased(c); } - return maxchar; + return k; } PyObject * @@ -10445,7 +10480,7 @@ characters, all remaining cased characters have lower case."); static PyObject* unicode_title(PyObject *self) { - return fixup(self, fixtitle); + return case_operation(self, do_title); } PyDoc_STRVAR(capitalize__doc__, @@ -10457,7 +10492,11 @@ have upper case and the rest lower case."); static PyObject* unicode_capitalize(PyObject *self) { - return fixup(self, fixcapitalize); + if (PyUnicode_READY(self) == -1) + return NULL; + if (PyUnicode_GET_LENGTH(self) == 0) + return unicode_result_unchanged(self); + return case_operation(self, do_capitalize); } #if 0 @@ -11715,7 +11754,11 @@ Return a copy of the string S converted to lowercase."); static PyObject* unicode_lower(PyObject *self) { - return fixup(self, fixlower); + if (PyUnicode_READY(self) == -1) + return NULL; + if (PyUnicode_IS_ASCII(self)) + return ascii_upper_or_lower(self, 1); + return case_operation(self, do_lower); } #define LEFTSTRIP 0 @@ -12604,7 +12647,7 @@ and vice versa."); static PyObject* unicode_swapcase(PyObject *self) { - return fixup(self, fixswapcase); + return case_operation(self, do_swapcase); } PyDoc_STRVAR(maketrans__doc__, @@ -12750,7 +12793,11 @@ Return a copy of S converted to uppercase."); static PyObject* unicode_upper(PyObject *self) { - return fixup(self, fixupper); + if (PyUnicode_READY(self) == -1) + return NULL; + if (PyUnicode_IS_ASCII(self)) + return ascii_upper_or_lower(self, 0); + return case_operation(self, do_upper); } PyDoc_STRVAR(zfill__doc__, diff --git a/Objects/unicodetype_db.h b/Objects/unicodetype_db.h index 88a7912..4786e25 100644 --- a/Objects/unicodetype_db.h +++ b/Objects/unicodetype_db.h @@ -8,184 +8,2616 @@ const _PyUnicode_TypeRecord _PyUnicode_TypeRecords[] = { {0, 0, 0, 0, 0, 48}, {0, 0, 0, 0, 0, 1056}, {0, 0, 0, 0, 0, 1024}, - {0, 0, 0, 0, 0, 5638}, - {0, 0, 0, 1, 1, 5638}, - {0, 0, 0, 2, 2, 5638}, - {0, 0, 0, 3, 3, 5638}, - {0, 0, 0, 4, 4, 5638}, - {0, 0, 0, 5, 5, 5638}, - {0, 0, 0, 6, 6, 5638}, - {0, 0, 0, 7, 7, 5638}, - {0, 0, 0, 8, 8, 5638}, - {0, 0, 0, 9, 9, 5638}, - {0, 32, 0, 0, 0, 1921}, - {0, 0, 0, 0, 0, 1536}, - {65504, 0, 65504, 0, 0, 1801}, - {0, 0, 0, 0, 0, 1801}, - {0, 0, 0, 0, 2, 5124}, - {0, 0, 0, 0, 3, 5124}, - {743, 0, 743, 0, 0, 1801}, - {0, 0, 0, 0, 1, 5124}, {0, 0, 0, 0, 0, 5120}, - {121, 0, 121, 0, 0, 1801}, - {0, 1, 0, 0, 0, 1921}, - {65535, 0, 65535, 0, 0, 1801}, - {0, 65337, 0, 0, 0, 1921}, - {65304, 0, 65304, 0, 0, 1801}, - {0, 65415, 0, 0, 0, 1921}, - {65236, 0, 65236, 0, 0, 1801}, - {195, 0, 195, 0, 0, 1801}, - {0, 210, 0, 0, 0, 1921}, - {0, 206, 0, 0, 0, 1921}, - {0, 205, 0, 0, 0, 1921}, - {0, 79, 0, 0, 0, 1921}, - {0, 202, 0, 0, 0, 1921}, - {0, 203, 0, 0, 0, 1921}, - {0, 207, 0, 0, 0, 1921}, - {97, 0, 97, 0, 0, 1801}, - {0, 211, 0, 0, 0, 1921}, - {0, 209, 0, 0, 0, 1921}, - {163, 0, 163, 0, 0, 1801}, - {0, 213, 0, 0, 0, 1921}, - {130, 0, 130, 0, 0, 1801}, - {0, 214, 0, 0, 0, 1921}, - {0, 218, 0, 0, 0, 1921}, - {0, 217, 0, 0, 0, 1921}, - {0, 219, 0, 0, 0, 1921}, + {0, 0, 0, 0, 0, 3590}, + {0, 0, 0, 1, 1, 3590}, + {0, 0, 0, 2, 2, 3590}, + {0, 0, 0, 3, 3, 3590}, + {0, 0, 0, 4, 4, 3590}, + {0, 0, 0, 5, 5, 3590}, + {0, 0, 0, 6, 6, 3590}, + {0, 0, 0, 7, 7, 3590}, + {0, 0, 0, 8, 8, 3590}, + {0, 0, 0, 9, 9, 3590}, + {65, 97, 65, 0, 0, 10113}, + {66, 98, 66, 0, 0, 10113}, + {67, 99, 67, 0, 0, 10113}, + {68, 100, 68, 0, 0, 10113}, + {69, 101, 69, 0, 0, 10113}, + {70, 102, 70, 0, 0, 10113}, + {71, 103, 71, 0, 0, 10113}, + {72, 104, 72, 0, 0, 10113}, + {73, 105, 73, 0, 0, 10113}, + {74, 106, 74, 0, 0, 10113}, + {75, 107, 75, 0, 0, 10113}, + {76, 108, 76, 0, 0, 10113}, + {77, 109, 77, 0, 0, 10113}, + {78, 110, 78, 0, 0, 10113}, + {79, 111, 79, 0, 0, 10113}, + {80, 112, 80, 0, 0, 10113}, + {81, 113, 81, 0, 0, 10113}, + {82, 114, 82, 0, 0, 10113}, + {83, 115, 83, 0, 0, 10113}, + {84, 116, 84, 0, 0, 10113}, + {85, 117, 85, 0, 0, 10113}, + {86, 118, 86, 0, 0, 10113}, + {87, 119, 87, 0, 0, 10113}, + {88, 120, 88, 0, 0, 10113}, + {89, 121, 89, 0, 0, 10113}, + {90, 122, 90, 0, 0, 10113}, + {0, 0, 0, 0, 0, 1536}, + {65, 97, 65, 0, 0, 9993}, + {66, 98, 66, 0, 0, 9993}, + {67, 99, 67, 0, 0, 9993}, + {68, 100, 68, 0, 0, 9993}, + {69, 101, 69, 0, 0, 9993}, + {70, 102, 70, 0, 0, 9993}, + {71, 103, 71, 0, 0, 9993}, + {72, 104, 72, 0, 0, 9993}, + {73, 105, 73, 0, 0, 9993}, + {74, 106, 74, 0, 0, 9993}, + {75, 107, 75, 0, 0, 9993}, + {76, 108, 76, 0, 0, 9993}, + {77, 109, 77, 0, 0, 9993}, + {78, 110, 78, 0, 0, 9993}, + {79, 111, 79, 0, 0, 9993}, + {80, 112, 80, 0, 0, 9993}, + {81, 113, 81, 0, 0, 9993}, + {82, 114, 82, 0, 0, 9993}, + {83, 115, 83, 0, 0, 9993}, + {84, 116, 84, 0, 0, 9993}, + {85, 117, 85, 0, 0, 9993}, + {86, 118, 86, 0, 0, 9993}, + {87, 119, 87, 0, 0, 9993}, + {88, 120, 88, 0, 0, 9993}, + {89, 121, 89, 0, 0, 9993}, + {90, 122, 90, 0, 0, 9993}, + {0, 0, 0, 0, 0, 9993}, + {0, 0, 0, 0, 0, 4096}, + {0, 0, 0, 0, 2, 3076}, + {0, 0, 0, 0, 3, 3076}, + {924, 181, 924, 0, 0, 9993}, + {0, 0, 0, 0, 0, 5632}, + {0, 0, 0, 0, 1, 3076}, + {0, 0, 0, 0, 0, 3072}, + {192, 224, 192, 0, 0, 10113}, + {193, 225, 193, 0, 0, 10113}, + {194, 226, 194, 0, 0, 10113}, + {195, 227, 195, 0, 0, 10113}, + {196, 228, 196, 0, 0, 10113}, + {197, 229, 197, 0, 0, 10113}, + {198, 230, 198, 0, 0, 10113}, + {199, 231, 199, 0, 0, 10113}, + {200, 232, 200, 0, 0, 10113}, + {201, 233, 201, 0, 0, 10113}, + {202, 234, 202, 0, 0, 10113}, + {203, 235, 203, 0, 0, 10113}, + {204, 236, 204, 0, 0, 10113}, + {205, 237, 205, 0, 0, 10113}, + {206, 238, 206, 0, 0, 10113}, + {207, 239, 207, 0, 0, 10113}, + {208, 240, 208, 0, 0, 10113}, + {209, 241, 209, 0, 0, 10113}, + {210, 242, 210, 0, 0, 10113}, + {211, 243, 211, 0, 0, 10113}, + {212, 244, 212, 0, 0, 10113}, + {213, 245, 213, 0, 0, 10113}, + {214, 246, 214, 0, 0, 10113}, + {216, 248, 216, 0, 0, 10113}, + {217, 249, 217, 0, 0, 10113}, + {218, 250, 218, 0, 0, 10113}, + {219, 251, 219, 0, 0, 10113}, + {220, 252, 220, 0, 0, 10113}, + {221, 253, 221, 0, 0, 10113}, + {222, 254, 222, 0, 0, 10113}, + {33554433, 16777216, 33554435, 0, 0, 26377}, + {192, 224, 192, 0, 0, 9993}, + {193, 225, 193, 0, 0, 9993}, + {194, 226, 194, 0, 0, 9993}, + {195, 227, 195, 0, 0, 9993}, + {196, 228, 196, 0, 0, 9993}, + {197, 229, 197, 0, 0, 9993}, + {198, 230, 198, 0, 0, 9993}, + {199, 231, 199, 0, 0, 9993}, + {200, 232, 200, 0, 0, 9993}, + {201, 233, 201, 0, 0, 9993}, + {202, 234, 202, 0, 0, 9993}, + {203, 235, 203, 0, 0, 9993}, + {204, 236, 204, 0, 0, 9993}, + {205, 237, 205, 0, 0, 9993}, + {206, 238, 206, 0, 0, 9993}, + {207, 239, 207, 0, 0, 9993}, + {208, 240, 208, 0, 0, 9993}, + {209, 241, 209, 0, 0, 9993}, + {210, 242, 210, 0, 0, 9993}, + {211, 243, 211, 0, 0, 9993}, + {212, 244, 212, 0, 0, 9993}, + {213, 245, 213, 0, 0, 9993}, + {214, 246, 214, 0, 0, 9993}, + {216, 248, 216, 0, 0, 9993}, + {217, 249, 217, 0, 0, 9993}, + {218, 250, 218, 0, 0, 9993}, + {219, 251, 219, 0, 0, 9993}, + {220, 252, 220, 0, 0, 9993}, + {221, 253, 221, 0, 0, 9993}, + {222, 254, 222, 0, 0, 9993}, + {376, 255, 376, 0, 0, 9993}, + {256, 257, 256, 0, 0, 10113}, + {256, 257, 256, 0, 0, 9993}, + {258, 259, 258, 0, 0, 10113}, + {258, 259, 258, 0, 0, 9993}, + {260, 261, 260, 0, 0, 10113}, + {260, 261, 260, 0, 0, 9993}, + {262, 263, 262, 0, 0, 10113}, + {262, 263, 262, 0, 0, 9993}, + {264, 265, 264, 0, 0, 10113}, + {264, 265, 264, 0, 0, 9993}, + {266, 267, 266, 0, 0, 10113}, + {266, 267, 266, 0, 0, 9993}, + {268, 269, 268, 0, 0, 10113}, + {268, 269, 268, 0, 0, 9993}, + {270, 271, 270, 0, 0, 10113}, + {270, 271, 270, 0, 0, 9993}, + {272, 273, 272, 0, 0, 10113}, + {272, 273, 272, 0, 0, 9993}, + {274, 275, 274, 0, 0, 10113}, + {274, 275, 274, 0, 0, 9993}, + {276, 277, 276, 0, 0, 10113}, + {276, 277, 276, 0, 0, 9993}, + {278, 279, 278, 0, 0, 10113}, + {278, 279, 278, 0, 0, 9993}, + {280, 281, 280, 0, 0, 10113}, + {280, 281, 280, 0, 0, 9993}, + {282, 283, 282, 0, 0, 10113}, + {282, 283, 282, 0, 0, 9993}, + {284, 285, 284, 0, 0, 10113}, + {284, 285, 284, 0, 0, 9993}, + {286, 287, 286, 0, 0, 10113}, + {286, 287, 286, 0, 0, 9993}, + {288, 289, 288, 0, 0, 10113}, + {288, 289, 288, 0, 0, 9993}, + {290, 291, 290, 0, 0, 10113}, + {290, 291, 290, 0, 0, 9993}, + {292, 293, 292, 0, 0, 10113}, + {292, 293, 292, 0, 0, 9993}, + {294, 295, 294, 0, 0, 10113}, + {294, 295, 294, 0, 0, 9993}, + {296, 297, 296, 0, 0, 10113}, + {296, 297, 296, 0, 0, 9993}, + {298, 299, 298, 0, 0, 10113}, + {298, 299, 298, 0, 0, 9993}, + {300, 301, 300, 0, 0, 10113}, + {300, 301, 300, 0, 0, 9993}, + {302, 303, 302, 0, 0, 10113}, + {302, 303, 302, 0, 0, 9993}, + {16777223, 33554437, 16777223, 0, 0, 26497}, + {73, 305, 73, 0, 0, 9993}, + {306, 307, 306, 0, 0, 10113}, + {306, 307, 306, 0, 0, 9993}, + {308, 309, 308, 0, 0, 10113}, + {308, 309, 308, 0, 0, 9993}, + {310, 311, 310, 0, 0, 10113}, + {310, 311, 310, 0, 0, 9993}, + {313, 314, 313, 0, 0, 10113}, + {313, 314, 313, 0, 0, 9993}, + {315, 316, 315, 0, 0, 10113}, + {315, 316, 315, 0, 0, 9993}, + {317, 318, 317, 0, 0, 10113}, + {317, 318, 317, 0, 0, 9993}, + {319, 320, 319, 0, 0, 10113}, + {319, 320, 319, 0, 0, 9993}, + {321, 322, 321, 0, 0, 10113}, + {321, 322, 321, 0, 0, 9993}, + {323, 324, 323, 0, 0, 10113}, + {323, 324, 323, 0, 0, 9993}, + {325, 326, 325, 0, 0, 10113}, + {325, 326, 325, 0, 0, 9993}, + {327, 328, 327, 0, 0, 10113}, + {327, 328, 327, 0, 0, 9993}, + {33554441, 16777224, 33554441, 0, 0, 26377}, + {330, 331, 330, 0, 0, 10113}, + {330, 331, 330, 0, 0, 9993}, + {332, 333, 332, 0, 0, 10113}, + {332, 333, 332, 0, 0, 9993}, + {334, 335, 334, 0, 0, 10113}, + {334, 335, 334, 0, 0, 9993}, + {336, 337, 336, 0, 0, 10113}, + {336, 337, 336, 0, 0, 9993}, + {338, 339, 338, 0, 0, 10113}, + {338, 339, 338, 0, 0, 9993}, + {340, 341, 340, 0, 0, 10113}, + {340, 341, 340, 0, 0, 9993}, + {342, 343, 342, 0, 0, 10113}, + {342, 343, 342, 0, 0, 9993}, + {344, 345, 344, 0, 0, 10113}, + {344, 345, 344, 0, 0, 9993}, + {346, 347, 346, 0, 0, 10113}, + {346, 347, 346, 0, 0, 9993}, + {348, 349, 348, 0, 0, 10113}, + {348, 349, 348, 0, 0, 9993}, + {350, 351, 350, 0, 0, 10113}, + {350, 351, 350, 0, 0, 9993}, + {352, 353, 352, 0, 0, 10113}, + {352, 353, 352, 0, 0, 9993}, + {354, 355, 354, 0, 0, 10113}, + {354, 355, 354, 0, 0, 9993}, + {356, 357, 356, 0, 0, 10113}, + {356, 357, 356, 0, 0, 9993}, + {358, 359, 358, 0, 0, 10113}, + {358, 359, 358, 0, 0, 9993}, + {360, 361, 360, 0, 0, 10113}, + {360, 361, 360, 0, 0, 9993}, + {362, 363, 362, 0, 0, 10113}, + {362, 363, 362, 0, 0, 9993}, + {364, 365, 364, 0, 0, 10113}, + {364, 365, 364, 0, 0, 9993}, + {366, 367, 366, 0, 0, 10113}, + {366, 367, 366, 0, 0, 9993}, + {368, 369, 368, 0, 0, 10113}, + {368, 369, 368, 0, 0, 9993}, + {370, 371, 370, 0, 0, 10113}, + {370, 371, 370, 0, 0, 9993}, + {372, 373, 372, 0, 0, 10113}, + {372, 373, 372, 0, 0, 9993}, + {374, 375, 374, 0, 0, 10113}, + {374, 375, 374, 0, 0, 9993}, + {376, 255, 376, 0, 0, 10113}, + {377, 378, 377, 0, 0, 10113}, + {377, 378, 377, 0, 0, 9993}, + {379, 380, 379, 0, 0, 10113}, + {379, 380, 379, 0, 0, 9993}, + {381, 382, 381, 0, 0, 10113}, + {381, 382, 381, 0, 0, 9993}, + {83, 383, 83, 0, 0, 9993}, + {579, 384, 579, 0, 0, 9993}, + {385, 595, 385, 0, 0, 10113}, + {386, 387, 386, 0, 0, 10113}, + {386, 387, 386, 0, 0, 9993}, + {388, 389, 388, 0, 0, 10113}, + {388, 389, 388, 0, 0, 9993}, + {390, 596, 390, 0, 0, 10113}, + {391, 392, 391, 0, 0, 10113}, + {391, 392, 391, 0, 0, 9993}, + {393, 598, 393, 0, 0, 10113}, + {394, 599, 394, 0, 0, 10113}, + {395, 396, 395, 0, 0, 10113}, + {395, 396, 395, 0, 0, 9993}, + {398, 477, 398, 0, 0, 10113}, + {399, 601, 399, 0, 0, 10113}, + {400, 603, 400, 0, 0, 10113}, + {401, 402, 401, 0, 0, 10113}, + {401, 402, 401, 0, 0, 9993}, + {403, 608, 403, 0, 0, 10113}, + {404, 611, 404, 0, 0, 10113}, + {502, 405, 502, 0, 0, 9993}, + {406, 617, 406, 0, 0, 10113}, + {407, 616, 407, 0, 0, 10113}, + {408, 409, 408, 0, 0, 10113}, + {408, 409, 408, 0, 0, 9993}, + {573, 410, 573, 0, 0, 9993}, + {412, 623, 412, 0, 0, 10113}, + {413, 626, 413, 0, 0, 10113}, + {544, 414, 544, 0, 0, 9993}, + {415, 629, 415, 0, 0, 10113}, + {416, 417, 416, 0, 0, 10113}, + {416, 417, 416, 0, 0, 9993}, + {418, 419, 418, 0, 0, 10113}, + {418, 419, 418, 0, 0, 9993}, + {420, 421, 420, 0, 0, 10113}, + {420, 421, 420, 0, 0, 9993}, + {422, 640, 422, 0, 0, 10113}, + {423, 424, 423, 0, 0, 10113}, + {423, 424, 423, 0, 0, 9993}, + {425, 643, 425, 0, 0, 10113}, + {428, 429, 428, 0, 0, 10113}, + {428, 429, 428, 0, 0, 9993}, + {430, 648, 430, 0, 0, 10113}, + {431, 432, 431, 0, 0, 10113}, + {431, 432, 431, 0, 0, 9993}, + {433, 650, 433, 0, 0, 10113}, + {434, 651, 434, 0, 0, 10113}, + {435, 436, 435, 0, 0, 10113}, + {435, 436, 435, 0, 0, 9993}, + {437, 438, 437, 0, 0, 10113}, + {437, 438, 437, 0, 0, 9993}, + {439, 658, 439, 0, 0, 10113}, + {440, 441, 440, 0, 0, 10113}, + {440, 441, 440, 0, 0, 9993}, {0, 0, 0, 0, 0, 1793}, - {56, 0, 56, 0, 0, 1801}, - {0, 2, 1, 0, 0, 1921}, - {65535, 1, 0, 0, 0, 1857}, - {65534, 0, 65535, 0, 0, 1801}, - {65457, 0, 65457, 0, 0, 1801}, - {0, 65439, 0, 0, 0, 1921}, - {0, 65480, 0, 0, 0, 1921}, - {0, 65406, 0, 0, 0, 1921}, - {0, 10795, 0, 0, 0, 1921}, - {0, 65373, 0, 0, 0, 1921}, - {0, 10792, 0, 0, 0, 1921}, - {10815, 0, 10815, 0, 0, 1801}, - {0, 65341, 0, 0, 0, 1921}, - {0, 69, 0, 0, 0, 1921}, - {0, 71, 0, 0, 0, 1921}, - {10783, 0, 10783, 0, 0, 1801}, - {10780, 0, 10780, 0, 0, 1801}, - {10782, 0, 10782, 0, 0, 1801}, - {65326, 0, 65326, 0, 0, 1801}, - {65330, 0, 65330, 0, 0, 1801}, - {65331, 0, 65331, 0, 0, 1801}, - {65334, 0, 65334, 0, 0, 1801}, - {65333, 0, 65333, 0, 0, 1801}, - {65329, 0, 65329, 0, 0, 1801}, - {42893, 613, 42893, 0, 0, 3849}, - {65327, 0, 65327, 0, 0, 1801}, - {65325, 0, 65325, 0, 0, 1801}, - {10743, 0, 10743, 0, 0, 1801}, - {10749, 0, 10749, 0, 0, 1801}, - {65323, 0, 65323, 0, 0, 1801}, - {65322, 0, 65322, 0, 0, 1801}, - {10727, 0, 10727, 0, 0, 1801}, - {65318, 0, 65318, 0, 0, 1801}, - {65467, 0, 65467, 0, 0, 1801}, - {65319, 0, 65319, 0, 0, 1801}, - {65465, 0, 65465, 0, 0, 1801}, - {65317, 0, 65317, 0, 0, 1801}, - {84, 0, 84, 0, 0, 1536}, - {0, 0, 0, 0, 0, 1025}, - {0, 38, 0, 0, 0, 1921}, - {0, 37, 0, 0, 0, 1921}, - {0, 64, 0, 0, 0, 1921}, - {0, 63, 0, 0, 0, 1921}, - {65498, 0, 65498, 0, 0, 1801}, - {65499, 0, 65499, 0, 0, 1801}, - {65505, 0, 65505, 0, 0, 1801}, - {65472, 0, 65472, 0, 0, 1801}, - {65473, 0, 65473, 0, 0, 1801}, - {0, 8, 0, 0, 0, 1921}, - {65474, 0, 65474, 0, 0, 1801}, - {65479, 0, 65479, 0, 0, 1801}, - {0, 0, 0, 0, 0, 1921}, - {65489, 0, 65489, 0, 0, 1801}, - {65482, 0, 65482, 0, 0, 1801}, - {65528, 0, 65528, 0, 0, 1801}, - {65450, 0, 65450, 0, 0, 1801}, - {65456, 0, 65456, 0, 0, 1801}, - {7, 0, 7, 0, 0, 1801}, - {0, 65476, 0, 0, 0, 1921}, - {65440, 0, 65440, 0, 0, 1801}, - {0, 65529, 0, 0, 0, 1921}, - {0, 80, 0, 0, 0, 1921}, - {0, 15, 0, 0, 0, 1921}, - {65521, 0, 65521, 0, 0, 1801}, - {0, 48, 0, 0, 0, 1921}, - {65488, 0, 65488, 0, 0, 1801}, + {444, 445, 444, 0, 0, 10113}, + {444, 445, 444, 0, 0, 9993}, + {503, 447, 503, 0, 0, 9993}, + {452, 454, 453, 0, 0, 10113}, + {452, 454, 453, 0, 0, 10049}, + {452, 454, 453, 0, 0, 9993}, + {455, 457, 456, 0, 0, 10113}, + {455, 457, 456, 0, 0, 10049}, + {455, 457, 456, 0, 0, 9993}, + {458, 460, 459, 0, 0, 10113}, + {458, 460, 459, 0, 0, 10049}, + {458, 460, 459, 0, 0, 9993}, + {461, 462, 461, 0, 0, 10113}, + {461, 462, 461, 0, 0, 9993}, + {463, 464, 463, 0, 0, 10113}, + {463, 464, 463, 0, 0, 9993}, + {465, 466, 465, 0, 0, 10113}, + {465, 466, 465, 0, 0, 9993}, + {467, 468, 467, 0, 0, 10113}, + {467, 468, 467, 0, 0, 9993}, + {469, 470, 469, 0, 0, 10113}, + {469, 470, 469, 0, 0, 9993}, + {471, 472, 471, 0, 0, 10113}, + {471, 472, 471, 0, 0, 9993}, + {473, 474, 473, 0, 0, 10113}, + {473, 474, 473, 0, 0, 9993}, + {475, 476, 475, 0, 0, 10113}, + {475, 476, 475, 0, 0, 9993}, + {398, 477, 398, 0, 0, 9993}, + {478, 479, 478, 0, 0, 10113}, + {478, 479, 478, 0, 0, 9993}, + {480, 481, 480, 0, 0, 10113}, + {480, 481, 480, 0, 0, 9993}, + {482, 483, 482, 0, 0, 10113}, + {482, 483, 482, 0, 0, 9993}, + {484, 485, 484, 0, 0, 10113}, + {484, 485, 484, 0, 0, 9993}, + {486, 487, 486, 0, 0, 10113}, + {486, 487, 486, 0, 0, 9993}, + {488, 489, 488, 0, 0, 10113}, + {488, 489, 488, 0, 0, 9993}, + {490, 491, 490, 0, 0, 10113}, + {490, 491, 490, 0, 0, 9993}, + {492, 493, 492, 0, 0, 10113}, + {492, 493, 492, 0, 0, 9993}, + {494, 495, 494, 0, 0, 10113}, + {494, 495, 494, 0, 0, 9993}, + {33554444, 16777227, 33554444, 0, 0, 26377}, + {497, 499, 498, 0, 0, 10113}, + {497, 499, 498, 0, 0, 10049}, + {497, 499, 498, 0, 0, 9993}, + {500, 501, 500, 0, 0, 10113}, + {500, 501, 500, 0, 0, 9993}, + {502, 405, 502, 0, 0, 10113}, + {503, 447, 503, 0, 0, 10113}, + {504, 505, 504, 0, 0, 10113}, + {504, 505, 504, 0, 0, 9993}, + {506, 507, 506, 0, 0, 10113}, + {506, 507, 506, 0, 0, 9993}, + {508, 509, 508, 0, 0, 10113}, + {508, 509, 508, 0, 0, 9993}, + {510, 511, 510, 0, 0, 10113}, + {510, 511, 510, 0, 0, 9993}, + {512, 513, 512, 0, 0, 10113}, + {512, 513, 512, 0, 0, 9993}, + {514, 515, 514, 0, 0, 10113}, + {514, 515, 514, 0, 0, 9993}, + {516, 517, 516, 0, 0, 10113}, + {516, 517, 516, 0, 0, 9993}, + {518, 519, 518, 0, 0, 10113}, + {518, 519, 518, 0, 0, 9993}, + {520, 521, 520, 0, 0, 10113}, + {520, 521, 520, 0, 0, 9993}, + {522, 523, 522, 0, 0, 10113}, + {522, 523, 522, 0, 0, 9993}, + {524, 525, 524, 0, 0, 10113}, + {524, 525, 524, 0, 0, 9993}, + {526, 527, 526, 0, 0, 10113}, + {526, 527, 526, 0, 0, 9993}, + {528, 529, 528, 0, 0, 10113}, + {528, 529, 528, 0, 0, 9993}, + {530, 531, 530, 0, 0, 10113}, + {530, 531, 530, 0, 0, 9993}, + {532, 533, 532, 0, 0, 10113}, + {532, 533, 532, 0, 0, 9993}, + {534, 535, 534, 0, 0, 10113}, + {534, 535, 534, 0, 0, 9993}, + {536, 537, 536, 0, 0, 10113}, + {536, 537, 536, 0, 0, 9993}, + {538, 539, 538, 0, 0, 10113}, + {538, 539, 538, 0, 0, 9993}, + {540, 541, 540, 0, 0, 10113}, + {540, 541, 540, 0, 0, 9993}, + {542, 543, 542, 0, 0, 10113}, + {542, 543, 542, 0, 0, 9993}, + {544, 414, 544, 0, 0, 10113}, + {546, 547, 546, 0, 0, 10113}, + {546, 547, 546, 0, 0, 9993}, + {548, 549, 548, 0, 0, 10113}, + {548, 549, 548, 0, 0, 9993}, + {550, 551, 550, 0, 0, 10113}, + {550, 551, 550, 0, 0, 9993}, + {552, 553, 552, 0, 0, 10113}, + {552, 553, 552, 0, 0, 9993}, + {554, 555, 554, 0, 0, 10113}, + {554, 555, 554, 0, 0, 9993}, + {556, 557, 556, 0, 0, 10113}, + {556, 557, 556, 0, 0, 9993}, + {558, 559, 558, 0, 0, 10113}, + {558, 559, 558, 0, 0, 9993}, + {560, 561, 560, 0, 0, 10113}, + {560, 561, 560, 0, 0, 9993}, + {562, 563, 562, 0, 0, 10113}, + {562, 563, 562, 0, 0, 9993}, + {570, 11365, 570, 0, 0, 10113}, + {571, 572, 571, 0, 0, 10113}, + {571, 572, 571, 0, 0, 9993}, + {573, 410, 573, 0, 0, 10113}, + {574, 11366, 574, 0, 0, 10113}, + {11390, 575, 11390, 0, 0, 9993}, + {11391, 576, 11391, 0, 0, 9993}, + {577, 578, 577, 0, 0, 10113}, + {577, 578, 577, 0, 0, 9993}, + {579, 384, 579, 0, 0, 10113}, + {580, 649, 580, 0, 0, 10113}, + {581, 652, 581, 0, 0, 10113}, + {582, 583, 582, 0, 0, 10113}, + {582, 583, 582, 0, 0, 9993}, + {584, 585, 584, 0, 0, 10113}, + {584, 585, 584, 0, 0, 9993}, + {586, 587, 586, 0, 0, 10113}, + {586, 587, 586, 0, 0, 9993}, + {588, 589, 588, 0, 0, 10113}, + {588, 589, 588, 0, 0, 9993}, + {590, 591, 590, 0, 0, 10113}, + {590, 591, 590, 0, 0, 9993}, + {11375, 592, 11375, 0, 0, 9993}, + {11373, 593, 11373, 0, 0, 9993}, + {11376, 594, 11376, 0, 0, 9993}, + {385, 595, 385, 0, 0, 9993}, + {390, 596, 390, 0, 0, 9993}, + {393, 598, 393, 0, 0, 9993}, + {394, 599, 394, 0, 0, 9993}, + {399, 601, 399, 0, 0, 9993}, + {400, 603, 400, 0, 0, 9993}, + {403, 608, 403, 0, 0, 9993}, + {404, 611, 404, 0, 0, 9993}, + {42893, 613, 42893, 0, 0, 9993}, + {407, 616, 407, 0, 0, 9993}, + {406, 617, 406, 0, 0, 9993}, + {11362, 619, 11362, 0, 0, 9993}, + {412, 623, 412, 0, 0, 9993}, + {11374, 625, 11374, 0, 0, 9993}, + {413, 626, 413, 0, 0, 9993}, + {415, 629, 415, 0, 0, 9993}, + {11364, 637, 11364, 0, 0, 9993}, + {422, 640, 422, 0, 0, 9993}, + {425, 643, 425, 0, 0, 9993}, + {430, 648, 430, 0, 0, 9993}, + {580, 649, 580, 0, 0, 9993}, + {433, 650, 433, 0, 0, 9993}, + {434, 651, 434, 0, 0, 9993}, + {581, 652, 581, 0, 0, 9993}, + {439, 658, 439, 0, 0, 9993}, + {0, 0, 0, 0, 0, 14089}, + {0, 0, 0, 0, 0, 5889}, + {921, 837, 921, 0, 0, 13832}, + {880, 881, 880, 0, 0, 10113}, + {880, 881, 880, 0, 0, 9993}, + {882, 883, 882, 0, 0, 10113}, + {882, 883, 882, 0, 0, 9993}, + {886, 887, 886, 0, 0, 10113}, + {886, 887, 886, 0, 0, 9993}, + {0, 0, 0, 0, 0, 13321}, + {1021, 891, 1021, 0, 0, 9993}, + {1022, 892, 1022, 0, 0, 9993}, + {1023, 893, 1023, 0, 0, 9993}, + {902, 940, 902, 0, 0, 10113}, + {904, 941, 904, 0, 0, 10113}, + {905, 942, 905, 0, 0, 10113}, + {906, 943, 906, 0, 0, 10113}, + {908, 972, 908, 0, 0, 10113}, + {910, 973, 910, 0, 0, 10113}, + {911, 974, 911, 0, 0, 10113}, + {50331663, 16777230, 50331663, 0, 0, 26377}, + {913, 945, 913, 0, 0, 10113}, + {914, 946, 914, 0, 0, 10113}, + {915, 947, 915, 0, 0, 10113}, + {916, 948, 916, 0, 0, 10113}, + {917, 949, 917, 0, 0, 10113}, + {918, 950, 918, 0, 0, 10113}, + {919, 951, 919, 0, 0, 10113}, + {920, 952, 920, 0, 0, 10113}, + {921, 953, 921, 0, 0, 10113}, + {922, 954, 922, 0, 0, 10113}, + {923, 955, 923, 0, 0, 10113}, + {924, 956, 924, 0, 0, 10113}, + {925, 957, 925, 0, 0, 10113}, + {926, 958, 926, 0, 0, 10113}, + {927, 959, 927, 0, 0, 10113}, + {928, 960, 928, 0, 0, 10113}, + {929, 961, 929, 0, 0, 10113}, + {931, 963, 931, 0, 0, 10113}, + {932, 964, 932, 0, 0, 10113}, + {933, 965, 933, 0, 0, 10113}, + {934, 966, 934, 0, 0, 10113}, + {935, 967, 935, 0, 0, 10113}, + {936, 968, 936, 0, 0, 10113}, + {937, 969, 937, 0, 0, 10113}, + {938, 970, 938, 0, 0, 10113}, + {939, 971, 939, 0, 0, 10113}, + {902, 940, 902, 0, 0, 9993}, + {904, 941, 904, 0, 0, 9993}, + {905, 942, 905, 0, 0, 9993}, + {906, 943, 906, 0, 0, 9993}, + {50331667, 16777234, 50331667, 0, 0, 26377}, + {913, 945, 913, 0, 0, 9993}, + {914, 946, 914, 0, 0, 9993}, + {915, 947, 915, 0, 0, 9993}, + {916, 948, 916, 0, 0, 9993}, + {917, 949, 917, 0, 0, 9993}, + {918, 950, 918, 0, 0, 9993}, + {919, 951, 919, 0, 0, 9993}, + {920, 952, 920, 0, 0, 9993}, + {921, 953, 921, 0, 0, 9993}, + {922, 954, 922, 0, 0, 9993}, + {923, 955, 923, 0, 0, 9993}, + {924, 956, 924, 0, 0, 9993}, + {925, 957, 925, 0, 0, 9993}, + {926, 958, 926, 0, 0, 9993}, + {927, 959, 927, 0, 0, 9993}, + {928, 960, 928, 0, 0, 9993}, + {929, 961, 929, 0, 0, 9993}, + {931, 962, 931, 0, 0, 9993}, + {931, 963, 931, 0, 0, 9993}, + {932, 964, 932, 0, 0, 9993}, + {933, 965, 933, 0, 0, 9993}, + {934, 966, 934, 0, 0, 9993}, + {935, 967, 935, 0, 0, 9993}, + {936, 968, 936, 0, 0, 9993}, + {937, 969, 937, 0, 0, 9993}, + {938, 970, 938, 0, 0, 9993}, + {939, 971, 939, 0, 0, 9993}, + {908, 972, 908, 0, 0, 9993}, + {910, 973, 910, 0, 0, 9993}, + {911, 974, 911, 0, 0, 9993}, + {975, 983, 975, 0, 0, 10113}, + {914, 976, 914, 0, 0, 9993}, + {920, 977, 920, 0, 0, 9993}, + {0, 0, 0, 0, 0, 10113}, + {934, 981, 934, 0, 0, 9993}, + {928, 982, 928, 0, 0, 9993}, + {975, 983, 975, 0, 0, 9993}, + {984, 985, 984, 0, 0, 10113}, + {984, 985, 984, 0, 0, 9993}, + {986, 987, 986, 0, 0, 10113}, + {986, 987, 986, 0, 0, 9993}, + {988, 989, 988, 0, 0, 10113}, + {988, 989, 988, 0, 0, 9993}, + {990, 991, 990, 0, 0, 10113}, + {990, 991, 990, 0, 0, 9993}, + {992, 993, 992, 0, 0, 10113}, + {992, 993, 992, 0, 0, 9993}, + {994, 995, 994, 0, 0, 10113}, + {994, 995, 994, 0, 0, 9993}, + {996, 997, 996, 0, 0, 10113}, + {996, 997, 996, 0, 0, 9993}, + {998, 999, 998, 0, 0, 10113}, + {998, 999, 998, 0, 0, 9993}, + {1000, 1001, 1000, 0, 0, 10113}, + {1000, 1001, 1000, 0, 0, 9993}, + {1002, 1003, 1002, 0, 0, 10113}, + {1002, 1003, 1002, 0, 0, 9993}, + {1004, 1005, 1004, 0, 0, 10113}, + {1004, 1005, 1004, 0, 0, 9993}, + {1006, 1007, 1006, 0, 0, 10113}, + {1006, 1007, 1006, 0, 0, 9993}, + {922, 1008, 922, 0, 0, 9993}, + {929, 1009, 929, 0, 0, 9993}, + {1017, 1010, 1017, 0, 0, 9993}, + {1012, 952, 1012, 0, 0, 10113}, + {917, 1013, 917, 0, 0, 9993}, + {1015, 1016, 1015, 0, 0, 10113}, + {1015, 1016, 1015, 0, 0, 9993}, + {1017, 1010, 1017, 0, 0, 10113}, + {1018, 1019, 1018, 0, 0, 10113}, + {1018, 1019, 1018, 0, 0, 9993}, + {1021, 891, 1021, 0, 0, 10113}, + {1022, 892, 1022, 0, 0, 10113}, + {1023, 893, 1023, 0, 0, 10113}, + {1024, 1104, 1024, 0, 0, 10113}, + {1025, 1105, 1025, 0, 0, 10113}, + {1026, 1106, 1026, 0, 0, 10113}, + {1027, 1107, 1027, 0, 0, 10113}, + {1028, 1108, 1028, 0, 0, 10113}, + {1029, 1109, 1029, 0, 0, 10113}, + {1030, 1110, 1030, 0, 0, 10113}, + {1031, 1111, 1031, 0, 0, 10113}, + {1032, 1112, 1032, 0, 0, 10113}, + {1033, 1113, 1033, 0, 0, 10113}, + {1034, 1114, 1034, 0, 0, 10113}, + {1035, 1115, 1035, 0, 0, 10113}, + {1036, 1116, 1036, 0, 0, 10113}, + {1037, 1117, 1037, 0, 0, 10113}, + {1038, 1118, 1038, 0, 0, 10113}, + {1039, 1119, 1039, 0, 0, 10113}, + {1040, 1072, 1040, 0, 0, 10113}, + {1041, 1073, 1041, 0, 0, 10113}, + {1042, 1074, 1042, 0, 0, 10113}, + {1043, 1075, 1043, 0, 0, 10113}, + {1044, 1076, 1044, 0, 0, 10113}, + {1045, 1077, 1045, 0, 0, 10113}, + {1046, 1078, 1046, 0, 0, 10113}, + {1047, 1079, 1047, 0, 0, 10113}, + {1048, 1080, 1048, 0, 0, 10113}, + {1049, 1081, 1049, 0, 0, 10113}, + {1050, 1082, 1050, 0, 0, 10113}, + {1051, 1083, 1051, 0, 0, 10113}, + {1052, 1084, 1052, 0, 0, 10113}, + {1053, 1085, 1053, 0, 0, 10113}, + {1054, 1086, 1054, 0, 0, 10113}, + {1055, 1087, 1055, 0, 0, 10113}, + {1056, 1088, 1056, 0, 0, 10113}, + {1057, 1089, 1057, 0, 0, 10113}, + {1058, 1090, 1058, 0, 0, 10113}, + {1059, 1091, 1059, 0, 0, 10113}, + {1060, 1092, 1060, 0, 0, 10113}, + {1061, 1093, 1061, 0, 0, 10113}, + {1062, 1094, 1062, 0, 0, 10113}, + {1063, 1095, 1063, 0, 0, 10113}, + {1064, 1096, 1064, 0, 0, 10113}, + {1065, 1097, 1065, 0, 0, 10113}, + {1066, 1098, 1066, 0, 0, 10113}, + {1067, 1099, 1067, 0, 0, 10113}, + {1068, 1100, 1068, 0, 0, 10113}, + {1069, 1101, 1069, 0, 0, 10113}, + {1070, 1102, 1070, 0, 0, 10113}, + {1071, 1103, 1071, 0, 0, 10113}, + {1040, 1072, 1040, 0, 0, 9993}, + {1041, 1073, 1041, 0, 0, 9993}, + {1042, 1074, 1042, 0, 0, 9993}, + {1043, 1075, 1043, 0, 0, 9993}, + {1044, 1076, 1044, 0, 0, 9993}, + {1045, 1077, 1045, 0, 0, 9993}, + {1046, 1078, 1046, 0, 0, 9993}, + {1047, 1079, 1047, 0, 0, 9993}, + {1048, 1080, 1048, 0, 0, 9993}, + {1049, 1081, 1049, 0, 0, 9993}, + {1050, 1082, 1050, 0, 0, 9993}, + {1051, 1083, 1051, 0, 0, 9993}, + {1052, 1084, 1052, 0, 0, 9993}, + {1053, 1085, 1053, 0, 0, 9993}, + {1054, 1086, 1054, 0, 0, 9993}, + {1055, 1087, 1055, 0, 0, 9993}, + {1056, 1088, 1056, 0, 0, 9993}, + {1057, 1089, 1057, 0, 0, 9993}, + {1058, 1090, 1058, 0, 0, 9993}, + {1059, 1091, 1059, 0, 0, 9993}, + {1060, 1092, 1060, 0, 0, 9993}, + {1061, 1093, 1061, 0, 0, 9993}, + {1062, 1094, 1062, 0, 0, 9993}, + {1063, 1095, 1063, 0, 0, 9993}, + {1064, 1096, 1064, 0, 0, 9993}, + {1065, 1097, 1065, 0, 0, 9993}, + {1066, 1098, 1066, 0, 0, 9993}, + {1067, 1099, 1067, 0, 0, 9993}, + {1068, 1100, 1068, 0, 0, 9993}, + {1069, 1101, 1069, 0, 0, 9993}, + {1070, 1102, 1070, 0, 0, 9993}, + {1071, 1103, 1071, 0, 0, 9993}, + {1024, 1104, 1024, 0, 0, 9993}, + {1025, 1105, 1025, 0, 0, 9993}, + {1026, 1106, 1026, 0, 0, 9993}, + {1027, 1107, 1027, 0, 0, 9993}, + {1028, 1108, 1028, 0, 0, 9993}, + {1029, 1109, 1029, 0, 0, 9993}, + {1030, 1110, 1030, 0, 0, 9993}, + {1031, 1111, 1031, 0, 0, 9993}, + {1032, 1112, 1032, 0, 0, 9993}, + {1033, 1113, 1033, 0, 0, 9993}, + {1034, 1114, 1034, 0, 0, 9993}, + {1035, 1115, 1035, 0, 0, 9993}, + {1036, 1116, 1036, 0, 0, 9993}, + {1037, 1117, 1037, 0, 0, 9993}, + {1038, 1118, 1038, 0, 0, 9993}, + {1039, 1119, 1039, 0, 0, 9993}, + {1120, 1121, 1120, 0, 0, 10113}, + {1120, 1121, 1120, 0, 0, 9993}, + {1122, 1123, 1122, 0, 0, 10113}, + {1122, 1123, 1122, 0, 0, 9993}, + {1124, 1125, 1124, 0, 0, 10113}, + {1124, 1125, 1124, 0, 0, 9993}, + {1126, 1127, 1126, 0, 0, 10113}, + {1126, 1127, 1126, 0, 0, 9993}, + {1128, 1129, 1128, 0, 0, 10113}, + {1128, 1129, 1128, 0, 0, 9993}, + {1130, 1131, 1130, 0, 0, 10113}, + {1130, 1131, 1130, 0, 0, 9993}, + {1132, 1133, 1132, 0, 0, 10113}, + {1132, 1133, 1132, 0, 0, 9993}, + {1134, 1135, 1134, 0, 0, 10113}, + {1134, 1135, 1134, 0, 0, 9993}, + {1136, 1137, 1136, 0, 0, 10113}, + {1136, 1137, 1136, 0, 0, 9993}, + {1138, 1139, 1138, 0, 0, 10113}, + {1138, 1139, 1138, 0, 0, 9993}, + {1140, 1141, 1140, 0, 0, 10113}, + {1140, 1141, 1140, 0, 0, 9993}, + {1142, 1143, 1142, 0, 0, 10113}, + {1142, 1143, 1142, 0, 0, 9993}, + {1144, 1145, 1144, 0, 0, 10113}, + {1144, 1145, 1144, 0, 0, 9993}, + {1146, 1147, 1146, 0, 0, 10113}, + {1146, 1147, 1146, 0, 0, 9993}, + {1148, 1149, 1148, 0, 0, 10113}, + {1148, 1149, 1148, 0, 0, 9993}, + {1150, 1151, 1150, 0, 0, 10113}, + {1150, 1151, 1150, 0, 0, 9993}, + {1152, 1153, 1152, 0, 0, 10113}, + {1152, 1153, 1152, 0, 0, 9993}, + {1162, 1163, 1162, 0, 0, 10113}, + {1162, 1163, 1162, 0, 0, 9993}, + {1164, 1165, 1164, 0, 0, 10113}, + {1164, 1165, 1164, 0, 0, 9993}, + {1166, 1167, 1166, 0, 0, 10113}, + {1166, 1167, 1166, 0, 0, 9993}, + {1168, 1169, 1168, 0, 0, 10113}, + {1168, 1169, 1168, 0, 0, 9993}, + {1170, 1171, 1170, 0, 0, 10113}, + {1170, 1171, 1170, 0, 0, 9993}, + {1172, 1173, 1172, 0, 0, 10113}, + {1172, 1173, 1172, 0, 0, 9993}, + {1174, 1175, 1174, 0, 0, 10113}, + {1174, 1175, 1174, 0, 0, 9993}, + {1176, 1177, 1176, 0, 0, 10113}, + {1176, 1177, 1176, 0, 0, 9993}, + {1178, 1179, 1178, 0, 0, 10113}, + {1178, 1179, 1178, 0, 0, 9993}, + {1180, 1181, 1180, 0, 0, 10113}, + {1180, 1181, 1180, 0, 0, 9993}, + {1182, 1183, 1182, 0, 0, 10113}, + {1182, 1183, 1182, 0, 0, 9993}, + {1184, 1185, 1184, 0, 0, 10113}, + {1184, 1185, 1184, 0, 0, 9993}, + {1186, 1187, 1186, 0, 0, 10113}, + {1186, 1187, 1186, 0, 0, 9993}, + {1188, 1189, 1188, 0, 0, 10113}, + {1188, 1189, 1188, 0, 0, 9993}, + {1190, 1191, 1190, 0, 0, 10113}, + {1190, 1191, 1190, 0, 0, 9993}, + {1192, 1193, 1192, 0, 0, 10113}, + {1192, 1193, 1192, 0, 0, 9993}, + {1194, 1195, 1194, 0, 0, 10113}, + {1194, 1195, 1194, 0, 0, 9993}, + {1196, 1197, 1196, 0, 0, 10113}, + {1196, 1197, 1196, 0, 0, 9993}, + {1198, 1199, 1198, 0, 0, 10113}, + {1198, 1199, 1198, 0, 0, 9993}, + {1200, 1201, 1200, 0, 0, 10113}, + {1200, 1201, 1200, 0, 0, 9993}, + {1202, 1203, 1202, 0, 0, 10113}, + {1202, 1203, 1202, 0, 0, 9993}, + {1204, 1205, 1204, 0, 0, 10113}, + {1204, 1205, 1204, 0, 0, 9993}, + {1206, 1207, 1206, 0, 0, 10113}, + {1206, 1207, 1206, 0, 0, 9993}, + {1208, 1209, 1208, 0, 0, 10113}, + {1208, 1209, 1208, 0, 0, 9993}, + {1210, 1211, 1210, 0, 0, 10113}, + {1210, 1211, 1210, 0, 0, 9993}, + {1212, 1213, 1212, 0, 0, 10113}, + {1212, 1213, 1212, 0, 0, 9993}, + {1214, 1215, 1214, 0, 0, 10113}, + {1214, 1215, 1214, 0, 0, 9993}, + {1216, 1231, 1216, 0, 0, 10113}, + {1217, 1218, 1217, 0, 0, 10113}, + {1217, 1218, 1217, 0, 0, 9993}, + {1219, 1220, 1219, 0, 0, 10113}, + {1219, 1220, 1219, 0, 0, 9993}, + {1221, 1222, 1221, 0, 0, 10113}, + {1221, 1222, 1221, 0, 0, 9993}, + {1223, 1224, 1223, 0, 0, 10113}, + {1223, 1224, 1223, 0, 0, 9993}, + {1225, 1226, 1225, 0, 0, 10113}, + {1225, 1226, 1225, 0, 0, 9993}, + {1227, 1228, 1227, 0, 0, 10113}, + {1227, 1228, 1227, 0, 0, 9993}, + {1229, 1230, 1229, 0, 0, 10113}, + {1229, 1230, 1229, 0, 0, 9993}, + {1216, 1231, 1216, 0, 0, 9993}, + {1232, 1233, 1232, 0, 0, 10113}, + {1232, 1233, 1232, 0, 0, 9993}, + {1234, 1235, 1234, 0, 0, 10113}, + {1234, 1235, 1234, 0, 0, 9993}, + {1236, 1237, 1236, 0, 0, 10113}, + {1236, 1237, 1236, 0, 0, 9993}, + {1238, 1239, 1238, 0, 0, 10113}, + {1238, 1239, 1238, 0, 0, 9993}, + {1240, 1241, 1240, 0, 0, 10113}, + {1240, 1241, 1240, 0, 0, 9993}, + {1242, 1243, 1242, 0, 0, 10113}, + {1242, 1243, 1242, 0, 0, 9993}, + {1244, 1245, 1244, 0, 0, 10113}, + {1244, 1245, 1244, 0, 0, 9993}, + {1246, 1247, 1246, 0, 0, 10113}, + {1246, 1247, 1246, 0, 0, 9993}, + {1248, 1249, 1248, 0, 0, 10113}, + {1248, 1249, 1248, 0, 0, 9993}, + {1250, 1251, 1250, 0, 0, 10113}, + {1250, 1251, 1250, 0, 0, 9993}, + {1252, 1253, 1252, 0, 0, 10113}, + {1252, 1253, 1252, 0, 0, 9993}, + {1254, 1255, 1254, 0, 0, 10113}, + {1254, 1255, 1254, 0, 0, 9993}, + {1256, 1257, 1256, 0, 0, 10113}, + {1256, 1257, 1256, 0, 0, 9993}, + {1258, 1259, 1258, 0, 0, 10113}, + {1258, 1259, 1258, 0, 0, 9993}, + {1260, 1261, 1260, 0, 0, 10113}, + {1260, 1261, 1260, 0, 0, 9993}, + {1262, 1263, 1262, 0, 0, 10113}, + {1262, 1263, 1262, 0, 0, 9993}, + {1264, 1265, 1264, 0, 0, 10113}, + {1264, 1265, 1264, 0, 0, 9993}, + {1266, 1267, 1266, 0, 0, 10113}, + {1266, 1267, 1266, 0, 0, 9993}, + {1268, 1269, 1268, 0, 0, 10113}, + {1268, 1269, 1268, 0, 0, 9993}, + {1270, 1271, 1270, 0, 0, 10113}, + {1270, 1271, 1270, 0, 0, 9993}, + {1272, 1273, 1272, 0, 0, 10113}, + {1272, 1273, 1272, 0, 0, 9993}, + {1274, 1275, 1274, 0, 0, 10113}, + {1274, 1275, 1274, 0, 0, 9993}, + {1276, 1277, 1276, 0, 0, 10113}, + {1276, 1277, 1276, 0, 0, 9993}, + {1278, 1279, 1278, 0, 0, 10113}, + {1278, 1279, 1278, 0, 0, 9993}, + {1280, 1281, 1280, 0, 0, 10113}, + {1280, 1281, 1280, 0, 0, 9993}, + {1282, 1283, 1282, 0, 0, 10113}, + {1282, 1283, 1282, 0, 0, 9993}, + {1284, 1285, 1284, 0, 0, 10113}, + {1284, 1285, 1284, 0, 0, 9993}, + {1286, 1287, 1286, 0, 0, 10113}, + {1286, 1287, 1286, 0, 0, 9993}, + {1288, 1289, 1288, 0, 0, 10113}, + {1288, 1289, 1288, 0, 0, 9993}, + {1290, 1291, 1290, 0, 0, 10113}, + {1290, 1291, 1290, 0, 0, 9993}, + {1292, 1293, 1292, 0, 0, 10113}, + {1292, 1293, 1292, 0, 0, 9993}, + {1294, 1295, 1294, 0, 0, 10113}, + {1294, 1295, 1294, 0, 0, 9993}, + {1296, 1297, 1296, 0, 0, 10113}, + {1296, 1297, 1296, 0, 0, 9993}, + {1298, 1299, 1298, 0, 0, 10113}, + {1298, 1299, 1298, 0, 0, 9993}, + {1300, 1301, 1300, 0, 0, 10113}, + {1300, 1301, 1300, 0, 0, 9993}, + {1302, 1303, 1302, 0, 0, 10113}, + {1302, 1303, 1302, 0, 0, 9993}, + {1304, 1305, 1304, 0, 0, 10113}, + {1304, 1305, 1304, 0, 0, 9993}, + {1306, 1307, 1306, 0, 0, 10113}, + {1306, 1307, 1306, 0, 0, 9993}, + {1308, 1309, 1308, 0, 0, 10113}, + {1308, 1309, 1308, 0, 0, 9993}, + {1310, 1311, 1310, 0, 0, 10113}, + {1310, 1311, 1310, 0, 0, 9993}, + {1312, 1313, 1312, 0, 0, 10113}, + {1312, 1313, 1312, 0, 0, 9993}, + {1314, 1315, 1314, 0, 0, 10113}, + {1314, 1315, 1314, 0, 0, 9993}, + {1316, 1317, 1316, 0, 0, 10113}, + {1316, 1317, 1316, 0, 0, 9993}, + {1318, 1319, 1318, 0, 0, 10113}, + {1318, 1319, 1318, 0, 0, 9993}, + {1329, 1377, 1329, 0, 0, 10113}, + {1330, 1378, 1330, 0, 0, 10113}, + {1331, 1379, 1331, 0, 0, 10113}, + {1332, 1380, 1332, 0, 0, 10113}, + {1333, 1381, 1333, 0, 0, 10113}, + {1334, 1382, 1334, 0, 0, 10113}, + {1335, 1383, 1335, 0, 0, 10113}, + {1336, 1384, 1336, 0, 0, 10113}, + {1337, 1385, 1337, 0, 0, 10113}, + {1338, 1386, 1338, 0, 0, 10113}, + {1339, 1387, 1339, 0, 0, 10113}, + {1340, 1388, 1340, 0, 0, 10113}, + {1341, 1389, 1341, 0, 0, 10113}, + {1342, 1390, 1342, 0, 0, 10113}, + {1343, 1391, 1343, 0, 0, 10113}, + {1344, 1392, 1344, 0, 0, 10113}, + {1345, 1393, 1345, 0, 0, 10113}, + {1346, 1394, 1346, 0, 0, 10113}, + {1347, 1395, 1347, 0, 0, 10113}, + {1348, 1396, 1348, 0, 0, 10113}, + {1349, 1397, 1349, 0, 0, 10113}, + {1350, 1398, 1350, 0, 0, 10113}, + {1351, 1399, 1351, 0, 0, 10113}, + {1352, 1400, 1352, 0, 0, 10113}, + {1353, 1401, 1353, 0, 0, 10113}, + {1354, 1402, 1354, 0, 0, 10113}, + {1355, 1403, 1355, 0, 0, 10113}, + {1356, 1404, 1356, 0, 0, 10113}, + {1357, 1405, 1357, 0, 0, 10113}, + {1358, 1406, 1358, 0, 0, 10113}, + {1359, 1407, 1359, 0, 0, 10113}, + {1360, 1408, 1360, 0, 0, 10113}, + {1361, 1409, 1361, 0, 0, 10113}, + {1362, 1410, 1362, 0, 0, 10113}, + {1363, 1411, 1363, 0, 0, 10113}, + {1364, 1412, 1364, 0, 0, 10113}, + {1365, 1413, 1365, 0, 0, 10113}, + {1366, 1414, 1366, 0, 0, 10113}, + {1329, 1377, 1329, 0, 0, 9993}, + {1330, 1378, 1330, 0, 0, 9993}, + {1331, 1379, 1331, 0, 0, 9993}, + {1332, 1380, 1332, 0, 0, 9993}, + {1333, 1381, 1333, 0, 0, 9993}, + {1334, 1382, 1334, 0, 0, 9993}, + {1335, 1383, 1335, 0, 0, 9993}, + {1336, 1384, 1336, 0, 0, 9993}, + {1337, 1385, 1337, 0, 0, 9993}, + {1338, 1386, 1338, 0, 0, 9993}, + {1339, 1387, 1339, 0, 0, 9993}, + {1340, 1388, 1340, 0, 0, 9993}, + {1341, 1389, 1341, 0, 0, 9993}, + {1342, 1390, 1342, 0, 0, 9993}, + {1343, 1391, 1343, 0, 0, 9993}, + {1344, 1392, 1344, 0, 0, 9993}, + {1345, 1393, 1345, 0, 0, 9993}, + {1346, 1394, 1346, 0, 0, 9993}, + {1347, 1395, 1347, 0, 0, 9993}, + {1348, 1396, 1348, 0, 0, 9993}, + {1349, 1397, 1349, 0, 0, 9993}, + {1350, 1398, 1350, 0, 0, 9993}, + {1351, 1399, 1351, 0, 0, 9993}, + {1352, 1400, 1352, 0, 0, 9993}, + {1353, 1401, 1353, 0, 0, 9993}, + {1354, 1402, 1354, 0, 0, 9993}, + {1355, 1403, 1355, 0, 0, 9993}, + {1356, 1404, 1356, 0, 0, 9993}, + {1357, 1405, 1357, 0, 0, 9993}, + {1358, 1406, 1358, 0, 0, 9993}, + {1359, 1407, 1359, 0, 0, 9993}, + {1360, 1408, 1360, 0, 0, 9993}, + {1361, 1409, 1361, 0, 0, 9993}, + {1362, 1410, 1362, 0, 0, 9993}, + {1363, 1411, 1363, 0, 0, 9993}, + {1364, 1412, 1364, 0, 0, 9993}, + {1365, 1413, 1365, 0, 0, 9993}, + {1366, 1414, 1366, 0, 0, 9993}, + {33554455, 16777238, 33554457, 0, 0, 26377}, {0, 0, 0, 0, 0, 1537}, - {0, 7264, 0, 0, 0, 1921}, - {0, 0, 0, 0, 1, 5636}, - {0, 0, 0, 0, 2, 5636}, - {0, 0, 0, 0, 3, 5636}, - {0, 0, 0, 0, 4, 5636}, - {0, 0, 0, 0, 5, 5636}, - {0, 0, 0, 0, 6, 5636}, - {0, 0, 0, 0, 7, 5636}, - {0, 0, 0, 0, 8, 5636}, - {0, 0, 0, 0, 9, 5636}, - {0, 0, 0, 0, 0, 5888}, - {42877, 7545, 42877, 0, 0, 3849}, - {3814, 0, 3814, 0, 0, 1801}, - {65477, 0, 65477, 0, 0, 1801}, - {0, 57921, 0, 0, 0, 1921}, - {8, 0, 8, 0, 0, 1801}, - {0, 65528, 0, 0, 0, 1921}, - {74, 0, 74, 0, 0, 1801}, - {86, 0, 86, 0, 0, 1801}, - {100, 0, 100, 0, 0, 1801}, - {128, 0, 128, 0, 0, 1801}, - {112, 0, 112, 0, 0, 1801}, - {126, 0, 126, 0, 0, 1801}, - {0, 65528, 0, 0, 0, 1857}, - {9, 0, 9, 0, 0, 1801}, - {0, 65462, 0, 0, 0, 1921}, - {0, 65527, 0, 0, 0, 1857}, - {58331, 0, 58331, 0, 0, 1801}, - {0, 65450, 0, 0, 0, 1921}, - {0, 65436, 0, 0, 0, 1921}, - {0, 65424, 0, 0, 0, 1921}, - {0, 65408, 0, 0, 0, 1921}, - {0, 65410, 0, 0, 0, 1921}, - {0, 0, 0, 0, 0, 5124}, - {0, 0, 0, 0, 4, 5124}, - {0, 0, 0, 0, 5, 5124}, - {0, 0, 0, 0, 6, 5124}, - {0, 0, 0, 0, 7, 5124}, - {0, 0, 0, 0, 8, 5124}, - {0, 0, 0, 0, 9, 5124}, + {4256, 11520, 4256, 0, 0, 10113}, + {4257, 11521, 4257, 0, 0, 10113}, + {4258, 11522, 4258, 0, 0, 10113}, + {4259, 11523, 4259, 0, 0, 10113}, + {4260, 11524, 4260, 0, 0, 10113}, + {4261, 11525, 4261, 0, 0, 10113}, + {4262, 11526, 4262, 0, 0, 10113}, + {4263, 11527, 4263, 0, 0, 10113}, + {4264, 11528, 4264, 0, 0, 10113}, + {4265, 11529, 4265, 0, 0, 10113}, + {4266, 11530, 4266, 0, 0, 10113}, + {4267, 11531, 4267, 0, 0, 10113}, + {4268, 11532, 4268, 0, 0, 10113}, + {4269, 11533, 4269, 0, 0, 10113}, + {4270, 11534, 4270, 0, 0, 10113}, + {4271, 11535, 4271, 0, 0, 10113}, + {4272, 11536, 4272, 0, 0, 10113}, + {4273, 11537, 4273, 0, 0, 10113}, + {4274, 11538, 4274, 0, 0, 10113}, + {4275, 11539, 4275, 0, 0, 10113}, + {4276, 11540, 4276, 0, 0, 10113}, + {4277, 11541, 4277, 0, 0, 10113}, + {4278, 11542, 4278, 0, 0, 10113}, + {4279, 11543, 4279, 0, 0, 10113}, + {4280, 11544, 4280, 0, 0, 10113}, + {4281, 11545, 4281, 0, 0, 10113}, + {4282, 11546, 4282, 0, 0, 10113}, + {4283, 11547, 4283, 0, 0, 10113}, + {4284, 11548, 4284, 0, 0, 10113}, + {4285, 11549, 4285, 0, 0, 10113}, + {4286, 11550, 4286, 0, 0, 10113}, + {4287, 11551, 4287, 0, 0, 10113}, + {4288, 11552, 4288, 0, 0, 10113}, + {4289, 11553, 4289, 0, 0, 10113}, + {4290, 11554, 4290, 0, 0, 10113}, + {4291, 11555, 4291, 0, 0, 10113}, + {4292, 11556, 4292, 0, 0, 10113}, + {4293, 11557, 4293, 0, 0, 10113}, + {0, 0, 0, 0, 1, 3588}, + {0, 0, 0, 0, 2, 3588}, + {0, 0, 0, 0, 3, 3588}, + {0, 0, 0, 0, 4, 3588}, + {0, 0, 0, 0, 5, 3588}, + {0, 0, 0, 0, 6, 3588}, + {0, 0, 0, 0, 7, 3588}, + {0, 0, 0, 0, 8, 3588}, + {0, 0, 0, 0, 9, 3588}, + {0, 0, 0, 0, 0, 3840}, + {42877, 7545, 42877, 0, 0, 9993}, + {11363, 7549, 11363, 0, 0, 9993}, + {7680, 7681, 7680, 0, 0, 10113}, + {7680, 7681, 7680, 0, 0, 9993}, + {7682, 7683, 7682, 0, 0, 10113}, + {7682, 7683, 7682, 0, 0, 9993}, + {7684, 7685, 7684, 0, 0, 10113}, + {7684, 7685, 7684, 0, 0, 9993}, + {7686, 7687, 7686, 0, 0, 10113}, + {7686, 7687, 7686, 0, 0, 9993}, + {7688, 7689, 7688, 0, 0, 10113}, + {7688, 7689, 7688, 0, 0, 9993}, + {7690, 7691, 7690, 0, 0, 10113}, + {7690, 7691, 7690, 0, 0, 9993}, + {7692, 7693, 7692, 0, 0, 10113}, + {7692, 7693, 7692, 0, 0, 9993}, + {7694, 7695, 7694, 0, 0, 10113}, + {7694, 7695, 7694, 0, 0, 9993}, + {7696, 7697, 7696, 0, 0, 10113}, + {7696, 7697, 7696, 0, 0, 9993}, + {7698, 7699, 7698, 0, 0, 10113}, + {7698, 7699, 7698, 0, 0, 9993}, + {7700, 7701, 7700, 0, 0, 10113}, + {7700, 7701, 7700, 0, 0, 9993}, + {7702, 7703, 7702, 0, 0, 10113}, + {7702, 7703, 7702, 0, 0, 9993}, + {7704, 7705, 7704, 0, 0, 10113}, + {7704, 7705, 7704, 0, 0, 9993}, + {7706, 7707, 7706, 0, 0, 10113}, + {7706, 7707, 7706, 0, 0, 9993}, + {7708, 7709, 7708, 0, 0, 10113}, + {7708, 7709, 7708, 0, 0, 9993}, + {7710, 7711, 7710, 0, 0, 10113}, + {7710, 7711, 7710, 0, 0, 9993}, + {7712, 7713, 7712, 0, 0, 10113}, + {7712, 7713, 7712, 0, 0, 9993}, + {7714, 7715, 7714, 0, 0, 10113}, + {7714, 7715, 7714, 0, 0, 9993}, + {7716, 7717, 7716, 0, 0, 10113}, + {7716, 7717, 7716, 0, 0, 9993}, + {7718, 7719, 7718, 0, 0, 10113}, + {7718, 7719, 7718, 0, 0, 9993}, + {7720, 7721, 7720, 0, 0, 10113}, + {7720, 7721, 7720, 0, 0, 9993}, + {7722, 7723, 7722, 0, 0, 10113}, + {7722, 7723, 7722, 0, 0, 9993}, + {7724, 7725, 7724, 0, 0, 10113}, + {7724, 7725, 7724, 0, 0, 9993}, + {7726, 7727, 7726, 0, 0, 10113}, + {7726, 7727, 7726, 0, 0, 9993}, + {7728, 7729, 7728, 0, 0, 10113}, + {7728, 7729, 7728, 0, 0, 9993}, + {7730, 7731, 7730, 0, 0, 10113}, + {7730, 7731, 7730, 0, 0, 9993}, + {7732, 7733, 7732, 0, 0, 10113}, + {7732, 7733, 7732, 0, 0, 9993}, + {7734, 7735, 7734, 0, 0, 10113}, + {7734, 7735, 7734, 0, 0, 9993}, + {7736, 7737, 7736, 0, 0, 10113}, + {7736, 7737, 7736, 0, 0, 9993}, + {7738, 7739, 7738, 0, 0, 10113}, + {7738, 7739, 7738, 0, 0, 9993}, + {7740, 7741, 7740, 0, 0, 10113}, + {7740, 7741, 7740, 0, 0, 9993}, + {7742, 7743, 7742, 0, 0, 10113}, + {7742, 7743, 7742, 0, 0, 9993}, + {7744, 7745, 7744, 0, 0, 10113}, + {7744, 7745, 7744, 0, 0, 9993}, + {7746, 7747, 7746, 0, 0, 10113}, + {7746, 7747, 7746, 0, 0, 9993}, + {7748, 7749, 7748, 0, 0, 10113}, + {7748, 7749, 7748, 0, 0, 9993}, + {7750, 7751, 7750, 0, 0, 10113}, + {7750, 7751, 7750, 0, 0, 9993}, + {7752, 7753, 7752, 0, 0, 10113}, + {7752, 7753, 7752, 0, 0, 9993}, + {7754, 7755, 7754, 0, 0, 10113}, + {7754, 7755, 7754, 0, 0, 9993}, + {7756, 7757, 7756, 0, 0, 10113}, + {7756, 7757, 7756, 0, 0, 9993}, + {7758, 7759, 7758, 0, 0, 10113}, + {7758, 7759, 7758, 0, 0, 9993}, + {7760, 7761, 7760, 0, 0, 10113}, + {7760, 7761, 7760, 0, 0, 9993}, + {7762, 7763, 7762, 0, 0, 10113}, + {7762, 7763, 7762, 0, 0, 9993}, + {7764, 7765, 7764, 0, 0, 10113}, + {7764, 7765, 7764, 0, 0, 9993}, + {7766, 7767, 7766, 0, 0, 10113}, + {7766, 7767, 7766, 0, 0, 9993}, + {7768, 7769, 7768, 0, 0, 10113}, + {7768, 7769, 7768, 0, 0, 9993}, + {7770, 7771, 7770, 0, 0, 10113}, + {7770, 7771, 7770, 0, 0, 9993}, + {7772, 7773, 7772, 0, 0, 10113}, + {7772, 7773, 7772, 0, 0, 9993}, + {7774, 7775, 7774, 0, 0, 10113}, + {7774, 7775, 7774, 0, 0, 9993}, + {7776, 7777, 7776, 0, 0, 10113}, + {7776, 7777, 7776, 0, 0, 9993}, + {7778, 7779, 7778, 0, 0, 10113}, + {7778, 7779, 7778, 0, 0, 9993}, + {7780, 7781, 7780, 0, 0, 10113}, + {7780, 7781, 7780, 0, 0, 9993}, + {7782, 7783, 7782, 0, 0, 10113}, + {7782, 7783, 7782, 0, 0, 9993}, + {7784, 7785, 7784, 0, 0, 10113}, + {7784, 7785, 7784, 0, 0, 9993}, + {7786, 7787, 7786, 0, 0, 10113}, + {7786, 7787, 7786, 0, 0, 9993}, + {7788, 7789, 7788, 0, 0, 10113}, + {7788, 7789, 7788, 0, 0, 9993}, + {7790, 7791, 7790, 0, 0, 10113}, + {7790, 7791, 7790, 0, 0, 9993}, + {7792, 7793, 7792, 0, 0, 10113}, + {7792, 7793, 7792, 0, 0, 9993}, + {7794, 7795, 7794, 0, 0, 10113}, + {7794, 7795, 7794, 0, 0, 9993}, + {7796, 7797, 7796, 0, 0, 10113}, + {7796, 7797, 7796, 0, 0, 9993}, + {7798, 7799, 7798, 0, 0, 10113}, + {7798, 7799, 7798, 0, 0, 9993}, + {7800, 7801, 7800, 0, 0, 10113}, + {7800, 7801, 7800, 0, 0, 9993}, + {7802, 7803, 7802, 0, 0, 10113}, + {7802, 7803, 7802, 0, 0, 9993}, + {7804, 7805, 7804, 0, 0, 10113}, + {7804, 7805, 7804, 0, 0, 9993}, + {7806, 7807, 7806, 0, 0, 10113}, + {7806, 7807, 7806, 0, 0, 9993}, + {7808, 7809, 7808, 0, 0, 10113}, + {7808, 7809, 7808, 0, 0, 9993}, + {7810, 7811, 7810, 0, 0, 10113}, + {7810, 7811, 7810, 0, 0, 9993}, + {7812, 7813, 7812, 0, 0, 10113}, + {7812, 7813, 7812, 0, 0, 9993}, + {7814, 7815, 7814, 0, 0, 10113}, + {7814, 7815, 7814, 0, 0, 9993}, + {7816, 7817, 7816, 0, 0, 10113}, + {7816, 7817, 7816, 0, 0, 9993}, + {7818, 7819, 7818, 0, 0, 10113}, + {7818, 7819, 7818, 0, 0, 9993}, + {7820, 7821, 7820, 0, 0, 10113}, + {7820, 7821, 7820, 0, 0, 9993}, + {7822, 7823, 7822, 0, 0, 10113}, + {7822, 7823, 7822, 0, 0, 9993}, + {7824, 7825, 7824, 0, 0, 10113}, + {7824, 7825, 7824, 0, 0, 9993}, + {7826, 7827, 7826, 0, 0, 10113}, + {7826, 7827, 7826, 0, 0, 9993}, + {7828, 7829, 7828, 0, 0, 10113}, + {7828, 7829, 7828, 0, 0, 9993}, + {33554460, 16777243, 33554460, 0, 0, 26377}, + {33554463, 16777246, 33554463, 0, 0, 26377}, + {33554466, 16777249, 33554466, 0, 0, 26377}, + {33554469, 16777252, 33554469, 0, 0, 26377}, + {33554472, 16777255, 33554472, 0, 0, 26377}, + {7776, 7835, 7776, 0, 0, 9993}, + {7838, 223, 7838, 0, 0, 10113}, + {7840, 7841, 7840, 0, 0, 10113}, + {7840, 7841, 7840, 0, 0, 9993}, + {7842, 7843, 7842, 0, 0, 10113}, + {7842, 7843, 7842, 0, 0, 9993}, + {7844, 7845, 7844, 0, 0, 10113}, + {7844, 7845, 7844, 0, 0, 9993}, + {7846, 7847, 7846, 0, 0, 10113}, + {7846, 7847, 7846, 0, 0, 9993}, + {7848, 7849, 7848, 0, 0, 10113}, + {7848, 7849, 7848, 0, 0, 9993}, + {7850, 7851, 7850, 0, 0, 10113}, + {7850, 7851, 7850, 0, 0, 9993}, + {7852, 7853, 7852, 0, 0, 10113}, + {7852, 7853, 7852, 0, 0, 9993}, + {7854, 7855, 7854, 0, 0, 10113}, + {7854, 7855, 7854, 0, 0, 9993}, + {7856, 7857, 7856, 0, 0, 10113}, + {7856, 7857, 7856, 0, 0, 9993}, + {7858, 7859, 7858, 0, 0, 10113}, + {7858, 7859, 7858, 0, 0, 9993}, + {7860, 7861, 7860, 0, 0, 10113}, + {7860, 7861, 7860, 0, 0, 9993}, + {7862, 7863, 7862, 0, 0, 10113}, + {7862, 7863, 7862, 0, 0, 9993}, + {7864, 7865, 7864, 0, 0, 10113}, + {7864, 7865, 7864, 0, 0, 9993}, + {7866, 7867, 7866, 0, 0, 10113}, + {7866, 7867, 7866, 0, 0, 9993}, + {7868, 7869, 7868, 0, 0, 10113}, + {7868, 7869, 7868, 0, 0, 9993}, + {7870, 7871, 7870, 0, 0, 10113}, + {7870, 7871, 7870, 0, 0, 9993}, + {7872, 7873, 7872, 0, 0, 10113}, + {7872, 7873, 7872, 0, 0, 9993}, + {7874, 7875, 7874, 0, 0, 10113}, + {7874, 7875, 7874, 0, 0, 9993}, + {7876, 7877, 7876, 0, 0, 10113}, + {7876, 7877, 7876, 0, 0, 9993}, + {7878, 7879, 7878, 0, 0, 10113}, + {7878, 7879, 7878, 0, 0, 9993}, + {7880, 7881, 7880, 0, 0, 10113}, + {7880, 7881, 7880, 0, 0, 9993}, + {7882, 7883, 7882, 0, 0, 10113}, + {7882, 7883, 7882, 0, 0, 9993}, + {7884, 7885, 7884, 0, 0, 10113}, + {7884, 7885, 7884, 0, 0, 9993}, + {7886, 7887, 7886, 0, 0, 10113}, + {7886, 7887, 7886, 0, 0, 9993}, + {7888, 7889, 7888, 0, 0, 10113}, + {7888, 7889, 7888, 0, 0, 9993}, + {7890, 7891, 7890, 0, 0, 10113}, + {7890, 7891, 7890, 0, 0, 9993}, + {7892, 7893, 7892, 0, 0, 10113}, + {7892, 7893, 7892, 0, 0, 9993}, + {7894, 7895, 7894, 0, 0, 10113}, + {7894, 7895, 7894, 0, 0, 9993}, + {7896, 7897, 7896, 0, 0, 10113}, + {7896, 7897, 7896, 0, 0, 9993}, + {7898, 7899, 7898, 0, 0, 10113}, + {7898, 7899, 7898, 0, 0, 9993}, + {7900, 7901, 7900, 0, 0, 10113}, + {7900, 7901, 7900, 0, 0, 9993}, + {7902, 7903, 7902, 0, 0, 10113}, + {7902, 7903, 7902, 0, 0, 9993}, + {7904, 7905, 7904, 0, 0, 10113}, + {7904, 7905, 7904, 0, 0, 9993}, + {7906, 7907, 7906, 0, 0, 10113}, + {7906, 7907, 7906, 0, 0, 9993}, + {7908, 7909, 7908, 0, 0, 10113}, + {7908, 7909, 7908, 0, 0, 9993}, + {7910, 7911, 7910, 0, 0, 10113}, + {7910, 7911, 7910, 0, 0, 9993}, + {7912, 7913, 7912, 0, 0, 10113}, + {7912, 7913, 7912, 0, 0, 9993}, + {7914, 7915, 7914, 0, 0, 10113}, + {7914, 7915, 7914, 0, 0, 9993}, + {7916, 7917, 7916, 0, 0, 10113}, + {7916, 7917, 7916, 0, 0, 9993}, + {7918, 7919, 7918, 0, 0, 10113}, + {7918, 7919, 7918, 0, 0, 9993}, + {7920, 7921, 7920, 0, 0, 10113}, + {7920, 7921, 7920, 0, 0, 9993}, + {7922, 7923, 7922, 0, 0, 10113}, + {7922, 7923, 7922, 0, 0, 9993}, + {7924, 7925, 7924, 0, 0, 10113}, + {7924, 7925, 7924, 0, 0, 9993}, + {7926, 7927, 7926, 0, 0, 10113}, + {7926, 7927, 7926, 0, 0, 9993}, + {7928, 7929, 7928, 0, 0, 10113}, + {7928, 7929, 7928, 0, 0, 9993}, + {7930, 7931, 7930, 0, 0, 10113}, + {7930, 7931, 7930, 0, 0, 9993}, + {7932, 7933, 7932, 0, 0, 10113}, + {7932, 7933, 7932, 0, 0, 9993}, + {7934, 7935, 7934, 0, 0, 10113}, + {7934, 7935, 7934, 0, 0, 9993}, + {7944, 7936, 7944, 0, 0, 9993}, + {7945, 7937, 7945, 0, 0, 9993}, + {7946, 7938, 7946, 0, 0, 9993}, + {7947, 7939, 7947, 0, 0, 9993}, + {7948, 7940, 7948, 0, 0, 9993}, + {7949, 7941, 7949, 0, 0, 9993}, + {7950, 7942, 7950, 0, 0, 9993}, + {7951, 7943, 7951, 0, 0, 9993}, + {7944, 7936, 7944, 0, 0, 10113}, + {7945, 7937, 7945, 0, 0, 10113}, + {7946, 7938, 7946, 0, 0, 10113}, + {7947, 7939, 7947, 0, 0, 10113}, + {7948, 7940, 7948, 0, 0, 10113}, + {7949, 7941, 7949, 0, 0, 10113}, + {7950, 7942, 7950, 0, 0, 10113}, + {7951, 7943, 7951, 0, 0, 10113}, + {7960, 7952, 7960, 0, 0, 9993}, + {7961, 7953, 7961, 0, 0, 9993}, + {7962, 7954, 7962, 0, 0, 9993}, + {7963, 7955, 7963, 0, 0, 9993}, + {7964, 7956, 7964, 0, 0, 9993}, + {7965, 7957, 7965, 0, 0, 9993}, + {7960, 7952, 7960, 0, 0, 10113}, + {7961, 7953, 7961, 0, 0, 10113}, + {7962, 7954, 7962, 0, 0, 10113}, + {7963, 7955, 7963, 0, 0, 10113}, + {7964, 7956, 7964, 0, 0, 10113}, + {7965, 7957, 7965, 0, 0, 10113}, + {7976, 7968, 7976, 0, 0, 9993}, + {7977, 7969, 7977, 0, 0, 9993}, + {7978, 7970, 7978, 0, 0, 9993}, + {7979, 7971, 7979, 0, 0, 9993}, + {7980, 7972, 7980, 0, 0, 9993}, + {7981, 7973, 7981, 0, 0, 9993}, + {7982, 7974, 7982, 0, 0, 9993}, + {7983, 7975, 7983, 0, 0, 9993}, + {7976, 7968, 7976, 0, 0, 10113}, + {7977, 7969, 7977, 0, 0, 10113}, + {7978, 7970, 7978, 0, 0, 10113}, + {7979, 7971, 7979, 0, 0, 10113}, + {7980, 7972, 7980, 0, 0, 10113}, + {7981, 7973, 7981, 0, 0, 10113}, + {7982, 7974, 7982, 0, 0, 10113}, + {7983, 7975, 7983, 0, 0, 10113}, + {7992, 7984, 7992, 0, 0, 9993}, + {7993, 7985, 7993, 0, 0, 9993}, + {7994, 7986, 7994, 0, 0, 9993}, + {7995, 7987, 7995, 0, 0, 9993}, + {7996, 7988, 7996, 0, 0, 9993}, + {7997, 7989, 7997, 0, 0, 9993}, + {7998, 7990, 7998, 0, 0, 9993}, + {7999, 7991, 7999, 0, 0, 9993}, + {7992, 7984, 7992, 0, 0, 10113}, + {7993, 7985, 7993, 0, 0, 10113}, + {7994, 7986, 7994, 0, 0, 10113}, + {7995, 7987, 7995, 0, 0, 10113}, + {7996, 7988, 7996, 0, 0, 10113}, + {7997, 7989, 7997, 0, 0, 10113}, + {7998, 7990, 7998, 0, 0, 10113}, + {7999, 7991, 7999, 0, 0, 10113}, + {8008, 8000, 8008, 0, 0, 9993}, + {8009, 8001, 8009, 0, 0, 9993}, + {8010, 8002, 8010, 0, 0, 9993}, + {8011, 8003, 8011, 0, 0, 9993}, + {8012, 8004, 8012, 0, 0, 9993}, + {8013, 8005, 8013, 0, 0, 9993}, + {8008, 8000, 8008, 0, 0, 10113}, + {8009, 8001, 8009, 0, 0, 10113}, + {8010, 8002, 8010, 0, 0, 10113}, + {8011, 8003, 8011, 0, 0, 10113}, + {8012, 8004, 8012, 0, 0, 10113}, + {8013, 8005, 8013, 0, 0, 10113}, + {33554475, 16777258, 33554475, 0, 0, 26377}, + {8025, 8017, 8025, 0, 0, 9993}, + {50331694, 16777261, 50331694, 0, 0, 26377}, + {8027, 8019, 8027, 0, 0, 9993}, + {50331698, 16777265, 50331698, 0, 0, 26377}, + {8029, 8021, 8029, 0, 0, 9993}, + {50331702, 16777269, 50331702, 0, 0, 26377}, + {8031, 8023, 8031, 0, 0, 9993}, + {8025, 8017, 8025, 0, 0, 10113}, + {8027, 8019, 8027, 0, 0, 10113}, + {8029, 8021, 8029, 0, 0, 10113}, + {8031, 8023, 8031, 0, 0, 10113}, + {8040, 8032, 8040, 0, 0, 9993}, + {8041, 8033, 8041, 0, 0, 9993}, + {8042, 8034, 8042, 0, 0, 9993}, + {8043, 8035, 8043, 0, 0, 9993}, + {8044, 8036, 8044, 0, 0, 9993}, + {8045, 8037, 8045, 0, 0, 9993}, + {8046, 8038, 8046, 0, 0, 9993}, + {8047, 8039, 8047, 0, 0, 9993}, + {8040, 8032, 8040, 0, 0, 10113}, + {8041, 8033, 8041, 0, 0, 10113}, + {8042, 8034, 8042, 0, 0, 10113}, + {8043, 8035, 8043, 0, 0, 10113}, + {8044, 8036, 8044, 0, 0, 10113}, + {8045, 8037, 8045, 0, 0, 10113}, + {8046, 8038, 8046, 0, 0, 10113}, + {8047, 8039, 8047, 0, 0, 10113}, + {8122, 8048, 8122, 0, 0, 9993}, + {8123, 8049, 8123, 0, 0, 9993}, + {8136, 8050, 8136, 0, 0, 9993}, + {8137, 8051, 8137, 0, 0, 9993}, + {8138, 8052, 8138, 0, 0, 9993}, + {8139, 8053, 8139, 0, 0, 9993}, + {8154, 8054, 8154, 0, 0, 9993}, + {8155, 8055, 8155, 0, 0, 9993}, + {8184, 8056, 8184, 0, 0, 9993}, + {8185, 8057, 8185, 0, 0, 9993}, + {8170, 8058, 8170, 0, 0, 9993}, + {8171, 8059, 8171, 0, 0, 9993}, + {8186, 8060, 8186, 0, 0, 9993}, + {8187, 8061, 8187, 0, 0, 9993}, + {33554490, 16777273, 16777276, 0, 0, 26377}, + {33554494, 16777277, 16777280, 0, 0, 26377}, + {33554498, 16777281, 16777284, 0, 0, 26377}, + {33554502, 16777285, 16777288, 0, 0, 26377}, + {33554506, 16777289, 16777292, 0, 0, 26377}, + {33554510, 16777293, 16777296, 0, 0, 26377}, + {33554514, 16777297, 16777300, 0, 0, 26377}, + {33554518, 16777301, 16777304, 0, 0, 26377}, + {33554522, 16777305, 16777308, 0, 0, 26433}, + {33554526, 16777309, 16777312, 0, 0, 26433}, + {33554530, 16777313, 16777316, 0, 0, 26433}, + {33554534, 16777317, 16777320, 0, 0, 26433}, + {33554538, 16777321, 16777324, 0, 0, 26433}, + {33554542, 16777325, 16777328, 0, 0, 26433}, + {33554546, 16777329, 16777332, 0, 0, 26433}, + {33554550, 16777333, 16777336, 0, 0, 26433}, + {33554554, 16777337, 16777340, 0, 0, 26377}, + {33554558, 16777341, 16777344, 0, 0, 26377}, + {33554562, 16777345, 16777348, 0, 0, 26377}, + {33554566, 16777349, 16777352, 0, 0, 26377}, + {33554570, 16777353, 16777356, 0, 0, 26377}, + {33554574, 16777357, 16777360, 0, 0, 26377}, + {33554578, 16777361, 16777364, 0, 0, 26377}, + {33554582, 16777365, 16777368, 0, 0, 26377}, + {33554586, 16777369, 16777372, 0, 0, 26433}, + {33554590, 16777373, 16777376, 0, 0, 26433}, + {33554594, 16777377, 16777380, 0, 0, 26433}, + {33554598, 16777381, 16777384, 0, 0, 26433}, + {33554602, 16777385, 16777388, 0, 0, 26433}, + {33554606, 16777389, 16777392, 0, 0, 26433}, + {33554610, 16777393, 16777396, 0, 0, 26433}, + {33554614, 16777397, 16777400, 0, 0, 26433}, + {33554618, 16777401, 16777404, 0, 0, 26377}, + {33554622, 16777405, 16777408, 0, 0, 26377}, + {33554626, 16777409, 16777412, 0, 0, 26377}, + {33554630, 16777413, 16777416, 0, 0, 26377}, + {33554634, 16777417, 16777420, 0, 0, 26377}, + {33554638, 16777421, 16777424, 0, 0, 26377}, + {33554642, 16777425, 16777428, 0, 0, 26377}, + {33554646, 16777429, 16777432, 0, 0, 26377}, + {33554650, 16777433, 16777436, 0, 0, 26433}, + {33554654, 16777437, 16777440, 0, 0, 26433}, + {33554658, 16777441, 16777444, 0, 0, 26433}, + {33554662, 16777445, 16777448, 0, 0, 26433}, + {33554666, 16777449, 16777452, 0, 0, 26433}, + {33554670, 16777453, 16777456, 0, 0, 26433}, + {33554674, 16777457, 16777460, 0, 0, 26433}, + {33554678, 16777461, 16777464, 0, 0, 26433}, + {8120, 8112, 8120, 0, 0, 9993}, + {8121, 8113, 8121, 0, 0, 9993}, + {33554682, 16777465, 33554684, 0, 0, 26377}, + {33554687, 16777470, 16777473, 0, 0, 26377}, + {33554691, 16777474, 33554693, 0, 0, 26377}, + {33554696, 16777479, 33554696, 0, 0, 26377}, + {50331915, 16777482, 50331918, 0, 0, 26377}, + {8120, 8112, 8120, 0, 0, 10113}, + {8121, 8113, 8121, 0, 0, 10113}, + {8122, 8048, 8122, 0, 0, 10113}, + {8123, 8049, 8123, 0, 0, 10113}, + {33554706, 16777489, 16777492, 0, 0, 26433}, + {921, 8126, 921, 0, 0, 9993}, + {33554710, 16777493, 33554712, 0, 0, 26377}, + {33554715, 16777498, 16777501, 0, 0, 26377}, + {33554719, 16777502, 33554721, 0, 0, 26377}, + {33554724, 16777507, 33554724, 0, 0, 26377}, + {50331943, 16777510, 50331946, 0, 0, 26377}, + {8136, 8050, 8136, 0, 0, 10113}, + {8137, 8051, 8137, 0, 0, 10113}, + {8138, 8052, 8138, 0, 0, 10113}, + {8139, 8053, 8139, 0, 0, 10113}, + {33554734, 16777517, 16777520, 0, 0, 26433}, + {8152, 8144, 8152, 0, 0, 9993}, + {8153, 8145, 8153, 0, 0, 9993}, + {50331954, 16777521, 50331954, 0, 0, 26377}, + {50331958, 16777525, 50331958, 0, 0, 26377}, + {33554746, 16777529, 33554746, 0, 0, 26377}, + {50331965, 16777532, 50331965, 0, 0, 26377}, + {8152, 8144, 8152, 0, 0, 10113}, + {8153, 8145, 8153, 0, 0, 10113}, + {8154, 8054, 8154, 0, 0, 10113}, + {8155, 8055, 8155, 0, 0, 10113}, + {8168, 8160, 8168, 0, 0, 9993}, + {8169, 8161, 8169, 0, 0, 9993}, + {50331969, 16777536, 50331969, 0, 0, 26377}, + {50331973, 16777540, 50331973, 0, 0, 26377}, + {33554761, 16777544, 33554761, 0, 0, 26377}, + {8172, 8165, 8172, 0, 0, 9993}, + {33554764, 16777547, 33554764, 0, 0, 26377}, + {50331983, 16777550, 50331983, 0, 0, 26377}, + {8168, 8160, 8168, 0, 0, 10113}, + {8169, 8161, 8169, 0, 0, 10113}, + {8170, 8058, 8170, 0, 0, 10113}, + {8171, 8059, 8171, 0, 0, 10113}, + {8172, 8165, 8172, 0, 0, 10113}, + {33554771, 16777554, 33554773, 0, 0, 26377}, + {33554776, 16777559, 16777562, 0, 0, 26377}, + {33554780, 16777563, 33554782, 0, 0, 26377}, + {33554785, 16777568, 33554785, 0, 0, 26377}, + {50332004, 16777571, 50332007, 0, 0, 26377}, + {8184, 8056, 8184, 0, 0, 10113}, + {8185, 8057, 8185, 0, 0, 10113}, + {8186, 8060, 8186, 0, 0, 10113}, + {8187, 8061, 8187, 0, 0, 10113}, + {33554795, 16777578, 16777581, 0, 0, 26433}, + {0, 0, 0, 0, 0, 3076}, + {0, 0, 0, 0, 4, 3076}, + {0, 0, 0, 0, 5, 3076}, + {0, 0, 0, 0, 6, 3076}, + {0, 0, 0, 0, 7, 3076}, + {0, 0, 0, 0, 8, 3076}, + {0, 0, 0, 0, 9, 3076}, {0, 0, 0, 0, 0, 1792}, - {0, 58019, 0, 0, 0, 1921}, - {0, 57153, 0, 0, 0, 1921}, - {0, 57274, 0, 0, 0, 1921}, - {0, 28, 0, 0, 0, 1921}, - {65508, 0, 65508, 0, 0, 1801}, - {0, 16, 0, 0, 0, 5888}, - {65520, 0, 65520, 0, 0, 5888}, - {0, 26, 0, 0, 0, 1024}, - {65510, 0, 65510, 0, 0, 1024}, - {0, 54793, 0, 0, 0, 1921}, - {0, 61722, 0, 0, 0, 1921}, - {0, 54809, 0, 0, 0, 1921}, - {54741, 0, 54741, 0, 0, 1801}, - {54744, 0, 54744, 0, 0, 1801}, - {0, 54756, 0, 0, 0, 1921}, - {0, 54787, 0, 0, 0, 1921}, - {0, 54753, 0, 0, 0, 1921}, - {0, 54754, 0, 0, 0, 1921}, - {0, 54721, 0, 0, 0, 1921}, - {58272, 0, 58272, 0, 0, 1801}, - {0, 0, 0, 0, 0, 5889}, - {42877, 7545, 42877, 0, 0, 3969}, - {42893, 613, 42893, 0, 0, 3969}, - {0, 40, 0, 0, 0, 1921}, - {65496, 0, 65496, 0, 0, 1801}, + {8486, 969, 8486, 0, 0, 10113}, + {8490, 107, 8490, 0, 0, 10113}, + {8491, 229, 8491, 0, 0, 10113}, + {8498, 8526, 8498, 0, 0, 10113}, + {8498, 8526, 8498, 0, 0, 9993}, + {8544, 8560, 8544, 0, 0, 12160}, + {8545, 8561, 8545, 0, 0, 12160}, + {8546, 8562, 8546, 0, 0, 12160}, + {8547, 8563, 8547, 0, 0, 12160}, + {8548, 8564, 8548, 0, 0, 12160}, + {8549, 8565, 8549, 0, 0, 12160}, + {8550, 8566, 8550, 0, 0, 12160}, + {8551, 8567, 8551, 0, 0, 12160}, + {8552, 8568, 8552, 0, 0, 12160}, + {8553, 8569, 8553, 0, 0, 12160}, + {8554, 8570, 8554, 0, 0, 12160}, + {8555, 8571, 8555, 0, 0, 12160}, + {8556, 8572, 8556, 0, 0, 12160}, + {8557, 8573, 8557, 0, 0, 12160}, + {8558, 8574, 8558, 0, 0, 12160}, + {8559, 8575, 8559, 0, 0, 12160}, + {8544, 8560, 8544, 0, 0, 12040}, + {8545, 8561, 8545, 0, 0, 12040}, + {8546, 8562, 8546, 0, 0, 12040}, + {8547, 8563, 8547, 0, 0, 12040}, + {8548, 8564, 8548, 0, 0, 12040}, + {8549, 8565, 8549, 0, 0, 12040}, + {8550, 8566, 8550, 0, 0, 12040}, + {8551, 8567, 8551, 0, 0, 12040}, + {8552, 8568, 8552, 0, 0, 12040}, + {8553, 8569, 8553, 0, 0, 12040}, + {8554, 8570, 8554, 0, 0, 12040}, + {8555, 8571, 8555, 0, 0, 12040}, + {8556, 8572, 8556, 0, 0, 12040}, + {8557, 8573, 8557, 0, 0, 12040}, + {8558, 8574, 8558, 0, 0, 12040}, + {8559, 8575, 8559, 0, 0, 12040}, + {8579, 8580, 8579, 0, 0, 10113}, + {8579, 8580, 8579, 0, 0, 9993}, + {9398, 9424, 9398, 0, 0, 9344}, + {9399, 9425, 9399, 0, 0, 9344}, + {9400, 9426, 9400, 0, 0, 9344}, + {9401, 9427, 9401, 0, 0, 9344}, + {9402, 9428, 9402, 0, 0, 9344}, + {9403, 9429, 9403, 0, 0, 9344}, + {9404, 9430, 9404, 0, 0, 9344}, + {9405, 9431, 9405, 0, 0, 9344}, + {9406, 9432, 9406, 0, 0, 9344}, + {9407, 9433, 9407, 0, 0, 9344}, + {9408, 9434, 9408, 0, 0, 9344}, + {9409, 9435, 9409, 0, 0, 9344}, + {9410, 9436, 9410, 0, 0, 9344}, + {9411, 9437, 9411, 0, 0, 9344}, + {9412, 9438, 9412, 0, 0, 9344}, + {9413, 9439, 9413, 0, 0, 9344}, + {9414, 9440, 9414, 0, 0, 9344}, + {9415, 9441, 9415, 0, 0, 9344}, + {9416, 9442, 9416, 0, 0, 9344}, + {9417, 9443, 9417, 0, 0, 9344}, + {9418, 9444, 9418, 0, 0, 9344}, + {9419, 9445, 9419, 0, 0, 9344}, + {9420, 9446, 9420, 0, 0, 9344}, + {9421, 9447, 9421, 0, 0, 9344}, + {9422, 9448, 9422, 0, 0, 9344}, + {9423, 9449, 9423, 0, 0, 9344}, + {9398, 9424, 9398, 0, 0, 9224}, + {9399, 9425, 9399, 0, 0, 9224}, + {9400, 9426, 9400, 0, 0, 9224}, + {9401, 9427, 9401, 0, 0, 9224}, + {9402, 9428, 9402, 0, 0, 9224}, + {9403, 9429, 9403, 0, 0, 9224}, + {9404, 9430, 9404, 0, 0, 9224}, + {9405, 9431, 9405, 0, 0, 9224}, + {9406, 9432, 9406, 0, 0, 9224}, + {9407, 9433, 9407, 0, 0, 9224}, + {9408, 9434, 9408, 0, 0, 9224}, + {9409, 9435, 9409, 0, 0, 9224}, + {9410, 9436, 9410, 0, 0, 9224}, + {9411, 9437, 9411, 0, 0, 9224}, + {9412, 9438, 9412, 0, 0, 9224}, + {9413, 9439, 9413, 0, 0, 9224}, + {9414, 9440, 9414, 0, 0, 9224}, + {9415, 9441, 9415, 0, 0, 9224}, + {9416, 9442, 9416, 0, 0, 9224}, + {9417, 9443, 9417, 0, 0, 9224}, + {9418, 9444, 9418, 0, 0, 9224}, + {9419, 9445, 9419, 0, 0, 9224}, + {9420, 9446, 9420, 0, 0, 9224}, + {9421, 9447, 9421, 0, 0, 9224}, + {9422, 9448, 9422, 0, 0, 9224}, + {9423, 9449, 9423, 0, 0, 9224}, + {11264, 11312, 11264, 0, 0, 10113}, + {11265, 11313, 11265, 0, 0, 10113}, + {11266, 11314, 11266, 0, 0, 10113}, + {11267, 11315, 11267, 0, 0, 10113}, + {11268, 11316, 11268, 0, 0, 10113}, + {11269, 11317, 11269, 0, 0, 10113}, + {11270, 11318, 11270, 0, 0, 10113}, + {11271, 11319, 11271, 0, 0, 10113}, + {11272, 11320, 11272, 0, 0, 10113}, + {11273, 11321, 11273, 0, 0, 10113}, + {11274, 11322, 11274, 0, 0, 10113}, + {11275, 11323, 11275, 0, 0, 10113}, + {11276, 11324, 11276, 0, 0, 10113}, + {11277, 11325, 11277, 0, 0, 10113}, + {11278, 11326, 11278, 0, 0, 10113}, + {11279, 11327, 11279, 0, 0, 10113}, + {11280, 11328, 11280, 0, 0, 10113}, + {11281, 11329, 11281, 0, 0, 10113}, + {11282, 11330, 11282, 0, 0, 10113}, + {11283, 11331, 11283, 0, 0, 10113}, + {11284, 11332, 11284, 0, 0, 10113}, + {11285, 11333, 11285, 0, 0, 10113}, + {11286, 11334, 11286, 0, 0, 10113}, + {11287, 11335, 11287, 0, 0, 10113}, + {11288, 11336, 11288, 0, 0, 10113}, + {11289, 11337, 11289, 0, 0, 10113}, + {11290, 11338, 11290, 0, 0, 10113}, + {11291, 11339, 11291, 0, 0, 10113}, + {11292, 11340, 11292, 0, 0, 10113}, + {11293, 11341, 11293, 0, 0, 10113}, + {11294, 11342, 11294, 0, 0, 10113}, + {11295, 11343, 11295, 0, 0, 10113}, + {11296, 11344, 11296, 0, 0, 10113}, + {11297, 11345, 11297, 0, 0, 10113}, + {11298, 11346, 11298, 0, 0, 10113}, + {11299, 11347, 11299, 0, 0, 10113}, + {11300, 11348, 11300, 0, 0, 10113}, + {11301, 11349, 11301, 0, 0, 10113}, + {11302, 11350, 11302, 0, 0, 10113}, + {11303, 11351, 11303, 0, 0, 10113}, + {11304, 11352, 11304, 0, 0, 10113}, + {11305, 11353, 11305, 0, 0, 10113}, + {11306, 11354, 11306, 0, 0, 10113}, + {11307, 11355, 11307, 0, 0, 10113}, + {11308, 11356, 11308, 0, 0, 10113}, + {11309, 11357, 11309, 0, 0, 10113}, + {11310, 11358, 11310, 0, 0, 10113}, + {11264, 11312, 11264, 0, 0, 9993}, + {11265, 11313, 11265, 0, 0, 9993}, + {11266, 11314, 11266, 0, 0, 9993}, + {11267, 11315, 11267, 0, 0, 9993}, + {11268, 11316, 11268, 0, 0, 9993}, + {11269, 11317, 11269, 0, 0, 9993}, + {11270, 11318, 11270, 0, 0, 9993}, + {11271, 11319, 11271, 0, 0, 9993}, + {11272, 11320, 11272, 0, 0, 9993}, + {11273, 11321, 11273, 0, 0, 9993}, + {11274, 11322, 11274, 0, 0, 9993}, + {11275, 11323, 11275, 0, 0, 9993}, + {11276, 11324, 11276, 0, 0, 9993}, + {11277, 11325, 11277, 0, 0, 9993}, + {11278, 11326, 11278, 0, 0, 9993}, + {11279, 11327, 11279, 0, 0, 9993}, + {11280, 11328, 11280, 0, 0, 9993}, + {11281, 11329, 11281, 0, 0, 9993}, + {11282, 11330, 11282, 0, 0, 9993}, + {11283, 11331, 11283, 0, 0, 9993}, + {11284, 11332, 11284, 0, 0, 9993}, + {11285, 11333, 11285, 0, 0, 9993}, + {11286, 11334, 11286, 0, 0, 9993}, + {11287, 11335, 11287, 0, 0, 9993}, + {11288, 11336, 11288, 0, 0, 9993}, + {11289, 11337, 11289, 0, 0, 9993}, + {11290, 11338, 11290, 0, 0, 9993}, + {11291, 11339, 11291, 0, 0, 9993}, + {11292, 11340, 11292, 0, 0, 9993}, + {11293, 11341, 11293, 0, 0, 9993}, + {11294, 11342, 11294, 0, 0, 9993}, + {11295, 11343, 11295, 0, 0, 9993}, + {11296, 11344, 11296, 0, 0, 9993}, + {11297, 11345, 11297, 0, 0, 9993}, + {11298, 11346, 11298, 0, 0, 9993}, + {11299, 11347, 11299, 0, 0, 9993}, + {11300, 11348, 11300, 0, 0, 9993}, + {11301, 11349, 11301, 0, 0, 9993}, + {11302, 11350, 11302, 0, 0, 9993}, + {11303, 11351, 11303, 0, 0, 9993}, + {11304, 11352, 11304, 0, 0, 9993}, + {11305, 11353, 11305, 0, 0, 9993}, + {11306, 11354, 11306, 0, 0, 9993}, + {11307, 11355, 11307, 0, 0, 9993}, + {11308, 11356, 11308, 0, 0, 9993}, + {11309, 11357, 11309, 0, 0, 9993}, + {11310, 11358, 11310, 0, 0, 9993}, + {11360, 11361, 11360, 0, 0, 10113}, + {11360, 11361, 11360, 0, 0, 9993}, + {11362, 619, 11362, 0, 0, 10113}, + {11363, 7549, 11363, 0, 0, 10113}, + {11364, 637, 11364, 0, 0, 10113}, + {570, 11365, 570, 0, 0, 9993}, + {574, 11366, 574, 0, 0, 9993}, + {11367, 11368, 11367, 0, 0, 10113}, + {11367, 11368, 11367, 0, 0, 9993}, + {11369, 11370, 11369, 0, 0, 10113}, + {11369, 11370, 11369, 0, 0, 9993}, + {11371, 11372, 11371, 0, 0, 10113}, + {11371, 11372, 11371, 0, 0, 9993}, + {11373, 593, 11373, 0, 0, 10113}, + {11374, 625, 11374, 0, 0, 10113}, + {11375, 592, 11375, 0, 0, 10113}, + {11376, 594, 11376, 0, 0, 10113}, + {11378, 11379, 11378, 0, 0, 10113}, + {11378, 11379, 11378, 0, 0, 9993}, + {11381, 11382, 11381, 0, 0, 10113}, + {11381, 11382, 11381, 0, 0, 9993}, + {11390, 575, 11390, 0, 0, 10113}, + {11391, 576, 11391, 0, 0, 10113}, + {11392, 11393, 11392, 0, 0, 10113}, + {11392, 11393, 11392, 0, 0, 9993}, + {11394, 11395, 11394, 0, 0, 10113}, + {11394, 11395, 11394, 0, 0, 9993}, + {11396, 11397, 11396, 0, 0, 10113}, + {11396, 11397, 11396, 0, 0, 9993}, + {11398, 11399, 11398, 0, 0, 10113}, + {11398, 11399, 11398, 0, 0, 9993}, + {11400, 11401, 11400, 0, 0, 10113}, + {11400, 11401, 11400, 0, 0, 9993}, + {11402, 11403, 11402, 0, 0, 10113}, + {11402, 11403, 11402, 0, 0, 9993}, + {11404, 11405, 11404, 0, 0, 10113}, + {11404, 11405, 11404, 0, 0, 9993}, + {11406, 11407, 11406, 0, 0, 10113}, + {11406, 11407, 11406, 0, 0, 9993}, + {11408, 11409, 11408, 0, 0, 10113}, + {11408, 11409, 11408, 0, 0, 9993}, + {11410, 11411, 11410, 0, 0, 10113}, + {11410, 11411, 11410, 0, 0, 9993}, + {11412, 11413, 11412, 0, 0, 10113}, + {11412, 11413, 11412, 0, 0, 9993}, + {11414, 11415, 11414, 0, 0, 10113}, + {11414, 11415, 11414, 0, 0, 9993}, + {11416, 11417, 11416, 0, 0, 10113}, + {11416, 11417, 11416, 0, 0, 9993}, + {11418, 11419, 11418, 0, 0, 10113}, + {11418, 11419, 11418, 0, 0, 9993}, + {11420, 11421, 11420, 0, 0, 10113}, + {11420, 11421, 11420, 0, 0, 9993}, + {11422, 11423, 11422, 0, 0, 10113}, + {11422, 11423, 11422, 0, 0, 9993}, + {11424, 11425, 11424, 0, 0, 10113}, + {11424, 11425, 11424, 0, 0, 9993}, + {11426, 11427, 11426, 0, 0, 10113}, + {11426, 11427, 11426, 0, 0, 9993}, + {11428, 11429, 11428, 0, 0, 10113}, + {11428, 11429, 11428, 0, 0, 9993}, + {11430, 11431, 11430, 0, 0, 10113}, + {11430, 11431, 11430, 0, 0, 9993}, + {11432, 11433, 11432, 0, 0, 10113}, + {11432, 11433, 11432, 0, 0, 9993}, + {11434, 11435, 11434, 0, 0, 10113}, + {11434, 11435, 11434, 0, 0, 9993}, + {11436, 11437, 11436, 0, 0, 10113}, + {11436, 11437, 11436, 0, 0, 9993}, + {11438, 11439, 11438, 0, 0, 10113}, + {11438, 11439, 11438, 0, 0, 9993}, + {11440, 11441, 11440, 0, 0, 10113}, + {11440, 11441, 11440, 0, 0, 9993}, + {11442, 11443, 11442, 0, 0, 10113}, + {11442, 11443, 11442, 0, 0, 9993}, + {11444, 11445, 11444, 0, 0, 10113}, + {11444, 11445, 11444, 0, 0, 9993}, + {11446, 11447, 11446, 0, 0, 10113}, + {11446, 11447, 11446, 0, 0, 9993}, + {11448, 11449, 11448, 0, 0, 10113}, + {11448, 11449, 11448, 0, 0, 9993}, + {11450, 11451, 11450, 0, 0, 10113}, + {11450, 11451, 11450, 0, 0, 9993}, + {11452, 11453, 11452, 0, 0, 10113}, + {11452, 11453, 11452, 0, 0, 9993}, + {11454, 11455, 11454, 0, 0, 10113}, + {11454, 11455, 11454, 0, 0, 9993}, + {11456, 11457, 11456, 0, 0, 10113}, + {11456, 11457, 11456, 0, 0, 9993}, + {11458, 11459, 11458, 0, 0, 10113}, + {11458, 11459, 11458, 0, 0, 9993}, + {11460, 11461, 11460, 0, 0, 10113}, + {11460, 11461, 11460, 0, 0, 9993}, + {11462, 11463, 11462, 0, 0, 10113}, + {11462, 11463, 11462, 0, 0, 9993}, + {11464, 11465, 11464, 0, 0, 10113}, + {11464, 11465, 11464, 0, 0, 9993}, + {11466, 11467, 11466, 0, 0, 10113}, + {11466, 11467, 11466, 0, 0, 9993}, + {11468, 11469, 11468, 0, 0, 10113}, + {11468, 11469, 11468, 0, 0, 9993}, + {11470, 11471, 11470, 0, 0, 10113}, + {11470, 11471, 11470, 0, 0, 9993}, + {11472, 11473, 11472, 0, 0, 10113}, + {11472, 11473, 11472, 0, 0, 9993}, + {11474, 11475, 11474, 0, 0, 10113}, + {11474, 11475, 11474, 0, 0, 9993}, + {11476, 11477, 11476, 0, 0, 10113}, + {11476, 11477, 11476, 0, 0, 9993}, + {11478, 11479, 11478, 0, 0, 10113}, + {11478, 11479, 11478, 0, 0, 9993}, + {11480, 11481, 11480, 0, 0, 10113}, + {11480, 11481, 11480, 0, 0, 9993}, + {11482, 11483, 11482, 0, 0, 10113}, + {11482, 11483, 11482, 0, 0, 9993}, + {11484, 11485, 11484, 0, 0, 10113}, + {11484, 11485, 11484, 0, 0, 9993}, + {11486, 11487, 11486, 0, 0, 10113}, + {11486, 11487, 11486, 0, 0, 9993}, + {11488, 11489, 11488, 0, 0, 10113}, + {11488, 11489, 11488, 0, 0, 9993}, + {11490, 11491, 11490, 0, 0, 10113}, + {11490, 11491, 11490, 0, 0, 9993}, + {11499, 11500, 11499, 0, 0, 10113}, + {11499, 11500, 11499, 0, 0, 9993}, + {11501, 11502, 11501, 0, 0, 10113}, + {11501, 11502, 11501, 0, 0, 9993}, + {4256, 11520, 4256, 0, 0, 9993}, + {4257, 11521, 4257, 0, 0, 9993}, + {4258, 11522, 4258, 0, 0, 9993}, + {4259, 11523, 4259, 0, 0, 9993}, + {4260, 11524, 4260, 0, 0, 9993}, + {4261, 11525, 4261, 0, 0, 9993}, + {4262, 11526, 4262, 0, 0, 9993}, + {4263, 11527, 4263, 0, 0, 9993}, + {4264, 11528, 4264, 0, 0, 9993}, + {4265, 11529, 4265, 0, 0, 9993}, + {4266, 11530, 4266, 0, 0, 9993}, + {4267, 11531, 4267, 0, 0, 9993}, + {4268, 11532, 4268, 0, 0, 9993}, + {4269, 11533, 4269, 0, 0, 9993}, + {4270, 11534, 4270, 0, 0, 9993}, + {4271, 11535, 4271, 0, 0, 9993}, + {4272, 11536, 4272, 0, 0, 9993}, + {4273, 11537, 4273, 0, 0, 9993}, + {4274, 11538, 4274, 0, 0, 9993}, + {4275, 11539, 4275, 0, 0, 9993}, + {4276, 11540, 4276, 0, 0, 9993}, + {4277, 11541, 4277, 0, 0, 9993}, + {4278, 11542, 4278, 0, 0, 9993}, + {4279, 11543, 4279, 0, 0, 9993}, + {4280, 11544, 4280, 0, 0, 9993}, + {4281, 11545, 4281, 0, 0, 9993}, + {4282, 11546, 4282, 0, 0, 9993}, + {4283, 11547, 4283, 0, 0, 9993}, + {4284, 11548, 4284, 0, 0, 9993}, + {4285, 11549, 4285, 0, 0, 9993}, + {4286, 11550, 4286, 0, 0, 9993}, + {4287, 11551, 4287, 0, 0, 9993}, + {4288, 11552, 4288, 0, 0, 9993}, + {4289, 11553, 4289, 0, 0, 9993}, + {4290, 11554, 4290, 0, 0, 9993}, + {4291, 11555, 4291, 0, 0, 9993}, + {4292, 11556, 4292, 0, 0, 9993}, + {4293, 11557, 4293, 0, 0, 9993}, + {0, 0, 0, 0, 0, 5121}, + {0, 0, 0, 0, 0, 3841}, + {42560, 42561, 42560, 0, 0, 10113}, + {42560, 42561, 42560, 0, 0, 9993}, + {42562, 42563, 42562, 0, 0, 10113}, + {42562, 42563, 42562, 0, 0, 9993}, + {42564, 42565, 42564, 0, 0, 10113}, + {42564, 42565, 42564, 0, 0, 9993}, + {42566, 42567, 42566, 0, 0, 10113}, + {42566, 42567, 42566, 0, 0, 9993}, + {42568, 42569, 42568, 0, 0, 10113}, + {42568, 42569, 42568, 0, 0, 9993}, + {42570, 42571, 42570, 0, 0, 10113}, + {42570, 42571, 42570, 0, 0, 9993}, + {42572, 42573, 42572, 0, 0, 10113}, + {42572, 42573, 42572, 0, 0, 9993}, + {42574, 42575, 42574, 0, 0, 10113}, + {42574, 42575, 42574, 0, 0, 9993}, + {42576, 42577, 42576, 0, 0, 10113}, + {42576, 42577, 42576, 0, 0, 9993}, + {42578, 42579, 42578, 0, 0, 10113}, + {42578, 42579, 42578, 0, 0, 9993}, + {42580, 42581, 42580, 0, 0, 10113}, + {42580, 42581, 42580, 0, 0, 9993}, + {42582, 42583, 42582, 0, 0, 10113}, + {42582, 42583, 42582, 0, 0, 9993}, + {42584, 42585, 42584, 0, 0, 10113}, + {42584, 42585, 42584, 0, 0, 9993}, + {42586, 42587, 42586, 0, 0, 10113}, + {42586, 42587, 42586, 0, 0, 9993}, + {42588, 42589, 42588, 0, 0, 10113}, + {42588, 42589, 42588, 0, 0, 9993}, + {42590, 42591, 42590, 0, 0, 10113}, + {42590, 42591, 42590, 0, 0, 9993}, + {42592, 42593, 42592, 0, 0, 10113}, + {42592, 42593, 42592, 0, 0, 9993}, + {42594, 42595, 42594, 0, 0, 10113}, + {42594, 42595, 42594, 0, 0, 9993}, + {42596, 42597, 42596, 0, 0, 10113}, + {42596, 42597, 42596, 0, 0, 9993}, + {42598, 42599, 42598, 0, 0, 10113}, + {42598, 42599, 42598, 0, 0, 9993}, + {42600, 42601, 42600, 0, 0, 10113}, + {42600, 42601, 42600, 0, 0, 9993}, + {42602, 42603, 42602, 0, 0, 10113}, + {42602, 42603, 42602, 0, 0, 9993}, + {42604, 42605, 42604, 0, 0, 10113}, + {42604, 42605, 42604, 0, 0, 9993}, + {42624, 42625, 42624, 0, 0, 10113}, + {42624, 42625, 42624, 0, 0, 9993}, + {42626, 42627, 42626, 0, 0, 10113}, + {42626, 42627, 42626, 0, 0, 9993}, + {42628, 42629, 42628, 0, 0, 10113}, + {42628, 42629, 42628, 0, 0, 9993}, + {42630, 42631, 42630, 0, 0, 10113}, + {42630, 42631, 42630, 0, 0, 9993}, + {42632, 42633, 42632, 0, 0, 10113}, + {42632, 42633, 42632, 0, 0, 9993}, + {42634, 42635, 42634, 0, 0, 10113}, + {42634, 42635, 42634, 0, 0, 9993}, + {42636, 42637, 42636, 0, 0, 10113}, + {42636, 42637, 42636, 0, 0, 9993}, + {42638, 42639, 42638, 0, 0, 10113}, + {42638, 42639, 42638, 0, 0, 9993}, + {42640, 42641, 42640, 0, 0, 10113}, + {42640, 42641, 42640, 0, 0, 9993}, + {42642, 42643, 42642, 0, 0, 10113}, + {42642, 42643, 42642, 0, 0, 9993}, + {42644, 42645, 42644, 0, 0, 10113}, + {42644, 42645, 42644, 0, 0, 9993}, + {42646, 42647, 42646, 0, 0, 10113}, + {42646, 42647, 42646, 0, 0, 9993}, + {42786, 42787, 42786, 0, 0, 10113}, + {42786, 42787, 42786, 0, 0, 9993}, + {42788, 42789, 42788, 0, 0, 10113}, + {42788, 42789, 42788, 0, 0, 9993}, + {42790, 42791, 42790, 0, 0, 10113}, + {42790, 42791, 42790, 0, 0, 9993}, + {42792, 42793, 42792, 0, 0, 10113}, + {42792, 42793, 42792, 0, 0, 9993}, + {42794, 42795, 42794, 0, 0, 10113}, + {42794, 42795, 42794, 0, 0, 9993}, + {42796, 42797, 42796, 0, 0, 10113}, + {42796, 42797, 42796, 0, 0, 9993}, + {42798, 42799, 42798, 0, 0, 10113}, + {42798, 42799, 42798, 0, 0, 9993}, + {42802, 42803, 42802, 0, 0, 10113}, + {42802, 42803, 42802, 0, 0, 9993}, + {42804, 42805, 42804, 0, 0, 10113}, + {42804, 42805, 42804, 0, 0, 9993}, + {42806, 42807, 42806, 0, 0, 10113}, + {42806, 42807, 42806, 0, 0, 9993}, + {42808, 42809, 42808, 0, 0, 10113}, + {42808, 42809, 42808, 0, 0, 9993}, + {42810, 42811, 42810, 0, 0, 10113}, + {42810, 42811, 42810, 0, 0, 9993}, + {42812, 42813, 42812, 0, 0, 10113}, + {42812, 42813, 42812, 0, 0, 9993}, + {42814, 42815, 42814, 0, 0, 10113}, + {42814, 42815, 42814, 0, 0, 9993}, + {42816, 42817, 42816, 0, 0, 10113}, + {42816, 42817, 42816, 0, 0, 9993}, + {42818, 42819, 42818, 0, 0, 10113}, + {42818, 42819, 42818, 0, 0, 9993}, + {42820, 42821, 42820, 0, 0, 10113}, + {42820, 42821, 42820, 0, 0, 9993}, + {42822, 42823, 42822, 0, 0, 10113}, + {42822, 42823, 42822, 0, 0, 9993}, + {42824, 42825, 42824, 0, 0, 10113}, + {42824, 42825, 42824, 0, 0, 9993}, + {42826, 42827, 42826, 0, 0, 10113}, + {42826, 42827, 42826, 0, 0, 9993}, + {42828, 42829, 42828, 0, 0, 10113}, + {42828, 42829, 42828, 0, 0, 9993}, + {42830, 42831, 42830, 0, 0, 10113}, + {42830, 42831, 42830, 0, 0, 9993}, + {42832, 42833, 42832, 0, 0, 10113}, + {42832, 42833, 42832, 0, 0, 9993}, + {42834, 42835, 42834, 0, 0, 10113}, + {42834, 42835, 42834, 0, 0, 9993}, + {42836, 42837, 42836, 0, 0, 10113}, + {42836, 42837, 42836, 0, 0, 9993}, + {42838, 42839, 42838, 0, 0, 10113}, + {42838, 42839, 42838, 0, 0, 9993}, + {42840, 42841, 42840, 0, 0, 10113}, + {42840, 42841, 42840, 0, 0, 9993}, + {42842, 42843, 42842, 0, 0, 10113}, + {42842, 42843, 42842, 0, 0, 9993}, + {42844, 42845, 42844, 0, 0, 10113}, + {42844, 42845, 42844, 0, 0, 9993}, + {42846, 42847, 42846, 0, 0, 10113}, + {42846, 42847, 42846, 0, 0, 9993}, + {42848, 42849, 42848, 0, 0, 10113}, + {42848, 42849, 42848, 0, 0, 9993}, + {42850, 42851, 42850, 0, 0, 10113}, + {42850, 42851, 42850, 0, 0, 9993}, + {42852, 42853, 42852, 0, 0, 10113}, + {42852, 42853, 42852, 0, 0, 9993}, + {42854, 42855, 42854, 0, 0, 10113}, + {42854, 42855, 42854, 0, 0, 9993}, + {42856, 42857, 42856, 0, 0, 10113}, + {42856, 42857, 42856, 0, 0, 9993}, + {42858, 42859, 42858, 0, 0, 10113}, + {42858, 42859, 42858, 0, 0, 9993}, + {42860, 42861, 42860, 0, 0, 10113}, + {42860, 42861, 42860, 0, 0, 9993}, + {42862, 42863, 42862, 0, 0, 10113}, + {42862, 42863, 42862, 0, 0, 9993}, + {42873, 42874, 42873, 0, 0, 10113}, + {42873, 42874, 42873, 0, 0, 9993}, + {42875, 42876, 42875, 0, 0, 10113}, + {42875, 42876, 42875, 0, 0, 9993}, + {42877, 7545, 42877, 0, 0, 10113}, + {42878, 42879, 42878, 0, 0, 10113}, + {42878, 42879, 42878, 0, 0, 9993}, + {42880, 42881, 42880, 0, 0, 10113}, + {42880, 42881, 42880, 0, 0, 9993}, + {42882, 42883, 42882, 0, 0, 10113}, + {42882, 42883, 42882, 0, 0, 9993}, + {42884, 42885, 42884, 0, 0, 10113}, + {42884, 42885, 42884, 0, 0, 9993}, + {42886, 42887, 42886, 0, 0, 10113}, + {42886, 42887, 42886, 0, 0, 9993}, + {42891, 42892, 42891, 0, 0, 10113}, + {42891, 42892, 42891, 0, 0, 9993}, + {42893, 613, 42893, 0, 0, 10113}, + {42896, 42897, 42896, 0, 0, 10113}, + {42896, 42897, 42896, 0, 0, 9993}, + {42912, 42913, 42912, 0, 0, 10113}, + {42912, 42913, 42912, 0, 0, 9993}, + {42914, 42915, 42914, 0, 0, 10113}, + {42914, 42915, 42914, 0, 0, 9993}, + {42916, 42917, 42916, 0, 0, 10113}, + {42916, 42917, 42916, 0, 0, 9993}, + {42918, 42919, 42918, 0, 0, 10113}, + {42918, 42919, 42918, 0, 0, 9993}, + {42920, 42921, 42920, 0, 0, 10113}, + {42920, 42921, 42920, 0, 0, 9993}, + {33554799, 16777582, 33554801, 0, 0, 26377}, + {33554804, 16777587, 33554806, 0, 0, 26377}, + {33554809, 16777592, 33554811, 0, 0, 26377}, + {50332030, 16777597, 50332033, 0, 0, 26377}, + {50332037, 16777604, 50332040, 0, 0, 26377}, + {33554828, 16777611, 33554830, 0, 0, 26377}, + {33554833, 16777616, 33554835, 0, 0, 26377}, + {33554838, 16777621, 33554840, 0, 0, 26377}, + {33554843, 16777626, 33554845, 0, 0, 26377}, + {33554848, 16777631, 33554850, 0, 0, 26377}, + {33554853, 16777636, 33554855, 0, 0, 26377}, + {33554858, 16777641, 33554860, 0, 0, 26377}, + {0, 0, 0, 0, 0, 1025}, + {65313, 65345, 65313, 0, 0, 10113}, + {65314, 65346, 65314, 0, 0, 10113}, + {65315, 65347, 65315, 0, 0, 10113}, + {65316, 65348, 65316, 0, 0, 10113}, + {65317, 65349, 65317, 0, 0, 10113}, + {65318, 65350, 65318, 0, 0, 10113}, + {65319, 65351, 65319, 0, 0, 10113}, + {65320, 65352, 65320, 0, 0, 10113}, + {65321, 65353, 65321, 0, 0, 10113}, + {65322, 65354, 65322, 0, 0, 10113}, + {65323, 65355, 65323, 0, 0, 10113}, + {65324, 65356, 65324, 0, 0, 10113}, + {65325, 65357, 65325, 0, 0, 10113}, + {65326, 65358, 65326, 0, 0, 10113}, + {65327, 65359, 65327, 0, 0, 10113}, + {65328, 65360, 65328, 0, 0, 10113}, + {65329, 65361, 65329, 0, 0, 10113}, + {65330, 65362, 65330, 0, 0, 10113}, + {65331, 65363, 65331, 0, 0, 10113}, + {65332, 65364, 65332, 0, 0, 10113}, + {65333, 65365, 65333, 0, 0, 10113}, + {65334, 65366, 65334, 0, 0, 10113}, + {65335, 65367, 65335, 0, 0, 10113}, + {65336, 65368, 65336, 0, 0, 10113}, + {65337, 65369, 65337, 0, 0, 10113}, + {65338, 65370, 65338, 0, 0, 10113}, + {65313, 65345, 65313, 0, 0, 9993}, + {65314, 65346, 65314, 0, 0, 9993}, + {65315, 65347, 65315, 0, 0, 9993}, + {65316, 65348, 65316, 0, 0, 9993}, + {65317, 65349, 65317, 0, 0, 9993}, + {65318, 65350, 65318, 0, 0, 9993}, + {65319, 65351, 65319, 0, 0, 9993}, + {65320, 65352, 65320, 0, 0, 9993}, + {65321, 65353, 65321, 0, 0, 9993}, + {65322, 65354, 65322, 0, 0, 9993}, + {65323, 65355, 65323, 0, 0, 9993}, + {65324, 65356, 65324, 0, 0, 9993}, + {65325, 65357, 65325, 0, 0, 9993}, + {65326, 65358, 65326, 0, 0, 9993}, + {65327, 65359, 65327, 0, 0, 9993}, + {65328, 65360, 65328, 0, 0, 9993}, + {65329, 65361, 65329, 0, 0, 9993}, + {65330, 65362, 65330, 0, 0, 9993}, + {65331, 65363, 65331, 0, 0, 9993}, + {65332, 65364, 65332, 0, 0, 9993}, + {65333, 65365, 65333, 0, 0, 9993}, + {65334, 65366, 65334, 0, 0, 9993}, + {65335, 65367, 65335, 0, 0, 9993}, + {65336, 65368, 65336, 0, 0, 9993}, + {65337, 65369, 65337, 0, 0, 9993}, + {65338, 65370, 65338, 0, 0, 9993}, + {0, 0, 0, 0, 0, 5633}, + {66560, 66600, 66560, 0, 0, 10113}, + {66561, 66601, 66561, 0, 0, 10113}, + {66562, 66602, 66562, 0, 0, 10113}, + {66563, 66603, 66563, 0, 0, 10113}, + {66564, 66604, 66564, 0, 0, 10113}, + {66565, 66605, 66565, 0, 0, 10113}, + {66566, 66606, 66566, 0, 0, 10113}, + {66567, 66607, 66567, 0, 0, 10113}, + {66568, 66608, 66568, 0, 0, 10113}, + {66569, 66609, 66569, 0, 0, 10113}, + {66570, 66610, 66570, 0, 0, 10113}, + {66571, 66611, 66571, 0, 0, 10113}, + {66572, 66612, 66572, 0, 0, 10113}, + {66573, 66613, 66573, 0, 0, 10113}, + {66574, 66614, 66574, 0, 0, 10113}, + {66575, 66615, 66575, 0, 0, 10113}, + {66576, 66616, 66576, 0, 0, 10113}, + {66577, 66617, 66577, 0, 0, 10113}, + {66578, 66618, 66578, 0, 0, 10113}, + {66579, 66619, 66579, 0, 0, 10113}, + {66580, 66620, 66580, 0, 0, 10113}, + {66581, 66621, 66581, 0, 0, 10113}, + {66582, 66622, 66582, 0, 0, 10113}, + {66583, 66623, 66583, 0, 0, 10113}, + {66584, 66624, 66584, 0, 0, 10113}, + {66585, 66625, 66585, 0, 0, 10113}, + {66586, 66626, 66586, 0, 0, 10113}, + {66587, 66627, 66587, 0, 0, 10113}, + {66588, 66628, 66588, 0, 0, 10113}, + {66589, 66629, 66589, 0, 0, 10113}, + {66590, 66630, 66590, 0, 0, 10113}, + {66591, 66631, 66591, 0, 0, 10113}, + {66592, 66632, 66592, 0, 0, 10113}, + {66593, 66633, 66593, 0, 0, 10113}, + {66594, 66634, 66594, 0, 0, 10113}, + {66595, 66635, 66595, 0, 0, 10113}, + {66596, 66636, 66596, 0, 0, 10113}, + {66597, 66637, 66597, 0, 0, 10113}, + {66598, 66638, 66598, 0, 0, 10113}, + {66599, 66639, 66599, 0, 0, 10113}, + {66560, 66600, 66560, 0, 0, 9993}, + {66561, 66601, 66561, 0, 0, 9993}, + {66562, 66602, 66562, 0, 0, 9993}, + {66563, 66603, 66563, 0, 0, 9993}, + {66564, 66604, 66564, 0, 0, 9993}, + {66565, 66605, 66565, 0, 0, 9993}, + {66566, 66606, 66566, 0, 0, 9993}, + {66567, 66607, 66567, 0, 0, 9993}, + {66568, 66608, 66568, 0, 0, 9993}, + {66569, 66609, 66569, 0, 0, 9993}, + {66570, 66610, 66570, 0, 0, 9993}, + {66571, 66611, 66571, 0, 0, 9993}, + {66572, 66612, 66572, 0, 0, 9993}, + {66573, 66613, 66573, 0, 0, 9993}, + {66574, 66614, 66574, 0, 0, 9993}, + {66575, 66615, 66575, 0, 0, 9993}, + {66576, 66616, 66576, 0, 0, 9993}, + {66577, 66617, 66577, 0, 0, 9993}, + {66578, 66618, 66578, 0, 0, 9993}, + {66579, 66619, 66579, 0, 0, 9993}, + {66580, 66620, 66580, 0, 0, 9993}, + {66581, 66621, 66581, 0, 0, 9993}, + {66582, 66622, 66582, 0, 0, 9993}, + {66583, 66623, 66583, 0, 0, 9993}, + {66584, 66624, 66584, 0, 0, 9993}, + {66585, 66625, 66585, 0, 0, 9993}, + {66586, 66626, 66586, 0, 0, 9993}, + {66587, 66627, 66587, 0, 0, 9993}, + {66588, 66628, 66588, 0, 0, 9993}, + {66589, 66629, 66589, 0, 0, 9993}, + {66590, 66630, 66590, 0, 0, 9993}, + {66591, 66631, 66591, 0, 0, 9993}, + {66592, 66632, 66592, 0, 0, 9993}, + {66593, 66633, 66593, 0, 0, 9993}, + {66594, 66634, 66594, 0, 0, 9993}, + {66595, 66635, 66595, 0, 0, 9993}, + {66596, 66636, 66596, 0, 0, 9993}, + {66597, 66637, 66597, 0, 0, 9993}, + {66598, 66638, 66598, 0, 0, 9993}, + {66599, 66639, 66599, 0, 0, 9993}, +}; + +/* extended case mappings */ + +const Py_UCS4 _PyUnicode_ExtendedCase[] = { + 223, + 83, + 83, + 83, + 115, + 105, + 775, + 304, + 329, + 700, + 78, + 496, + 74, + 780, + 912, + 921, + 776, + 769, + 944, + 933, + 776, + 769, + 1415, + 1333, + 1362, + 1333, + 1410, + 7830, + 72, + 817, + 7831, + 84, + 776, + 7832, + 87, + 778, + 7833, + 89, + 778, + 7834, + 65, + 702, + 8016, + 933, + 787, + 8018, + 933, + 787, + 768, + 8020, + 933, + 787, + 769, + 8022, + 933, + 787, + 834, + 8064, + 7944, + 921, + 8072, + 8065, + 7945, + 921, + 8073, + 8066, + 7946, + 921, + 8074, + 8067, + 7947, + 921, + 8075, + 8068, + 7948, + 921, + 8076, + 8069, + 7949, + 921, + 8077, + 8070, + 7950, + 921, + 8078, + 8071, + 7951, + 921, + 8079, + 8064, + 7944, + 921, + 8072, + 8065, + 7945, + 921, + 8073, + 8066, + 7946, + 921, + 8074, + 8067, + 7947, + 921, + 8075, + 8068, + 7948, + 921, + 8076, + 8069, + 7949, + 921, + 8077, + 8070, + 7950, + 921, + 8078, + 8071, + 7951, + 921, + 8079, + 8080, + 7976, + 921, + 8088, + 8081, + 7977, + 921, + 8089, + 8082, + 7978, + 921, + 8090, + 8083, + 7979, + 921, + 8091, + 8084, + 7980, + 921, + 8092, + 8085, + 7981, + 921, + 8093, + 8086, + 7982, + 921, + 8094, + 8087, + 7983, + 921, + 8095, + 8080, + 7976, + 921, + 8088, + 8081, + 7977, + 921, + 8089, + 8082, + 7978, + 921, + 8090, + 8083, + 7979, + 921, + 8091, + 8084, + 7980, + 921, + 8092, + 8085, + 7981, + 921, + 8093, + 8086, + 7982, + 921, + 8094, + 8087, + 7983, + 921, + 8095, + 8096, + 8040, + 921, + 8104, + 8097, + 8041, + 921, + 8105, + 8098, + 8042, + 921, + 8106, + 8099, + 8043, + 921, + 8107, + 8100, + 8044, + 921, + 8108, + 8101, + 8045, + 921, + 8109, + 8102, + 8046, + 921, + 8110, + 8103, + 8047, + 921, + 8111, + 8096, + 8040, + 921, + 8104, + 8097, + 8041, + 921, + 8105, + 8098, + 8042, + 921, + 8106, + 8099, + 8043, + 921, + 8107, + 8100, + 8044, + 921, + 8108, + 8101, + 8045, + 921, + 8109, + 8102, + 8046, + 921, + 8110, + 8103, + 8047, + 921, + 8111, + 8114, + 8122, + 921, + 8122, + 837, + 8115, + 913, + 921, + 8124, + 8116, + 902, + 921, + 902, + 837, + 8118, + 913, + 834, + 8119, + 913, + 834, + 921, + 913, + 834, + 837, + 8115, + 913, + 921, + 8124, + 8130, + 8138, + 921, + 8138, + 837, + 8131, + 919, + 921, + 8140, + 8132, + 905, + 921, + 905, + 837, + 8134, + 919, + 834, + 8135, + 919, + 834, + 921, + 919, + 834, + 837, + 8131, + 919, + 921, + 8140, + 8146, + 921, + 776, + 768, + 8147, + 921, + 776, + 769, + 8150, + 921, + 834, + 8151, + 921, + 776, + 834, + 8162, + 933, + 776, + 768, + 8163, + 933, + 776, + 769, + 8164, + 929, + 787, + 8166, + 933, + 834, + 8167, + 933, + 776, + 834, + 8178, + 8186, + 921, + 8186, + 837, + 8179, + 937, + 921, + 8188, + 8180, + 911, + 921, + 911, + 837, + 8182, + 937, + 834, + 8183, + 937, + 834, + 921, + 937, + 834, + 837, + 8179, + 937, + 921, + 8188, + 64256, + 70, + 70, + 70, + 102, + 64257, + 70, + 73, + 70, + 105, + 64258, + 70, + 76, + 70, + 108, + 64259, + 70, + 70, + 73, + 70, + 102, + 105, + 64260, + 70, + 70, + 76, + 70, + 102, + 108, + 64261, + 83, + 84, + 83, + 116, + 64262, + 83, + 84, + 83, + 116, + 64275, + 1348, + 1350, + 1348, + 1398, + 64276, + 1348, + 1333, + 1348, + 1381, + 64277, + 1348, + 1339, + 1348, + 1387, + 64278, + 1358, + 1350, + 1358, + 1398, + 64279, + 1348, + 1341, + 1348, + 1389, }; /* type indexes */ @@ -208,31 +2640,31 @@ static unsigned char index1[] = { 34, 34, 34, 103, 34, 34, 34, 34, 34, 34, 105, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 106, 107, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 108, 109, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 110, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 111, 34, 34, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 110, 111, 34, 34, 34, 34, 34, + 34, 34, 34, 112, 34, 34, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 126, 127, 128, - 129, 130, 131, 132, 34, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 17, 143, 144, 145, 146, 147, 17, 17, 17, 17, 17, 17, 148, 17, 149, 17, - 150, 17, 151, 17, 152, 17, 17, 17, 153, 17, 17, 17, 154, 155, 17, 17, 17, + 34, 125, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 127, 128, 129, + 130, 131, 132, 133, 34, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 17, 144, 145, 146, 147, 148, 17, 17, 17, 17, 17, 17, 149, 17, 150, 17, + 151, 17, 152, 17, 153, 17, 17, 17, 154, 17, 17, 17, 155, 156, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 34, 34, 34, 34, 34, 34, 156, 17, 157, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 34, 34, 34, 34, 34, 34, 157, 17, 158, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 34, 34, 34, 34, 34, 34, 34, 34, 158, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 34, 34, 34, 34, 34, 34, 34, 34, 159, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 34, 34, 34, 34, 159, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 34, 34, 34, 34, 160, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, @@ -240,27 +2672,27 @@ static unsigned char index1[] = { 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 160, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 161, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 64, 161, 162, 163, 164, 17, 165, 17, 166, 167, 168, 169, 170, 171, - 172, 173, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 64, 162, 163, 164, 165, 17, 166, 17, 167, 168, 169, 170, 171, 172, + 173, 174, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 174, 175, 176, - 177, 178, 17, 179, 180, 181, 182, 183, 184, 185, 186, 65, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 187, 188, 189, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 86, 190, 34, 191, - 192, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 175, 176, 177, + 178, 179, 17, 180, 181, 182, 183, 184, 185, 186, 187, 65, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 188, 189, 190, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 86, 191, 34, 192, + 193, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 193, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 194, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 194, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 195, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 195, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 196, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 196, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 197, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, @@ -268,16 +2700,16 @@ static unsigned char index1[] = { 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 197, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 198, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 198, 34, 199, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 34, 34, 199, 34, 200, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 34, 193, 34, 34, 199, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 34, 194, 34, 34, 200, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, @@ -591,7 +3023,7 @@ static unsigned char index1[] = { 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 200, 17, 201, 202, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 201, 17, 202, 203, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, @@ -619,510 +3051,577 @@ static unsigned char index1[] = { 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 203, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 203, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 204, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 204, }; -static unsigned char index2[] = { +static unsigned short index2[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 3, 3, 2, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 5, 5, 5, 5, 5, 5, 5, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 5, 5, 5, 5, 17, 5, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 5, 5, + 1, 1, 1, 1, 3, 3, 3, 2, 4, 5, 5, 5, 5, 5, 5, 6, 5, 5, 5, 5, 5, 5, 6, 5, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 6, 5, 5, 5, 5, 5, 5, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 5, 5, 5, 6, 43, 6, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 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, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 19, 5, 5, - 1, 5, 5, 5, 5, 20, 21, 5, 22, 5, 17, 5, 23, 19, 5, 24, 24, 24, 5, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 5, 16, 16, 16, 16, 16, 16, 16, 19, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 5, - 18, 18, 18, 18, 18, 18, 18, 25, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, - 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, - 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, - 26, 27, 28, 29, 26, 27, 26, 27, 26, 27, 19, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 19, 26, 27, 26, 27, 26, 27, 26, 27, - 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, - 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, - 26, 27, 30, 26, 27, 26, 27, 26, 27, 31, 32, 33, 26, 27, 26, 27, 34, 26, - 27, 35, 35, 26, 27, 19, 36, 37, 38, 26, 27, 35, 39, 40, 41, 42, 26, 27, - 43, 19, 41, 44, 45, 46, 26, 27, 26, 27, 26, 27, 47, 26, 27, 47, 19, 19, - 26, 27, 47, 26, 27, 48, 48, 26, 27, 26, 27, 49, 26, 27, 19, 50, 26, 27, - 19, 51, 50, 50, 50, 50, 52, 53, 54, 52, 53, 54, 52, 53, 54, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 55, 26, 27, 26, 27, - 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 19, 52, 53, 54, - 26, 27, 56, 57, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, - 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, - 26, 27, 26, 27, 26, 27, 26, 27, 58, 19, 26, 27, 26, 27, 26, 27, 26, 27, - 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 19, 19, 19, 19, 19, 19, 59, 26, - 27, 60, 61, 62, 62, 26, 27, 63, 64, 65, 26, 27, 26, 27, 26, 27, 26, 27, - 26, 27, 66, 67, 68, 69, 70, 19, 71, 71, 19, 72, 19, 73, 19, 19, 19, 19, - 71, 19, 19, 74, 19, 75, 19, 19, 76, 77, 19, 78, 19, 19, 19, 77, 19, 79, - 80, 19, 19, 81, 19, 19, 19, 19, 19, 19, 19, 82, 19, 19, 83, 19, 19, 83, - 19, 19, 19, 19, 83, 84, 85, 85, 86, 19, 19, 19, 19, 19, 87, 19, 50, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 5, 5, 5, 5, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 50, 50, 50, - 50, 50, 5, 5, 5, 5, 5, 5, 5, 50, 5, 50, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 88, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 26, 27, 26, 27, 50, 5, 26, 27, 0, 0, 89, - 45, 45, 45, 5, 0, 0, 0, 0, 0, 5, 5, 90, 17, 91, 91, 91, 0, 92, 0, 93, 93, - 19, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 0, 16, 16, 16, 16, 16, 16, 16, 16, 16, 94, 95, 95, 95, 19, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 96, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 97, 98, 98, 99, 100, 101, 102, 102, 102, 103, - 104, 105, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, - 26, 27, 26, 27, 26, 27, 26, 27, 106, 107, 108, 19, 109, 110, 5, 26, 27, - 111, 26, 27, 19, 58, 58, 58, 112, 112, 112, 112, 112, 112, 112, 112, 112, - 112, 112, 112, 112, 112, 112, 112, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, - 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, - 5, 17, 17, 17, 17, 17, 5, 5, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 113, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, - 26, 27, 26, 27, 114, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 0, 0, 50, 5, 5, 5, 5, 5, 5, 0, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 19, 0, 5, 5, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 5, 17, 5, 17, 17, 5, 17, 17, 5, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 0, 50, 50, 50, 5, 5, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 5, 0, 0, 5, 5, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 5, 5, 5, 5, 50, 50, 17, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 5, 50, 17, - 17, 17, 17, 17, 17, 17, 1, 5, 17, 17, 17, 17, 17, 17, 50, 50, 17, 17, 5, - 17, 17, 17, 17, 50, 50, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 50, 50, 50, - 5, 5, 50, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 1, 50, 17, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 50, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 50, 50, 5, 5, 5, 5, 50, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 17, 17, - 17, 17, 50, 17, 17, 17, 17, 17, 17, 17, 17, 17, 50, 17, 17, 17, 50, 17, - 17, 17, 17, 17, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 17, 17, 17, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 17, 17, 17, 50, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 50, 17, 17, 17, - 17, 17, 17, 17, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 17, 17, 5, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 5, 50, 50, 50, 50, 50, 50, 50, 0, 50, - 50, 50, 50, 50, 50, 50, 0, 17, 17, 17, 0, 50, 50, 50, 50, 50, 50, 50, 50, - 0, 0, 50, 50, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, 50, 50, 50, 50, 50, 0, 50, - 0, 0, 0, 50, 50, 50, 50, 0, 0, 17, 50, 17, 17, 17, 17, 17, 17, 17, 0, 0, - 17, 17, 0, 0, 17, 17, 17, 50, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 50, - 50, 0, 50, 50, 50, 17, 17, 0, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 50, - 50, 5, 5, 24, 24, 24, 24, 24, 24, 5, 5, 0, 0, 0, 0, 0, 17, 17, 17, 0, 50, - 50, 50, 50, 50, 50, 0, 0, 0, 0, 50, 50, 0, 0, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, - 50, 50, 50, 50, 50, 0, 50, 50, 0, 50, 50, 0, 50, 50, 0, 0, 17, 0, 17, 17, - 17, 17, 17, 0, 0, 0, 0, 17, 17, 0, 0, 17, 17, 17, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 50, 50, 50, 50, 0, 50, 0, 0, 0, 0, 0, 0, 0, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 17, 17, 50, 50, 50, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 17, 17, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, 50, 0, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 0, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, 0, 50, 50, 50, - 50, 50, 0, 0, 17, 50, 17, 17, 17, 17, 17, 17, 17, 17, 0, 17, 17, 17, 0, - 17, 17, 17, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, - 50, 17, 17, 0, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 5, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 0, 50, 50, 50, 50, 50, 50, - 50, 50, 0, 0, 50, 50, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, 50, 50, 50, 50, - 50, 0, 50, 50, 0, 50, 50, 50, 50, 50, 0, 0, 17, 50, 17, 17, 17, 17, 17, - 17, 17, 0, 0, 17, 17, 0, 0, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, - 0, 0, 0, 0, 50, 50, 0, 50, 50, 50, 17, 17, 0, 0, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 5, 50, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 50, 0, 50, 50, 50, 50, 50, 50, 0, 0, 0, 50, 50, 50, 0, 50, 50, 50, - 50, 0, 0, 0, 50, 50, 0, 50, 0, 50, 50, 0, 0, 0, 50, 50, 0, 0, 0, 50, 50, - 50, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, - 17, 17, 17, 17, 17, 0, 0, 0, 17, 17, 17, 0, 17, 17, 17, 17, 0, 0, 50, 0, - 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 24, 24, 24, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, - 0, 0, 17, 17, 17, 0, 50, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, 50, 0, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, - 50, 50, 50, 0, 0, 0, 50, 17, 17, 17, 17, 17, 17, 17, 0, 17, 17, 17, 0, - 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 17, 17, 0, 50, 50, 0, 0, 0, 0, 0, 0, - 50, 50, 17, 17, 0, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, - 0, 0, 0, 24, 24, 24, 24, 24, 24, 24, 5, 0, 0, 17, 17, 0, 50, 50, 50, 50, - 50, 50, 50, 50, 0, 50, 50, 50, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 0, 50, 50, 50, 50, 50, 0, 0, 17, 50, 17, 17, 17, - 17, 17, 17, 17, 0, 17, 17, 17, 0, 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, - 17, 17, 0, 0, 0, 0, 0, 0, 0, 50, 0, 50, 50, 17, 17, 0, 0, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 17, 0, 50, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, 50, 0, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 0, 0, 50, 17, 17, 17, 17, 17, 17, 17, 0, 17, 17, 17, 0, 17, - 17, 17, 17, 50, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 50, - 50, 17, 17, 0, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 24, 24, 24, 24, 24, - 24, 0, 0, 0, 5, 50, 50, 50, 50, 50, 50, 0, 0, 17, 17, 0, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 50, 0, 0, 50, - 50, 50, 50, 50, 50, 50, 0, 0, 0, 17, 0, 0, 0, 0, 17, 17, 17, 17, 17, 17, - 0, 17, 0, 17, 17, 17, 17, 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 17, 50, 117, 17, 17, 17, - 17, 17, 17, 17, 0, 0, 0, 0, 5, 50, 50, 50, 50, 50, 50, 50, 17, 17, 17, - 17, 17, 17, 17, 17, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 5, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 0, 50, 0, 0, 50, 50, 0, 50, 0, 0, - 50, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 0, 50, 50, 50, 50, 50, 50, 50, 0, - 50, 50, 50, 0, 50, 0, 50, 0, 0, 50, 50, 0, 50, 50, 50, 50, 17, 50, 117, - 17, 17, 17, 17, 17, 17, 0, 17, 17, 50, 0, 0, 50, 50, 50, 50, 50, 0, 50, - 0, 17, 17, 17, 17, 17, 17, 0, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, - 0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 17, 17, 5, 5, 5, 5, 5, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 5, 17, - 5, 17, 5, 17, 5, 5, 5, 5, 17, 17, 50, 50, 50, 50, 50, 50, 50, 50, 0, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, - 0, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 5, 17, 17, 50, 50, 50, 50, 50, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 0, 5, 5, 5, 5, 5, 5, 5, 5, 17, 5, 5, 5, 5, 5, 5, 0, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 5, 5, 5, 5, 5, 5, 6, 5, 70, 5, 5, + 71, 5, 6, 5, 5, 72, 73, 6, 74, 5, 75, 6, 76, 70, 5, 77, 77, 77, 5, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 5, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 5, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 70, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 70, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 70, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 70, 70, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 70, 321, 322, 323, 70, 324, 321, 321, 321, 321, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 70, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 70, 70, 70, 70, 70, 70, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 70, 463, 464, + 70, 465, 70, 466, 70, 70, 70, 70, 467, 70, 70, 468, 70, 469, 70, 70, 470, + 471, 70, 472, 70, 70, 70, 473, 70, 474, 475, 70, 70, 476, 70, 70, 70, 70, + 70, 70, 70, 477, 70, 70, 478, 70, 70, 479, 70, 70, 70, 70, 480, 481, 482, + 483, 484, 70, 70, 70, 70, 70, 485, 70, 321, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 486, 486, 486, 486, 486, 486, 486, 486, 486, 487, 487, 487, 487, + 487, 487, 487, 486, 486, 6, 6, 6, 6, 487, 487, 487, 487, 487, 487, 487, + 487, 487, 487, 487, 487, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 486, + 486, 486, 486, 486, 6, 6, 6, 6, 6, 6, 6, 487, 6, 487, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 488, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 489, 490, 491, 492, 487, + 6, 493, 494, 0, 0, 495, 496, 497, 498, 5, 0, 0, 0, 0, 0, 6, 6, 499, 75, + 500, 501, 502, 0, 503, 0, 504, 505, 506, 507, 508, 509, 510, 511, 512, + 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 0, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, + 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, + 569, 570, 571, 571, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, + 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 70, 602, 603, 5, 604, 605, 606, 607, + 608, 70, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, + 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, + 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, + 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, + 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, + 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, + 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, + 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, + 734, 735, 736, 737, 738, 739, 740, 741, 5, 75, 75, 75, 75, 75, 6, 6, 742, + 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, + 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, + 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, + 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, + 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, + 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, + 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, + 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, + 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, + 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, + 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, + 897, 898, 899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 900, 901, 902, 903, 904, 905, + 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, + 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, + 934, 935, 936, 937, 0, 0, 487, 5, 5, 5, 5, 5, 5, 0, 938, 939, 940, 941, + 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, + 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, + 970, 971, 972, 973, 974, 975, 976, 0, 5, 5, 0, 0, 0, 0, 0, 0, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 5, 75, 5, 75, 75, 5, 75, 75, 5, 75, 0, 0, 0, 0, + 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 0, 0, 0, 0, 0, 321, 321, 321, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 71, 71, 71, 71, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 5, 0, 0, 5, 5, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 487, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 5, 5, 5, 5, 321, 321, 75, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 5, 321, 75, 75, 75, 75, 75, + 75, 75, 71, 5, 75, 75, 75, 75, 75, 75, 487, 487, 75, 75, 5, 75, 75, 75, + 75, 321, 321, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 321, 321, 321, 5, 5, + 321, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 71, 321, 75, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 0, 0, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 487, 487, 5, 5, 5, 5, 487, 0, 0, 0, 0, 0, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 75, 75, 75, 75, 487, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 487, 75, 75, 75, 487, 75, 75, 75, 75, 75, 0, 0, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 75, 75, 75, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 50, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 5, 5, 5, 5, 5, 5, 50, 50, 50, 50, 50, 50, 17, 17, 17, 17, 50, 50, - 50, 50, 17, 17, 17, 50, 17, 17, 17, 50, 50, 17, 17, 17, 17, 17, 17, 17, - 50, 50, 50, 17, 17, 17, 17, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 50, 17, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 17, 17, 17, 17, 5, 5, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 5, 50, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, 50, 50, 0, 0, 50, 50, - 50, 50, 50, 50, 50, 0, 50, 0, 50, 50, 50, 50, 0, 0, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 0, 50, 50, 50, 50, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 0, 50, 50, 50, 50, 0, 0, 50, 50, 50, 50, 50, 50, 50, 0, 50, - 0, 50, 50, 50, 50, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, 50, 50, 0, 0, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 17, 17, 17, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 119, 120, 121, 122, 123, 124, 125, 126, 127, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 5, 5, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 2, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 5, 5, 0, 0, 0, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 5, 5, 5, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, - 50, 50, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 17, 17, 17, 5, 5, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, 50, 0, 17, 17, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 1, 1, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 5, 5, 5, 50, 5, 5, 5, 5, 50, 17, 0, 0, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 0, 0, 0, 0, 0, 0, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, - 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 17, 17, 17, 2, 0, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 17, 50, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 0, 0, 0, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 0, 0, 0, 0, 5, 0, 0, 0, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 50, 50, 50, 50, 50, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 50, - 50, 50, 50, 50, 50, 50, 17, 17, 0, 0, 0, 0, 0, 0, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 119, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 17, 17, 17, 17, 17, 0, 0, 5, 5, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 0, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 0, 0, 17, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, - 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 50, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 17, 17, 17, 17, 17, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 17, 17, 17, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 0, 0, 0, 50, 50, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, - 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 0, 0, 0, 5, 5, 5, 5, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 50, 50, 50, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 5, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 50, 50, 50, 50, 17, 50, 50, 50, 50, 17, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 50, 129, - 19, 19, 19, 130, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, - 17, 17, 17, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 19, 19, 19, 19, 19, 131, 19, 19, 132, - 19, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 133, 133, 133, 133, 133, 133, 133, 133, 134, - 134, 134, 134, 134, 134, 134, 134, 133, 133, 133, 133, 133, 133, 0, 0, - 134, 134, 134, 134, 134, 134, 0, 0, 133, 133, 133, 133, 133, 133, 133, - 133, 134, 134, 134, 134, 134, 134, 134, 134, 133, 133, 133, 133, 133, - 133, 133, 133, 134, 134, 134, 134, 134, 134, 134, 134, 133, 133, 133, - 133, 133, 133, 0, 0, 134, 134, 134, 134, 134, 134, 0, 0, 19, 133, 19, - 133, 19, 133, 19, 133, 0, 134, 0, 134, 0, 134, 0, 134, 133, 133, 133, - 133, 133, 133, 133, 133, 134, 134, 134, 134, 134, 134, 134, 134, 135, - 135, 136, 136, 136, 136, 137, 137, 138, 138, 139, 139, 140, 140, 0, 0, - 133, 133, 133, 133, 133, 133, 133, 133, 141, 141, 141, 141, 141, 141, - 141, 141, 133, 133, 133, 133, 133, 133, 133, 133, 141, 141, 141, 141, - 141, 141, 141, 141, 133, 133, 133, 133, 133, 133, 133, 133, 141, 141, - 141, 141, 141, 141, 141, 141, 133, 133, 19, 142, 19, 0, 19, 19, 134, 134, - 143, 143, 144, 5, 145, 5, 5, 5, 19, 142, 19, 0, 19, 19, 146, 146, 146, - 146, 144, 5, 5, 5, 133, 133, 19, 19, 0, 0, 19, 19, 134, 134, 147, 147, 0, - 5, 5, 5, 133, 133, 19, 19, 19, 108, 19, 19, 134, 134, 148, 148, 111, 5, - 5, 5, 0, 0, 19, 142, 19, 0, 19, 19, 149, 149, 150, 150, 144, 5, 5, 0, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 1, 1, 1, 1, 1, 2, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 17, 17, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 17, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 1, - 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 151, 50, 0, 0, 152, 153, - 154, 155, 156, 157, 5, 5, 5, 5, 5, 50, 151, 23, 20, 21, 152, 153, 154, - 155, 156, 157, 5, 5, 5, 5, 5, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 5, 5, 5, 5, 17, 5, 5, 5, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 102, 5, 5, 5, 5, 102, - 5, 5, 19, 102, 102, 102, 19, 19, 102, 102, 102, 19, 5, 102, 5, 5, 158, - 102, 102, 102, 102, 102, 5, 5, 5, 5, 5, 5, 102, 5, 159, 5, 102, 5, 160, - 161, 102, 102, 158, 19, 102, 102, 162, 102, 19, 50, 50, 50, 50, 19, 5, 5, - 19, 19, 102, 102, 5, 5, 5, 5, 5, 102, 19, 19, 19, 19, 5, 5, 5, 5, 163, 5, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, - 165, 165, 128, 128, 128, 26, 27, 128, 128, 128, 128, 24, 0, 0, 0, 0, 0, - 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 75, 75, 43, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 75, 43, 75, 321, 43, 43, 43, 75, 75, + 75, 75, 75, 75, 75, 75, 43, 43, 43, 43, 75, 43, 43, 321, 75, 75, 75, 75, + 75, 75, 75, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 75, 75, 5, + 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 5, 487, 321, 321, 321, 321, 321, + 321, 0, 321, 321, 321, 321, 321, 321, 321, 0, 75, 43, 43, 0, 321, 321, + 321, 321, 321, 321, 321, 321, 0, 0, 321, 321, 0, 0, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 0, 321, 321, 321, 321, 321, 321, 321, 0, 321, 0, 0, + 0, 321, 321, 321, 321, 0, 0, 75, 321, 43, 43, 43, 75, 75, 75, 75, 0, 0, + 43, 43, 0, 0, 43, 43, 75, 321, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, + 321, 321, 0, 321, 321, 321, 75, 75, 0, 0, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 321, 321, 5, 5, 77, 77, 77, 77, 77, 77, 5, 5, 0, 0, 0, 0, 0, 75, + 75, 43, 0, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 321, 321, 0, 0, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 0, 321, 321, 321, 321, 321, 321, 321, + 0, 321, 321, 0, 321, 321, 0, 321, 321, 0, 0, 75, 0, 43, 43, 43, 75, 75, + 0, 0, 0, 0, 75, 75, 0, 0, 75, 75, 75, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, + 321, 321, 321, 321, 0, 321, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 75, 75, 321, 321, 321, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 75, 75, 43, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 321, 321, + 321, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 321, 321, 321, 321, 321, + 321, 321, 0, 321, 321, 0, 321, 321, 321, 321, 321, 0, 0, 75, 321, 43, 43, + 43, 75, 75, 75, 75, 75, 0, 75, 75, 43, 0, 43, 43, 75, 0, 0, 321, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, 75, 75, 0, 0, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 75, 43, 43, 0, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 321, 321, + 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 321, 321, 321, 321, 321, + 321, 321, 0, 321, 321, 0, 321, 321, 321, 321, 321, 0, 0, 75, 321, 43, 75, + 43, 75, 75, 75, 75, 0, 0, 43, 43, 0, 0, 43, 43, 75, 0, 0, 0, 0, 0, 0, 0, + 0, 75, 43, 0, 0, 0, 0, 321, 321, 0, 321, 321, 321, 75, 75, 0, 0, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 5, 321, 77, 77, 77, 77, 77, 77, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 75, 321, 0, 321, 321, 321, 321, 321, 321, 0, 0, 0, 321, + 321, 321, 0, 321, 321, 321, 321, 0, 0, 0, 321, 321, 0, 321, 0, 321, 321, + 0, 0, 0, 321, 321, 0, 0, 0, 321, 321, 321, 0, 0, 0, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 43, 43, 75, 43, 43, + 0, 0, 0, 43, 43, 43, 0, 43, 43, 43, 75, 0, 0, 321, 0, 0, 0, 0, 0, 0, 43, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 77, 77, 77, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 43, 43, 43, + 0, 321, 321, 321, 321, 321, 321, 321, 321, 0, 321, 321, 321, 0, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 0, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 0, 321, 321, 321, 321, 321, 0, 0, 0, 321, 75, 75, 75, 43, + 43, 43, 43, 0, 75, 75, 75, 0, 75, 75, 75, 75, 0, 0, 0, 0, 0, 0, 0, 75, + 75, 0, 321, 321, 0, 0, 0, 0, 0, 0, 321, 321, 75, 75, 0, 0, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 77, 77, 77, 77, 77, 77, + 77, 5, 0, 0, 43, 43, 0, 321, 321, 321, 321, 321, 321, 321, 321, 0, 321, + 321, 321, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 0, 321, 321, 321, 321, 321, 0, 0, 75, + 321, 43, 75, 43, 43, 43, 43, 43, 0, 75, 43, 43, 0, 43, 43, 75, 75, 0, 0, + 0, 0, 0, 0, 0, 43, 43, 0, 0, 0, 0, 0, 0, 0, 321, 0, 321, 321, 75, 75, 0, + 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 321, 321, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 0, 321, 321, 321, 321, 321, 321, 321, + 321, 0, 321, 321, 321, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 0, 0, 321, 43, 43, 43, 75, 75, 75, 75, 0, 43, 43, 43, + 0, 43, 43, 43, 75, 321, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, + 0, 321, 321, 75, 75, 0, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 77, 77, + 77, 77, 77, 77, 0, 0, 0, 5, 321, 321, 321, 321, 321, 321, 0, 0, 43, 43, + 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 321, 0, 0, 321, + 321, 321, 321, 321, 321, 321, 0, 0, 0, 75, 0, 0, 0, 0, 43, 43, 43, 75, + 75, 75, 0, 75, 0, 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 75, 321, 977, 75, 75, 75, 75, 75, 75, 75, + 0, 0, 0, 0, 5, 321, 321, 321, 321, 321, 321, 487, 75, 75, 75, 75, 75, 75, + 75, 75, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 5, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 321, 321, 0, 321, 0, 0, 321, 321, 0, 321, 0, 0, 321, + 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, 0, 321, 321, 321, 321, 321, 321, + 321, 0, 321, 321, 321, 0, 321, 0, 321, 0, 0, 321, 321, 0, 321, 321, 321, + 321, 75, 321, 977, 75, 75, 75, 75, 75, 75, 0, 75, 75, 321, 0, 0, 321, + 321, 321, 321, 321, 0, 487, 0, 75, 75, 75, 75, 75, 75, 0, 0, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 0, 0, 321, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 75, + 75, 5, 5, 5, 5, 5, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 5, 75, 5, 75, 5, 75, 5, 5, 5, 5, 43, 43, 321, + 321, 321, 321, 321, 321, 321, 321, 0, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 0, 0, 0, 0, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 43, 75, 75, 75, 75, 75, 5, 75, 75, 321, 321, 321, 321, 321, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 0, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 0, 5, 5, 5, 5, 5, 5, 5, 5, 75, 5, 5, + 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 43, 43, 75, 75, 75, 75, 43, 75, 75, 75, 75, 75, + 75, 43, 75, 75, 43, 43, 75, 75, 321, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 5, 5, 5, 5, 5, 5, 321, 321, 321, 321, 321, 321, 43, 43, 75, 75, 321, 321, + 321, 321, 75, 75, 75, 321, 43, 43, 43, 321, 321, 43, 43, 43, 43, 43, 43, + 43, 321, 321, 321, 75, 75, 75, 75, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 75, 43, 43, 75, 75, 43, 43, 43, 43, 43, 43, + 75, 321, 43, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 43, 43, 43, 75, 5, 5, + 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, + 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, + 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 5, 487, 0, 0, 0, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 321, + 321, 321, 321, 0, 0, 321, 321, 321, 321, 321, 321, 321, 0, 321, 0, 321, + 321, 321, 321, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 0, 321, 321, 321, 321, 0, 0, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 321, + 321, 321, 321, 0, 0, 321, 321, 321, 321, 321, 321, 321, 0, 321, 0, 321, + 321, 321, 321, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 0, 321, 321, 321, 321, 0, 0, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 75, 75, 75, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 0, 0, 0, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 5, 5, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 2, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 5, + 5, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 5, 5, 5, 1025, 1025, 1025, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 0, 321, 321, 321, 321, 75, 75, 75, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 75, 75, 75, 5, 5, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 75, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 321, + 321, 321, 0, 75, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 71, 71, 43, 75, 75, 75, 75, 75, 75, + 75, 43, 43, 43, 43, 43, 43, 43, 43, 75, 43, 43, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 5, 5, 5, 487, 5, 5, 5, 5, 321, 75, 0, 0, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 75, 75, 75, 2, + 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 487, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 75, 321, 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 0, 0, 0, 75, 75, 75, 43, 43, 43, 43, 75, 75, 43, 43, 43, 0, 0, 0, 0, + 43, 43, 75, 43, 43, 43, 43, 43, 43, 75, 75, 75, 0, 0, 0, 0, 5, 0, 0, 0, + 5, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 321, 321, 321, + 321, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 321, 321, 321, + 321, 321, 321, 321, 43, 43, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 1016, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 75, 75, 43, 43, 43, 0, 0, 5, 5, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 43, 75, 43, 75, 75, 75, 75, + 75, 75, 75, 0, 75, 43, 75, 43, 43, 75, 75, 75, 75, 75, 75, 75, 75, 43, + 43, 43, 43, 43, 43, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 0, 0, 75, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 487, 5, 5, 5, 5, + 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 75, 75, 75, 43, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 75, 43, 75, 75, 75, 75, 75, 43, 75, 43, 43, 43, 43, 43, 75, 43, + 43, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 75, + 75, 43, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 43, 75, 75, 75, 75, 43, 43, 75, 75, 43, 0, 0, 0, 321, 321, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 75, 43, 75, 75, 43, 43, 43, 75, 43, + 75, 75, 75, 43, 43, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 43, 43, 43, 43, 43, 43, 43, 43, 75, 75, 75, 75, + 75, 75, 75, 75, 43, 43, 75, 75, 0, 0, 0, 5, 5, 5, 5, 5, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 0, 0, 0, 321, 321, 321, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 487, 487, 487, 487, 487, 487, 5, 5, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 75, 75, 75, 5, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 43, + 75, 75, 75, 75, 75, 75, 75, 321, 321, 321, 321, 75, 321, 321, 321, 321, + 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 486, 1026, 70, 70, 70, 1027, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 75, 75, 75, 1028, 1029, + 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, + 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, + 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, + 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, + 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, + 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, + 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, + 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, + 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, + 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, + 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, + 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, + 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 70, 70, 1184, + 70, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, + 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, + 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, + 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, + 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, + 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, + 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, + 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, + 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, + 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 0, 0, + 1303, 1304, 1305, 1306, 1307, 1308, 0, 0, 1309, 1310, 1311, 1312, 1313, + 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, + 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, + 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 0, 0, 1347, 1348, + 1349, 1350, 1351, 1352, 0, 0, 1353, 1354, 1355, 1356, 1357, 1358, 1359, + 1360, 0, 1361, 0, 1362, 0, 1363, 0, 1364, 1365, 1366, 1367, 1368, 1369, + 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, + 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, + 1394, 0, 0, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, + 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, + 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, + 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, + 1441, 1442, 1443, 1444, 1445, 1446, 1447, 0, 1448, 1449, 1450, 1451, + 1452, 1453, 1454, 6, 1455, 6, 6, 6, 1456, 1457, 1458, 0, 1459, 1460, + 1461, 1462, 1463, 1464, 1465, 6, 6, 6, 1466, 1467, 1468, 1469, 0, 0, + 1470, 1471, 1472, 1473, 1474, 1475, 0, 6, 6, 6, 1476, 1477, 1478, 1479, + 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 6, 6, 6, 0, 0, + 1489, 1490, 1491, 0, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 6, 6, 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 71, 71, 71, 71, 71, 5, 5, 5, 5, 5, 5, 5, + 5, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 5, 5, 6, 3, 3, 71, 71, 71, 71, + 71, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 43, 43, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 43, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 2, 71, 71, 71, 71, 71, 0, 0, 0, 0, 0, 71, 71, 71, 71, 71, 71, 1499, + 487, 0, 0, 1500, 1501, 1502, 1503, 1504, 1505, 5, 5, 5, 5, 5, 487, 1499, + 76, 72, 73, 1500, 1501, 1502, 1503, 1504, 1505, 5, 5, 5, 5, 5, 0, 486, + 486, 486, 486, 486, 487, 487, 487, 487, 487, 487, 487, 487, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 6, 6, 6, 6, 75, 6, 6, 6, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 5, 5, 571, 5, 5, 5, 5, 571, 5, 5, 70, 571, 571, 571, + 70, 70, 571, 571, 571, 70, 5, 571, 5, 5, 1506, 571, 571, 571, 571, 571, + 5, 5, 5, 5, 5, 5, 571, 5, 1507, 5, 571, 5, 1508, 1509, 571, 571, 1506, + 70, 571, 571, 1510, 571, 70, 321, 321, 321, 321, 70, 5, 5, 70, 70, 571, + 571, 5, 5, 5, 5, 5, 571, 70, 70, 70, 70, 5, 5, 5, 5, 1511, 5, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 1512, 1513, 1514, + 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, + 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, + 1539, 1540, 1541, 1542, 1543, 1025, 1025, 1025, 1544, 1545, 1025, 1025, + 1025, 1025, 77, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, @@ -1135,727 +3634,864 @@ static unsigned char index2[] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 72, 73, + 1500, 1501, 1502, 1503, 1504, 1505, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 76, 72, 73, 1500, 1501, 1502, 1503, 1504, 1505, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 76, 72, 73, 1500, 1501, 1502, 1503, 1504, + 1505, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1546, 1547, 1548, + 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, + 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, + 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, + 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, + 1597, 1499, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 76, 72, 73, 1500, + 1501, 1502, 1503, 1504, 1505, 77, 1499, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 76, 72, 73, 1500, 1501, 1502, 1503, + 1504, 1505, 77, 76, 72, 73, 1500, 1501, 1502, 1503, 1504, 1505, 77, 76, + 72, 73, 1500, 1501, 1502, 1503, 1504, 1505, 77, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, + 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 20, 21, 152, 153, 154, 155, 156, 157, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 20, 21, 152, 153, 154, 155, - 156, 157, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 20, 21, 152, - 153, 154, 155, 156, 157, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1598, 1599, 1600, 1601, 1602, 1603, + 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, + 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, + 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, + 1640, 1641, 1642, 1643, 1644, 0, 1645, 1646, 1647, 1648, 1649, 1650, + 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, + 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, + 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, + 1687, 1688, 1689, 1690, 1691, 0, 1692, 1693, 1694, 1695, 1696, 1697, + 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 70, + 1709, 1710, 70, 1711, 1712, 70, 70, 70, 70, 70, 70, 486, 1713, 1714, + 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, + 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, + 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, + 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, + 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, + 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, + 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, + 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, + 1811, 1812, 1813, 1814, 70, 5, 5, 5, 5, 5, 5, 1815, 1816, 1817, 1818, 75, + 75, 75, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 77, 5, 5, 1819, 1820, 1821, + 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, + 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, + 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 487, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 75, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, 0, 321, 321, 321, 321, + 321, 321, 321, 0, 321, 321, 321, 321, 321, 321, 321, 0, 321, 321, 321, + 321, 321, 321, 321, 0, 321, 321, 321, 321, 321, 321, 321, 0, 321, 321, + 321, 321, 321, 321, 321, 0, 321, 321, 321, 321, 321, 321, 321, 0, 321, + 321, 321, 321, 321, 321, 321, 0, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 151, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 23, 20, 21, 152, 153, 154, 155, 156, 157, 24, - 151, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 1857, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 23, - 20, 21, 152, 153, 154, 155, 156, 157, 24, 23, 20, 21, 152, 153, 154, 155, - 156, 157, 24, 23, 20, 21, 152, 153, 154, 155, 156, 157, 24, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 0, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 0, 0, 0, 0, 2, 5, 5, 5, 5, 487, 321, 1025, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 75, 75, 75, 75, 75, 75, 5, 487, 487, + 487, 487, 487, 5, 5, 1025, 1025, 1025, 487, 321, 5, 5, 5, 0, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, + 0, 75, 75, 6, 6, 487, 487, 321, 5, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 5, 487, + 487, 487, 321, 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 0, 5, 5, 77, 77, 77, 77, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, + 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 0, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 0, 26, 27, 168, 169, 170, 171, 172, 26, 27, 26, - 27, 26, 27, 173, 174, 175, 176, 19, 26, 27, 19, 26, 27, 19, 19, 19, 19, - 19, 19, 50, 177, 177, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 19, 5, 5, 5, - 5, 5, 5, 26, 27, 26, 27, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 24, - 5, 5, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 17, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, - 50, 50, 50, 50, 50, 50, 0, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, 50, 50, - 50, 50, 50, 0, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, 50, 50, 50, 50, 50, - 0, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, - 50, 50, 50, 50, 50, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 89, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, - 0, 0, 2, 5, 5, 5, 5, 50, 50, 128, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 17, 17, 17, 17, 17, 17, 5, 50, 50, 50, 50, 50, 5, 5, 128, 128, - 128, 50, 50, 5, 5, 5, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 0, 0, 17, 17, 5, 5, 50, 50, 50, 5, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 5, 50, 50, 50, 50, 0, 0, 0, - 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 5, 5, 24, 24, 24, 24, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, - 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 0, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 0, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 179, 50, 50, 179, - 50, 50, 50, 179, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, - 179, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 179, 179, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 179, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, - 50, 179, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 179, - 179, 179, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 179, 179, 179, 179, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, - 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 179, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 179, 179, 50, 179, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, - 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 5, 5, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 5, 5, 5, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 50, 17, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, - 0, 0, 17, 17, 5, 50, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, - 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 17, 17, 5, 5, 5, 5, 5, 5, 0, 0, - 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 50, 50, 50, 50, 50, 50, 50, 50, 50, 5, 5, 26, 27, 26, 27, - 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 19, 19, 26, 27, 26, 27, 26, 27, - 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, - 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, - 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, 26, 27, - 26, 27, 50, 19, 19, 19, 19, 19, 19, 19, 19, 26, 27, 26, 27, 180, 26, 27, - 26, 27, 26, 27, 26, 27, 26, 27, 50, 5, 5, 26, 27, 181, 19, 0, 26, 27, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 26, 27, 26, 27, 26, 27, - 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 50, 50, 50, 50, 50, 50, 50, 17, 50, 50, - 50, 17, 50, 50, 50, 50, 17, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 17, 17, 17, 17, 17, 5, 5, - 5, 5, 0, 0, 0, 0, 24, 24, 24, 24, 24, 24, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 5, 5, 5, - 5, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 50, 50, 50, 50, 50, 50, 5, 5, 5, 50, 0, 0, 0, - 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 17, 17, 17, 17, 17, 17, 17, 17, 5, 5, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 5, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 17, 17, 17, 17, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 50, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 17, 50, 50, 50, 50, 50, - 50, 50, 50, 17, 17, 0, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 5, 5, - 5, 5, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 5, 5, 5, 50, 17, 0, 0, 0, 0, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 17, 50, 17, 17, 17, 50, 50, 17, 17, 50, 50, - 50, 50, 50, 17, 17, 50, 17, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 50, 50, 50, 50, 50, 50, 0, 0, 50, 50, 50, 50, 50, 50, 0, 0, 50, 50, - 50, 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 0, - 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 17, 17, 17, 17, 17, 17, 17, 17, 5, 17, 17, 0, 0, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 5, 5, 5, 5, 5, 5, 5, 5, 0, 321, 321, 321, 321, 321, 1858, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1858, 321, + 321, 1858, 321, 321, 321, 1858, 321, 1858, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 1858, 321, + 321, 321, 321, 321, 321, 321, 1858, 321, 1858, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 1858, 1858, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, + 321, 321, 321, 321, 321, 321, 1858, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 1858, 321, 1858, + 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 1858, 321, 1858, 1858, 1858, 321, 321, 321, 321, 321, 321, 1858, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 1858, 1858, 1858, 1858, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 1858, 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 1858, 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 1858, 1858, 1858, 321, 1858, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, 321, 321, + 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 1858, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, 321, 321, + 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 487, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 487, 487, 487, 487, 487, 487, 5, 5, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 487, 5, 5, 5, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 321, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, + 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, + 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, + 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, + 1904, 321, 75, 6, 6, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 75, 75, 5, 487, 1905, + 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, + 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 0, 0, + 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 75, 75, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 487, 487, 487, 487, + 487, 487, 487, 487, 487, 6, 6, 1929, 1930, 1931, 1932, 1933, 1934, 1935, + 1936, 1937, 1938, 1939, 1940, 1941, 1942, 70, 70, 1943, 1944, 1945, 1946, + 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, + 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, + 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, + 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, + 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 486, 70, 70, + 70, 70, 70, 70, 70, 70, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, + 2013, 2014, 2015, 2016, 2017, 2018, 2019, 487, 6, 6, 2020, 2021, 2022, + 70, 0, 2023, 2024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2025, 2026, + 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 70, 321, 321, 321, 321, 321, 321, 321, 75, 321, 321, 321, 75, 321, 321, + 321, 321, 75, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 43, 43, 75, 75, + 43, 5, 5, 5, 5, 0, 0, 0, 0, 77, 77, 77, 77, 77, 77, 5, 5, 5, 5, 0, 0, 0, + 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 5, 5, 5, 5, 0, 0, + 0, 0, 0, 0, 0, 0, 43, 43, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 75, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, + 0, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 321, 321, 321, 321, 321, 321, 5, 5, 5, 321, 0, 0, 0, 0, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 75, 75, 75, 75, 75, 75, 75, 75, 5, 5, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 43, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 75, 75, 75, 43, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 75, 43, 43, 75, 75, 75, 75, 43, 43, 75, 43, 43, + 43, 43, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 487, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 75, 75, 75, 75, + 75, 75, 43, 43, 75, 75, 43, 43, 75, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, + 321, 321, 75, 321, 321, 321, 321, 321, 321, 321, 321, 75, 43, 0, 0, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 5, 5, 5, 5, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 487, 321, 321, + 321, 321, 321, 321, 5, 5, 5, 321, 43, 0, 0, 0, 0, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 75, 321, 75, 75, 75, 321, 321, 75, 75, 321, 321, 321, 321, 321, + 75, 75, 321, 75, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 321, 321, 487, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, + 321, 321, 321, 321, 321, 0, 0, 321, 321, 321, 321, 321, 321, 0, 0, 321, + 321, 321, 321, 321, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, + 321, 321, 321, 0, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 43, 43, 75, 43, 43, 75, 43, 43, 5, 43, 75, 0, 0, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 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, 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, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, - 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 179, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, - 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 0, 0, 0, 0, - 0, 50, 17, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 5, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, 50, 50, 50, 0, 50, 0, 50, 50, - 0, 50, 50, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 89, 89, 89, 89, 89, 89, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 89, 89, 5, 5, 0, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 17, - 17, 17, 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 17, 17, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 17, 17, - 17, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 0, 5, 5, 5, 5, 0, 0, 0, 0, 89, 50, 89, 50, 89, 0, 89, 50, 89, 50, 89, 50, - 89, 50, 89, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 0, 0, 1, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 5, 5, 5, 5, 5, 5, 5, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 5, 5, 5, 5, 17, 5, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 117, 117, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 0, 0, 0, 50, 50, 50, 50, 50, 50, 0, 0, 50, 50, 50, - 50, 50, 50, 0, 0, 50, 50, 50, 50, 50, 50, 0, 0, 50, 50, 50, 0, 0, 0, 5, - 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 5, 5, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, 0, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 0, 5, 5, 5, 0, 0, - 0, 0, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 24, 24, 24, 24, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 24, 0, 0, 0, 0, 0, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 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, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 1858, 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, 321, 321, + 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 1858, 321, 1858, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, + 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 0, 0, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2035, 2036, 2037, 2038, + 2039, 2040, 2041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2042, 2043, 2044, + 2045, 2046, 0, 0, 0, 0, 0, 321, 75, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 5, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 0, 321, 321, 321, 321, 321, 0, 321, 0, 321, 321, 0, 321, 321, + 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 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, 0, 0, 0, 0, + 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 2047, + 2047, 2047, 2047, 2047, 2047, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 5, 5, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 2047, 2047, 5, 5, 0, 0, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 5, 5, 5, 6, 5, 5, 5, 5, 5, 5, + 0, 0, 0, 0, 0, 0, 75, 75, 75, 75, 75, 75, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 5, 5, 43, 43, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 43, 43, 43, 5, 5, 6, 0, 5, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 0, 0, 0, 0, 2047, 321, 2047, 321, + 2047, 0, 2047, 321, 2047, 321, 2047, 321, 2047, 321, 2047, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 71, 0, 5, 5, + 5, 5, 5, 5, 6, 5, 5, 5, 5, 5, 5, 6, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 6, 5, 5, 5, 5, 5, 5, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, + 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, + 2068, 2069, 2070, 2071, 2072, 2073, 5, 5, 5, 6, 43, 6, 2074, 2075, 2076, + 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, + 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 487, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 2100, 2100, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 321, 321, 321, + 321, 321, 321, 0, 0, 321, 321, 321, 321, 321, 321, 0, 0, 321, 321, 321, + 321, 321, 321, 0, 0, 321, 321, 321, 0, 0, 0, 5, 5, 5, 6, 5, 5, 5, 0, 5, + 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 71, 71, 5, 5, 0, 0, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 0, 321, 321, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 0, 5, 5, 5, 0, + 0, 0, 0, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 77, 77, 77, 77, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 77, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 17, 0, 0, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 24, 24, 24, 24, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 128, 50, 50, 50, 50, 50, 50, 50, 50, 128, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 5, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, - 0, 50, 50, 50, 50, 50, 50, 50, 50, 5, 128, 128, 128, 128, 128, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, 182, 182, 182, 182, - 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, - 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, - 182, 182, 182, 182, 182, 182, 182, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 5, 5, 5, 5, 75, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 0, 77, 77, 77, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 1025, 321, 321, 321, 321, 321, 321, 321, 321, 1025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, - 50, 50, 0, 0, 50, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 50, 50, 0, 0, 0, - 50, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 0, 5, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 24, 24, 24, 24, 24, 24, 0, 0, 0, 5, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 0, 5, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 321, + 321, 321, 321, 321, 321, 321, 321, 5, 1025, 1025, 1025, 1025, 1025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2101, 2102, 2103, 2104, + 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, + 2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, + 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, + 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, + 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, + 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, + 2177, 2178, 2179, 2180, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 50, 17, 17, 17, 0, 17, 17, 0, 0, 0, 0, 0, 17, 17, - 17, 17, 50, 50, 50, 50, 0, 50, 50, 50, 0, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 0, 0, 0, 0, 17, 17, 17, 0, 0, 0, 0, 17, 23, 20, 21, 152, 24, 24, 24, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, - 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 24, 24, 5, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 5, - 5, 5, 5, 5, 5, 5, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 24, 24, 24, 24, 24, 24, 24, 24, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 0, 0, 0, 0, 0, 24, 24, 24, 24, 24, 24, 24, 24, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 321, 321, 321, 321, 321, 321, 0, 0, 321, 0, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 321, 321, 0, 0, 0, + 321, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 5, 77, 77, 77, + 77, 77, 77, 77, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 77, 77, 77, 77, 77, 77, 0, 0, 0, 5, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 75, 75, 75, 0, 75, 75, 0, 0, 0, 0, 0, 75, + 75, 75, 75, 321, 321, 321, 321, 0, 321, 321, 321, 0, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 75, 75, 75, 0, + 0, 0, 0, 75, 76, 72, 73, 1500, 77, 77, 77, 77, 0, 0, 0, 0, 0, 0, 0, 0, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 77, 77, 5, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 5, 5, 5, 5, 5, + 5, 5, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 77, 77, 77, 77, 77, + 77, 77, 77, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 0, 77, 77, 77, 77, 77, 77, + 77, 77, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 23, 20, 21, 152, 153, 154, 155, 156, 157, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 17, 17, 17, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 5, 5, 5, 5, 5, 5, - 5, 0, 0, 0, 0, 23, 20, 21, 152, 153, 154, 155, 156, 157, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 5, 5, 1, 5, - 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 158, 158, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 158, 158, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 72, 73, 1500, 1501, 1502, + 1503, 1504, 1505, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 0, 43, 75, 43, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 76, 72, 73, 1500, 1501, + 1502, 1503, 1504, 1505, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 75, 75, 43, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 43, 43, 43, 75, 75, 75, 75, 43, 43, 75, 75, + 5, 5, 71, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1506, 1506, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1506, 1506, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, + 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 17, 17, 17, 17, 17, - 5, 5, 5, 17, 17, 17, 17, 17, 17, 1, 1, 1, 1, 1, 1, 1, 1, 17, 17, 17, 17, - 17, 17, 17, 17, 5, 5, 17, 17, 17, 17, 17, 17, 17, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 17, 17, - 17, 17, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 43, 43, 75, 75, 75, 5, 5, 5, 43, + 43, 43, 43, 43, 43, 71, 71, 71, 71, 71, 71, 71, 71, 75, 75, 75, 75, 75, + 75, 75, 75, 5, 5, 75, 75, 75, 75, 75, 75, 75, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 75, 75, + 75, 75, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 17, 17, 17, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 5, 5, 5, 5, 5, 75, 75, 75, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 19, 19, 19, 19, 19, 19, 19, 0, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 102, 0, 102, 102, 0, 0, 102, 0, 0, 102, 102, 0, 0, - 102, 102, 102, 102, 0, 102, 102, 102, 102, 102, 102, 102, 102, 19, 19, - 19, 19, 0, 19, 0, 19, 19, 19, 19, 19, 19, 19, 0, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 102, 102, 0, 102, 102, 102, 102, - 0, 0, 102, 102, 102, 102, 102, 102, 102, 102, 0, 102, 102, 102, 102, 102, - 102, 102, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 102, 102, 0, 102, 102, 102, - 102, 0, 102, 102, 102, 102, 102, 0, 102, 0, 0, 0, 102, 102, 102, 102, - 102, 102, 102, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 0, 0, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 5, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 5, 19, 19, 19, 19, 19, 19, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 5, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 5, 19, 19, 19, 19, 19, 19, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 5, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 5, 19, 19, 19, 19, - 19, 19, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 5, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 5, 19, 19, 19, 19, 19, 19, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 5, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 5, 19, 19, - 19, 19, 19, 19, 102, 19, 0, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 70, 70, 70, 70, 70, 70, 70, 0, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 571, 0, 571, 571, 0, 0, 571, 0, 0, 571, 571, 0, 0, + 571, 571, 571, 571, 0, 571, 571, 571, 571, 571, 571, 571, 571, 70, 70, + 70, 70, 0, 70, 0, 70, 70, 70, 70, 70, 70, 70, 0, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 571, 571, 0, 571, 571, 571, 571, + 0, 0, 571, 571, 571, 571, 571, 571, 571, 571, 0, 571, 571, 571, 571, 571, + 571, 571, 0, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 571, 571, 0, 571, 571, 571, + 571, 0, 571, 571, 571, 571, 571, 0, 571, 0, 0, 0, 571, 571, 571, 571, + 571, 571, 571, 0, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 0, 0, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 5, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 5, 70, 70, 70, 70, 70, 70, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 5, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 5, 70, 70, 70, 70, 70, 70, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 5, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 5, 70, 70, 70, 70, + 70, 70, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 5, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 5, 70, 70, 70, 70, 70, 70, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 5, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 5, 70, 70, + 70, 70, 70, 70, 571, 70, 0, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, @@ -1866,181 +4502,206 @@ static unsigned char index2[] = { 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 151, 23, 20, 21, 152, 153, - 154, 155, 156, 157, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1499, 1499, 76, 72, 73, 1500, + 1501, 1502, 1503, 1504, 1505, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, - 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, - 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 5, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, + 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 0, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 0, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 0, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, - 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, + 5, 5, 5, 5, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 0, 5, 0, 5, 0, 5, 0, 5, - 5, 5, 0, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 0, 5, 0, 0, 5, 5, 5, 5, 0, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 0, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 0, 5, 0, 5, + 0, 5, 0, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 0, 5, 0, 0, 5, + 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 179, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 179, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, - 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 179, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 179, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 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, 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, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 1858, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, 1858, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 1858, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 1858, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 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, 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, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, }; /* Returns the numeric value as double for Unicode characters diff --git a/Tools/unicode/makeunicodedata.py b/Tools/unicode/makeunicodedata.py index d977097..140fc64 100644 --- a/Tools/unicode/makeunicodedata.py +++ b/Tools/unicode/makeunicodedata.py @@ -22,6 +22,7 @@ # 2006-03-10 mvl update to Unicode 4.1; add UCD 3.2 delta # 2008-06-11 gb add PRINTABLE_MASK for Atsuo Ishimoto's ascii() patch # 2011-10-21 ezio add support for name aliases and named sequences +# 2012-01 benjamin add full case mappings # # written by Fredrik Lundh (fredrik@pythonware.com) # @@ -47,6 +48,7 @@ DERIVEDNORMALIZATION_PROPS = "DerivedNormalizationProps%s.txt" LINE_BREAK = "LineBreak%s.txt" NAME_ALIASES = "NameAliases%s.txt" NAMED_SEQUENCES = "NamedSequences%s.txt" +SPECIAL_CASING = "SpecialCasing%s.txt" # Private Use Areas -- in planes 1, 15, 16 PUA_1 = range(0xE000, 0xF900) @@ -84,8 +86,10 @@ UPPER_MASK = 0x80 XID_START_MASK = 0x100 XID_CONTINUE_MASK = 0x200 PRINTABLE_MASK = 0x400 -NODELTA_MASK = 0x800 -NUMERIC_MASK = 0x1000 +NUMERIC_MASK = 0x800 +CASE_IGNORABLE_MASK = 0x1000 +CASED_MASK = 0x2000 +EXTENDED_CASE_MASK = 0x4000 # these ranges need to match unicodedata.c:is_unified_ideograph cjk_ranges = [ @@ -384,6 +388,7 @@ def makeunicodetype(unicode, trace): numeric = {} spaces = [] linebreaks = [] + extra_casing = [] for char in unicode.chars: record = unicode.table[char] @@ -396,7 +401,7 @@ def makeunicodetype(unicode, trace): delta = True if category in ["Lm", "Lt", "Lu", "Ll", "Lo"]: flags |= ALPHA_MASK - if category == "Ll": + if "Lowercase" in properties: flags |= LOWER_MASK if 'Line_Break' in properties or bidirectional == "B": flags |= LINEBREAK_MASK @@ -406,7 +411,7 @@ def makeunicodetype(unicode, trace): spaces.append(char) if category == "Lt": flags |= TITLE_MASK - if category == "Lu": + if "Uppercase" in properties: flags |= UPPER_MASK if char == ord(" ") or category[0] not in ("C", "Z"): flags |= PRINTABLE_MASK @@ -414,35 +419,41 @@ def makeunicodetype(unicode, trace): flags |= XID_START_MASK if "XID_Continue" in properties: flags |= XID_CONTINUE_MASK - # use delta predictor for upper/lower/title if it fits - if record[12]: - upper = int(record[12], 16) - else: - upper = char - if record[13]: - lower = int(record[13], 16) - else: - lower = char - if record[14]: - title = int(record[14], 16) - else: - # UCD.html says that a missing title char means that - # it defaults to the uppercase character, not to the - # character itself. Apparently, in the current UCD (5.x) - # this feature is never used - title = upper - upper_d = upper - char - lower_d = lower - char - title_d = title - char - if -32768 <= upper_d <= 32767 and \ - -32768 <= lower_d <= 32767 and \ - -32768 <= title_d <= 32767: - # use deltas - upper = upper_d & 0xffff - lower = lower_d & 0xffff - title = title_d & 0xffff + if "Cased" in properties: + flags |= CASED_MASK + if "Case_Ignorable" in properties: + flags |= CASE_IGNORABLE_MASK + sc = unicode.special_casing.get(char) + if sc is None: + if record[12]: + upper = int(record[12], 16) + else: + upper = char + if record[13]: + lower = int(record[13], 16) + else: + lower = char + if record[14]: + title = int(record[14], 16) + else: + title = upper + if upper == lower == title: + upper = lower = title = 0 else: - flags |= NODELTA_MASK + # This happens when some character maps to more than one + # character in uppercase, lowercase, or titlecase. The extra + # characters are stored in a different array. + flags |= EXTENDED_CASE_MASK + lower = len(extra_casing) | (len(sc[0]) << 24) + extra_casing.extend(sc[0]) + upper = len(extra_casing) | (len(sc[2]) << 24) + extra_casing.extend(sc[2]) + # Title is probably equal to upper. + if sc[1] == sc[2]: + title = upper + else: + title = len(extra_casing) | (len(sc[1]) << 24) + extra_casing.extend(sc[1]) # decimal digit, integer digit decimal = 0 if record[6]: @@ -469,6 +480,7 @@ def makeunicodetype(unicode, trace): print(sum(map(len, numeric.values())), "numeric code points") print(len(spaces), "whitespace code points") print(len(linebreaks), "linebreak code points") + print(len(extra_casing), "extended case array") print("--- Writing", FILE, "...") @@ -482,6 +494,14 @@ def makeunicodetype(unicode, trace): print("};", file=fp) print(file=fp) + print("/* extended case mappings */", file=fp) + print(file=fp) + print("const Py_UCS4 _PyUnicode_ExtendedCase[] = {", file=fp) + for c in extra_casing: + print(" %d," % c, file=fp) + print("};", file=fp) + print(file=fp) + # split decomposition index table index1, index2, shift = splitbins(index, trace) @@ -1070,6 +1090,23 @@ class UnicodeData: # Patch the numeric field if table[i] is not None: table[i][8] = value + sc = self.special_casing = {} + with open_data(SPECIAL_CASING, version) as file: + for s in file: + s = s[:-1].split('#', 1)[0] + if not s: + continue + data = s.split("; ") + if data[4]: + # We ignore all conditionals (since they depend on + # languages) except for one, which is hardcoded. See + # handle_capital_sigma in unicodeobject.c. + continue + c = int(data[0], 16) + lower = [int(char, 16) for char in data[1].split()] + title = [int(char, 16) for char in data[2].split()] + upper = [int(char, 16) for char in data[3].split()] + sc[c] = (lower, title, upper) def uselatin1(self): # restrict character range to ISO Latin 1 |