From 3db6b4427de43ec3ab54f6cec3e1a014780d6890 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Sun, 25 Aug 2024 00:24:25 +0200 Subject: Add simd-unicode --- c/simd-unicode/.gitignore | 2 + c/simd-unicode/Makefile | 8 + c/simd-unicode/README | 18 + c/simd-unicode/gendata.py | 5 + c/simd-unicode/unicode.c | 152 +++ c/simd-unicode/unicode.h | 3038 +++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 3223 insertions(+) create mode 100644 c/simd-unicode/.gitignore create mode 100644 c/simd-unicode/Makefile create mode 100644 c/simd-unicode/README create mode 100644 c/simd-unicode/gendata.py create mode 100644 c/simd-unicode/unicode.c create mode 100644 c/simd-unicode/unicode.h (limited to 'c') diff --git a/c/simd-unicode/.gitignore b/c/simd-unicode/.gitignore new file mode 100644 index 0000000..ef353d8 --- /dev/null +++ b/c/simd-unicode/.gitignore @@ -0,0 +1,2 @@ +out +unicode diff --git a/c/simd-unicode/Makefile b/c/simd-unicode/Makefile new file mode 100644 index 0000000..0858d8a --- /dev/null +++ b/c/simd-unicode/Makefile @@ -0,0 +1,8 @@ +include ../base.mk + +all: unicode +unicode: unicode.c unicode.h + $(CC) $(CFLAGS) -mavx512f -lbsd -o $@ $@.c + +clean: + rm -f unicode diff --git a/c/simd-unicode/README b/c/simd-unicode/README new file mode 100644 index 0000000..e072046 --- /dev/null +++ b/c/simd-unicode/README @@ -0,0 +1,18 @@ +This is an experiment in using AVX-512 instructions to efficiently lookup +Unicode properties for runes. It turns out after benchmarking that this +is actually slower than a generic non-SIMD approach. My hypothesis is +that it’s slower due to the large latency of AVX-512 gather instructions +which are required to index the Unicode lookup tables. + +UPDATE 1: After replacing the gather instructions with loads/stores and manual +for-loops to index data, the performance of the AVX-512 approach actually beats +the generic approach by a small margin (just under 10% or so). + +UPDATE 2: Due to the fact that the Unicode tables take up a very large +amount of space, it’s ideal that you use the smallest datatypes possible. +After changing both the stage₁ and stage₂ tables to be arrays of bytes as +opposed to arrays of dwords, the AVX-512 implementation using gather +instructions no longer works however the variation using manual loops +with loads/stores does work, albeit slower. On a 27 MiB file the generic +implementation takes on average 82ms while the AVX-512 implementation +takes on average 77ms. diff --git a/c/simd-unicode/gendata.py b/c/simd-unicode/gendata.py new file mode 100644 index 0000000..32fd3d1 --- /dev/null +++ b/c/simd-unicode/gendata.py @@ -0,0 +1,5 @@ +import random +import sys + +runes = (random.randint(1, 0x3000) for _ in range(10_000_000)) +sys.stdout.buffer.write(b''.join(chr(x).encode() for x in runes)) diff --git a/c/simd-unicode/unicode.c b/c/simd-unicode/unicode.c new file mode 100644 index 0000000..988d9f6 --- /dev/null +++ b/c/simd-unicode/unicode.c @@ -0,0 +1,152 @@ +#if !__AVX512F__ +# error "AVX512 intrinsics are required" +#endif + +#define _GNU_SOURCE +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "unicode.h" + +#define MIN(x, y) ((x) < (y) ? (x) : (y)) + +static int unicode_generic(const char *, size_t); +static int unicode_simd(const char *, size_t); +static char *readfile(const char *, size_t *); + +int +main(int argc, char **argv) +{ + if (argc != 2) { + fprintf(stderr, "Usage: %s file\n", getprogname()); + exit(EXIT_FAILURE); + } + + size_t n; + int rv = EXIT_SUCCESS; + const char *s = readfile(argv[1], &n); + + clock_t tmbeg = clock(); + printf("%d: ", unicode_generic(s, n)); + printf("Elapsed time: %.3fs\n", (double)(clock() - tmbeg) / CLOCKS_PER_SEC); + + tmbeg = clock(); + printf("%d: ", unicode_simd(s, n)); + printf("Elapsed time: %.3fs\n", (double)(clock() - tmbeg) / CLOCKS_PER_SEC); + + return rv; +} + +int +unicode_generic(const char *s, size_t n) +{ + int acc = 0; + while (n > 0) { + rune ch; + int w = u8tor(&ch, s); + acc += stage2[stage1[ch / CCCBLKSIZ]][ch % CCCBLKSIZ]; + s += w; + n -= w; + } + return acc; +} + +int +unicode_simd(const char *s, size_t n) +{ + int acc = 0; + const __m512i modmsk = _mm512_set1_epi32(CCCBLKSIZ - 1); + + while (n > 0) { + int w = 0; + alignas(64) uint32_t data[16]; + + w += u8tor(&data[ 0], s + w); + w += u8tor(&data[ 1], s + w); + w += u8tor(&data[ 2], s + w); + w += u8tor(&data[ 3], s + w); + w += u8tor(&data[ 4], s + w); + w += u8tor(&data[ 5], s + w); + w += u8tor(&data[ 6], s + w); + w += u8tor(&data[ 7], s + w); + w += u8tor(&data[ 8], s + w); + w += u8tor(&data[ 9], s + w); + w += u8tor(&data[10], s + w); + w += u8tor(&data[11], s + w); + w += u8tor(&data[12], s + w); + w += u8tor(&data[13], s + w); + w += u8tor(&data[14], s + w); + w += u8tor(&data[15], s + w); + + s += w; + n -= w; + + __m512i vec = _mm512_load_epi32(data); + __m512i vidx = _mm512_srli_epi32(vec, CCCBLKSIZ_LOG2); /* vidx = vec / CCCBLKSZ */ +#if USE_GATHER + vidx = _mm512_i32gather_epi32(vidx, stage1, sizeof(rune)); +#else + _mm512_store_epi32(data, vidx); + for (int i = 0; i < 16; i++) + data[i] = stage1[data[i]]; + vidx = _mm512_load_epi32(data); +#endif + vidx = _mm512_slli_epi32(vidx, CCCBLKSIZ_LOG2); + vec = _mm512_and_epi32(vec, modmsk); + vidx = _mm512_add_epi32(vidx, vec); +#if USE_GATHER + vec = _mm512_i32gather_epi32(vidx, stage2, sizeof(rune)); + _mm512_store_epi32(data, vec); +#else + _mm512_store_epi32(data, vidx); + for (int i = 0; i < 16; i++) + data[i] = ((uprop_ccc_t *)stage2)[data[i]]; +#endif + + for (int i = 0; i < 16; i++) + acc += (uprop_ccc_t)data[i]; + } + + return acc; +} + +char * +readfile(const char *filename, size_t *n) +{ + int fd = open(filename, O_RDONLY); + if (fd == -1) + err(1, "open: %s", filename); + + struct stat sb; + if (fstat(fd, &sb) == -1) + err(1, "fstat: %s", filename); + + char *p = malloc(sb.st_size + 4); + if (p == NULL) + err(1, "malloc"); + + ssize_t nr; + for (size_t off = 0; (nr = read(fd, p + off, sb.st_blksize)) > 0; off += nr) + ; + if (nr == -1) + err(1, "read: %s", filename); + + p[sb.st_size + 0] = + p[sb.st_size + 1] = + p[sb.st_size + 2] = + p[sb.st_size + 3] = 0; + + *n = sb.st_size; + close(fd); + return p; +} diff --git a/c/simd-unicode/unicode.h b/c/simd-unicode/unicode.h new file mode 100644 index 0000000..7bcc70d --- /dev/null +++ b/c/simd-unicode/unicode.h @@ -0,0 +1,3038 @@ +#ifndef UNICODE_H +#define UNICODE_H + +#include + +#define CCCBLKSIZ (64) +#define CCCBLKSIZ_LOG2 (6) + +typedef uint_least32_t rune; +typedef uint8_t uprop_ccc_t; + +#define CCC_NR ((uprop_ccc_t)0) /* Not Reordered */ +#define CCC_OV ((uprop_ccc_t)1) /* Overlay */ +#define CCC_HANR ((uprop_ccc_t)6) /* Han Reading */ +#define CCC_NK ((uprop_ccc_t)7) /* Nukta */ +#define CCC_KV ((uprop_ccc_t)8) /* Kana Voicing */ +#define CCC_VR ((uprop_ccc_t)9) /* Virama */ +#define CCC_10 ((uprop_ccc_t)10) /* CCC10 */ +#define CCC_11 ((uprop_ccc_t)11) /* CCC11 */ +#define CCC_12 ((uprop_ccc_t)12) /* CCC12 */ +#define CCC_13 ((uprop_ccc_t)13) /* CCC13 */ +#define CCC_14 ((uprop_ccc_t)14) /* CCC14 */ +#define CCC_15 ((uprop_ccc_t)15) /* CCC15 */ +#define CCC_16 ((uprop_ccc_t)16) /* CCC16 */ +#define CCC_17 ((uprop_ccc_t)17) /* CCC17 */ +#define CCC_18 ((uprop_ccc_t)18) /* CCC18 */ +#define CCC_19 ((uprop_ccc_t)19) /* CCC19 */ +#define CCC_20 ((uprop_ccc_t)20) /* CCC20 */ +#define CCC_21 ((uprop_ccc_t)21) /* CCC21 */ +#define CCC_22 ((uprop_ccc_t)22) /* CCC22 */ +#define CCC_23 ((uprop_ccc_t)23) /* CCC23 */ +#define CCC_24 ((uprop_ccc_t)24) /* CCC24 */ +#define CCC_25 ((uprop_ccc_t)25) /* CCC25 */ +#define CCC_26 ((uprop_ccc_t)26) /* CCC26 */ +#define CCC_27 ((uprop_ccc_t)27) /* CCC27 */ +#define CCC_28 ((uprop_ccc_t)28) /* CCC28 */ +#define CCC_29 ((uprop_ccc_t)29) /* CCC29 */ +#define CCC_30 ((uprop_ccc_t)30) /* CCC30 */ +#define CCC_31 ((uprop_ccc_t)31) /* CCC31 */ +#define CCC_32 ((uprop_ccc_t)32) /* CCC32 */ +#define CCC_33 ((uprop_ccc_t)33) /* CCC33 */ +#define CCC_34 ((uprop_ccc_t)34) /* CCC34 */ +#define CCC_35 ((uprop_ccc_t)35) /* CCC35 */ +#define CCC_36 ((uprop_ccc_t)36) /* CCC36 */ +#define CCC_84 ((uprop_ccc_t)84) /* CCC84 */ +#define CCC_91 ((uprop_ccc_t)91) /* CCC91 */ +#define CCC_103 ((uprop_ccc_t)103) /* CCC103 */ +#define CCC_107 ((uprop_ccc_t)107) /* CCC107 */ +#define CCC_118 ((uprop_ccc_t)118) /* CCC118 */ +#define CCC_122 ((uprop_ccc_t)122) /* CCC122 */ +#define CCC_129 ((uprop_ccc_t)129) /* CCC129 */ +#define CCC_130 ((uprop_ccc_t)130) /* CCC130 */ +#define CCC_132 ((uprop_ccc_t)132) /* CCC132 */ +#define CCC_133 ((uprop_ccc_t)133) /* CCC133 */ +#define CCC_ATBL ((uprop_ccc_t)200) /* Attached Below Left */ +#define CCC_ATB ((uprop_ccc_t)202) /* Attached Below */ +#define CCC_ATA ((uprop_ccc_t)214) /* Attached Above */ +#define CCC_ATAR ((uprop_ccc_t)216) /* Attached Above Right */ +#define CCC_BL ((uprop_ccc_t)218) /* Below Left */ +#define CCC_B ((uprop_ccc_t)220) /* Below */ +#define CCC_BR ((uprop_ccc_t)222) /* Below Right */ +#define CCC_L ((uprop_ccc_t)224) /* Left */ +#define CCC_R ((uprop_ccc_t)226) /* Right */ +#define CCC_AL ((uprop_ccc_t)228) /* Above Left */ +#define CCC_A ((uprop_ccc_t)230) /* Above */ +#define CCC_AR ((uprop_ccc_t)232) /* Above Right */ +#define CCC_DB ((uprop_ccc_t)233) /* Double Below */ +#define CCC_DA ((uprop_ccc_t)234) /* Double Above */ +#define CCC_IS ((uprop_ccc_t)240) /* Iota Subscript */ + +static const uint8_t stage1[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, + 0, 0, 3, 0, 0, 0, 4, 5, 6, 7, 0, 8, 9, 10, 0, 11, + 12, 13, 14, 15, 16, 17, 16, 18, 16, 19, 16, 19, 16, 19, 0, 19, + 16, 20, 16, 19, 21, 19, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 35, + 0, 0, 36, 0, 37, 0, 0, 0, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 51, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 56, 57, 0, 0, 0, 0, + 58, 0, 0, 59, 60, 61, 62, 63, 0, 0, 64, 65, 0, 0, 0, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 70, 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, 72, 0, 0, 73, 0, 0, 0, 0, + 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 75, 76, 0, 77, 78, 0, + 0, 79, 80, 0, 81, 62, 0, 82, 83, 0, 0, 84, 85, 86, 0, 0, + 0, 87, 0, 88, 0, 0, 51, 89, 51, 0, 90, 0, 91, 0, 0, 0, + 80, 0, 0, 0, 92, 93, 0, 94, 95, 96, 97, 0, 0, 0, 0, 0, + 51, 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, 0, 100, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 105, 106, 0, 0, 107, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 108, 0, 109, 0, 102, 0, 0, 0, 0, 0, 110, 111, 0, 0, 0, 0, + 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 113, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static const uprop_ccc_t stage2[][64] = { + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_AR, CCC_B, CCC_B, + CCC_B, CCC_B, CCC_AR, CCC_ATAR, + CCC_B, CCC_B, CCC_B, CCC_B, + CCC_B, CCC_ATB, CCC_ATB, CCC_B, + CCC_B, CCC_B, CCC_B, CCC_ATB, + CCC_ATB, CCC_B, CCC_B, CCC_B, + CCC_B, CCC_B, CCC_B, CCC_B, + CCC_B, CCC_B, CCC_B, CCC_B, + CCC_OV, CCC_OV, CCC_OV, CCC_OV, + CCC_OV, CCC_B, CCC_B, CCC_B, + CCC_B, CCC_A, CCC_A, CCC_A}, + {CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_IS, CCC_A, CCC_B, + CCC_B, CCC_B, CCC_A, CCC_A, + CCC_A, CCC_B, CCC_B, CCC_NR, + CCC_A, CCC_A, CCC_A, CCC_B, + CCC_B, CCC_B, CCC_B, CCC_A, + CCC_AR, CCC_B, CCC_B, CCC_A, + CCC_DB, CCC_DA, CCC_DA, CCC_DB, + CCC_DA, CCC_DA, CCC_DB, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_B, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_B, CCC_A, + CCC_A, CCC_A, CCC_BR, CCC_B, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_B, CCC_B, + CCC_B, CCC_B, CCC_B, CCC_B, + CCC_A, CCC_A, CCC_B, CCC_A, + CCC_A, CCC_BR, CCC_AL, CCC_A, + CCC_10, CCC_11, CCC_12, CCC_13, + CCC_14, CCC_15, CCC_16, CCC_17, + CCC_18, CCC_19, CCC_19, CCC_20, + CCC_21, CCC_22, CCC_NR, CCC_23}, + {CCC_NR, CCC_24, CCC_25, CCC_NR, + CCC_A, CCC_B, CCC_NR, CCC_18, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_30, CCC_31, CCC_32, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_27, + CCC_28, CCC_29, CCC_30, CCC_31, + CCC_32, CCC_33, CCC_34, CCC_A, + CCC_A, CCC_B, CCC_B, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_B, CCC_A, CCC_A, CCC_B, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_35, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_NR, CCC_NR, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_B, + CCC_A, CCC_NR, CCC_NR, CCC_A, + CCC_A, CCC_NR, CCC_B, CCC_A, + CCC_A, CCC_B, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_36, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_B, CCC_A, CCC_A, + CCC_B, CCC_A, CCC_A, CCC_B, + CCC_B, CCC_B, CCC_A, CCC_B, + CCC_B, CCC_A, CCC_B, CCC_A}, + {CCC_A, CCC_A, CCC_B, CCC_A, + CCC_B, CCC_A, CCC_B, CCC_A, + CCC_B, CCC_A, CCC_A, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_B, CCC_A, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_B, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_NR, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_NR, CCC_A, CCC_A, CCC_A, + CCC_NR, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_B, CCC_B, CCC_B, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_B, CCC_B, CCC_B, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_B, + CCC_B, CCC_B, CCC_B, CCC_B, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_NR, CCC_B, + CCC_A, CCC_A, CCC_B, CCC_A, + CCC_A, CCC_B, CCC_A, CCC_A, + CCC_A, CCC_B, CCC_B, CCC_B, + CCC_27, CCC_28, CCC_29, CCC_A, + CCC_A, CCC_A, CCC_B, CCC_A, + CCC_A, CCC_B, CCC_B, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NK, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_VR, CCC_NR, CCC_NR, + CCC_NR, CCC_A, CCC_B, CCC_A, + CCC_A, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_VR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_A, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_VR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_VR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_84, CCC_91, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_VR, + CCC_VR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_VR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_103, CCC_103, CCC_VR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_107, CCC_107, CCC_107, CCC_107, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_118, CCC_118, CCC_VR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_122, CCC_122, CCC_122, CCC_122, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_B, CCC_B, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_B, CCC_NR, CCC_B, + CCC_NR, CCC_ATAR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_129, CCC_130, CCC_NR, + CCC_132, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_130, CCC_130, + CCC_130, CCC_130, CCC_NR, CCC_NR}, + {CCC_130, CCC_NR, CCC_A, CCC_A, + CCC_VR, CCC_NR, CCC_A, CCC_A, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_B, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NK, + CCC_NR, CCC_VR, CCC_VR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_B, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_A, CCC_A, CCC_A, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_VR, CCC_VR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_VR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_VR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_A, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_AL, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_BR, CCC_A, CCC_B, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_A, + CCC_B, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_VR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_NR, CCC_NR, CCC_B}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_B, CCC_B, CCC_B, + CCC_B, CCC_B, CCC_B, CCC_A, + CCC_A, CCC_B, CCC_NR, CCC_B}, + {CCC_B, CCC_A, CCC_A, CCC_B, + CCC_B, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_B, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NK, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_VR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_A, + CCC_B, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_VR, CCC_VR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NK, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_VR, CCC_VR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NK, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_A, CCC_A, CCC_NR, + CCC_OV, CCC_B, CCC_B, CCC_B, + CCC_B, CCC_B, CCC_A, CCC_A, + CCC_B, CCC_B, CCC_B, CCC_B, + CCC_A, CCC_NR, CCC_OV, CCC_OV, + CCC_OV, CCC_OV, CCC_OV, CCC_OV, + CCC_OV, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_B, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_A, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_A, CCC_A, CCC_B, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_B, CCC_A, + CCC_A, CCC_DA, CCC_ATA, CCC_B, + CCC_ATB, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_AR, CCC_AL, + CCC_AL, CCC_B, CCC_BL, CCC_A, + CCC_DB, CCC_B, CCC_A, CCC_B}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_A, CCC_OV, CCC_OV, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_OV, CCC_OV, CCC_OV, CCC_A, + CCC_A, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_A, CCC_NR, CCC_NR, + CCC_NR, CCC_OV, CCC_OV, CCC_A, + CCC_B, CCC_A, CCC_OV, CCC_OV, + CCC_B, CCC_B, CCC_B, CCC_B, + CCC_A, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_A, + CCC_A, CCC_A, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_VR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_BL, CCC_AL, + CCC_AR, CCC_BR, CCC_L, CCC_L, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_KV, CCC_KV, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_A, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_A, CCC_A, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_A, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_VR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_VR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_VR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_B, + CCC_B, CCC_B, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_VR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NK, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_VR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_NR, CCC_A, CCC_A, + CCC_B, CCC_NR, CCC_NR, CCC_A, + CCC_A, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_A, CCC_A}, + {CCC_NR, CCC_A, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_VR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_VR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_26, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_B, + CCC_B, CCC_B, CCC_B, CCC_B, + CCC_B, CCC_B, CCC_A, CCC_A, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_B, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_B, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_B, CCC_NR, CCC_A, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_OV, CCC_B, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_VR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_A, CCC_B, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_A, + CCC_A, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_B, CCC_B, CCC_B}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_B, CCC_B, + CCC_A, CCC_A, CCC_A, CCC_B, + CCC_A, CCC_B, CCC_B, CCC_B, + CCC_B, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_A, CCC_B, + CCC_A, CCC_B, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_VR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_VR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_VR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_VR, CCC_NK, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_A, CCC_A, CCC_A, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_VR, + CCC_VR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_VR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NK, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_VR, CCC_NK, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NK, CCC_VR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NK, + CCC_NK, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_VR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_VR, CCC_NR, + CCC_NR, CCC_NR, CCC_NK, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_A, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_VR, CCC_NK, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NK, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_VR, CCC_NK, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_VR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_VR, CCC_VR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NK, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_VR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_VR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_VR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_VR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NK, CCC_NR, + CCC_VR, CCC_VR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_VR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_VR, CCC_VR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_OV, CCC_OV, CCC_OV, CCC_OV, + CCC_OV, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_HANR, CCC_HANR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_OV, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_ATAR, CCC_ATAR, CCC_OV, + CCC_OV, CCC_OV, CCC_NR, CCC_NR, + CCC_NR, CCC_R, CCC_ATAR, CCC_ATAR, + CCC_ATAR, CCC_ATAR, CCC_ATAR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_B, + CCC_B, CCC_B, CCC_B, CCC_B}, + {CCC_B, CCC_B, CCC_B, CCC_NR, + CCC_NR, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_B, CCC_B, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_A, CCC_A, + CCC_A, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_NR, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_NR, CCC_NR, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_NR, CCC_A, + CCC_A, CCC_NR, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_A, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_A, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_A, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_AR, CCC_AR, CCC_B, CCC_A, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_B, CCC_B, CCC_B, CCC_B, + CCC_B, CCC_B, CCC_B, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, + {CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_A, CCC_A, CCC_A, CCC_A, + CCC_A, CCC_A, CCC_NK, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR, + CCC_NR, CCC_NR, CCC_NR, CCC_NR}, +}; + +#define u8byte1(x) (((x) & 0x80) == 0x00) +#define u8byte2(x) (((x) & 0xE0) == 0xC0) +#define u8byte3(x) (((x) & 0xF0) == 0xE0) +#define u8byte4(x) (((x) & 0xF8) == 0xF0) + +static int +u8tor(rune *ch, const char *s) +{ + if (s[0] == 0) { + *ch = 0; + return 0; + } else if (u8byte1(s[0])) { + *ch = s[0]; + return 1; + } else if (u8byte2(s[0])) { + *ch = ((s[0] & 0x1F) << 6) + | ((s[1] & 0x3F) << 0); + return 2; + } else if (u8byte3(s[0])) { + *ch = ((s[0] & 0x0F) << 12) + | ((s[1] & 0x3F) << 6) + | ((s[2] & 0x3F) << 0); + return 3; + } else if (u8byte4(s[0])) { + *ch = ((s[0] & 0x07) << 18) + | ((s[1] & 0x3F) << 12) + | ((s[2] & 0x3F) << 6) + | ((s[3] & 0x3F) << 0); + return 4; + } + __builtin_unreachable(); +} + +#endif /* !UNICODE_H */ -- cgit v1.2.3