Mercurial > ~dholland > hg > ag > index.cgi
diff tests/agcl/parsifal/good/sql.c @ 0:13d2b8934445
Import AnaGram (near-)release tree into Mercurial.
author | David A. Holland |
---|---|
date | Sat, 22 Dec 2007 17:52:45 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/agcl/parsifal/good/sql.c Sat Dec 22 17:52:45 2007 -0500 @@ -0,0 +1,5021 @@ + +/* + * AnaGram, A System for Syntax Directed Programming + * File generated by: ... + * + * AnaGram Parsing Engine + * Copyright 1993-2002 Parsifal Software. All Rights Reserved. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ + +#ifndef SQL_H +#include "sql.h" +#endif + +#ifndef SQL_H +#error Mismatched header file +#endif + +#include <ctype.h> +#include <stdio.h> + +#define RULE_CONTEXT (&((PCB).cs[(PCB).ssx])) +#define ERROR_CONTEXT ((PCB).cs[(PCB).error_frame_ssx]) +#define CONTEXT ((PCB).cs[(PCB).ssx]) + + + +sql_pcb_type sql_pcb; +#define PCB sql_pcb + +#ifndef CONVERT_CASE + +static const char agCaseTable[31] = { + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 +}; + +static int agConvertCase(int c) { + if (c >= 'a' && c <= 'z') return c ^= 0x20; + if (c >= 0xe0 && c < 0xff) c ^= agCaseTable[c-0xe0]; + return c; +} + +#define CONVERT_CASE(c) agConvertCase(c) + +#endif + + +#ifndef TAB_SPACING +#define TAB_SPACING 8 +#endif + + +#define READ_COUNTS +#define WRITE_COUNTS +#undef V +#define V(i,t) (*t (&(PCB).vs[(PCB).ssx + i])) +#undef VS +#define VS(i) (PCB).vs[(PCB).ssx + i] + +#ifndef GET_CONTEXT +#define GET_CONTEXT CONTEXT = (PCB).input_context +#endif + +typedef enum { + ag_action_1, + ag_action_2, + ag_action_3, + ag_action_4, + ag_action_5, + ag_action_6, + ag_action_7, + ag_action_8, + ag_action_9, + ag_action_10, + ag_action_11, + ag_action_12 +} ag_parser_action; + + +#ifndef NULL_VALUE_INITIALIZER +#define NULL_VALUE_INITIALIZER = 0 +#endif + +static int const ag_null_value NULL_VALUE_INITIALIZER; + +static const unsigned char far ag_rpx[] = { + 0 +}; + +static const unsigned char far ag_key_itt[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 unsigned short far ag_key_pt[] = { + 0,347, 0,348, 0,349, 0,350, 0,351, 0,352, 0,354, 0,353, + 0,356, 0,355, 0,358, 0,357, 0,359, 0,360, 0,362, 0,361, + 0,364, 0,363, 0,378, 0,379, 0,380, 0,381, 0,382, 0,383, + 0,384, 0,385, 0,386, 0,387, 0,388, 0,389, 0,390, 0,391, + 0,392, 0,393, 0,394, 0,395, 0,396, 0,397, 0,398, 0,404, + 0,405, 0,406, 0,407, 0,410, 0,409, 0,411, 0,412, 0,413, + 0,414, 0,415, 0,416, 0,417, 0,418, 0,419, 0,420, 0,421, + 0,422, 0,423, 0,424, 0,425, 0,426, 0,427, 0,428, 0,429, + 0,431, 0,430, 0,432, 0,433, 0,434, 0,435, 0,436, 0,437, + 0,438, 0,441, 0,440, 0,439, 0,443, 0,442, 0,445, 0,444, + 0,446, 0,447, 0,449, 0,448, 0,451, 0,450, 0,454, 0,453, + 0,452, 0,456, 0,455, 0,457, 0,459, 0,458, 0,462, 0,460, + 0,461, 0,466, 0,463, 0,464, 0,465, 0,467, 0,468, 0,469, + 0,475, 0,470, 0,471, 0,472, 0,473, 0,474, 0,476, 0,477, + 0,478, 0,479, 0,480, 0,481, 0,483, 0,482, 0,484, 0,485, + 0,486, 0,487, 0,488, 0,489, 0,490, 0,491, 0,492, 0,493, + 0,494, 0,496, 0,495, 0,499, 0,498, 0,497, 0,500, 0,501, + 0,502, 0,503, 0,504, 0,505, 0,506, 0,507, 0,508, 0,509, + 0,510, 0,511, 0,512,0 +}; + +static const unsigned char far ag_key_ch[] = { + 0, 42, 47,255, 69, 73,255, 77,255, 77,255, 76, 79, 82,255, 67, 76, 83, + 255, 69, 82,255, 78, 88,255, 67, 83,255, 78,255, 69, 79,255, 45, 47, 65, + 66, 67, 68, 69, 70, 71, 73, 76, 79, 80, 82, 83, 85, 87,255, 42,255, 42, + 47,255, 61, 62,255, 76, 84,255, 68, 89,255, 67,255, 68, 76, 78, 83, 86, + 255, 71, 84,255, 65,255, 68,255, 78, 84,255, 69, 73, 89,255, 65,255, 82, + 255, 65, 69,255, 69, 73,255, 77,255, 73, 82,255, 78, 84,255, 76, 77, 78, + 85,255, 84,255, 69,255, 84,255, 65,255, 69,255, 82, 83,255, 82,255, 65, + 72, 76, 79, 82, 85,255, 66,255, 65, 69,255, 83,255, 84, 89,255, 73, 76, + 255, 66, 80,255, 73,255, 82,255, 67,255, 67, 76, 83,255, 65, 66, 69, 73, + 82,255, 69, 76,255, 67, 69, 73,255, 78, 85, 88,255, 69,255, 82, 85,255, + 69, 76, 79, 82,255, 65, 79,255, 79, 82,255, 83,255, 82,255, 76, 85,255, + 65, 79,255, 71, 82,255, 69, 79,255, 67, 68, 83, 84,255, 79,255, 77, 78, + 83,255, 65, 75,255, 67, 78,255, 69, 73, 79,255, 83,255, 68,255, 78,255, + 79,255, 67,255, 69,255, 83,255, 79,255, 82,255, 83,255, 69,255, 84,255, + 85,255, 67, 78,255, 83,255, 72,255, 84,255, 68, 78,255, 65, 73, 79,255, + 69,255, 76, 77,255, 79, 85,255, 76,255, 69, 84,255, 68,255, 70, 78, 80, + 82,255, 77, 86,255, 69, 73, 79,255, 65, 82, 85,255, 70, 83, 86,255, 69, + 79,255, 83,255, 68,255, 78,255, 79, 84,255, 67, 76, 84,255, 67, 68, 69, + 87,255, 76,255, 66, 77,255, 69, 72, 77, 79, 81, 85,255, 83,255, 69,255, + 77,255, 65, 73, 79, 82,255, 79, 81,255, 73,255, 65, 69, 73,255, 78, 80, + 83,255, 76, 82,255, 65, 73,255, 78, 82,255, 69,255, 72, 73, 79,255, 83, + 255, 82,255, 65,255, 69,255, 45, 47, 60, 62, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 87, 89,255, 69, + 73,255, 77,255, 77,255, 76, 79, 82,255, 67, 76, 83,255, 69, 82,255, 78, + 88,255, 67, 83,255, 78,255, 69, 79,255, 65, 66, 67, 68, 69, 70, 71, 73, + 76, 79, 80, 82, 83, 85, 87,255, 42, 47,255, 76, 86,255, 72, 79, 85,255, + 83,255, 84, 89,255, 65, 73,255, 85,255, 67, 78,255, 65, 73, 79,255, 66, + 77,255, 69, 85,255, 83,255, 69,255, 77,255, 73, 82,255, 45, 47, 65, 67, + 68, 72, 76, 77, 79, 83, 84, 85, 89,255, 42, 47,255, 45, 47, 67, 70, 79, + 82, 83,255, 42, 47,255, 70, 78,255, 45, 47, 79, 82,255, 76, 86,255, 72, + 79, 85,255, 83,255, 84, 89,255, 65, 73,255, 85,255, 67, 78,255, 65, 73, + 79,255, 66, 77,255, 69, 85,255, 83,255, 69,255, 77,255, 73, 82,255, 65, + 67, 68, 72, 76, 77, 83, 84, 85, 89,255, 42, 47,255, 45, 47,255, 42, 47, + 255, 45, 47, 73, 79,255, 42, 47,255, 45, 47, 79,255, 42, 47,255, 45, 47, + 73, 79,255, 70,255, 42, 47,255, 45, 47, 73, 84, 85, 86,255, 42, 47,255, + 69, 87,255, 76,255, 81,255, 45, 47, 78, 83,255, 73,255, 42, 47,255, 69, + 73,255, 77,255, 77,255, 76, 79, 82,255, 67, 76, 83,255, 69,255, 78, 88, + 255, 67, 83,255, 78,255, 69, 79,255, 72, 79,255, 45, 47, 65, 66, 67, 68, + 69, 70, 71, 73, 76, 79, 80, 82, 83, 85, 87,255, 42, 47,255, 76, 84,255, + 76,255, 65,255, 68,255, 78,255, 73,255, 78, 84,255, 78,255, 79, 82,255, + 66, 69,255, 68, 83,255, 78,255, 45, 47, 65, 66, 67, 68, 69, 73, 82, 83, + 85,255, 42, 47,255, 45, 47, 84,255, 42, 47,255, 67, 68,255, 76,255, 81, + 255, 45, 47, 83,255, 73,255, 42, 47,255, 45, 47, 68,255, 42, 47,255, 45, + 47, 83,255, 73, 84, 85, 86,255, 42, 47,255, 45, 47, 79,255, 42, 47,255, + 45, 47, 79, 84,255, 42, 47,255, 73, 79,255, 65, 82,255, 45, 47, 70, 73, + 80, 84, 86,255, 69, 87,255, 76,255, 81,255, 78, 83,255, 69, 73,255, 77, + 255, 77,255, 76, 79, 82,255, 67, 76, 83,255, 69,255, 78, 88,255, 67, 83, + 255, 78,255, 69, 79,255, 72, 79,255, 65, 66, 67, 68, 69, 70, 71, 73, 76, + 79, 80, 82, 83, 85, 87,255, 76, 84,255, 76,255, 65,255, 68,255, 78,255, + 73,255, 78, 84,255, 78,255, 79, 82,255, 66, 69,255, 68, 83,255, 78,255, + 65, 66, 67, 68, 69, 73, 82, 83, 85,255, 84,255, 67, 68,255, 76,255, 81, + 255, 83,255, 68,255, 79,255, 65, 82,255, 73, 80, 84, 86,255, 69, 73,255, + 77,255, 77,255, 76, 79, 82,255, 67, 76, 83,255, 69,255, 78, 88,255, 67, + 83,255, 78,255, 69, 79,255, 65, 66, 67, 68, 69, 70, 71, 73, 76, 79, 80, + 82, 83, 85, 87,255, 42, 47,255, 72, 79, 85,255, 83,255, 84, 89,255, 65, + 255, 85,255, 67, 78,255, 65, 73, 79,255, 66, 77,255, 69, 85,255, 83,255, + 69,255, 77,255, 73, 82,255, 45, 47, 65, 67, 68, 72, 76, 77, 83, 84, 85, + 89,255, 42, 47,255, 72, 79, 85,255, 83,255, 84, 89,255, 65,255, 85,255, + 67, 78,255, 65, 73, 79,255, 67, 76,255, 66, 77,255, 69, 85,255, 83,255, + 69,255, 77,255, 73, 82,255, 45, 47, 65, 67, 68, 72, 76, 77, 79, 80, 83, + 84, 85, 89,255, 72, 79, 85,255, 83,255, 84, 89,255, 65,255, 85,255, 67, + 78,255, 65, 73, 79,255, 66, 77,255, 69, 85,255, 83,255, 69,255, 77,255, + 73, 82,255, 65, 67, 68, 72, 76, 77, 83, 84, 85, 89,255, 42, 47,255, 45, + 47, 80,255, 34,255, 42, 47,255, 61, 62,255, 67,255, 68, 76, 78, 83,255, + 71, 84,255, 69,255, 65,255, 82,255, 65,255, 69, 73,255, 77,255, 77,255, + 72, 76, 79, 82, 85,255, 83,255, 84, 89,255, 73, 76,255, 82,255, 67,255, + 67, 76, 83,255, 65, 69, 82,255, 67, 69,255, 78, 88,255, 69,255, 82,255, + 69, 76, 79, 82,255, 65, 79,255, 82,255, 83,255, 82,255, 85,255, 65, 79, + 255, 71, 82,255, 69, 79,255, 67, 83, 84,255, 78, 83,255, 67, 78,255, 73, + 79,255, 83,255, 68,255, 78,255, 79,255, 67,255, 69,255, 83,255, 79,255, + 82,255, 83,255, 69,255, 84,255, 85,255, 67, 78,255, 83,255, 72,255, 84, + 255, 78,255, 73, 79,255, 69,255, 77,255, 79, 85,255, 68,255, 78, 80, 82, + 255, 69, 73,255, 82,255, 70, 86,255, 69, 79,255, 83,255, 68,255, 78,255, + 79,255, 67, 76, 84,255, 69, 77,255, 83,255, 69,255, 77,255, 73, 79,255, + 78, 80, 83,255, 76, 82,255, 65,255, 78, 82,255, 69,255, 72, 73,255, 83, + 255, 82,255, 65,255, 69,255, 45, 47, 60, 62, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 87, 89,255, 42, 47,255, + 61, 62,255, 45, 47, 60, 62,255, 61, 62,255, 67,255, 68, 76, 78, 83,255, + 71, 84,255, 69,255, 65,255, 82,255, 65,255, 69, 73,255, 77,255, 77,255, + 72, 76, 79, 82,255, 83,255, 84, 89,255, 73, 76,255, 82,255, 67,255, 67, + 76, 83,255, 65, 69, 82,255, 67, 69,255, 78, 88,255, 69,255, 82,255, 69, + 76, 79, 82,255, 65, 79,255, 82,255, 83,255, 82,255, 85,255, 65, 79,255, + 71, 82,255, 69, 79,255, 67, 83, 84,255, 78, 83,255, 67, 78,255, 73, 79, + 255, 83,255, 68,255, 78,255, 79,255, 67,255, 69,255, 83,255, 79,255, 82, + 255, 83,255, 69,255, 84,255, 85,255, 67, 78,255, 83,255, 72,255, 84,255, + 78,255, 73, 79,255, 69,255, 77,255, 79, 85,255, 68,255, 78, 80, 82,255, + 69, 73,255, 82,255, 70, 86,255, 69, 79,255, 83,255, 68,255, 78,255, 79, + 255, 67, 76, 84,255, 69, 77,255, 83,255, 69,255, 77,255, 73, 79,255, 78, + 80, 83,255, 76, 82,255, 65,255, 78, 82,255, 69,255, 72, 73,255, 83,255, + 82,255, 65,255, 69,255, 60, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 76, + 77, 78, 79, 80, 82, 83, 84, 85, 86, 87, 89,255, 83,255, 69, 73,255, 77, + 255, 77,255, 76, 79, 82,255, 67, 76, 83,255, 69,255, 78, 88,255, 67, 83, + 255, 78,255, 69, 79,255, 80, 83,255, 65, 66, 67, 68, 69, 70, 71, 73, 76, + 79, 80, 82, 83, 85, 87,255, 73, 85,255, 69, 73,255, 77,255, 77,255, 76, + 79, 82,255, 67, 76, 83,255, 69,255, 78, 88,255, 67, 83,255, 78,255, 69, + 79,255, 78, 82,255, 69,255, 72,255, 65, 66, 67, 68, 69, 70, 71, 73, 76, + 79, 80, 82, 83, 85, 87,255, 42, 47,255, 45, 47, 73,255, 73,255, 42, 47, + 255, 45, 47, 67, 71,255, 42, 47,255, 72, 79, 85,255, 83,255, 84, 89,255, + 65,255, 69, 73,255, 85,255, 67, 78,255, 65, 73, 79,255, 79, 85,255, 66, + 77,255, 69, 85,255, 83,255, 69,255, 77,255, 73, 82,255, 45, 47, 65, 66, + 67, 68, 69, 70, 72, 73, 76, 77, 78, 83, 84, 85, 89,255, 70,255, 67, 71, + 255, 42, 47,255, 69, 73,255, 77,255, 77,255, 76, 79, 82,255, 67, 76, 83, + 255, 69,255, 78, 88,255, 67, 83,255, 78,255, 69, 79,255, 45, 47, 65, 66, + 67, 68, 69, 70, 71, 73, 76, 79, 80, 82, 83, 85, 87,255, 79, 80,255, 70, + 73,255, 83,255, 67,255, 42, 47,255, 65, 69,255, 65, 82,255, 45, 47, 67, + 68, 73, 80, 84, 85,255, 67, 84,255, 39,255, 42, 47,255, 61, 62,255, 68, + 76, 78,255, 71, 84,255, 69,255, 69, 73,255, 77,255, 77,255, 76, 79, 82, + 255, 67, 76, 83,255, 69, 82,255, 67, 69,255, 78, 88,255, 69,255, 82,255, + 69, 79, 82,255, 65, 79,255, 82,255, 69, 79,255, 67, 83, 84,255, 78, 83, + 255, 73, 79,255, 68,255, 80, 82,255, 69, 73,255, 82,255, 70, 86,255, 69, + 79,255, 78, 80,255, 78, 82,255, 69,255, 72, 73,255, 45, 47, 60, 62, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 76, 78, 79, 80, 82, 83, 85, 87,255, 42, + 47,255, 61, 62,255, 76, 78,255, 71, 84,255, 69,255, 69, 73,255, 77,255, + 77,255, 76, 79, 82,255, 67, 76, 83,255, 69,255, 67, 69,255, 78, 88,255, + 69, 79, 82,255, 65, 79,255, 82,255, 69, 79,255, 67, 83, 84,255, 78, 83, + 255, 73, 79,255, 68,255, 80, 82,255, 69, 79,255, 78, 80,255, 78, 82,255, + 69,255, 72, 73,255, 45, 47, 60, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 76, 78, 79, 80, 82, 83, 85, 87,255, 42, 47,255, 68, 76,255, 69, 73,255, + 77,255, 77,255, 76, 79, 82,255, 67, 76, 83,255, 69, 82,255, 78, 88,255, + 69,255, 82,255, 69, 79,255, 67, 83,255, 78,255, 69, 73,255, 82,255, 70, + 86,255, 69, 79,255, 45, 47, 65, 66, 67, 68, 69, 70, 71, 73, 76, 78, 79, + 80, 82, 83, 85, 87,255, 42, 47,255, 61, 62,255, 76, 78,255, 71, 84,255, + 69,255, 69, 73,255, 77,255, 77,255, 76, 79, 82,255, 83,255, 89,255, 67, + 76, 83,255, 65, 69,255, 67, 69,255, 78, 88,255, 69, 79, 82,255, 65, 79, + 255, 82,255, 83,255, 82,255, 85,255, 65, 79,255, 69, 79,255, 67, 83, 84, + 255, 78, 83,255, 73, 79,255, 83,255, 68,255, 78,255, 79,255, 67,255, 69, + 255, 83,255, 79,255, 82,255, 83,255, 69,255, 84,255, 85,255, 67, 78,255, + 83,255, 72,255, 84,255, 78,255, 73, 79,255, 68,255, 80, 82,255, 69, 79, + 255, 83,255, 68,255, 78,255, 79,255, 67, 76,255, 69,255, 78, 80,255, 78, + 82,255, 69,255, 72, 73,255, 83,255, 82,255, 65,255, 69,255, 45, 47, 60, + 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 76, 77, 78, 79, 80, 82, 83, 85, + 87, 89,255, 42, 47,255, 61, 62,255, 76, 78,255, 71, 84,255, 69,255, 69, + 73,255, 77,255, 77,255, 76, 79, 82,255, 83,255, 89,255, 67, 76, 83,255, + 65, 69,255, 67, 69,255, 78, 88,255, 69, 79, 82,255, 65, 79,255, 82,255, + 83,255, 82,255, 85,255, 65, 79,255, 69, 79,255, 67, 83, 84,255, 78, 83, + 255, 73, 79,255, 83,255, 68,255, 78,255, 79,255, 67,255, 69,255, 83,255, + 79,255, 82,255, 83,255, 69,255, 84,255, 85,255, 67, 78,255, 83,255, 72, + 255, 84,255, 78,255, 73, 79,255, 68,255, 80, 82,255, 69, 79,255, 83,255, + 68,255, 78,255, 79,255, 67, 76,255, 69,255, 78, 80,255, 78, 82,255, 69, + 255, 72, 73,255, 83,255, 82,255, 65,255, 69,255, 45, 47, 60, 62, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 76, 77, 78, 79, 80, 82, 83, 85, 87, 89,255, + 61, 62,255, 76, 78,255, 71, 84,255, 69,255, 69, 73,255, 77,255, 77,255, + 76, 79, 82,255, 83,255, 89,255, 67, 76, 83,255, 65, 69,255, 67, 69,255, + 78, 88,255, 69, 79, 82,255, 65, 79,255, 82,255, 83,255, 82,255, 85,255, + 65, 79,255, 69, 79,255, 67, 83, 84,255, 78, 83,255, 73, 79,255, 83,255, + 68,255, 78,255, 79,255, 67,255, 69,255, 83,255, 79,255, 82,255, 83,255, + 69,255, 84,255, 85,255, 67, 78,255, 83,255, 72,255, 84,255, 78,255, 73, + 79,255, 68,255, 80, 82,255, 69, 79,255, 83,255, 68,255, 78,255, 79,255, + 67, 76,255, 69,255, 78, 80,255, 78, 82,255, 69,255, 72, 73,255, 83,255, + 82,255, 65,255, 69,255, 60, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 76, + 77, 78, 79, 80, 82, 83, 85, 87, 89,255, 61, 62,255, 76, 78,255, 71, 84, + 255, 69,255, 69, 73,255, 77,255, 77,255, 76, 79, 82,255, 83,255, 89,255, + 67, 76, 83,255, 65, 69,255, 67, 69,255, 78, 88,255, 69, 79, 82,255, 65, + 79,255, 82,255, 83,255, 82,255, 85,255, 65, 79,255, 69, 79,255, 67, 83, + 84,255, 78, 83,255, 73, 79,255, 83,255, 68,255, 78,255, 79,255, 67,255, + 69,255, 83,255, 79,255, 82,255, 83,255, 69,255, 84,255, 85,255, 67, 78, + 255, 83,255, 72,255, 84,255, 78,255, 73, 79,255, 68,255, 80, 82,255, 69, + 79,255, 83,255, 68,255, 78,255, 79,255, 67, 76,255, 69,255, 78, 80,255, + 78, 82,255, 69,255, 72, 73,255, 83,255, 82,255, 65,255, 69,255, 60, 62, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 76, 77, 78, 79, 80, 82, 83, 85, 87, + 89,255, 42, 47,255, 76, 86,255, 72, 79, 85,255, 83,255, 84, 89,255, 65, + 73,255, 85,255, 67, 78,255, 65, 73, 79,255, 79, 85,255, 67, 76,255, 66, + 77,255, 69, 85,255, 83,255, 69,255, 77,255, 73, 82,255, 45, 47, 65, 67, + 68, 69, 70, 72, 76, 77, 78, 80, 83, 84, 85, 89,255, 42, 47,255, 83,255, + 69,255, 77,255, 73,255, 45, 47, 68, 79, 84,255, 83,255, 69,255, 77,255, + 73,255, 68, 84,255, 61, 62,255, 76, 78,255, 71, 84,255, 69,255, 69, 73, + 255, 77,255, 77,255, 76, 79, 82,255, 67, 76, 83,255, 69,255, 67, 69,255, + 78, 88,255, 69, 79, 82,255, 65, 79,255, 82,255, 69, 79,255, 67, 83, 84, + 255, 78, 83,255, 73, 79,255, 68,255, 80, 82,255, 69, 79,255, 78, 80,255, + 78, 82,255, 69,255, 72, 73,255, 60, 62, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 76, 78, 79, 80, 82, 83, 85, 87,255, 83,255, 89,255, 65,255, 83,255, + 82,255, 85,255, 79,255, 83,255, 68,255, 78,255, 79,255, 67,255, 69,255, + 83,255, 79,255, 82,255, 83,255, 69,255, 84,255, 85,255, 67, 78,255, 83, + 255, 72,255, 84,255, 78,255, 73, 79,255, 83,255, 68,255, 78,255, 79,255, + 67,255, 69,255, 83,255, 82,255, 65,255, 69,255, 68, 70, 72, 73, 77, 83, + 89,255, 42, 47,255, 72, 79, 85,255, 83,255, 84, 89,255, 65,255, 85,255, + 67, 78,255, 65, 73, 79,255, 66, 77,255, 69, 85,255, 83,255, 69,255, 77, + 255, 73, 82,255, 45, 47, 65, 67, 68, 70, 72, 73, 76, 77, 83, 84, 85, 89, + 255, 42, 47,255, 45, 47, 78,255, 42, 47,255, 45, 47, 68,255, 68,255, 83, + 86,255, 42, 47,255, 72, 79, 85,255, 83,255, 84, 89,255, 65,255, 85,255, + 67, 78,255, 65, 73, 79,255, 66, 77,255, 69, 85,255, 83,255, 69,255, 77, + 255, 73, 82,255, 45, 47, 65, 67, 68, 69, 72, 76, 77, 78, 83, 84, 85, 89, + 255, 72, 79, 85,255, 83,255, 84, 89,255, 65,255, 85,255, 67, 78,255, 65, + 73, 79,255, 66, 77,255, 69, 85,255, 83,255, 69,255, 77,255, 73, 82,255, + 65, 67, 68, 69, 72, 76, 77, 78, 83, 84, 85, 89,255, 65,255, 42, 47,255, + 45, 47, 84,255, 84,255, 42, 47,255, 76, 86,255, 65,255, 68,255, 78,255, + 73,255, 78, 84,255, 78, 85,255, 72, 79, 82, 85,255, 83,255, 84, 89,255, + 65, 66, 69,255, 85, 88,255, 68, 83,255, 78, 83,255, 69, 79,255, 85,255, + 67, 78,255, 65, 73, 79,255, 67, 76,255, 66, 77,255, 69, 85,255, 83,255, + 69,255, 77,255, 73, 82,255, 65, 69,255, 80, 83,255, 45, 47, 65, 66, 67, + 68, 69, 70, 72, 73, 74, 76, 77, 78, 80, 82, 83, 84, 85, 89,255, 65,255, + 68,255, 78,255, 73,255, 78, 84,255, 78,255, 79, 82,255, 66, 69,255, 68, + 83,255, 78,255, 65, 66, 67, 68, 69, 73, 82, 83, 85,255, 65, 82,255, 68, + 73, 80, 84,255, 73,255, 42, 47,255, 45, 47, 70, 87,255, 70, 87,255, 73, + 255, 65, 68, 70, 80,255, 68,255, 69, 73,255, 77,255, 77,255, 76, 79, 82, + 255, 67, 76, 83,255, 69,255, 78, 88,255, 65, 79,255, 82,255, 67, 83,255, + 78,255, 69, 79,255, 78, 82,255, 69,255, 72,255, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 76, 79, 80, 82, 83, 85, 87,255, 83,255, 69, 73,255, 77,255, + 77,255, 76, 79, 82,255, 67, 76, 83,255, 69,255, 67, 69,255, 78, 88,255, + 67, 83, 84,255, 78,255, 69, 79,255, 78, 80,255, 65, 66, 67, 68, 69, 70, + 71, 73, 76, 79, 80, 82, 83, 85, 87,255, 83,255, 69,255, 77,255, 73,255, + 68, 79, 84,255, 61, 62,255, 78, 83,255, 60, 62, 66, 73, 76, 78,255, 76, + 78,255, 69, 73,255, 77,255, 77,255, 76, 79, 82,255, 67, 76, 83,255, 69, + 255, 67, 69,255, 78, 88,255, 69, 79,255, 65, 79,255, 82,255, 67, 83, 84, + 255, 78,255, 68,255, 80, 82,255, 69, 79,255, 78, 80,255, 72, 73,255, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 76, 79, 80, 82, 83, 85, 87,255, 70, 80, + 255, 42, 47,255, 45, 47, 70, 84,255, 42, 47,255, 72, 79, 85,255, 83,255, + 84, 89,255, 65,255, 85,255, 67, 78,255, 65, 73, 79,255, 66, 77,255, 69, + 72, 85,255, 83,255, 69,255, 77,255, 73, 82,255, 45, 47, 65, 67, 68, 69, + 72, 76, 77, 83, 84, 85, 89,255, 69, 83,255, 42, 47,255, 45, 47, 67, 72, + 255, 72,255, 70,255, 42, 47,255, 79, 85,255, 45, 47, 78,255, 42, 47,255, + 45, 47, 75,255, 75,255, 68, 76,255, 69, 73,255, 77,255, 77,255, 76, 79, + 82,255, 67, 76, 83,255, 69, 82,255, 78, 88,255, 69, 79,255, 67, 83,255, + 78,255, 69, 73,255, 82,255, 69, 79,255, 65, 66, 67, 68, 69, 70, 71, 73, + 76, 79, 80, 82, 83, 85, 87,255, 42, 47,255, 61, 62,255, 68, 76, 78, 83, + 255, 71, 84,255, 69,255, 69, 73,255, 77,255, 77,255, 76, 79, 82,255, 83, + 255, 89,255, 67, 76, 83,255, 65, 69, 82,255, 67, 69,255, 78, 88,255, 69, + 255, 82,255, 69, 79, 82,255, 65, 79,255, 82,255, 83,255, 82,255, 85,255, + 65, 79,255, 69, 79,255, 67, 83, 84,255, 78, 83,255, 73, 79,255, 83,255, + 68,255, 78,255, 79,255, 67,255, 69,255, 83,255, 79,255, 82,255, 83,255, + 69,255, 84,255, 85,255, 67, 78,255, 83,255, 72,255, 84,255, 78,255, 73, + 79,255, 68,255, 80, 82,255, 69, 73,255, 82,255, 70, 86,255, 69, 79,255, + 83,255, 68,255, 78,255, 79,255, 67, 76,255, 69,255, 78, 80,255, 78, 82, + 255, 69,255, 72, 73,255, 83,255, 82,255, 65,255, 69,255, 45, 47, 60, 62, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 76, 77, 78, 79, 80, 82, 83, 85, 86, + 87, 89,255, 42, 47,255, 76, 78, 86,255, 72, 79, 85,255, 83,255, 84, 89, + 255, 65,255, 85,255, 67, 78,255, 65, 73, 79,255, 66, 77,255, 69, 79, 85, + 255, 83,255, 69,255, 77,255, 73, 82,255, 45, 47, 65, 67, 68, 72, 76, 77, + 78, 83, 84, 85, 89,255, 72, 79, 85,255, 83,255, 84, 89,255, 65,255, 85, + 255, 67, 78,255, 65, 73, 79,255, 66, 77,255, 69, 85,255, 83,255, 69,255, + 77,255, 73, 82,255, 65, 67, 68, 72, 76, 77, 78, 83, 84, 85, 89,255, 69, + 73,255, 77,255, 77,255, 76, 79, 82,255, 67, 76, 83,255, 69,255, 67, 69, + 255, 78, 88,255, 69, 79,255, 65, 79,255, 82,255, 67, 83, 84,255, 78,255, + 80, 82,255, 69, 79,255, 78, 80,255, 78, 82,255, 69,255, 72, 73,255, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 76, 79, 80, 82, 83, 85, 87,255, 69, 73, + 255, 77,255, 77,255, 76, 79, 82,255, 67, 76, 83,255, 69,255, 78, 88,255, + 65, 79,255, 82,255, 67, 83,255, 78,255, 69, 79,255, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 76, 79, 80, 82, 83, 85, 87,255, 69, 73, 85,255, 67, 78, + 85,255, 42, 47,255, 45, 47, 65, 83,255, 65, 83,255, 42, 47,255, 45, 47, + 85,255, 85,255, 79, 85,255, 78,255, 66, 73, 76,255, 42, 47,255, 76, 78, + 86,255, 72, 79, 85,255, 83,255, 84, 89,255, 65,255, 85,255, 67, 78,255, + 65, 73, 79,255, 66, 77,255, 69, 79, 85,255, 83,255, 69,255, 77,255, 73, + 82,255, 45, 47, 65, 67, 68, 72, 76, 77, 83, 84, 85, 89,255, 76, 78, 86, + 255, 72, 79, 85,255, 83,255, 84, 89,255, 65,255, 85,255, 67, 78,255, 65, + 73, 79,255, 66, 77,255, 69, 79, 85,255, 83,255, 69,255, 77,255, 73, 82, + 255, 65, 67, 68, 72, 76, 77, 83, 84, 85, 89,255, 65, 79,255, 42, 47,255, + 45, 47, 83,255, 65,255, 82,255, 65,255, 72,255, 73,255, 67,255, 65, 69, + 255, 69,255, 84,255, 78,255, 69,255, 77,255, 85,255, 83,255, 69,255, 77, + 255, 73,255, 67, 68, 70, 73, 76, 78, 83, 84, 86,255, 70, 78, 82,255, 80, + 255, 42, 47,255, 45, 47, 77,255, 77,255, 42, 47,255, 45, 47, 70,255, 42, + 47,255, 45, 47, 66, 70, 83, 85,255, 82,255, 73, 79,255, 65, 82,255, 70, + 73, 80, 84, 86,255, 69, 73, 74, 76, 85,255, 42, 47,255, 61, 62,255, 76, + 78, 83,255, 71, 84,255, 69,255, 69, 73,255, 77,255, 77,255, 76, 79, 82, + 255, 83,255, 89,255, 82,255, 67,255, 67, 76, 83,255, 65, 69,255, 67, 69, + 255, 78, 88,255, 69, 79, 82,255, 65, 79,255, 82,255, 83,255, 82,255, 85, + 255, 65, 79,255, 69, 79,255, 67, 83, 84,255, 78, 83,255, 73, 79,255, 83, + 255, 68,255, 78,255, 79,255, 67,255, 69,255, 83,255, 79,255, 82,255, 83, + 255, 69,255, 84,255, 85,255, 67, 78,255, 83,255, 72,255, 84,255, 78,255, + 73, 79,255, 68,255, 80, 82,255, 69, 79,255, 83,255, 68,255, 78,255, 79, + 255, 67, 76,255, 69,255, 78, 80,255, 78, 82,255, 69,255, 72, 73,255, 83, + 255, 82,255, 65,255, 69,255, 45, 47, 60, 62, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 76, 77, 78, 79, 80, 82, 83, 85, 87, 89,255, 42, 47,255, 68, 76, + 78,255, 69, 73,255, 77,255, 77,255, 76, 79, 82,255, 67, 76, 83,255, 69, + 82,255, 67, 69,255, 78, 88,255, 69,255, 82,255, 69, 79,255, 65, 79,255, + 82,255, 67, 83, 84,255, 78,255, 68,255, 78, 80, 82,255, 69, 73,255, 82, + 255, 70, 86,255, 69, 79,255, 78, 80,255, 78, 82,255, 69,255, 72, 73,255, + 45, 47, 65, 66, 67, 68, 69, 70, 71, 72, 73, 76, 78, 79, 80, 82, 83, 85, + 87,255, 42, 47,255, 45, 47, 66,255, 66,255, 69, 73,255, 77,255, 77,255, + 76, 79, 82,255, 67, 76, 83,255, 69,255, 78, 88,255, 67, 83,255, 78,255, + 69, 79,255, 65, 66, 67, 68, 69, 70, 71, 72, 73, 76, 79, 80, 82, 83, 85, + 87,255, 69, 73,255, 77,255, 77,255, 76, 79, 82,255, 67, 76, 83,255, 69, + 255, 67, 69,255, 78, 88,255, 69, 79,255, 65, 79,255, 82,255, 67, 83, 84, + 255, 78,255, 80, 82,255, 69, 79,255, 78, 80,255, 72, 73,255, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 76, 79, 80, 82, 83, 85, 87,255, 72, 79, 85,255, + 83,255, 84, 89,255, 65,255, 85,255, 67, 78,255, 65, 73, 79,255, 67, 76, + 255, 66, 77,255, 69, 85,255, 83,255, 69,255, 77,255, 73, 82,255, 65, 67, + 68, 72, 76, 77, 83, 84, 85, 89,255, 78,255, 65,255, 69, 73,255, 77,255, + 77,255, 76, 79, 82,255, 67, 76, 83,255, 69,255, 67, 69,255, 78, 88,255, + 67, 83, 84,255, 78,255, 69, 79,255, 78, 80,255, 72, 73,255, 65, 66, 67, + 68, 69, 70, 71, 73, 76, 79, 80, 82, 83, 85, 87,255, 42, 47,255, 45, 47, + 86,255, 86,255, 68, 76,255, 69, 73,255, 77,255, 77,255, 76, 79, 82,255, + 67, 76, 83,255, 69, 82,255, 78, 88,255, 69,255, 82,255, 69, 79,255, 67, + 83,255, 78,255, 69, 73,255, 82,255, 70, 86,255, 69, 79,255, 65, 66, 67, + 68, 69, 70, 71, 73, 76, 78, 79, 80, 82, 83, 85, 87,255, 70, 78, 80, 82, + 255, 66,255, 69, 73,255, 77,255, 77,255, 76, 79, 82,255, 67, 76, 83,255, + 69,255, 67, 69,255, 78, 88,255, 69, 79,255, 67, 83, 84,255, 78,255, 80, + 82,255, 69, 79,255, 78, 80,255, 65, 66, 67, 68, 69, 70, 71, 73, 76, 79, + 80, 82, 83, 85, 87,255, 68, 76,255, 69, 73,255, 77,255, 77,255, 76, 79, + 82,255, 67, 76, 83,255, 69, 82,255, 78, 88,255, 69,255, 82,255, 69, 79, + 255, 67, 83,255, 78,255, 69, 73,255, 82,255, 70, 86,255, 69, 79,255, 65, + 66, 67, 68, 69, 70, 71, 73, 76, 79, 80, 82, 83, 85, 87,255, 69, 73,255, + 77,255, 77,255, 76, 79, 82,255, 67, 76, 83,255, 69,255, 67, 69,255, 78, + 88,255, 69, 79,255, 67, 83, 84,255, 78,255, 80, 82,255, 69, 79,255, 78, + 80,255, 72, 73,255, 65, 66, 67, 68, 69, 70, 71, 72, 73, 76, 79, 80, 82, + 83, 85, 87,255, 67,255, 68, 76,255, 69, 73,255, 77,255, 77,255, 76, 79, + 82,255, 67, 76, 83,255, 69, 82,255, 78, 88,255, 69,255, 82,255, 69, 79, + 255, 67, 83,255, 78,255, 78, 80,255, 69, 73,255, 82,255, 70, 86,255, 69, + 79,255, 65, 66, 67, 68, 69, 70, 71, 73, 76, 78, 79, 80, 82, 83, 85, 87, + 255, 42, 47,255, 45, 47, 68,255, 68,255, 70, 85,255, 69, 73,255, 77,255, + 77,255, 76, 79, 82,255, 67, 76, 83,255, 69,255, 78, 88,255, 69, 79,255, + 67, 83,255, 78,255, 69, 79,255, 65, 66, 67, 68, 69, 70, 71, 73, 76, 79, + 80, 82, 83, 85, 87,255, 76, 78,255, 69, 73,255, 77,255, 77,255, 76, 79, + 82,255, 67, 76, 83,255, 69,255, 67, 69,255, 78, 88,255, 69, 79,255, 67, + 83, 84,255, 78,255, 68,255, 80, 82,255, 69, 79,255, 78, 80,255, 72, 73, + 255, 65, 66, 67, 68, 69, 70, 71, 73, 76, 79, 80, 82, 83, 85, 87,255, 42, + 47,255, 45, 47, 79,255, 79,255, 68, 85,255, 76, 83,255, 69, 73,255, 77, + 255, 77,255, 76, 79, 82,255, 82,255, 67,255, 67, 76, 83,255, 69,255, 78, + 88,255, 69, 79,255, 67, 83,255, 78,255, 69, 79,255, 65, 66, 67, 68, 69, + 70, 71, 73, 76, 79, 80, 82, 83, 85, 87,255, 79,255, 79,255, 70,255, 67, + 82, 83,255, 82,255, 85,255, 42, 47,255, 69, 73,255, 77,255, 77,255, 76, + 79, 82,255, 67, 76, 83,255, 69,255, 78, 88,255, 69, 79,255, 67, 83,255, + 78,255, 69, 79,255, 45, 47, 65, 66, 67, 68, 69, 70, 71, 73, 76, 79, 80, + 82, 83, 85, 87,255, 42, 47,255, 68, 76,255, 69, 73,255, 77,255, 77,255, + 76, 79, 82,255, 67, 76, 83,255, 69, 82,255, 78, 88,255, 69,255, 82,255, + 69, 79,255, 67, 83,255, 78,255, 78, 80,255, 69, 73,255, 82,255, 70, 86, + 255, 69, 79,255, 45, 47, 65, 66, 67, 68, 69, 70, 71, 73, 76, 78, 79, 80, + 82, 83, 85, 87,255, 68,255 +}; + +static const unsigned char far ag_key_act[] = { + 0,0,0,4,7,7,4,2,4,2,4,7,2,7,4,7,7,7,4,2,7,4,7,7,4,7,7,4,2,4,7,7,4,3,2, + 7,7,2,2,2,7,7,2,7,7,7,2,7,7,7,4,3,4,0,0,4,0,0,4,5,7,4,5,5,4,5,4,7,2,2, + 6,7,4,7,7,4,7,4,6,4,2,5,4,2,2,5,4,7,4,6,4,2,7,4,7,7,4,2,4,7,7,4,7,2,4, + 7,2,2,7,4,7,4,6,4,2,4,2,4,2,4,7,7,4,2,4,7,2,7,2,2,2,4,7,4,6,5,4,5,4,2, + 6,4,7,7,4,7,7,4,2,4,2,4,6,4,6,7,2,4,2,7,2,7,7,4,7,7,4,2,7,7,4,7,7,2,4, + 7,4,6,7,4,7,7,2,7,4,7,7,4,5,2,4,5,4,6,4,7,2,4,7,2,4,7,7,4,2,5,4,7,7,7, + 6,4,5,4,7,6,6,4,7,5,4,2,7,4,7,7,2,4,5,4,6,4,2,4,2,4,2,4,2,4,2,4,2,4,2, + 4,5,4,6,4,2,4,2,4,2,6,4,5,4,6,4,2,4,7,2,4,7,2,2,4,7,4,7,6,4,7,2,4,7,4, + 7,7,4,7,4,5,6,2,6,4,7,7,4,7,2,7,4,7,2,7,4,7,7,7,4,2,7,4,5,4,6,4,2,4,2, + 7,4,2,7,5,4,7,7,7,7,4,2,4,7,5,4,2,7,7,7,2,2,4,7,4,6,4,2,4,7,2,5,7,4,7, + 7,4,2,4,5,7,7,4,2,7,2,4,7,7,4,2,7,4,7,7,4,2,4,2,7,7,4,5,4,6,4,2,4,2,4, + 3,2,2,3,2,2,2,2,6,2,2,2,2,7,7,2,2,2,2,2,2,2,2,2,2,2,2,4,7,7,4,2,4,2,4, + 7,2,7,4,7,7,7,4,2,7,4,7,7,4,7,7,4,2,4,7,7,4,7,7,2,2,2,7,7,2,7,7,7,2,7, + 7,7,4,0,0,4,7,7,4,7,7,7,4,5,4,7,6,4,2,7,4,7,4,7,6,4,7,2,7,4,7,5,4,7,2, + 4,7,4,6,4,2,4,2,7,4,3,2,2,2,2,7,7,2,7,2,2,7,7,4,0,0,4,3,2,7,7,7,7,7,4, + 0,0,4,5,5,4,3,2,2,7,4,7,7,4,7,7,7,4,5,4,7,6,4,2,7,4,7,4,7,6,4,7,2,7,4, + 7,5,4,7,2,4,7,4,6,4,2,4,2,7,4,2,2,2,7,7,2,2,2,7,7,4,0,0,4,3,2,4,0,0,4, + 3,2,7,7,4,0,0,4,3,2,7,4,0,0,4,3,2,7,7,4,7,4,0,0,4,3,2,7,7,7,7,4,0,0,4, + 7,7,4,2,4,2,4,3,2,7,2,4,7,4,0,0,4,7,7,4,2,4,2,4,7,2,7,4,7,7,7,4,2,4,7, + 7,4,7,7,4,2,4,7,7,4,7,7,4,3,2,7,7,2,2,2,7,7,2,7,7,7,2,7,7,2,4,0,0,4,5, + 7,4,2,4,7,4,6,4,2,4,2,4,7,7,4,2,4,2,7,4,7,7,4,7,7,4,2,4,3,2,2,2,2,2,7, + 2,7,7,7,4,0,0,4,3,2,7,4,0,0,4,7,7,4,2,4,2,4,3,2,2,4,7,4,0,0,4,3,2,7,4, + 0,0,4,3,2,7,4,7,7,7,7,4,0,0,4,3,2,7,4,0,0,4,3,2,7,7,4,0,0,4,7,7,4,7,2, + 4,3,2,7,7,2,7,7,4,7,7,4,2,4,2,4,7,2,4,7,7,4,2,4,2,4,7,2,7,4,7,7,7,4,2, + 4,7,7,4,7,7,4,2,4,7,7,4,7,7,4,7,7,2,2,2,7,7,2,7,7,7,2,7,7,2,4,5,7,4,2, + 4,7,4,6,4,2,4,2,4,7,7,4,2,4,2,7,4,7,7,4,7,7,4,2,4,2,2,2,2,7,2,7,7,7,4, + 7,4,7,7,4,2,4,2,4,2,4,7,4,7,4,7,7,4,7,2,7,7,4,7,7,4,2,4,2,4,7,2,7,4,7, + 7,7,4,2,4,7,7,4,7,7,4,2,4,7,7,4,7,7,2,2,2,7,7,2,7,7,7,2,7,7,7,4,0,0,4, + 7,7,7,4,5,4,7,6,4,2,4,7,4,7,6,4,7,2,7,4,7,5,4,7,2,4,7,4,6,4,2,4,2,7,4, + 3,2,7,2,2,7,7,2,2,2,7,7,4,0,0,4,7,7,7,4,5,4,7,6,4,2,4,7,4,7,6,4,7,2,7, + 4,7,7,4,7,5,4,2,2,4,7,4,6,4,2,4,2,7,4,3,2,7,2,2,7,7,2,7,7,2,2,7,7,4,7, + 7,7,4,5,4,7,6,4,2,4,7,4,7,6,4,7,2,7,4,7,5,4,7,2,4,7,4,6,4,2,4,2,7,4,7, + 2,2,7,7,2,2,2,7,7,4,0,0,4,3,2,7,4,3,4,0,0,4,0,0,4,5,4,7,7,7,6,4,7,7,4, + 2,4,7,4,6,4,2,4,7,7,4,2,4,2,4,2,7,2,7,7,4,5,4,7,6,4,7,7,4,7,4,6,4,6,7, + 2,4,2,2,7,4,7,7,4,7,2,4,7,4,6,4,7,7,2,7,4,7,7,4,2,4,5,4,6,4,2,4,7,2,4, + 7,7,4,2,5,4,7,7,6,4,6,5,4,7,7,4,7,2,4,5,4,6,4,2,4,2,4,2,4,2,4,2,4,2,4, + 2,4,5,4,6,4,2,4,2,4,2,2,4,5,4,6,4,2,4,2,4,2,2,4,7,4,6,4,7,2,4,7,4,5,7, + 6,4,7,7,4,2,4,7,7,4,2,7,4,5,4,6,4,2,4,2,4,2,7,5,4,2,7,4,7,4,6,4,2,4,2, + 5,4,7,7,7,4,7,7,4,2,4,7,7,4,2,4,2,7,4,5,4,6,4,2,4,2,4,3,2,2,3,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,0,0,4,0,0,4,3,2,2,3,4,0,0,4,5,4,7, + 7,7,6,4,7,7,4,2,4,7,4,6,4,2,4,7,7,4,2,4,2,4,2,7,2,7,4,5,4,7,6,4,7,7,4, + 7,4,6,4,6,7,2,4,2,2,7,4,7,7,4,7,2,4,7,4,6,4,7,7,2,7,4,7,7,4,2,4,5,4,6, + 4,2,4,7,2,4,7,7,4,2,5,4,7,7,6,4,6,5,4,7,7,4,7,2,4,5,4,6,4,2,4,2,4,2,4, + 2,4,2,4,2,4,2,4,5,4,6,4,2,4,2,4,2,2,4,5,4,6,4,2,4,2,4,2,2,4,7,4,6,4,7, + 2,4,7,4,5,7,6,4,7,7,4,2,4,7,7,4,2,7,4,5,4,6,4,2,4,2,4,2,7,5,4,2,7,4,7, + 4,6,4,2,4,2,5,4,7,7,7,4,7,7,4,2,4,7,7,4,2,4,2,7,4,5,4,6,4,2,4,2,4,2,3, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,7,4,7,7,4,2,4,2,4,7,2,7,4, + 7,7,7,4,2,4,7,7,4,7,7,4,2,4,7,7,4,7,7,4,7,7,2,2,2,7,7,2,7,7,7,2,7,2,7, + 4,7,7,4,7,7,4,2,4,2,4,7,2,7,4,7,7,7,4,2,4,7,7,4,7,7,4,2,4,7,7,4,7,7,4, + 2,4,2,4,7,7,2,2,2,7,7,2,7,7,7,2,7,7,2,4,0,0,4,3,2,7,4,7,4,0,0,4,3,2,7, + 7,4,0,0,4,7,7,7,4,5,4,7,6,4,2,4,7,7,4,7,4,7,6,4,7,2,7,4,7,7,4,7,5,4,7, + 2,4,7,4,6,4,2,4,2,7,4,3,2,7,7,2,2,7,7,7,7,2,2,2,2,2,7,7,4,7,4,7,7,4,0, + 0,4,7,7,4,2,4,2,4,7,2,7,4,7,7,7,4,2,4,7,7,4,7,7,4,2,4,7,7,4,3,2,7,7,2, + 2,2,7,7,2,7,7,7,2,7,7,7,4,7,7,4,7,7,4,7,4,7,4,0,0,4,7,7,4,7,7,4,3,2,7, + 2,7,2,7,7,4,7,7,4,3,4,0,0,4,0,0,4,7,7,7,4,7,7,4,2,4,7,7,4,2,4,2,4,7,2, + 7,4,7,7,7,4,2,7,4,7,7,4,7,2,4,7,4,6,4,7,2,7,4,7,7,4,2,4,7,5,4,7,7,2,4, + 6,5,4,7,7,4,7,4,7,6,4,7,7,4,2,4,7,7,4,2,7,4,7,7,4,7,7,4,2,4,2,7,4,3,2, + 2,3,2,2,2,2,2,2,2,7,2,2,7,2,2,2,7,2,2,4,0,0,4,0,0,4,7,7,4,7,7,4,2,4,7, + 7,4,2,4,2,4,7,2,7,4,7,7,7,4,2,4,7,7,4,7,2,4,7,7,7,4,7,7,4,2,4,7,5,4,7, + 7,2,4,6,5,4,7,7,4,7,4,7,6,4,7,7,4,7,7,4,7,7,4,2,4,2,7,4,3,2,2,3,2,2,2, + 2,2,2,2,7,2,2,7,2,7,2,7,2,2,4,0,0,4,7,7,4,7,7,4,2,4,2,4,7,2,7,4,7,7,7, + 4,2,7,4,7,7,4,7,4,6,4,7,2,4,7,7,4,2,4,7,7,4,2,4,7,7,4,2,7,4,3,2,2,7,2, + 2,2,2,7,2,7,7,7,2,2,7,7,7,4,0,0,4,0,0,4,7,7,4,7,7,4,2,4,7,7,4,2,4,2,4, + 7,2,7,4,5,4,6,4,7,7,7,4,2,2,4,7,7,4,7,2,4,7,7,7,4,7,7,4,2,4,5,4,6,4,2, + 4,7,2,4,7,5,4,7,7,2,4,6,5,4,7,7,4,5,4,6,4,2,4,2,4,2,4,2,4,2,4,2,4,2,4, + 5,4,6,4,2,4,2,4,2,2,4,5,4,6,4,2,4,2,4,2,2,4,7,4,7,6,4,7,7,4,5,4,6,4,2, + 4,2,4,2,7,4,2,4,7,7,4,7,7,4,2,4,2,7,4,5,4,6,4,2,4,2,4,3,2,2,3,2,2,2,2, + 2,2,2,2,2,2,2,7,2,7,2,2,2,2,2,4,0,0,4,0,0,4,7,7,4,7,7,4,2,4,7,7,4,2,4, + 2,4,7,2,7,4,5,4,6,4,7,7,7,4,2,2,4,7,7,4,7,2,4,7,7,7,4,7,7,4,2,4,5,4,6, + 4,2,4,7,2,4,7,5,4,7,7,2,4,6,5,4,7,7,4,5,4,6,4,2,4,2,4,2,4,2,4,2,4,2,4, + 2,4,5,4,6,4,2,4,2,4,2,2,4,5,4,6,4,2,4,2,4,2,2,4,7,4,7,6,4,7,7,4,5,4,6, + 4,2,4,2,4,2,7,4,2,4,7,7,4,7,7,4,2,4,2,7,4,5,4,6,4,2,4,2,4,3,2,2,3,2,2, + 2,2,6,2,2,2,2,2,2,7,2,7,2,2,2,2,2,4,0,0,4,7,7,4,7,7,4,2,4,7,7,4,2,4,2, + 4,7,2,7,4,5,4,6,4,7,7,7,4,2,2,4,7,7,4,7,2,4,7,7,7,4,7,7,4,2,4,5,4,6,4, + 2,4,7,2,4,7,5,4,7,7,2,4,6,5,4,7,7,4,5,4,6,4,2,4,2,4,2,4,2,4,2,4,2,4,2, + 4,5,4,6,4,2,4,2,4,2,2,4,5,4,6,4,2,4,2,4,2,2,4,7,4,7,6,4,7,7,4,5,4,6,4, + 2,4,2,4,2,7,4,2,4,7,7,4,7,7,4,2,4,2,7,4,5,4,6,4,2,4,2,4,2,3,2,2,2,2,2, + 2,2,2,2,2,2,7,2,7,2,2,2,2,2,4,0,0,4,7,7,4,7,7,4,2,4,7,7,4,2,4,2,4,7,2, + 7,4,5,4,6,4,7,7,7,4,2,2,4,7,7,4,7,2,4,7,7,7,4,7,7,4,2,4,5,4,6,4,2,4,7, + 2,4,7,5,4,7,7,2,4,6,5,4,7,7,4,5,4,6,4,2,4,2,4,2,4,2,4,2,4,2,4,2,4,5,4, + 6,4,2,4,2,4,2,2,4,5,4,6,4,2,4,2,4,2,2,4,7,4,7,6,4,7,7,4,5,4,6,4,2,4,2, + 4,2,7,4,2,4,7,7,4,7,7,4,2,4,2,7,4,5,4,6,4,2,4,2,4,2,3,2,2,2,2,6,2,2,2, + 2,2,2,7,2,7,2,2,2,2,2,4,0,0,4,7,7,4,7,7,7,4,5,4,7,6,4,2,7,4,7,4,7,6,4, + 7,2,7,4,7,7,4,7,7,4,7,5,4,2,2,4,7,4,6,4,2,4,2,7,4,3,2,2,2,2,7,7,7,7,2, + 2,7,2,2,7,7,4,0,0,4,7,4,6,4,2,4,2,4,3,2,7,7,2,4,7,4,6,4,2,4,2,4,7,2,4, + 0,0,4,7,7,4,7,7,4,2,4,7,7,4,2,4,2,4,7,2,7,4,7,7,7,4,2,4,7,7,4,7,2,4,7, + 7,7,4,7,7,4,2,4,7,5,4,7,7,2,4,6,5,4,7,7,4,7,4,7,6,4,7,7,4,7,7,4,7,7,4, + 2,4,2,7,4,2,3,2,2,2,2,2,2,2,7,2,2,7,2,7,2,7,2,2,4,5,4,6,4,2,4,5,4,6,4, + 2,4,2,4,5,4,6,4,2,4,2,4,2,4,2,4,2,4,2,4,2,4,5,4,6,4,2,4,2,4,2,2,4,5,4, + 6,4,2,4,2,4,2,2,4,5,4,6,4,2,4,2,4,2,4,2,4,5,4,6,4,2,4,2,4,2,7,2,7,2,2, + 2,4,0,0,4,7,7,7,4,5,4,7,6,4,2,4,7,4,7,6,4,7,2,7,4,7,5,4,7,2,4,7,4,6,4, + 2,4,2,7,4,3,2,7,2,2,7,7,7,7,2,2,2,7,7,4,0,0,4,3,2,7,4,0,0,4,3,2,7,4,7, + 4,7,7,4,0,0,4,7,7,7,4,5,4,7,6,4,2,4,7,4,7,6,4,7,2,7,4,7,5,4,7,2,4,7,4, + 6,4,2,4,2,7,4,3,2,7,2,2,7,7,7,2,7,2,2,7,7,4,7,7,7,4,5,4,7,6,4,2,4,7,4, + 7,6,4,7,2,7,4,7,5,4,7,2,4,7,4,6,4,2,4,2,7,4,7,2,2,7,7,7,2,7,2,2,7,7,4, + 7,4,0,0,4,3,2,7,4,7,4,0,0,4,7,7,4,7,4,6,4,2,4,2,4,7,7,4,2,7,4,7,2,7,7, + 4,5,4,7,6,4,2,7,7,4,7,7,4,7,7,4,2,7,4,7,7,4,7,4,7,6,4,7,2,7,4,7,7,4,7, + 5,4,2,2,4,7,4,6,4,2,4,2,7,4,5,7,4,7,2,4,3,2,2,2,2,2,2,7,7,2,7,2,2,7,7, + 7,2,2,2,7,4,7,4,6,4,2,4,2,4,7,7,4,2,4,2,7,4,7,7,4,7,7,4,2,4,7,2,2,2,7, + 2,7,7,7,4,7,7,4,7,7,2,7,4,7,4,0,0,4,3,2,7,7,4,7,7,4,7,4,7,7,7,7,4,7,4, + 7,7,4,2,4,2,4,7,2,7,4,7,7,7,4,2,4,7,7,4,7,7,4,2,4,7,7,4,2,4,7,7,4,7,7, + 4,2,4,2,4,7,7,2,2,2,7,2,7,2,7,7,7,2,7,7,2,4,7,4,7,7,4,2,4,2,4,7,2,7,4, + 7,7,7,4,2,4,7,7,4,7,2,4,7,7,7,4,2,4,7,7,4,7,7,4,7,7,2,2,2,7,7,2,7,7,7, + 2,7,2,7,4,7,4,6,4,2,4,2,4,7,7,2,4,0,0,4,5,5,4,2,3,7,2,7,7,4,7,7,4,7,7, + 4,2,4,2,4,7,2,7,4,7,7,7,4,2,4,7,7,4,7,2,4,7,7,4,7,7,4,2,4,7,7,7,4,2,4, + 7,4,7,6,4,7,7,4,7,7,4,7,7,4,2,7,2,2,2,2,2,7,2,7,2,7,2,7,2,2,4,7,7,4,0, + 0,4,3,2,7,7,4,0,0,4,7,7,7,4,5,4,7,6,4,2,4,7,4,7,6,4,7,2,7,4,7,5,4,7,7, + 2,4,7,4,6,4,2,4,2,7,4,3,2,7,2,2,7,7,7,2,2,2,7,7,4,7,7,4,0,0,4,3,2,7,7, + 4,7,4,7,4,0,0,4,7,7,4,3,2,2,4,0,0,4,3,2,7,4,7,4,7,7,4,7,7,4,2,4,2,4,7, + 2,7,4,7,7,7,4,2,7,4,7,7,4,7,7,4,7,7,4,2,4,7,7,4,2,4,7,7,4,2,7,2,2,2,2, + 7,2,7,7,2,2,7,7,7,4,0,0,4,0,0,4,7,7,7,5,4,7,7,4,2,4,7,7,4,2,4,2,4,7,2, + 7,4,5,4,6,4,7,7,7,4,2,2,7,4,7,7,4,7,2,4,7,4,6,4,7,2,7,4,7,7,4,2,4,5,4, + 6,4,2,4,7,2,4,7,5,4,7,7,2,4,6,5,4,7,7,4,5,4,6,4,2,4,2,4,2,4,2,4,2,4,2, + 4,2,4,5,4,6,4,2,4,2,4,2,2,4,5,4,6,4,2,4,2,4,2,2,4,7,4,7,6,4,7,7,4,2,4, + 7,7,4,2,7,4,5,4,6,4,2,4,2,4,2,7,4,2,4,7,7,4,7,7,4,2,4,2,7,4,5,4,6,4,2, + 4,2,4,3,2,2,3,2,2,2,2,2,2,2,2,2,2,2,7,2,2,2,2,2,7,2,2,4,0,0,4,7,7,7,4, + 7,7,7,4,5,4,7,6,4,2,4,7,4,7,6,4,7,2,7,4,7,5,4,7,7,2,4,7,4,6,4,2,4,2,7, + 4,3,2,2,2,2,7,7,2,7,2,2,7,7,4,7,7,7,4,5,4,7,6,4,2,4,7,4,7,6,4,7,2,7,4, + 7,5,4,7,2,4,7,4,6,4,2,4,2,7,4,7,2,2,7,7,2,7,2,2,7,7,4,7,7,4,2,4,2,4,7, + 2,7,4,7,7,7,4,2,4,7,7,4,7,2,4,7,7,4,7,7,4,2,4,7,7,7,4,2,4,7,7,4,7,7,4, + 7,7,4,7,7,4,2,4,2,7,4,7,7,2,2,2,2,2,7,2,7,2,7,2,7,2,2,4,7,7,4,2,4,2,4, + 7,2,7,4,7,7,7,4,2,4,7,7,4,7,7,4,2,4,7,7,4,2,4,7,7,4,7,7,2,2,2,7,2,7,2, + 7,7,7,2,7,7,7,4,7,7,7,4,7,7,7,4,0,0,4,3,2,7,7,4,7,7,4,0,0,4,3,2,7,4,7, + 4,7,7,4,2,4,7,7,7,4,0,0,4,7,7,7,4,7,7,7,4,5,4,7,6,4,2,4,7,4,7,6,4,7,2, + 7,4,7,5,4,7,7,2,4,7,4,6,4,2,4,2,7,4,3,2,2,2,2,7,7,2,2,2,7,7,4,7,7,7,4, + 7,7,7,4,5,4,7,6,4,2,4,7,4,7,6,4,7,2,7,4,7,5,4,7,7,2,4,7,4,6,4,2,4,2,7, + 4,2,2,2,7,7,2,2,2,7,7,4,7,7,4,0,0,4,3,2,7,4,7,4,6,4,2,4,2,4,7,4,6,4,7, + 2,4,7,4,6,4,2,4,7,4,6,4,2,4,7,4,6,4,2,4,2,4,2,2,7,2,7,2,7,2,7,4,7,7,7, + 4,7,4,0,0,4,3,2,7,4,7,4,0,0,4,3,2,7,4,0,0,4,3,2,7,7,7,7,4,7,4,7,7,4,7, + 2,4,7,7,2,7,7,4,7,7,7,7,7,4,0,0,4,0,0,4,7,7,7,4,7,7,4,2,4,7,7,4,2,4,2, + 4,7,2,7,4,5,4,6,4,7,4,6,4,7,7,2,4,2,2,4,7,7,4,7,2,4,7,7,7,4,7,7,4,2,4, + 5,4,6,4,2,4,7,2,4,7,5,4,7,7,2,4,6,5,4,7,7,4,5,4,6,4,2,4,2,4,2,4,2,4,2, + 4,2,4,2,4,5,4,6,4,2,4,2,4,2,2,4,5,4,6,4,2,4,2,4,2,2,4,7,4,7,6,4,7,7,4, + 5,4,6,4,2,4,2,4,2,7,4,2,4,7,7,4,7,7,4,2,4,2,7,4,5,4,6,4,2,4,2,4,3,2,2, + 3,2,2,2,2,2,2,2,2,2,2,2,7,2,7,2,2,2,2,2,4,0,0,4,7,7,7,4,7,7,4,2,4,2,4, + 7,2,7,4,7,7,7,4,2,7,4,7,7,4,7,2,4,7,4,6,4,7,2,4,7,7,4,2,4,7,7,7,4,2,4, + 7,4,5,7,6,4,7,7,4,2,4,7,7,4,2,7,4,7,7,4,7,7,4,2,4,2,7,4,3,2,2,7,2,2,2, + 2,2,7,2,7,7,2,2,2,7,2,2,4,0,0,4,3,2,7,4,7,4,7,7,4,2,4,2,4,7,2,7,4,7,7, + 7,4,2,4,7,7,4,7,7,4,2,4,7,7,4,7,7,2,2,2,7,7,7,2,7,7,7,2,7,7,7,4,7,7,4, + 2,4,2,4,7,2,7,4,7,7,7,4,2,4,7,7,4,7,2,4,7,7,4,7,7,4,2,4,7,7,7,4,2,4,7, + 7,4,7,7,4,7,7,4,7,7,4,7,7,2,2,2,2,2,7,2,7,2,7,2,7,2,2,4,7,7,7,4,5,4,7, + 6,4,2,4,7,4,7,6,4,7,2,7,4,7,7,4,7,5,4,2,2,4,7,4,6,4,2,4,2,7,4,7,2,2,7, + 7,2,2,2,7,7,4,7,4,7,4,7,7,4,2,4,2,4,7,2,7,4,7,7,7,4,2,4,7,7,4,7,2,4,7, + 7,7,4,2,4,7,7,4,7,7,4,7,7,4,7,7,2,2,2,7,7,2,7,7,7,2,7,2,2,4,0,0,4,3,2, + 7,4,7,4,7,7,4,7,7,4,2,4,2,4,7,2,7,4,7,7,7,4,2,7,4,7,7,4,7,4,6,4,7,2,4, + 7,7,4,2,4,7,7,4,2,4,7,7,4,2,7,4,2,7,2,2,2,2,7,2,7,7,7,2,2,7,7,7,4,7,7, + 7,7,4,7,4,7,7,4,2,4,2,4,7,2,7,4,7,7,7,4,2,4,7,7,4,7,2,4,7,7,4,7,7,7,4, + 2,4,7,7,4,7,7,4,7,7,4,7,7,2,2,2,2,7,2,7,2,7,2,7,2,7,4,7,7,4,7,7,4,2,4, + 2,4,7,2,7,4,7,7,7,4,2,7,4,7,7,4,7,4,6,4,7,2,4,7,7,4,2,4,7,7,4,2,4,7,7, + 4,2,7,4,2,7,2,2,2,2,7,2,7,7,2,2,7,7,7,4,7,7,4,2,4,2,4,7,2,7,4,7,7,7,4, + 2,4,7,7,4,7,2,4,7,7,4,7,7,7,4,2,4,7,7,4,7,7,4,7,7,4,7,7,4,7,7,2,2,2,2, + 7,7,2,7,2,7,2,7,2,2,4,7,4,7,7,4,7,7,4,2,4,2,4,7,2,7,4,7,7,7,4,2,7,4,7, + 7,4,7,4,6,4,7,2,4,7,7,4,2,4,5,7,4,7,7,4,2,4,7,7,4,2,7,4,2,7,2,2,2,2,7, + 2,7,7,2,2,2,7,7,7,4,0,0,4,3,2,7,4,7,4,7,7,4,7,7,4,2,4,2,4,7,2,7,4,7,7, + 7,4,2,4,7,7,4,7,7,4,7,7,4,2,4,7,7,4,7,7,2,2,2,2,7,2,7,7,7,2,7,7,7,4,7, + 7,4,7,7,4,2,4,2,4,7,2,7,4,7,7,7,4,2,4,7,7,4,7,2,4,7,7,4,7,7,7,4,2,4,7, + 4,7,6,4,7,7,4,7,7,4,7,7,4,2,7,2,2,2,2,7,2,7,2,7,2,7,2,2,4,0,0,4,3,2,7, + 4,7,4,7,7,4,7,7,4,7,7,4,2,4,2,4,7,2,7,4,7,4,6,4,7,7,2,4,2,4,7,7,4,7,7, + 4,7,7,4,2,4,7,7,4,2,7,2,2,2,2,7,2,7,7,7,2,7,7,7,4,7,4,7,4,7,4,7,7,7,4, + 7,4,7,4,0,0,4,7,7,4,2,4,2,4,7,2,7,4,7,7,7,4,2,4,7,7,4,7,7,4,7,7,4,2,4, + 7,7,4,3,2,7,7,2,2,2,2,7,2,7,7,7,2,7,7,7,4,0,0,4,7,7,4,7,7,4,2,4,2,4,7, + 2,7,4,7,7,7,4,2,7,4,7,7,4,7,4,6,4,7,2,4,7,7,4,2,4,5,7,4,7,7,4,2,4,7,7, + 4,2,7,4,3,2,2,7,2,2,2,2,7,2,7,7,2,2,2,7,7,7,4,7,4 +}; + +static const unsigned short far ag_key_parm[] = { + 0, 41, 34, 0,164,168, 0, 0, 0, 0, 0,162, 0,258, 0, 12, 16,178, + 0, 0,226, 0,182,268, 0,188,288, 0, 0, 0,204,206, 0, 39, 0,156, + 160, 0, 0, 0,152,184, 0,194,292,202, 0,124,148,208, 0, 45, 0, 41, + 34, 0,402,400, 0, 82,156, 0, 66, 80, 0,142, 0,224, 0, 0,262, 96, + 0,160, 74, 0,276, 0,284, 0, 0,232, 0, 0, 0,130, 0, 2, 0, 0, + 0, 0,264, 0,164,168, 0, 0, 0,216,286, 0,278, 0, 0,256, 0, 0, + 104, 0,280, 0,258, 0, 0, 0, 0, 0, 0, 0, 86,172, 0, 0, 0,240, + 0,162, 0, 0, 0, 0,220, 0,234, 88, 0, 48, 0, 0, 46, 0, 6, 12, + 0,178, 34, 0, 0, 0, 0, 0,144, 0, 4, 16, 0, 0, 0,282, 0,106, + 226, 0,136,198, 0, 0,268, 70, 0,182,112, 0, 0,228, 0,146,210, 0, + 152,250, 0, 18, 0,184,128, 0,218, 0, 0, 52, 0, 50, 0,176, 0, 0, + 132, 0, 0,246,138, 0, 0,180, 0,188,222,288,244, 0,108, 0,270, 72, + 68, 0,116,194, 0, 0,254, 0,118, 76, 0, 0, 64, 0, 62, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 54, 0, 0, 0, + 0, 0, 0,100, 0, 44, 0, 42, 0, 0, 0,200, 0, 0, 98, 0, 0, 0, + 10, 0, 22, 8, 0, 20, 0, 0,154, 0,292,266, 0,140, 0,150,166, 0, + 94, 0, 28,274, 0,202, 0, 26, 0, 24, 0,272, 0,236,238,204, 0, 0, + 206, 0, 60, 0, 58, 0, 0, 0, 0, 14, 0, 0,124,242, 0,190,192,212, + 214, 0, 0, 0,120,102, 0, 0,196,248, 78, 0, 0, 0, 92, 0, 90, 0, + 0, 0,158, 0,186,122, 0,134,260, 0, 0, 0,110, 84, 32, 0, 0,148, + 0, 0,290,252, 0, 0,230, 0,208,126, 0, 0, 0, 0,174,170, 0, 40, + 0, 38, 0, 0, 0, 0, 0, 39, 0, 0,403, 0, 0, 0, 0, 36, 0, 0, + 0, 0,114, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164, + 168, 0, 0, 0, 0, 0,162, 0,258, 0, 12, 16,178, 0, 0,226, 0,182, + 268, 0,188,288, 0, 0, 0,204,206, 0,156,160, 0, 0, 0,152,184, 0, + 194,292,202, 0,124,148,208, 0, 41, 34, 0, 82, 96, 0, 0,104, 86, 0, + 48, 0, 88, 46, 0, 0,106, 0, 54, 0, 62,100, 0, 98, 0, 42, 0,120, + 102, 0, 58, 0, 0, 92, 0, 90, 0, 0, 0, 0,122, 0, 39, 0, 0, 0, + 0, 50,118, 0,166, 0, 0, 84, 38, 0, 41, 34, 0, 39, 0,240, 18,166, + 238,242, 0, 41, 34, 0,150,166, 0, 39, 0, 0,238, 0, 82, 96, 0, 0, + 104, 86, 0, 48, 0, 88, 46, 0, 0,106, 0, 54, 0, 62,100, 0, 98, 0, + 42, 0,120,102, 0, 58, 0, 0, 92, 0, 90, 0, 0, 0, 0,122, 0, 0, + 0, 0, 50,118, 0, 0, 0, 84, 38, 0, 41, 34, 0, 39, 0, 0, 41, 34, + 0, 39, 0,180,166, 0, 41, 34, 0, 39, 0,154, 0, 41, 34, 0, 39, 0, + 270,166, 0, 18, 0, 41, 34, 0, 39, 0,222,158,260,230, 0, 41, 34, 0, + 212,214, 0, 0, 0, 0, 0, 39, 0, 20, 0, 0,180, 0, 41, 34, 0,164, + 168, 0, 0, 0, 0, 0,162, 0,258, 0, 12, 16,178, 0, 0, 0,182,268, + 0,188,288, 0, 0, 0,204,206, 0,208,170, 0, 39, 0,156,160, 0, 0, + 0,152,184, 0,194,292,202, 0,124,148, 0, 0, 41, 34, 0, 82,156, 0, + 0, 0,276, 0,284, 0, 0, 0, 0, 0,278,286, 0, 0, 0, 0,280, 0, + 282, 16, 0,222,288, 0, 0, 0, 39, 0, 0, 0, 0, 0,268, 0,236,124, + 148, 0, 41, 34, 0, 39, 0,158, 0, 41, 34, 0,190,192, 0, 0, 0, 0, + 0, 39, 0, 0, 0,270, 0, 41, 34, 0, 39, 0, 12, 0, 41, 34, 0, 39, + 0, 14, 0,222,158,260,230, 0, 41, 34, 0, 39, 0,166, 0, 41, 34, 0, + 39, 0,166,158, 0, 41, 34, 0, 28, 26, 0, 24, 0, 0, 39, 0,228,222, + 0,158,230, 0,212,214, 0, 0, 0, 0, 0, 20, 0, 0,164,168, 0, 0, + 0, 0, 0,162, 0,258, 0, 12, 16,178, 0, 0, 0,182,268, 0,188,288, + 0, 0, 0,204,206, 0,208,170, 0,156,160, 0, 0, 0,152,184, 0,194, + 292,202, 0,124,148, 0, 0, 82,156, 0, 0, 0,276, 0,284, 0, 0, 0, + 0, 0,278,286, 0, 0, 0, 0,280, 0,282, 16, 0,222,288, 0, 0, 0, + 0, 0, 0, 0,268, 0,236,124,148, 0,158, 0,190,192, 0, 0, 0, 0, + 0, 0, 0, 12, 0,166, 0, 24, 26, 0,222, 0,158,230, 0,164,168, 0, + 0, 0, 0, 0,162, 0,258, 0, 12, 16,178, 0, 0, 0,182,268, 0,188, + 288, 0, 0, 0,204,206, 0,156,160, 0, 0, 0,152,184, 0,194,292,202, + 0,124,148,208, 0, 41, 34, 0, 0,104, 86, 0, 48, 0, 88, 46, 0, 0, + 0, 54, 0, 62,100, 0, 98, 0, 42, 0,120,102, 0, 58, 0, 0, 92, 0, + 90, 0, 0, 0, 0,122, 0, 39, 0, 96, 0, 0, 50,118, 0, 0, 0, 84, + 38, 0, 41, 34, 0, 0,104, 86, 0, 48, 0, 88, 46, 0, 0, 0, 54, 0, + 62,100, 0, 98, 0, 42, 0, 58,124, 0,120,102, 0, 0, 0, 0, 92, 0, + 90, 0, 0, 0, 0,122, 0, 39, 0, 96, 0, 0, 50,118, 0,166,274, 0, + 0, 84, 38, 0, 0,104, 86, 0, 48, 0, 88, 46, 0, 0, 0, 54, 0, 62, + 100, 0, 98, 0, 42, 0,120,102, 0, 58, 0, 0, 92, 0, 90, 0, 0, 0, + 0,122, 0, 96, 0, 0, 50,118, 0, 0, 0, 84, 38, 0, 41, 34, 0, 39, + 0,272, 0, 56, 0, 41, 34, 0,402,400, 0,142, 0,224,156, 66,262, 0, + 160, 74, 0, 0, 0, 2, 0, 0, 0, 0, 0,164,168, 0, 0, 0, 0, 0, + 0,162, 0,258,172, 0, 48, 0, 88, 46, 0, 6, 12, 0,178, 0,144, 0, + 4, 16, 0, 0, 0, 0,226, 0,136,268, 0,182, 0, 0,228, 0,146, 0, + 152,250, 0, 18, 0,184,128, 0, 0, 0, 52, 0, 50, 0, 0, 0,132, 0, + 0,246,138, 0, 0,180, 0,188,288,244, 0, 72, 68, 0,194,254, 0, 76, + 0, 0, 64, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 42, 0, 0, + 0, 0, 0, 0, 0, 0, 10, 0, 8, 0, 20, 0, 0,140, 0,166,292, 94, + 0,202, 28, 0, 0, 0,236,204, 0, 0,206, 0, 60, 0, 58, 0, 0, 0, + 0, 0, 0,124,242, 0, 0,248, 0, 92, 0, 90, 0, 0, 0, 0,186, 0, + 134,148, 32, 0,290,252, 0, 0, 0,208,126, 0, 0, 0, 0,174, 0, 40, + 0, 38, 0, 0, 0, 0, 0, 39, 0, 0,403, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 34, 0, + 402,400, 0, 39, 0, 0,403, 0,402,400, 0,142, 0,224,156, 66,262, 0, + 160, 74, 0, 0, 0, 2, 0, 0, 0, 0, 0,164,168, 0, 0, 0, 0, 0, + 0,162, 0,258, 0, 48, 0, 88, 46, 0, 6, 12, 0,178, 0,144, 0, 4, + 16, 0, 0, 0, 0,226, 0,136,268, 0,182, 0, 0,228, 0,146, 0,152, + 250, 0, 18, 0,184,128, 0, 0, 0, 52, 0, 50, 0, 0, 0,132, 0, 0, + 246,138, 0, 0,180, 0,188,288,244, 0, 72, 68, 0,194,254, 0, 76, 0, + 0, 64, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 56, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 42, 0, 0, 0, + 0, 0, 0, 0, 0, 10, 0, 8, 0, 20, 0, 0,140, 0,166,292, 94, 0, + 202, 28, 0, 0, 0,236,204, 0, 0,206, 0, 60, 0, 58, 0, 0, 0, 0, + 0, 0,124,242, 0, 0,248, 0, 92, 0, 90, 0, 0, 0, 0,186, 0,134, + 148, 32, 0,290,252, 0, 0, 0,208,126, 0, 0, 0, 0,174, 0, 40, 0, + 38, 0, 0, 0, 0, 0, 0,403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242, 0,164,168, 0, 0, + 0, 0, 0,162, 0,258, 0, 12, 16,178, 0, 0, 0,182,268, 0,188,288, + 0, 0, 0,204,206, 0,148, 32, 0,156,160, 0, 0, 0,152,184, 0,194, + 292,202, 0,124, 0,208, 0,180, 32, 0,164,168, 0, 0, 0, 0, 0,162, + 0,258, 0, 12, 16,178, 0, 0, 0,182,268, 0,188,288, 0, 0, 0,204, + 206, 0,208,126, 0, 0, 0, 0, 0,156,160, 0, 0, 0,152,184, 0,194, + 292,202, 0,124,148, 0, 0, 41, 34, 0, 39, 0,222, 0,222, 0, 41, 34, + 0, 39, 0,216,218, 0, 41, 34, 0, 0,104, 86, 0, 48, 0, 88, 46, 0, + 0, 0,118, 76, 0, 54, 0, 62,100, 0, 98, 0, 42, 0, 20, 22, 0,120, + 102, 0, 58, 0, 0, 92, 0, 90, 0, 0, 0, 0,122, 0, 39, 0, 96, 74, + 0, 0, 70,210, 50, 72, 0, 0, 0, 0, 0, 84, 38, 0,210, 0,216,218, + 0, 41, 34, 0,164,168, 0, 0, 0, 0, 0,162, 0,258, 0, 12, 16,178, + 0, 0, 0,182,268, 0,188,288, 0, 0, 0,204,206, 0, 39, 0,156,160, + 0, 0, 0,152,184, 0,194,292,202, 0,124,148,208, 0,166,274, 0, 18, + 180, 0, 14, 0,172, 0, 41, 34, 0,220, 16, 0, 24, 26, 0, 39, 0,256, + 0,222, 0,158,148, 0,256,158, 0, 91, 0, 41, 34, 0,402,400, 0,224, + 156, 66, 0,160, 74, 0, 0, 0,164,168, 0, 0, 0, 0, 0,162, 0,258, + 0, 12, 16,178, 0, 0,226, 0,136,268, 0,182, 0, 0,228, 0,146, 0, + 152, 0, 18, 0,184,128, 0, 0, 0,138,180, 0,188,288, 0, 0, 72, 68, + 0, 76,194, 0,140, 0,292, 94, 0,202, 28, 0, 0, 0,236,204, 0, 0, + 206, 0,134,148, 0,208,126, 0, 0, 0, 0,174, 0, 39, 0, 0,403, 0, + 0, 0, 0, 0, 0, 0,132, 0, 0, 20, 0, 0, 0,124, 0, 0, 0, 41, + 34, 0,402,400, 0,156, 66, 0,160, 74, 0, 0, 0,164,168, 0, 0, 0, + 0, 0,162, 0,258, 0, 12, 16,178, 0, 0, 0,136,268, 0,182, 0, 0, + 152,146, 18, 0,184,128, 0, 0, 0,138,180, 0,188,288, 0, 0, 72, 68, + 0, 76,194, 0,140, 0,292, 94, 0,204,206, 0,134,148, 0,208,126, 0, + 0, 0, 0,174, 0, 39, 0, 0,403, 0, 0, 0, 0, 0, 0, 0,132, 0, + 0, 20, 0,202, 0,124, 0, 0, 0, 41, 34, 0,224,156, 0,164,168, 0, + 0, 0, 0, 0,162, 0,258, 0, 12, 16,178, 0, 0,226, 0,182,268, 0, + 228, 0,146, 0,152, 0, 0,188,288, 0, 0, 0,202, 28, 0, 0, 0,236, + 204, 0, 0,206, 0, 39, 0, 0,160, 0, 0, 0, 0,184, 0,194, 20,292, + 0, 0,124,148,208, 0, 41, 34, 0,402,400, 0,156, 66, 0,160, 74, 0, + 0, 0,164,168, 0, 0, 0, 0, 0,162, 0,258, 0, 48, 0, 46, 0, 12, + 16,178, 0, 0, 0, 0,136,268, 0,182, 0, 0,152,146, 18, 0,184,128, + 0, 0, 0, 52, 0, 50, 0, 0, 0,132, 0, 0,138,180, 0,188,288, 0, + 0, 72, 68, 0, 76,194, 0, 64, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 56, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, + 44, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0,140, 0,292, 94, 0,204,206, + 0, 60, 0, 58, 0, 0, 0, 0, 0, 0,124, 0, 0, 0,134,148, 0,208, + 126, 0, 0, 0, 0,174, 0, 40, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0, + 403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0,202, 0, 0, 0, + 0, 0, 0, 41, 34, 0,402,400, 0,156, 66, 0,160, 74, 0, 0, 0,164, + 168, 0, 0, 0, 0, 0,162, 0,258, 0, 48, 0, 46, 0, 12, 16,178, 0, + 0, 0, 0,136,268, 0,182, 0, 0,152,146, 18, 0,184,128, 0, 0, 0, + 52, 0, 50, 0, 0, 0,132, 0, 0,138,180, 0,188,288, 0, 0, 72, 68, + 0, 76,194, 0, 64, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 42, + 0, 0, 0, 0, 0, 0, 0, 0,140, 0,292, 94, 0,204,206, 0, 60, 0, + 58, 0, 0, 0, 0, 0, 0,124, 0, 0, 0,134,148, 0,208,126, 0, 0, + 0, 0,174, 0, 40, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0,403, 0, 0, + 0, 0, 36, 0, 0, 0, 0, 0, 0, 20, 0,202, 0, 0, 0, 0, 0, 0, + 402,400, 0,156, 66, 0,160, 74, 0, 0, 0,164,168, 0, 0, 0, 0, 0, + 162, 0,258, 0, 48, 0, 46, 0, 12, 16,178, 0, 0, 0, 0,136,268, 0, + 182, 0, 0,152,146, 18, 0,184,128, 0, 0, 0, 52, 0, 50, 0, 0, 0, + 132, 0, 0,138,180, 0,188,288, 0, 0, 72, 68, 0, 76,194, 0, 64, 0, + 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, + 54, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 42, 0, 0, 0, 0, 0, 0, + 0, 0,140, 0,292, 94, 0,204,206, 0, 60, 0, 58, 0, 0, 0, 0, 0, + 0,124, 0, 0, 0,134,148, 0,208,126, 0, 0, 0, 0,174, 0, 40, 0, + 38, 0, 0, 0, 0, 0, 0,403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 20, 0,202, 0, 0, 0, 0, 0, 0,402,400, 0,156, 66, 0,160, 74, + 0, 0, 0,164,168, 0, 0, 0, 0, 0,162, 0,258, 0, 48, 0, 46, 0, + 12, 16,178, 0, 0, 0, 0,136,268, 0,182, 0, 0,152,146, 18, 0,184, + 128, 0, 0, 0, 52, 0, 50, 0, 0, 0,132, 0, 0,138,180, 0,188,288, + 0, 0, 72, 68, 0, 76,194, 0, 64, 0, 62, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 54, 0, 0, 0, 0, 0, 0, 0, + 0, 44, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0,140, 0,292, 94, 0,204, + 206, 0, 60, 0, 58, 0, 0, 0, 0, 0, 0,124, 0, 0, 0,134,148, 0, + 208,126, 0, 0, 0, 0,174, 0, 40, 0, 38, 0, 0, 0, 0, 0, 0,403, + 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 20, 0,202, 0, 0, 0, 0, + 0, 0, 41, 34, 0, 82, 96, 0, 0,104, 86, 0, 48, 0, 88, 46, 0, 0, + 106, 0, 54, 0, 62,100, 0, 98, 0, 42, 0, 20, 22, 0, 58,124, 0,120, + 102, 0, 0, 0, 0, 92, 0, 90, 0, 0, 0, 0,122, 0, 39, 0, 0, 0, + 0, 70,228, 50,118, 0, 0, 28, 0, 0, 84, 38, 0, 41, 34, 0, 92, 0, + 90, 0, 0, 0, 0, 0, 39, 0, 88,150, 0, 0, 92, 0, 90, 0, 0, 0, + 0, 0, 88, 0, 0,402,400, 0,156, 66, 0,160, 74, 0, 0, 0,164,168, + 0, 0, 0, 0, 0,162, 0,258, 0, 12, 16,178, 0, 0, 0,136,268, 0, + 182, 0, 0,152,146, 18, 0,184,128, 0, 0, 0,138,180, 0,188,288, 0, + 0, 72, 68, 0, 76,194, 0,140, 0,292, 94, 0,204,206, 0,134,148, 0, + 208,126, 0, 0, 0, 0,174, 0, 0,403, 0, 0, 0, 0, 0, 0, 0,132, + 0, 0, 20, 0,202, 0,124, 0, 0, 0, 48, 0, 46, 0, 0, 0, 52, 0, + 50, 0, 0, 0, 0, 0, 64, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 56, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 44, + 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 58, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 40, 0, 38, 0, 0, 0, 0, 0, 0, 18, 0,180, 0, 0, + 0, 0, 41, 34, 0, 0,104, 86, 0, 48, 0, 88, 46, 0, 0, 0, 54, 0, + 62,100, 0, 98, 0, 42, 0,120,102, 0, 58, 0, 0, 92, 0, 90, 0, 0, + 0, 0,122, 0, 39, 0, 96, 0, 0, 18, 50,180,118, 0, 0, 0, 84, 38, + 0, 41, 34, 0, 39, 0, 22, 0, 41, 34, 0, 39, 0, 34, 0, 34, 0,124, + 290, 0, 41, 34, 0, 0,104, 86, 0, 48, 0, 88, 46, 0, 0, 0, 54, 0, + 62,100, 0, 98, 0, 42, 0,120,102, 0, 58, 0, 0, 92, 0, 90, 0, 0, + 0, 0,122, 0, 39, 0, 96, 0, 0, 70, 50,118, 0, 20, 0, 0, 84, 38, + 0, 0,104, 86, 0, 48, 0, 88, 46, 0, 0, 0, 54, 0, 62,100, 0, 98, + 0, 42, 0,120,102, 0, 58, 0, 0, 92, 0, 90, 0, 0, 0, 0,122, 0, + 96, 0, 0, 70, 50,118, 0, 20, 0, 0, 84, 38, 0,262, 0, 41, 34, 0, + 39, 0,186, 0,186, 0, 41, 34, 0,156, 96, 0,276, 0,284, 0, 0, 0, + 0, 0,278,286, 0, 0,104, 0, 0, 0,280, 86, 0, 48, 0, 88, 46, 0, + 0,282, 16, 0,112,268, 0,222,288, 0, 0,108, 0,118,116, 0, 54, 0, + 62,100, 0, 98, 0, 42, 0, 58,124, 0,120,102, 0, 0, 0, 0, 92, 0, + 90, 0, 0, 0, 0,122, 0,110, 84, 0,148, 0, 0, 39, 0, 0, 0, 0, + 0, 0,228, 50, 0,114, 0, 0, 22, 28,236, 0, 0, 0, 38, 0,276, 0, + 284, 0, 0, 0, 0, 0,278,286, 0, 0, 0, 0,280, 0,282, 16, 0,222, + 288, 0, 0, 0,156, 0, 0, 0,268, 0,236,124,148, 0, 24, 26, 0,220, + 222, 0,158, 0, 72, 0, 41, 34, 0, 39, 0,146,174, 0,146,174, 0, 68, + 0,224,226,228, 28, 0,106, 0,164,168, 0, 0, 0, 0, 0,162, 0,258, + 0, 12, 16,178, 0, 0, 0,182,268, 0,184,128, 0, 0, 0,188,288, 0, + 0, 0,204,206, 0,208,126, 0, 0, 0, 0, 0,156,160, 0, 0, 0,152, + 0,132, 0,194,292,202, 0,124,148, 0, 0,124, 0,164,168, 0, 0, 0, + 0, 0,162, 0,258, 0, 12, 16,178, 0, 0, 0,136,268, 0,182, 0, 0, + 188,288,138, 0, 0, 0,204,206, 0,134,148, 0,156,160, 0, 0, 0,152, + 184, 0,194,292,202, 0,124, 0,208, 0, 92, 0, 90, 0, 0, 0, 0, 0, + 88,150, 0, 0,402,400, 0, 72, 68, 0, 0,403, 74, 0, 76, 20, 0,156, + 66, 0,164,168, 0, 0, 0, 0, 0,162, 0,258, 0, 12, 16,178, 0, 0, + 0,136,268, 0,182, 0, 0,152,146, 0,184,128, 0, 0, 0,188,288,138, + 0, 0, 0,140, 0,292, 94, 0,204,206, 0,134,148, 0,208,174, 0, 0, + 160, 0, 0, 0, 0, 0,132, 0,194, 0,202, 0,124, 0, 0, 0,228, 28, + 0, 41, 34, 0, 39, 0, 18,186, 0, 41, 34, 0, 0,104, 86, 0, 48, 0, + 88, 46, 0, 0, 0, 54, 0, 62,100, 0, 98, 0, 42, 0,120,102, 0, 58, + 196, 0, 0, 92, 0, 90, 0, 0, 0, 0,122, 0, 39, 0, 96, 0, 0,198, + 50,118, 0, 0, 0, 84, 38, 0,198,196, 0, 41, 34, 0, 39, 0,264,176, + 0,176, 0,146, 0, 41, 34, 0, 20, 22, 0, 39, 0, 0, 0, 41, 34, 0, + 39, 0, 30, 0, 30, 0,224,156, 0,164,168, 0, 0, 0, 0, 0,162, 0, + 258, 0, 12, 16,178, 0, 0,226, 0,182,268, 0,152,228, 0,188,288, 0, + 0, 0,202, 28, 0, 0, 0,204,206, 0, 0,160, 0, 0, 0, 0,184, 0, + 194,292, 0, 0,124,148,208, 0, 41, 34, 0,402,400, 0,224,156, 66,262, + 0,160, 74, 0, 0, 0,164,168, 0, 0, 0, 0, 0,162, 0,258, 0, 48, + 0, 46, 0, 12, 16,178, 0, 0, 0,226, 0,136,268, 0,182, 0, 0,228, + 0,146, 0,152, 0, 18, 0,184,128, 0, 0, 0, 52, 0, 50, 0, 0, 0, + 132, 0, 0,138,180, 0,188,288, 0, 0, 72, 68, 0, 76,194, 0, 64, 0, + 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, + 54, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 42, 0, 0, 0, 0, 0, 0, + 0, 0,140, 0,292, 94, 0,202, 28, 0, 0, 0,236,204, 0, 0,206, 0, + 60, 0, 58, 0, 0, 0, 0, 0, 0,124, 0, 0, 0,134,148, 0,208,126, + 0, 0, 0, 0,174, 0, 40, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0,403, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0,290, + 0, 0, 0, 41, 34, 0, 82, 80, 96, 0, 0,104, 86, 0, 48, 0, 88, 46, + 0, 0, 0, 54, 0, 62,100, 0, 98, 0, 42, 0,120,102, 0, 58, 78, 0, + 0, 92, 0, 90, 0, 0, 0, 0,122, 0, 39, 0, 0, 0, 0, 50,118, 0, + 22, 0, 0, 84, 38, 0, 0,104, 86, 0, 48, 0, 88, 46, 0, 0, 0, 54, + 0, 62,100, 0, 98, 0, 42, 0,120,102, 0, 58, 0, 0, 92, 0, 90, 0, + 0, 0, 0,122, 0, 96, 0, 0, 50,118, 0, 22, 0, 0, 84, 38, 0,164, + 168, 0, 0, 0, 0, 0,162, 0,258, 0, 12, 16,178, 0, 0, 0,136,268, + 0,182, 0, 0,152,146, 0,184,128, 0, 0, 0,188,288,138, 0, 0, 0, + 292,140, 0,204,206, 0,134,148, 0,208,126, 0, 0, 0, 0,174, 0,156, + 160, 0, 0, 0, 0, 0,132, 0,194, 0,202, 0,124, 0, 0, 0,164,168, + 0, 0, 0, 0, 0,162, 0,258, 0, 12, 16,178, 0, 0, 0,182,268, 0, + 184,128, 0, 0, 0,188,288, 0, 0, 0,204,206, 0,156,160, 0, 0, 0, + 152, 0,132, 0,194,292,202, 0,124,148,208, 0,136,138,134, 0, 86, 22, + 84, 0, 41, 34, 0, 39, 0, 82,124, 0, 82,124, 0, 41, 34, 0, 39, 0, + 84, 0, 84, 0, 20, 22, 0, 0, 0, 74, 72, 76, 0, 41, 34, 0, 82, 80, + 96, 0, 0,104, 86, 0, 48, 0, 88, 46, 0, 0, 0, 54, 0, 62,100, 0, + 98, 0, 42, 0,120,102, 0, 58, 78, 0, 0, 92, 0, 90, 0, 0, 0, 0, + 122, 0, 39, 0, 0, 0, 0, 50,118, 0, 0, 0, 84, 38, 0, 82, 80, 96, + 0, 0,104, 86, 0, 48, 0, 88, 46, 0, 0, 0, 54, 0, 62,100, 0, 98, + 0, 42, 0,120,102, 0, 58, 78, 0, 0, 92, 0, 90, 0, 0, 0, 0,122, + 0, 0, 0, 0, 50,118, 0, 0, 0, 84, 38, 0, 66, 94, 0, 41, 34, 0, + 39, 0,124, 0, 2, 0, 0, 0, 0, 0, 0, 0, 6, 0, 4, 0, 88, 0, + 0,246, 0,244, 0, 0, 0, 10, 0, 8, 0, 0, 0, 92, 0, 90, 0, 0, + 0, 0, 0, 0, 0,250, 0,254, 0,248, 0,252, 0,146, 20,236, 0,272, + 0, 41, 34, 0, 39, 0,200, 0,200, 0, 41, 34, 0, 39, 0,146, 0, 41, + 34, 0, 39, 0,232,152,124,148, 0,236, 0, 28, 26, 0, 24, 0, 0,228, + 222, 0,158,230, 0,112,108,114,116,110, 0, 41, 34, 0,402,400, 0,156, + 66,142, 0,160, 74, 0, 0, 0,164,168, 0, 0, 0, 0, 0,162, 0,258, + 0, 48, 0, 46, 0,178, 0,144, 0, 12, 16, 0, 0, 0, 0, 0,136,268, + 0,182, 0, 0,152,146, 18, 0,184,128, 0, 0, 0, 52, 0, 50, 0, 0, + 0,132, 0, 0,138,180, 0,188,288, 0, 0, 72, 68, 0, 76,194, 0, 64, + 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, + 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 42, 0, 0, 0, 0, 0, + 0, 0, 0,140, 0,292, 94, 0,204,206, 0, 60, 0, 58, 0, 0, 0, 0, + 0, 0,124, 0, 0, 0,134,148, 0,208,126, 0, 0, 0, 0,174, 0, 40, + 0, 38, 0, 0, 0, 0, 0, 39, 0, 0,403, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 20, 0,202, 0, 0, 0, 0, 0, 0, 41, 34, 0,224,156, + 66, 0,164,168, 0, 0, 0, 0, 0,162, 0,258, 0, 12, 16,178, 0, 0, + 226, 0,136,268, 0,182, 0, 0,228, 0,146, 0,152, 0, 0,184,128, 0, + 0, 0,188,288,138, 0, 0, 0,140, 0,166,292, 94, 0,202, 28, 0, 0, + 0,236,204, 0, 0,206, 0,134,148, 0,208,126, 0, 0, 0, 0,174, 0, + 39, 0, 0,160, 0, 0, 0, 0, 0,132, 0,194, 20, 0, 0, 0,124, 0, + 0, 0, 41, 34, 0, 39, 0,130, 0,130, 0,164,168, 0, 0, 0, 0, 0, + 162, 0,258, 0, 12, 16,178, 0, 0, 0,182,268, 0,188,288, 0, 0, 0, + 204,206, 0,156,160, 0, 0, 0,152,184,132, 0,194,292,202, 0,124,148, + 208, 0,164,168, 0, 0, 0, 0, 0,162, 0,258, 0, 12, 16,178, 0, 0, + 0,136,268, 0,182, 0, 0,152,146, 0,184,128, 0, 0, 0,188,288,138, + 0, 0, 0,292,140, 0,204,206, 0,134,148, 0,208,174, 0,156,160, 0, + 0, 0, 0, 0,132, 0,194, 0,202, 0,124, 0, 0, 0, 0,104, 86, 0, + 48, 0, 88, 46, 0, 0, 0, 54, 0, 62,100, 0, 98, 0, 42, 0, 58,124, + 0,120,102, 0, 0, 0, 0, 92, 0, 90, 0, 0, 0, 0,122, 0, 96, 0, + 0, 50,118, 0, 0, 0, 84, 38, 0, 22, 0, 66, 0,164,168, 0, 0, 0, + 0, 0,162, 0,258, 0, 12, 16,178, 0, 0, 0,136,268, 0,182, 0, 0, + 188,288,138, 0, 0, 0,204,206, 0,134,148, 0,208,174, 0,156,160, 0, + 0, 0,152,184, 0,194,292,202, 0,124, 0, 0, 0, 41, 34, 0, 39, 0, + 252, 0,252, 0,224,156, 0,164,168, 0, 0, 0, 0, 0,162, 0,258, 0, + 12, 16,178, 0, 0,226, 0,182,268, 0,228, 0,146, 0,152, 0, 0,188, + 288, 0, 0, 0,202, 28, 0, 0, 0,236,204, 0, 0,206, 0, 0,160, 0, + 0, 0, 0,184, 0,194, 20,292, 0, 0,124,148,208, 0,146, 20, 28,236, + 0,232, 0,164,168, 0, 0, 0, 0, 0,162, 0,258, 0, 12, 16,178, 0, + 0, 0,136,268, 0,182, 0, 0,152,146, 0,188,288,138, 0, 0, 0,292, + 140, 0,204,206, 0,134,148, 0,156,160, 0, 0, 0, 0,184, 0,194, 0, + 202, 0,124, 0,208, 0,224,156, 0,164,168, 0, 0, 0, 0, 0,162, 0, + 258, 0, 12, 16,178, 0, 0,226, 0,182,268, 0,228, 0,146, 0,152, 0, + 0,188,288, 0, 0, 0,202, 28, 0, 0, 0,236,204, 0, 0,206, 0, 0, + 160, 0, 0, 0, 0,184, 0,194,292, 0, 0,124,148,208, 0,164,168, 0, + 0, 0, 0, 0,162, 0,258, 0, 12, 16,178, 0, 0, 0,136,268, 0,182, + 0, 0,152,146, 0,188,288,138, 0, 0, 0,292,140, 0,204,206, 0,134, + 148, 0,208,174, 0,156,160, 0, 0, 0, 0,184,132, 0,194, 0,202, 0, + 124, 0, 0, 0,264, 0,224,156, 0,164,168, 0, 0, 0, 0, 0,162, 0, + 258, 0, 12, 16,178, 0, 0,226, 0,182,268, 0,228, 0,146, 0,152, 0, + 0,188,288, 0, 0, 0,166,292, 0,202, 28, 0, 0, 0,236,204, 0, 0, + 206, 0, 0,160, 0, 0, 0, 0,184, 0,194, 20, 0, 0, 0,124,148,208, + 0, 41, 34, 0, 39, 0,234, 0,234, 0,152,148, 0,164,168, 0, 0, 0, + 0, 0,162, 0,258, 0, 12, 16,178, 0, 0, 0,182,268, 0,152,146, 0, + 188,288, 0, 0, 0,204,206, 0,156,160, 0, 0, 0, 0,184, 0,194,292, + 202, 0,124,148,208, 0,156, 66, 0,164,168, 0, 0, 0, 0, 0,162, 0, + 258, 0, 12, 16,178, 0, 0, 0,136,268, 0,182, 0, 0,152,146, 0,188, + 288,138, 0, 0, 0,140, 0,292, 94, 0,204,206, 0,134,148, 0,208,174, + 0, 0,160, 0, 0, 0, 0,184, 0,194, 0,202, 0,124, 0, 0, 0, 41, + 34, 0, 39, 0,266, 0,266, 0, 16,148, 0,156,142, 0,164,168, 0, 0, + 0, 0, 0,162, 0,258, 0,178, 0,144, 0, 12, 16, 0, 0, 0, 0,182, + 268, 0,152,146, 0,188,288, 0, 0, 0,204,206, 0, 0,160, 0, 0, 0, + 0,184, 0,194,292,202, 0,124,148,208, 0,154, 0,150, 0,152, 0,240, + 238,242, 0,238, 0,148, 0, 41, 34, 0,164,168, 0, 0, 0, 0, 0,162, + 0,258, 0, 12, 16,178, 0, 0, 0,182,268, 0,152,146, 0,188,288, 0, + 0, 0,204,206, 0, 39, 0,156,160, 0, 0, 0, 0,184, 0,194,292,202, + 0,124,148,208, 0, 41, 34, 0,224,156, 0,164,168, 0, 0, 0, 0, 0, + 162, 0,258, 0, 12, 16,178, 0, 0,226, 0,182,268, 0,228, 0,146, 0, + 152, 0, 0,188,288, 0, 0, 0,166,292, 0,202, 28, 0, 0, 0,236,204, + 0, 0,206, 0, 39, 0, 0,160, 0, 0, 0, 0,184, 0,194, 20, 0, 0, + 0,124,148,208, 0, 16, 0 +}; + +static const unsigned short far ag_key_jmp[] = { + 0, 0, 0, 0, 16, 19, 0, 4, 0, 7, 0, 12, 9, 21, 0, 26, 31, 35, + 0, 15, 41, 0, 44, 46, 0, 62, 67, 0, 25, 0, 86, 91, 0, 0, 1, 2, + 7, 11, 19, 22, 52, 57, 28, 71, 75, 79, 30, 98,104,110, 0,118, 0, 0, + 0, 0, 0, 0, 0, 0,126, 0, 0, 0, 0, 0, 0,124, 59, 62, 65,129, + 0,131,134, 0,139, 0, 76, 0, 78, 0, 0, 73, 80, 0, 0,148, 0, 87, + 0, 89,153, 0,164,167, 0, 94, 0,173,177, 0,169, 99, 0,160, 97,102, + 180, 0,183, 0,110, 0,112, 0,114, 0,116, 0,186,190, 0,120, 0,142, + 91,156,105,118,123, 0,193, 0,132, 0, 0, 0, 0,134,137, 0,201,205, + 0,213,215, 0,145, 0,148, 0,150, 0,142,209,152, 0,139,197,154,219, + 226, 0,233,236, 0,164,242,247, 0,229,231,167, 0,259, 0,175,263, 0, + 251,255,177,266, 0,269,272, 0, 0,185, 0, 0, 0,191, 0,280,193, 0, + 275,195, 0,304,307, 0,201, 0, 0,292,297,300,204, 0, 0, 0,282,207, + 212, 0,326, 0, 0,218,328, 0,318,323,221, 0, 0, 0,228, 0,230, 0, + 232, 0,234, 0,236, 0,238, 0,240, 0,242, 0, 0, 0,246, 0,248, 0, + 250, 0,244,252, 0, 0, 0,257, 0,259, 0,332,261, 0,330,254,263, 0, + 338, 0,336,270, 0,334,272, 0,342, 0,344,346, 0,350, 0, 0,278,280, + 283, 0,364,368, 0,359,290,375, 0,353,293,380, 0,385,393,399, 0,301, + 403, 0, 0, 0,308, 0,310, 0,312,410, 0,314,414, 0, 0,432,434,436, + 441, 0,321, 0,448, 0, 0,317,418,422,429,326,328, 0,456, 0,338, 0, + 340, 0,452,342, 0,461, 0,469,471, 0,349, 0, 0,479,481, 0,352,474, + 354, 0,484,488, 0,362,493, 0,496,501, 0,368, 0,371,503,506, 0, 0, + 0,377, 0,379, 0,381, 0,120, 53, 56,122, 67, 83,125,158,171,180,188, + 198,214,312,315,224,266,275,285,297,305,331,344,358,365,373,383, 0,523, + 526, 0,413, 0,416, 0,519,418,528, 0,533,538,542, 0,424,548, 0,551, + 553, 0,569,574, 0,434, 0,593,598, 0,509,514,420,428,431,559,564,437, + 578,582,586,439,605,611,617, 0, 0, 0, 0,627,629, 0,631,634,638, 0, + 0, 0,644,468, 0,470,646, 0,674, 0,665,476, 0,663,478,677, 0,688, + 0, 0,683,485, 0,692, 0,491, 0,493, 0,495,697, 0,625,458,461,464, + 473,653,657,481,681,488,497,705,709, 0, 0, 0, 0,713,514,715,722,726, + 728,736, 0, 0, 0, 0, 0, 0, 0,739,525,528,741, 0,749,751, 0,753, + 756,760, 0, 0, 0,766,543, 0,545,768, 0,796, 0,787,551, 0,785,553, + 799, 0,808, 0, 0,803,560, 0,812, 0,566, 0,568, 0,570,817, 0,536, + 539,548,775,779,556,563,572,825,829, 0, 0, 0, 0,833,586, 0, 0, 0, + 0,835,592,837,841, 0, 0, 0, 0,843,600,845, 0, 0, 0, 0,849,607, + 851,862, 0,864, 0, 0, 0, 0,868,617,870,875,880,886, 0, 0, 0, 0, + 895,900, 0,630, 0,633, 0,890,627,892,635, 0,907, 0, 0, 0, 0,927, + 930, 0,647, 0,650, 0,923,652,932, 0,937,942,946, 0,658, 0,952,954, + 0,970,975, 0,667, 0,994,999, 0,1018,1025, 0,911,644,913,918,654, + 662,664,960,965,670,979,983,987,672,1006,1012,675, 0, 0, 0, 0, 0, + 1030, 0,699, 0,1033, 0,704, 0,706, 0,708, 0,1036,1040, 0,712, 0, + 715,1044, 0,1052,1056, 0,1068,1071, 0,723, 0,1028,696,702,710,717, + 720,1061,726,1075,1085,1091, 0, 0, 0, 0,1097,740,1099, 0, 0, 0, + 0,1106,1108, 0,750, 0,753, 0,1104,747,755, 0,1110, 0, 0, 0, 0, + 1121,763,1123, 0, 0, 0, 0,1130,770,1132, 0,1139,1144,1149,1155, 0, + 0, 0, 0,1159,782,1161, 0, 0, 0, 0,1163,789,1165,1167, 0, 0, 0, + 0,1192,1197, 0,1186,800, 0,1172,797,1174,1181,803,1202,1207, 0,1214, + 1219, 0,814, 0,817, 0,1211,819, 0,1240,1243, 0,824, 0,827, 0,1236, + 829,1245, 0,1250,1255,1259, 0,835, 0,1265,1267, 0,1283,1288, 0,844, + 0,1307,1312, 0,1331,1338, 0,1226,1231,831,839,841,1273,1278,847,1292, + 1296,1300,849,1319,1325,852, 0, 0,1341, 0,871, 0,1344, 0,876, 0, + 878, 0,880, 0,1347,1351, 0,884, 0,887,1355, 0,1363,1367, 0,1379, + 1382, 0,895, 0,874,882,889,892,1372,898,1386,1396,1402, 0,1408, 0, + 1413,1415, 0,912, 0,915, 0,917, 0,1417, 0,1424, 0,1431,1437, 0, + 1426,925,1443,1448, 0,1466,1469, 0,933, 0,936, 0,1462,938,1471, 0, + 1476,1481,1485, 0,944, 0,1491,1493, 0,1509,1514, 0,953, 0,1533,1538, + 0,1452,1457,940,948,950,1499,1504,956,1518,1522,1526,958,1545,1551,1557, + 0, 0, 0, 0,1570,1573,1577, 0, 0, 0,1583,984, 0,986, 0,1606, 0, + 1597,991, 0,1595,993,1609, 0,1618, 0, 0,1613,1000, 0,1622, 0,1006, + 0,1008, 0,1010,1627, 0,1565,977,1567,980,989,1585,1589,996,1003,1012, + 1635,1639, 0, 0, 0, 0,1648,1651,1655, 0, 0, 0,1661,1035, 0,1037, + 0,1684, 0,1675,1042, 0,1673,1044,1687, 0,1703,1707, 0,1711, 0, 0, + 1051,1054, 0,1715, 0,1060, 0,1062, 0,1064,1720, 0,1643,1028,1645, + 1031,1040,1663,1667,1047,1691,1693,1057,1066,1728,1732, 0,1739,1742,1746, + 0, 0, 0,1752,1088, 0,1090, 0,1775, 0,1766,1095, 0,1764,1097,1778, + 0,1787, 0, 0,1782,1104, 0,1791, 0,1110, 0,1112, 0,1114,1796, 0, + 1736,1084,1093,1754,1758,1100,1107,1116,1804,1808, 0, 0, 0, 0,1812, + 1130,1814, 0,1820, 0, 0, 0, 0, 0, 0, 0, 0, 0,1826,1828,1832, + 1145, 0,1834,1837, 0,1152, 0,1842, 0,1157, 0,1159, 0,1851,1854, 0, + 1163, 0,1166, 0,1161,1847,1168,1856,1861, 0, 0, 0,1866,1176, 0,1868, + 1872, 0,1880, 0,1184, 0,1181,1876,1186, 0,1178,1188,1884, 0,1889, + 1893, 0,1887,1196, 0,1906, 0,1202, 0,1898,1902,1204,1910, 0,1913, + 1916, 0,1211, 0, 0, 0,1216, 0,1218, 0,1919,1220, 0,1933,1936, 0, + 1225, 0, 0,1924,1929,1228, 0,1231, 0, 0,1944,1946, 0,1941,1238, 0, + 0, 0,1244, 0,1246, 0,1248, 0,1250, 0,1252, 0,1254, 0,1256, 0, + 1258, 0, 0, 0,1262, 0,1264, 0,1266, 0,1260,1268, 0, 0, 0,1273, + 0,1275, 0,1277, 0,1270,1279, 0,1950, 0,1284, 0,1948,1286, 0,1957, + 0, 0,1954,1291, 0,1960,1965, 0,1297, 0,1970,1978, 0,1302,1982, 0, + 0, 0,1308, 0,1310, 0,1312, 0,1314,1989, 0, 0,1316,1993, 0,2000, + 0,1323, 0,1325, 0,1327, 0, 0,2005,2009,2014, 0,2018,2022, 0,1336, + 0,2027,2032, 0,1341, 0,1344,2034, 0, 0, 0,1349, 0,1351, 0,1353, + 0,1822,1139,1142,1824,1147,1155,1170,1192,1199,1206,1214,1222,1235,1241, + 1281,1288,1293,1300,1305,1320,1329,1332,1339,1346,1355, 0, 0, 0, 0, + 0, 0, 0,2037,1383,1386,2039, 0, 0, 0, 0, 0, 0,2043,2045,2049, + 1397, 0,2051,2054, 0,1404, 0,2059, 0,1409, 0,1411, 0,2068,2071, 0, + 1415, 0,1418, 0,1413,2064,1420,2073, 0, 0, 0,2078,1427, 0,2080,2084, + 0,2092, 0,1435, 0,1432,2088,1437, 0,1429,1439,2096, 0,2101,2105, + 0,2099,1447, 0,2118, 0,1453, 0,2110,2114,1455,2122, 0,2125,2128, + 0,1462, 0, 0, 0,1467, 0,1469, 0,2131,1471, 0,2145,2148, 0,1476, + 0, 0,2136,2141,1479, 0,1482, 0, 0,2156,2158, 0,2153,1489, 0, 0, + 0,1495, 0,1497, 0,1499, 0,1501, 0,1503, 0,1505, 0,1507, 0,1509, + 0, 0, 0,1513, 0,1515, 0,1517, 0,1511,1519, 0, 0, 0,1524, 0, + 1526, 0,1528, 0,1521,1530, 0,2162, 0,1535, 0,2160,1537, 0,2169, 0, + 0,2166,1542, 0,2172,2177, 0,1548, 0,2182,2190, 0,1553,2194, 0, 0, + 0,1559, 0,1561, 0,1563, 0,1565,2201, 0, 0,1567,2205, 0,2212, 0, + 1574, 0,1576, 0,1578, 0, 0,2217,2221,2226, 0,2230,2234, 0,1587, 0, + 2239,2244, 0,1592, 0,1595,2246, 0, 0, 0,1600, 0,1602, 0,1604, 0, + 1394,2041,1399,1407,1422,1443,1450,1457,1465,1473,1486,1492,1532,1539, + 1544,1551,1556,1571,1580,1583,1590,1597,1606, 0,2249, 0,2266,2269, 0, + 1634, 0,1637, 0,2262,1639,2271, 0,2276,2281,2285, 0,1645, 0,2291, + 2293, 0,2309,2314, 0,1654, 0,2333,2338, 0,2351,2356, 0,2252,2257, + 1641,1649,1651,2299,2304,1657,2318,2322,2326,1659,2345,1662,2360, 0,2368, + 2372, 0,2391,2394, 0,1684, 0,1687, 0,2387,1689,2396, 0,2401,2406, + 2410, 0,1695, 0,2416,2418, 0,2434,2439, 0,1704, 0,2458,2463, 0,2482, + 2487, 0,1712, 0,1715, 0,2377,2382,1691,1699,1701,2424,2429,1707,2443, + 2447,2451,1709,2470,2476,1717, 0, 0, 0, 0,2489,1735,2491, 0,2496, + 0, 0, 0, 0,2501,1744,2503,2511, 0, 0, 0, 0,2525,2528,2532, 0, + 0, 0,2538,1759, 0,1761, 0,2557,2562, 0,2576, 0,2567,1769, 0,2565, + 1771,2579, 0,2583,2585, 0,2593, 0, 0,2588,1781, 0,2597, 0,1787, 0, + 1789, 0,1791,2602, 0,2513,1752,2515,2518,1755,1764,2540,2546,2551,2555, + 1766,1774,1778,1784,1793,2610,2614, 0,2618, 0,2623,2631, 0, 0, 0, + 0,2649,2652, 0,1822, 0,1825, 0,2645,1827,2654, 0,2659,2664,2668, + 0,1833, 0,2674,2676, 0,2692,2697, 0,1842, 0,2716,2721, 0,2633,1819, + 2635,2640,1829,1837,1839,2682,2687,1845,2701,2705,2709,1847,2728,2734, + 2740, 0,2748,2750, 0,2760,2764, 0,2768, 0,2775, 0, 0, 0, 0,2789, + 2796, 0,2806,2812, 0,2781,1878,2783,1881,2801,1884,2818,2823, 0,2829, + 2835, 0,2840, 0, 0, 0, 0, 0, 0, 0,2846,2848,2852, 0,2854,2857, + 0,1911, 0,2866,2869, 0,1916, 0,1919, 0,2862,1921,2871, 0,2876,2881, + 2885, 0,1927,2891, 0,2896,2900, 0,2894,1934, 0,2909, 0,1940, 0,2905, + 1942,2913, 0,2916,2919, 0,1948, 0,2937, 0, 0,2928,2933,1953, 0,1956, + 0, 0,2943,2946, 0,2955, 0,2952,1966, 0,2958,2963, 0,1971, 0,2968, + 2976, 0,1976,2980, 0,2993,2997, 0,3002,3007, 0,1985, 0,1988,3009, + 0,2842,1901,1904,2844,1907,1914,1923,1931,1937,1944,1951,2922,1960,1963, + 2949,1968,1974,1979,2987,1982,1990, 0, 0, 0, 0, 0, 0, 0,3016,3020, + 0,3022,3025, 0,2024, 0,3034,3037, 0,2029, 0,2032, 0,3030,2034,3039, + 0,3044,3049,3053, 0,2040, 0,3061,3065, 0,3059,2046, 0,3070,3074, + 3076, 0,3079,3082, 0,2056, 0,3100, 0, 0,3091,3096,2061, 0,2064, 0, + 0,3106,3109, 0,3118, 0,3115,2074, 0,3128,3133, 0,3146,3150, 0,3155, + 3160, 0,2085, 0,2088,3162, 0,3012,2015,2018,3014,2021,2027,2036,2044, + 2049,2052,2059,3085,2068,2071,3112,2076,3121,2079,3140,2082,2090, 0, 0, + 0, 0,3167,3169, 0,3182,3185, 0,2121, 0,2124, 0,3178,2126,3187, 0, + 3192,3197,3201, 0,2132,3207, 0,3210,3212, 0,3222, 0,2142, 0,3218, + 2144, 0,3231,3236, 0,2149, 0,3251,3256, 0,2154, 0,3261,3269, 0,2159, + 3273, 0,3165,2115,2118,3173,2128,2136,2139,2146,3226,2152,3240,3244,3247, + 2157,2162,3280,3286,3292, 0, 0, 0, 0, 0, 0, 0,3304,3308, 0,3310, + 3313, 0,2193, 0,3322,3325, 0,2198, 0,2201, 0,3318,2203,3327, 0, 0, + 0,2209, 0,3332,3337,3341, 0,2211,2213, 0,3349,3353, 0,3347,2220, + 0,3358,3362,3364, 0,3367,3370, 0,2230, 0, 0, 0,2235, 0,2237, 0, + 3373,2239, 0,3387, 0, 0,3378,3383,2244, 0,2247, 0, 0,3393,3396, 0, + 0, 0,2257, 0,2259, 0,2261, 0,2263, 0,2265, 0,2267, 0,2269, 0, + 2271, 0, 0, 0,2275, 0,2277, 0,2279, 0,2273,2281, 0, 0, 0,2286, + 0,2288, 0,2290, 0,2283,2292, 0,3405, 0,3402,2297, 0,3415,3420, 0, + 0, 0,2305, 0,2307, 0,2309, 0,2311,3427, 0,2313, 0,3431,3435, 0, + 3440,3445, 0,2321, 0,2324,3447, 0, 0, 0,2329, 0,2331, 0,2333, 0, + 3300,2184,2187,3302,2190,2196,2205,2217,2223,2226,2233,2241,2251,2254, + 2294,3399,2299,3408,2302,2316,2318,2326,2335, 0, 0, 0, 0, 0, 0, 0, + 3454,3458, 0,3460,3463, 0,2370, 0,3472,3475, 0,2375, 0,2378, 0,3468, + 2380,3477, 0, 0, 0,2386, 0,3482,3487,3491, 0,2388,2390, 0,3499,3503, + 0,3497,2397, 0,3508,3512,3514, 0,3517,3520, 0,2407, 0, 0, 0,2412, + 0,2414, 0,3523,2416, 0,3537, 0, 0,3528,3533,2421, 0,2424, 0, 0, + 3543,3546, 0, 0, 0,2434, 0,2436, 0,2438, 0,2440, 0,2442, 0,2444, + 0,2446, 0,2448, 0, 0, 0,2452, 0,2454, 0,2456, 0,2450,2458, 0, + 0, 0,2463, 0,2465, 0,2467, 0,2460,2469, 0,3555, 0,3552,2474, 0, + 3565,3570, 0, 0, 0,2482, 0,2484, 0,2486, 0,2488,3577, 0,2490, 0, + 3581,3585, 0,3590,3595, 0,2498, 0,2501,3597, 0, 0, 0,2506, 0,2508, + 0,2510, 0,3450,2361,2364,3452,2367,2373,2382,2394,2400,2403,2410,2418, + 2428,2431,2471,3549,2476,3558,2479,2493,2495,2503,2512, 0, 0, 0, 0, + 3602,3606, 0,3608,3611, 0,2544, 0,3620,3623, 0,2549, 0,2552, 0,3616, + 2554,3625, 0, 0, 0,2560, 0,3630,3635,3639, 0,2562,2564, 0,3647,3651, + 0,3645,2571, 0,3656,3660,3662, 0,3665,3668, 0,2581, 0, 0, 0,2586, + 0,2588, 0,3671,2590, 0,3685, 0, 0,3676,3681,2595, 0,2598, 0, 0, + 3691,3694, 0, 0, 0,2608, 0,2610, 0,2612, 0,2614, 0,2616, 0,2618, + 0,2620, 0,2622, 0, 0, 0,2626, 0,2628, 0,2630, 0,2624,2632, 0, + 0, 0,2637, 0,2639, 0,2641, 0,2634,2643, 0,3703, 0,3700,2648, 0, + 3713,3718, 0, 0, 0,2656, 0,2658, 0,2660, 0,2662,3725, 0,2664, 0, + 3729,3733, 0,3738,3743, 0,2672, 0,2675,3745, 0, 0, 0,2680, 0,2682, + 0,2684, 0,2538,3600,2541,2547,2556,2568,2574,2577,2584,2592,2602,2605, + 2645,3697,2650,3706,2653,2667,2669,2677,2686, 0, 0, 0, 0,3750,3754, + 0,3756,3759, 0,2716, 0,3768,3771, 0,2721, 0,2724, 0,3764,2726,3773, + 0, 0, 0,2732, 0,3778,3783,3787, 0,2734,2736, 0,3795,3799, 0,3793, + 2743, 0,3804,3808,3810, 0,3813,3816, 0,2753, 0, 0, 0,2758, 0,2760, + 0,3819,2762, 0,3833, 0, 0,3824,3829,2767, 0,2770, 0, 0,3839,3842, + 0, 0, 0,2780, 0,2782, 0,2784, 0,2786, 0,2788, 0,2790, 0,2792, + 0,2794, 0, 0, 0,2798, 0,2800, 0,2802, 0,2796,2804, 0, 0, 0, + 2809, 0,2811, 0,2813, 0,2806,2815, 0,3851, 0,3848,2820, 0,3861,3866, + 0, 0, 0,2828, 0,2830, 0,2832, 0,2834,3873, 0,2836, 0,3877,3881, + 0,3886,3891, 0,2844, 0,2847,3893, 0, 0, 0,2852, 0,2854, 0,2856, + 0,2710,3748,2713,2719,2728,2740,2746,2749,2756,2764,2774,2777,2817,3845, + 2822,3854,2825,2839,2841,2849,2858, 0, 0, 0, 0,3898,3900, 0,3902, + 3905,3909, 0, 0, 0,3915,2892, 0,2894,3917, 0,3958, 0,3949,2900, 0, + 3947,2902,3961, 0,3965,3967, 0,3977,3981, 0,3985, 0, 0,2912,2915, + 0,3989, 0,2921, 0,2923, 0,2925,3994, 0,3896,2882,2885,2888,2897, + 3924,3930,3937,3941,2905,2909,3970,2918,2927,4002,4006, 0, 0, 0, 0, + 4018, 0,2950, 0,2952, 0,2954, 0,4010,2947,4012,4016,2956, 0,4027, + 0,2964, 0,2966, 0,2968, 0,4023,2970, 0, 0, 0, 0,4034,4038, 0, + 4040,4043, 0,2981, 0,4052,4055, 0,2986, 0,2989, 0,4048,2991,4057, + 0,4062,4067,4071, 0,2997, 0,4079,4083, 0,4077,3003, 0,4088,4092, + 4094, 0,4097,4100, 0,3013, 0,4118, 0, 0,4109,4114,3018, 0,3021, 0, + 0,4124,4127, 0,4136, 0,4133,3031, 0,4146,4151, 0,4164,4168, 0,4173, + 4178, 0,3042, 0,3045,4180, 0,2975,4032,2978,2984,2993,3001,3006,3009, + 3016,4103,3025,3028,4130,3033,4139,3036,4158,3039,3047, 0, 0, 0,3070, + 0,3072, 0, 0, 0,3076, 0,3078, 0,3080, 0, 0, 0,3084, 0,3086, + 0,3088, 0,3090, 0,3092, 0,3094, 0,3096, 0,3098, 0, 0, 0,3102, + 0,3104, 0,3106, 0,3100,3108, 0, 0, 0,3113, 0,3115, 0,3117, 0, + 3110,3119, 0, 0, 0,3124, 0,3126, 0,3128, 0,3130, 0,3132, 0, 0, + 0,3136, 0,3138, 0,3140, 0,3074,4183,3082,4187,3121,3134,3142, 0, + 0, 0, 0,4196,4199,4203, 0, 0, 0,4209,3159, 0,3161, 0,4240, 0, + 4231,3166, 0,4229,3168,4243, 0,4252, 0, 0,4247,3175, 0,4256, 0,3181, + 0,3183, 0,3185,4261, 0,4191,3152,4193,3155,3164,4211,4215,4219,4223, + 3171,3178,3187,4269,4273, 0, 0, 0, 0,4277,3205,4279, 0, 0, 0, 0, + 4283,3212,4285, 0,4295, 0,4305,4311, 0, 0, 0, 0,4322,4325,4329, 0, + 0, 0,4335,3231, 0,3233, 0,4364, 0,4355,3238, 0,4353,3240,4367, 0, + 4379, 0, 0,4374,3247, 0,4383, 0,3253, 0,3255, 0,3257,4388, 0,4317, + 3224,4319,3227,3236,4337,4343,4347,3243,4371,3250,3259,4396,4400, 0,4407, + 4410,4414, 0, 0, 0,4420,3281, 0,3283, 0,4449, 0,4440,3288, 0,4438, + 3290,4452, 0,4464, 0, 0,4459,3297, 0,4468, 0,3303, 0,3305, 0,3307, + 4473, 0,4404,3277,3286,4422,4428,4432,3293,4456,3300,3309,4481,4485, 0, + 4489, 0, 0, 0, 0,4491,3327,4493, 0,4495, 0, 0, 0, 0,4499,4503, + 0,4505, 0,3342, 0,3344, 0,3346, 0,4511,4515, 0,3350,4519, 0,4508, + 3353,4522,4530, 0, 0, 0,4536,3361, 0,3363,4538,4542, 0,4547,4549, + 0,4566,4569, 0,3373,4573, 0,4578,4583, 0,4598, 0,4589,3382, 0,4587, + 3384,4601, 0,4626,4630, 0,4634, 0, 0,3391,3394, 0,4638, 0,3400, 0, + 3402, 0,3404,4643, 0, 0,4656, 0,4651,3409, 0,4497,3336,3339,3348, + 3356,3366,3370,4555,4562,3376,4575,3379,3387,4605,4609,4616,3397,3406, + 3412,4658, 0,4667, 0,3436, 0,3438, 0,3440, 0,4670,4674, 0,3444, 0, + 3447,4678, 0,4686,4690, 0,4702,4705, 0,3455, 0,4662,3442,3449,3452, + 4695,3458,4709,4719,4725, 0,4744,4750, 0,4731,4739,3470,4756, 0,4761, + 0, 0, 0, 0,4763,3480,4765,4768, 0,4772,4775, 0,4779, 0,4781,4784, + 4788,4795, 0,4802, 0,4824,4827, 0,3500, 0,3503, 0,4820,3505,4829, + 0,4834,4839,4843, 0,3511, 0,4849,4851, 0,4862,4865, 0,3520, 0,4874, + 4879, 0,3525, 0,4898,4903, 0,4922,4927, 0,3533, 0,3536, 0,4810,4815, + 3507,3515,3517,4857,3523,4868,3528,4883,4887,4891,3530,4910,4916,3538, + 0,4929, 0,4949,4952, 0,3559, 0,3562, 0,4945,3564,4954, 0,4959,4964, + 4968, 0,3570, 0,4976,4980, 0,4974,3576, 0,4995,5000,5004, 0,3582, + 0,5026,5031, 0,5044,5048, 0,4935,4940,3566,3574,3579,4985,4990,3586, + 5011,5015,5019,3588,5038,3591,5053, 0,5067, 0,3610, 0,3612, 0,3614, + 0,5061,5065,3616, 0, 0, 0, 0, 0, 0, 0,3622,5072,5074,3625,5081, + 5085, 0,5088,5092, 0,5103,5106, 0,3638, 0,3641, 0,5099,3643,5108, + 0,5113,5118,5122, 0,3649, 0,5130,5134, 0,5128,3655, 0,5139,5143, + 0,5145,5148, 0,3664, 0,5157,5162,5166, 0,3669, 0,5180, 0,5177,3675, + 0,5190,5195, 0,5208,5212, 0,5217,5224, 0,3635,5094,3645,3653,3658, + 3661,3667,5151,3673,5173,3677,5183,3680,5202,3683,3686, 0,5227,5234, 0, + 0, 0, 0,5241,3709,5243,5247, 0, 0, 0, 0,5254,5257,5261, 0, 0, + 0,5267,3724, 0,3726, 0,5299, 0,5290,3731, 0,5288,3733,5302, 0,5315, + 0, 0,5306,5311,3740, 0,5319, 0,3747, 0,3749, 0,3751,5324, 0,5249, + 3717,5251,3720,3729,5269,5278,5282,3736,3743,3753,5332,5336, 0,5340,5349, + 0, 0, 0, 0,5354,3773,5356,5361, 0,5365, 0,5369, 0, 0, 0, 0, + 5374,5376, 0,5372,3785,3788, 0, 0, 0, 0,5379,3795,5381, 0,5384, 0, + 5387,5389, 0,5402,5405, 0,3807, 0,3810, 0,5398,3812,5407, 0,5412, + 5417,5421, 0,3818,5427, 0,5430,5432, 0,5438,5442, 0,5453,5458, 0, + 3831, 0,5470,5475, 0,3836, 0,5480,5485, 0,3804,5393,3814,3822,3825, + 3828,5448,3834,5462,5466,3839,3841,5492,5498,5504, 0, 0, 0, 0, 0, + 0, 0,5516,5518,5522, 0, 0,5524,5527, 0,3871, 0,5536,5539, 0,3876, + 0,3879, 0,5532,3881,5541, 0, 0, 0,3887, 0,5546,5551,5555, 0,3889, + 3891,5561, 0,5566,5570, 0,5564,3899, 0,5579, 0,3905, 0,5575,3907, + 5583, 0,5586,5589, 0,3913, 0, 0, 0,3918, 0,3920, 0,5592,3922, 0, + 5606, 0, 0,5597,5602,3927, 0,3930, 0, 0,5612,5615, 0, 0, 0,3940, + 0,3942, 0,3944, 0,3946, 0,3948, 0,3950, 0,3952, 0,3954, 0, 0, + 0,3958, 0,3960, 0,3962, 0,3956,3964, 0, 0, 0,3969, 0,3971, 0, + 3973, 0,3966,3975, 0,5624, 0,5621,3980, 0,5627,5632, 0,3985, 0,5637, + 5645, 0,3990,5649, 0, 0, 0,3996, 0,3998, 0,4000, 0,4002,5656, 0, + 4004, 0,5660,5664, 0,5675,5680, 0,4012, 0,4015,5682, 0, 0, 0,4020, + 0,4022, 0,4024, 0,5512,3860,3863,5514,3866,3874,3883,3895,3902,3909, + 3916,3924,3934,3937,3977,5618,3982,3988,3993,4007,4009,5669,4017,4026, + 0, 0, 0, 0,5687,5689,5691, 0,5693,5696,5700, 0, 0, 0,5706,4064, + 0,4066, 0,5729, 0,5720,4071, 0,5718,4073,5732, 0,5748, 0, 0,5740, + 5745,4080, 0,5752, 0,4087, 0,4089, 0,4091,5757, 0,5685,4053,4056, + 4060,4069,5708,5712,4076,5736,4083,4093,5765,5769, 0,5776,5779,5783, 0, + 0, 0,5789,4114, 0,4116, 0,5812, 0,5803,4121, 0,5801,4123,5815, 0, + 5828, 0, 0,5823,4130, 0,5832, 0,4136, 0,4138, 0,4140,5837, 0,5773, + 4110,4119,5791,5795,4126,5819,4133,4142,5845,5849, 0,5867,5870, 0,4157, + 0,4160, 0,5863,4162,5872, 0,5877,5882,5886, 0,4168, 0,5894,5898, + 0,5892,4174, 0,5903,5907, 0,5909,5912, 0,4183, 0,5921,5926,5930, + 0,4188, 0,5941,5944, 0,5955,5960, 0,5973,5977, 0,5982,5987, 0,4203, + 0,4206,5989, 0,5853,5858,4164,4172,4177,4180,4186,5915,4192,5937,4194, + 5948,4197,5967,4200,4208, 0,6006,6009, 0,4228, 0,4231, 0,6002,4233, + 6011, 0,6016,6021,6025, 0,4239, 0,6031,6033, 0,6044,6047, 0,4248, + 0,6056,6061, 0,4253, 0,6080,6085, 0,5992,5997,4235,4243,4245,6039, + 4251,6050,4256,6065,6069,6073,4258,6092,6098,6104, 0,6112,6118,6127, 0, + 6132,6139,6143, 0, 0, 0, 0,6147,4286,6149,6152, 0,6158,6161, 0, 0, + 0, 0,6167,4297,6169, 0,6173, 0,6177,6179, 0,4306, 0,6182,6189,6191, + 0, 0, 0, 0,6197,6199,6201, 0,6203,6206,6210, 0, 0, 0,6216,4326, + 0,4328, 0,6239, 0,6230,4333, 0,6228,4335,6242, 0,6254, 0, 0,6246, + 6251,4342, 0,6258, 0,4349, 0,4351, 0,4353,6263, 0,6195,4315,4318, + 4322,4331,6218,6222,4338,4345,4355,6271,6275, 0,6279,6281,6283, 0,6285, + 6288,6292, 0, 0, 0,6298,4379, 0,4381, 0,6321, 0,6312,4386, 0,6310, + 4388,6324, 0,6336, 0, 0,6328,6333,4395, 0,6340, 0,4402, 0,4404, 0, + 4406,6345, 0,4371,4375,4384,6300,6304,4391,4398,4408,6353,6357, 0,6361, + 6364, 0, 0, 0, 0,6366,4425,6368, 0,6374, 0,4432, 0,4434, 0,4436, + 0,6382, 0,4440, 0,6379,4442, 0,6391, 0,4447, 0,4449, 0,6399, 0, + 4453, 0,4455, 0,6411, 0,4459, 0,4461, 0,4463, 0,4438,4444,6386,4451, + 6395,4457,6403,4465,6416, 0,6423,6426,6429, 0,6439, 0, 0, 0, 0,6445, + 4483,6447, 0,6451, 0, 0, 0, 0,6455,4492,6457, 0, 0, 0, 0,6460, + 4499,6462,6465,6470,6476, 0,6482, 0,6510,6515, 0,6504,4511, 0,6492, + 6499,4514,6520,6525, 0,6529,6532,6535,6538,6543, 0, 0, 0, 0, 0, 0, + 0,6550,6554,6556, 0,6558,6561, 0,4539, 0,6570,6573, 0,4544, 0,4547, + 0,6566,4549,6575, 0, 0, 0,4555, 0,6589, 0,4559, 0,6580,6585,4561, + 0,4557,4563, 0,6595,6599, 0,6593,4570, 0,6604,6608,6610, 0,6613, + 6616, 0,4580, 0, 0, 0,4585, 0,4587, 0,6619,4589, 0,6633, 0, 0, + 6624,6629,4594, 0,4597, 0, 0,6639,6642, 0, 0, 0,4607, 0,4609, 0, + 4611, 0,4613, 0,4615, 0,4617, 0,4619, 0,4621, 0, 0, 0,4625, 0, + 4627, 0,4629, 0,4623,4631, 0, 0, 0,4636, 0,4638, 0,4640, 0,4633, + 4642, 0,6651, 0,6648,4647, 0,6661,6666, 0, 0, 0,4655, 0,4657, 0, + 4659, 0,4661,6673, 0,4663, 0,6677,6681, 0,6686,6691, 0,4671, 0,4674, + 6693, 0, 0, 0,4679, 0,4681, 0,4683, 0,6546,4529,4532,6548,4535,4542, + 4551,4567,4573,4576,4583,4591,4601,4604,4644,6645,4649,6654,4652,4666, + 4668,4676,4685, 0, 0, 0, 0,6698,6700,6704, 0,6715,6718, 0,4718, 0, + 4721, 0,6711,4723,6720, 0,6725,6730,6734, 0,4729,6740, 0,6745,6749, + 0,6743,4736, 0,6758, 0,4742, 0,6754,4744, 0,6762,6765, 0,4749, 0, + 6774,6779,6783, 0,4754, 0,6800, 0, 0,6797,4760, 0,6803,6808, 0,4766, + 0,6813,6821, 0,4771,6825, 0,6838,6842, 0,6847,6852, 0,4780, 0,4783, + 6854, 0,6696,4711,4714,6706,4725,4733,4739,4746,4752,6768,4758,6790,6794, + 4762,4769,4774,6832,4777,4785, 0, 0, 0, 0,6857,4808,6859, 0,6861, + 0,6877,6880, 0,4817, 0,4820, 0,6873,4822,6882, 0,6887,6892,6896, + 0,4828, 0,6902,6904, 0,6926,6931, 0,4837, 0,6950,6955, 0,6863,6868, + 4824,4832,4834,6910,6915,6920,4840,6935,6939,6943,4842,6962,6968,6974, + 0,6996,6999, 0,4862, 0,4865, 0,6992,4867,7001, 0,7006,7011,7015, + 0,4873, 0,7023,7027, 0,7021,4879, 0,7032,7036, 0,7038,7041, 0,4888, + 0,7050,7055,7059, 0,4893, 0,7070,7073, 0,7084,7089, 0,7102,7106, + 0,7111,7118, 0,6982,6987,4869,4877,4882,4885,4891,7044,4897,7066,4899, + 7077,4902,7096,4905,4908, 0,7124,7127,7131, 0, 0, 0,7137,4932, 0, + 4934, 0,7160, 0,7151,4939, 0,7149,4941,7163, 0,7167,7171, 0,7175, + 0, 0,4948,4951, 0,7179, 0,4957, 0,4959, 0,4961,7184, 0,7121,4928, + 4937,7139,7143,4944,4954,4963,7192,7196, 0,7200, 0,7204, 0,7221,7224, + 0,4981, 0,4984, 0,7217,4986,7226, 0,7231,7236,7240, 0,4992, 0,7248, + 7252, 0,7246,4998, 0,7267,7272,7276, 0,5004, 0,7298,7303, 0,7316, + 7320, 0,7325,7332, 0,7207,7212,4988,4996,5001,7257,7262,5008,7283,7287, + 7291,5010,7310,5013,5016, 0, 0, 0, 0,7335,5035,7337, 0,7344, 0,7351, + 7353, 0,7366,7369, 0,5047, 0,5050, 0,7362,5052,7371, 0,7376,7381, + 7385, 0,5058,7391, 0,7394,7396, 0,7406, 0,5068, 0,7402,5070, 0,7415, + 7420, 0,5075, 0,7435,7440, 0,5080, 0,7445,7453, 0,5085,7457, 0,5044, + 7357,5054,5062,5065,5072,7410,5078,7424,7428,7431,5083,5088,7464,7470, + 7476, 0,7484,7487,7490,7497, 0,7507, 0,7524,7527, 0,5115, 0,5118, + 0,7520,5120,7529, 0,7534,7539,7543, 0,5126, 0,7551,7555, 0,7549, + 5132, 0,7560,7564, 0,7571,7576,7580, 0,5141, 0,7591,7594, 0,7605, + 7610, 0,7623,7627, 0,7510,7515,5122,5130,5135,5138,7566,5145,7587,5147, + 7598,5150,7617,5153,7632, 0,7640,7642, 0,7655,7658, 0,5175, 0,5178, + 0,7651,5180,7660, 0,7665,7670,7674, 0,5186,7680, 0,7683,7685, 0, + 7695, 0,5196, 0,7691,5198, 0,7704,7709, 0,5203, 0,7721,7726, 0,5208, + 0,7731,7739, 0,5213,7743, 0,5172,7646,5182,5190,5193,5200,7699,5206, + 7713,7717,5211,5216,7750,7756,7762, 0,7784,7787, 0,5235, 0,5238, 0, + 7780,5240,7789, 0,7794,7799,7803, 0,5246, 0,7811,7815, 0,7809,5252, + 0,7820,7824, 0,7837,7842,7846, 0,5261, 0,7857,7860, 0,7871,7876, + 0,7889,7893, 0,7898,7905, 0,7770,7775,5242,5250,5255,5258,7826,7831, + 5265,7853,5267,7864,5270,7883,5273,5276, 0,7908, 0,7913,7915, 0,7928, + 7931, 0,5301, 0,5304, 0,7924,5306,7933, 0,7938,7943,7947, 0,5312, + 7953, 0,7956,7958, 0,7968, 0,5322, 0,7964,5324, 0,7977,7982, 0,5329, + 0, 0,7993, 0,7996,8001, 0,5337, 0,8006,8014, 0,5342,8018, 0,5298, + 7919,5308,5316,5319,5326,7972,5332,7986,7990,5334,5340,5345,8025,8031, + 8037, 0, 0, 0, 0,8045,5365,8047, 0,8051, 0,8055,8060, 0,8080,8083, + 0,5377, 0,5380, 0,8076,5382,8085, 0,8090,8095,8099, 0,5388, 0,8105, + 8107, 0,8113,8117, 0,8124,8129, 0,5400, 0,8148,8153, 0,8066,8071, + 5384,5392,5394,5397,8119,5403,8133,8137,8141,5405,8160,8166,8172, 0,8180, + 8184, 0,8195,8198, 0,5427, 0,5430, 0,8191,5432,8200, 0,8205,8210, + 8214, 0,5438, 0,8222,8226, 0,8220,5444, 0,8231,8235, 0,8242,8247, + 8251, 0,5453, 0,8265, 0,8262,5459, 0,8275,8280, 0,8293,8297, 0,8302, + 8309, 0,5424,8186,5434,5442,5447,5450,8237,5457,8258,5461,8268,5464,8287, + 5467,5470, 0, 0, 0, 0,8312,5489,8314, 0,8320, 0,8326,8332, 0,8338, + 8342, 0,8353,8356, 0,5504, 0,5507, 0,8349,5509,8358, 0,8372, 0,5515, + 0,8363,8368,5517, 0,5519, 0,8376,8378, 0,8384,8388, 0,8395,8400, + 0,5531, 0,8419,8424, 0,5501,8344,5511,5523,5525,5528,8390,5534,8404, + 8408,8412,5536,8431,8437,8443, 0,8451, 0,8455, 0,8457, 0,8462,8469, + 8477, 0,8480, 0,8488, 0, 0, 0, 0,8510,8513, 0,5572, 0,5575, 0, + 8506,5577,8515, 0,8520,8525,8529, 0,5583, 0,8535,8537, 0,8543,8547, + 0,8554,8559, 0,5595, 0,8578,8583, 0,8494,5569,8496,8501,5579,5587, + 5589,5592,8549,5598,8563,8567,8571,5600,8590,8596,8602, 0, 0, 0, 0, + 8612,8614, 0,8627,8630, 0,5627, 0,5630, 0,8623,5632,8632, 0,8637, + 8642,8646, 0,5638,8652, 0,8655,8657, 0,8667, 0,5648, 0,8663,5650, + 0,8676,8681, 0,5655, 0, 0,8692, 0,8695,8700, 0,5663, 0,8705,8713, + 0,5668,8717, 0,8610,5621,5624,8618,5634,5642,5645,5652,8671,5658,8685, + 8689,5660,5666,5671,8724,8730,8736, 0,8744, 0 +}; + +static const unsigned short far ag_key_index[] = { + 33, 0, 51, 0, 0,385,442, 0, 51, 51, 0,500,517,531,575,589,595,603, + 610,615,620,637, 0,642,678,728,589, 0,743,642,757,728, 0,761,766,589, + 0,773,777,678,785,589,766,792,806,821,855,900, 0,910,919,900,921, 0, + 0,855,923, 0,921,910,928,961, 0,1015,1069,1119,1133,1137,1357,1389, + 1608,1632,589, 0,1665, 0,1681,589, 0,1665,1719,589, 0,589, 0,1738, + 1742,1747,1747,1796,1814,1816,1850,785,785,785,785,785,785,785,785,923, + 1868,923,1871, 0,1850,1850,923,1874,642,1876,1887,1896, 0,589,589, 0, + 589,589,589,589,589,1899,589,1993,589,2093,1993,2093,2093,2093,2093,589, + 2093,2093,2093,1993,2165,589, 0,2337,2514,2514, 0, 0, 0,1015,1015, + 2688,2860,2860,2930, 0,2958,2093,1119,2972,1119,2688,3050,3144,1871,3190, + 1871,1137,589, 0,1632,3208, 0,1719,615, 0,3215,3219,3221,3219, 0, 0, + 0,3219,1719,3262,3312,3325, 0, 0,1747,3330,1850,3334,3415,3460,785, + 3473, 0,615,3478,3473,1850, 0,3483,3488,589, 0, 0,3491,3493,1899, 0, + 2337,2337,2688,1119,3498,575,589, 0, 0,1119, 0,2093,2093,2093,2093, + 2093,2093,1015,1119, 0,1119,1119,1719, 0,1719, 0,3540, 0,961,589,3221, + 615,3557,589, 0,3594,961,961,3312,3618,589, 0,3628,3312,3312,3689, 0, + 3325,3706,923,1133, 0,3712, 0,615, 0,3756,3770,3334,3776,3781,3783, + 0,3791, 0,3798,3802,3798, 0,3802,589,3706, 0, 0,3844,2337, 0, 0, + 0,1119, 0, 0, 0, 0,4028,3144,3050,4096,4145, 0,4211,4211,4261,3557, + 4211,4278, 0,4282,4289,4289,4289,4294,4294,4294,3557,589, 0,3557,1119, + 4300,4304,4309,1015,4311,1119,4358,4358,4358,4358,4411,4422,3628,3262, + 3262,3312,4428,3557,4467, 0,4477, 0, 0,961,4481,4486,4486,4490,4481, + 4495,4502,3557,2165, 0,4509,3802,4467,4517,442,4523, 0, 0, 0,4687, + 1119, 0,4788,1719, 0,4811,4815,4845,4911, 0, 0,4278,3689,4966,4977, + 4979,589,589, 0,4966,3689,5019,2165,2165,2165,2165,2165,2165,5038,2165, + 2165,2165,2165,5042,5091, 0,5091, 0,4509,5108,5113,3706, 0,1850,961, + 1850,5156, 0,5219,589,589,589,589,589, 0,589, 0,3262,3312,5279,4282, + 4278,4966, 0,1119,3557,4278,5296, 0, 0,5348,5368,5372, 0,5374,4811, + 4815,5408,5219,5279,5473,1119, 0,3689,4278,5492,5496, 0, 0,5498,5348, + 2165,5539,5539, 0,5555,5557, 0,5559,4509,5113, 0,1850, 0,5561,5565, + 5567,5603,5603, 0,1850, 0,5408,5372, 0,5674,5674,4977,5348,5565,961, + 5693 +}; + +static const unsigned char far ag_key_ends[] = { +45,0, 76,84,69,82,0, 69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, +69,65,84,69,0, 76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, +79,80,0, 68,0, 69,67,85,84,69,0, 69,84,67,72,0, 82,65,78,84,0, +76,85,68,69,0, 69,82,84,0, 79,67,75,0, 80,69,78,0, +82,69,80,65,82,69,0, 86,79,75,69,0, 76,76,66,65,67,75,0, +69,76,69,67,84,0, 80,68,65,84,69,0, 72,69,78,69,86,69,82,0, 47,0, +45,0, 61,0, 68,0, 69,82,0, 71,0, 73,78,0, 87,69,69,78,0, +68,68,0, 83,67,65,68,69,0, 67,84,69,82,0, 67,75,0, 79,83,69,0, +85,77,78,0, 78,84,0, 84,0, 69,67,84,0, 78,85,69,0, 79,76,0, +78,84,0, 65,66,0, 69,78,84,0, 79,82,0, 65,83,69,0, 65,68,77,0, +77,65,76,0, 65,82,69,0, 69,84,69,0, 69,0, 84,79,82,0, +83,84,73,78,67,84,0, 79,80,0, 68,0, 82,0, 80,84,0, +85,83,73,86,69,0, 67,85,84,69,0, 83,84,83,0, 84,67,72,0, +79,65,84,0, 73,71,78,0, 78,68,0, 79,77,0, 78,84,0, 85,80,0, +86,73,78,71,0, 68,0, 77,69,68,73,65,84,69,76,89,0, 76,85,68,69,0, +69,88,0, 69,82,84,0, 69,82,0, 83,69,67,84,0, 73,83,0, 69,89,0, +78,71,84,72,0, 75,69,0, 76,0, 71,0, 88,0, 69,0, 84,0, 76,0, +82,73,67,0, 89,0, 78,0, 73,79,78,0, 69,82,0, 67,75,65,71,69,0, +80,65,82,69,0, 65,82,89,0, 73,76,69,71,69,83,0, 71,82,65,77,0, +66,76,73,67,0, 69,82,69,78,67,69,83,0, 84,82,73,67,84,0, +79,75,69,0, 76,76,66,65,67,75,0, 73,79,78,0, 69,67,84,0, +65,82,69,0, 65,76,76,73,78,84,0, 77,69,0, 65,0, 65,0, +82,82,79,82,0, 65,82,78,73,78,71,0, 83,84,82,0, 66,76,69,0, +84,65,77,80,0, 65,78,83,76,65,84,69,0, 78,0, 85,69,0, +68,65,84,69,0, 82,0, 78,71,0, 85,69,83,0, 67,72,65,82,0, +69,87,0, 69,86,69,82,0, 69,0, 84,72,0, 82,75,0, 76,84,69,82,0, +69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, +76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 79,80,0, 68,0, +69,67,85,84,69,0, 69,84,67,72,0, 82,65,78,84,0, 76,85,68,69,0, +69,82,84,0, 79,67,75,0, 80,69,78,0, 82,69,80,65,82,69,0, +86,79,75,69,0, 76,76,66,65,67,75,0, 69,76,69,67,84,0, +80,68,65,84,69,0, 72,69,78,69,86,69,82,0, 45,0, 76,0, 71,0, +65,82,0, 85,78,84,0, 82,82,69,78,84,0, 69,0, 83,84,73,78,67,84,0, +79,85,82,0, 69,78,71,84,72,0, 88,0, 82,79,83,69,67,79,78,68,0, +84,69,0, 78,84,72,0, 78,0, 67,79,78,68,0, 83,84,82,0, +84,65,77,80,0, 65,78,83,76,65,84,69,0, 83,69,82,0, 69,65,82,0, +45,0, 65,83,67,65,68,69,0, 82,79,77,0, 78,0, +69,83,84,82,73,67,84,0, 69,84,0, 45,0, 69,83,84,82,73,67,84,0, +76,0, 71,0, 65,82,0, 85,78,84,0, 82,82,69,78,84,0, 69,0, +83,84,73,78,67,84,0, 79,85,82,0, 69,78,71,84,72,0, 88,0, +82,79,83,69,67,79,78,68,0, 84,69,0, 78,84,72,0, 67,79,78,68,0, +83,84,82,0, 84,65,77,80,0, 65,78,83,76,65,84,69,0, 83,69,82,0, +69,65,82,0, 45,0, 45,0, 78,84,79,0, 78,0, 45,0, 78,76,89,0, +45,0, 77,77,69,68,73,65,84,69,76,89,0, 78,0, 82,79,77,0, 45,0, +78,68,69,88,0, 65,66,76,69,0, 78,73,81,85,69,0, 73,69,87,0, 45,0, +79,84,0, 82,82,79,82,0, 65,82,78,73,78,71,0, 78,84,79,0, 45,0, +76,84,69,82,0, 69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, +69,65,84,69,0, 76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 68,0, +69,67,85,84,69,0, 69,84,67,72,0, 82,65,78,84,0, 76,85,68,69,0, +69,82,84,0, 79,67,75,0, 80,69,78,0, 82,69,80,65,82,69,0, +86,79,75,69,0, 76,76,66,65,67,75,0, 69,76,69,67,84,0, +80,68,65,84,69,0, 69,78,69,86,69,82,0, 82,75,0, 45,0, 69,82,0, +68,68,0, 69,67,84,0, 82,79,76,0, 69,65,84,69,84,65,66,0, +65,68,77,0, 76,69,84,69,0, 88,69,67,85,84,69,0, 69,88,0, +69,82,84,0, 69,70,69,82,69,78,67,69,83,0, 69,76,69,67,84,0, +80,68,65,84,69,0, 45,0, 65,66,76,69,0, 45,0, 65,0, 65,0, +77,77,69,68,73,65,84,69,76,89,0, 45,0, 69,67,76,65,82,69,0, 45,0, +69,67,84,73,79,78,0, 78,68,69,88,0, 65,66,76,69,0, +78,73,81,85,69,0, 73,69,87,0, 45,0, 78,0, 45,0, 78,0, +65,66,76,69,0, 45,0, 79,82,69,73,71,78,0, 78,68,69,88,0, +67,75,65,71,69,0, 77,65,82,89,0, 71,82,65,77,0, 65,66,76,69,0, +73,69,87,0, 79,84,0, 82,82,79,82,0, 65,82,78,73,78,71,0, +76,84,69,82,0, 69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, +69,65,84,69,0, 76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 68,0, +69,67,85,84,69,0, 69,84,67,72,0, 82,65,78,84,0, 76,85,68,69,0, +69,82,84,0, 79,67,75,0, 80,69,78,0, 82,69,80,65,82,69,0, +86,79,75,69,0, 76,76,66,65,67,75,0, 69,76,69,67,84,0, +80,68,65,84,69,0, 69,78,69,86,69,82,0, 82,75,0, 69,82,0, 68,68,0, +69,67,84,0, 82,79,76,0, 69,65,84,69,84,65,66,0, 65,68,77,0, +76,69,84,69,0, 88,69,67,85,84,69,0, 69,88,0, 69,82,84,0, +69,70,69,82,69,78,67,69,83,0, 69,76,69,67,84,0, 80,68,65,84,69,0, +65,66,76,69,0, 65,0, 65,0, 69,67,76,65,82,69,0, 78,0, +78,68,69,88,0, 67,75,65,71,69,0, 79,71,82,65,77,0, 65,66,76,69,0, +73,69,87,0, 76,84,69,82,0, 69,71,73,78,0, 79,83,69,0, 78,84,0, +84,0, 69,65,84,69,0, 76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, +68,0, 69,67,85,84,69,0, 69,84,67,72,0, 82,65,78,84,0, +76,85,68,69,0, 69,82,84,0, 79,67,75,0, 80,69,78,0, +82,69,80,65,82,69,0, 86,79,75,69,0, 76,76,66,65,67,75,0, +69,76,69,67,84,0, 80,68,65,84,69,0, 72,69,78,69,86,69,82,0, 45,0, +86,71,0, 65,82,0, 85,78,84,0, 82,82,69,78,84,0, 69,0, +79,85,82,0, 69,78,71,84,72,0, 88,0, 82,79,83,69,67,79,78,68,0, +84,69,0, 78,84,72,0, 67,79,78,68,0, 83,84,82,0, 84,65,77,80,0, +65,78,83,76,65,84,69,0, 83,69,82,0, 69,65,82,0, 45,0, 86,71,0, +65,82,0, 85,78,84,0, 82,82,69,78,84,0, 69,0, 79,85,82,0, +69,78,71,84,72,0, 88,0, 82,79,83,69,67,79,78,68,0, 84,69,0, +78,84,72,0, 78,0, 82,73,86,73,76,69,71,69,83,0, 79,78,68,0, +69,67,84,0, 83,84,82,0, 84,65,77,80,0, 65,78,83,76,65,84,69,0, +83,69,82,0, 69,65,82,0, 86,71,0, 65,82,0, 85,78,84,0, +82,82,69,78,84,0, 69,0, 79,85,82,0, 69,78,71,84,72,0, 88,0, +82,79,83,69,67,79,78,68,0, 84,69,0, 78,84,72,0, 67,79,78,68,0, +83,84,82,0, 84,65,77,80,0, 65,78,83,76,65,84,69,0, 83,69,82,0, +69,65,82,0, 45,0, 85,66,76,73,67,0, 34,0, 45,0, 61,0, 68,0, +84,69,82,0, 68,0, 73,78,0, 87,69,69,78,0, 67,84,69,82,0, +79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, 82,83,79,82,0, 69,0, +77,65,76,0, 65,82,69,0, 69,84,69,0, 73,66,69,0, 79,80,0, 68,0, +69,80,84,0, 67,85,84,69,0, 84,67,72,0, 79,65,84,0, 73,71,78,0, +79,77,0, 78,84,0, 85,80,0, 86,73,78,71,0, 76,85,68,69,0, +69,82,84,0, 69,82,0, 83,69,67,84,0, 75,69,0, 75,0, 71,0, 84,0, +82,73,67,0, 69,78,0, 69,82,0, 80,65,82,69,0, 77,65,82,89,0, +69,82,69,78,67,69,83,0, 79,75,69,0, 76,76,66,65,67,75,0, +69,67,84,0, 65,76,76,73,78,84,0, 84,65,77,80,0, 73,79,78,0, +68,65,84,69,0, 73,78,71,0, 85,69,83,0, 67,72,65,82,0, +69,86,69,82,0, 69,0, 84,72,0, 45,0, 61,0, 61,0, 68,0, +84,69,82,0, 68,0, 73,78,0, 87,69,69,78,0, 67,84,69,82,0, +79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, 69,0, 77,65,76,0, +65,82,69,0, 69,84,69,0, 73,66,69,0, 79,80,0, 68,0, 69,80,84,0, +67,85,84,69,0, 84,67,72,0, 79,65,84,0, 73,71,78,0, 79,77,0, +78,84,0, 85,80,0, 86,73,78,71,0, 76,85,68,69,0, 69,82,84,0, +69,82,0, 83,69,67,84,0, 75,69,0, 75,0, 71,0, 84,0, 82,73,67,0, +69,78,0, 69,82,0, 80,65,82,69,0, 77,65,82,89,0, +69,82,69,78,67,69,83,0, 79,75,69,0, 76,76,66,65,67,75,0, +69,67,84,0, 65,76,76,73,78,84,0, 84,65,77,80,0, 73,79,78,0, +68,65,84,69,0, 73,78,71,0, 85,69,83,0, 67,72,65,82,0, +69,86,69,82,0, 69,0, 84,72,0, 69,84,0, 76,84,69,82,0, +69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, +76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 68,0, +69,67,85,84,69,0, 69,84,67,72,0, 82,65,78,84,0, 76,85,68,69,0, +69,82,84,0, 79,67,75,0, 80,69,78,0, 82,69,80,65,82,69,0, +86,79,75,69,0, 76,76,66,65,67,75,0, 69,76,69,67,84,0, +68,65,84,69,0, 73,78,71,0, 72,69,78,69,86,69,82,0, 78,84,79,0, +83,73,78,71,0, 76,84,69,82,0, 69,71,73,78,0, 79,83,69,0, 78,84,0, +84,0, 69,65,84,69,0, 76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, +68,0, 69,67,85,84,69,0, 69,84,67,72,0, 82,65,78,84,0, +76,85,68,69,0, 69,82,84,0, 79,67,75,0, 80,69,78,0, +82,69,80,65,82,69,0, 86,79,75,69,0, 76,76,66,65,67,75,0, +69,76,69,67,84,0, 80,68,65,84,69,0, 69,86,69,82,0, 69,0, 45,0, +78,68,69,88,0, 78,68,69,88,0, 45,0, 79,78,84,73,78,85,69,0, 79,0, +45,0, 86,71,0, 69,84,87,69,69,78,0, 65,82,0, 85,78,84,0, +82,82,69,78,84,0, 69,0, 88,73,83,84,83,0, 79,85,78,68,0, +79,85,82,0, 78,0, 78,71,84,72,0, 75,69,0, 88,0, +82,79,83,69,67,79,78,68,0, 84,69,0, 78,84,72,0, 84,0, 76,76,0, +67,79,78,68,0, 83,84,82,0, 84,65,77,80,0, 65,78,83,76,65,84,69,0, +83,69,82,0, 69,65,82,0, 79,85,78,68,0, 79,78,84,73,78,85,69,0, +79,0, 45,0, 76,84,69,82,0, 69,71,73,78,0, 79,83,69,0, 78,84,0, +84,0, 69,65,84,69,0, 76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, +68,0, 69,67,85,84,69,0, 69,84,67,72,0, 82,65,78,84,0, +76,85,68,69,0, 69,82,84,0, 79,67,75,0, 80,69,78,0, +82,69,80,65,82,69,0, 86,79,75,69,0, 76,76,66,65,67,75,0, +69,76,69,67,84,0, 80,68,65,84,69,0, 72,69,78,69,86,69,82,0, 78,0, +82,73,86,73,76,69,71,69,83,0, 82,79,77,0, 78,84,79,0, +69,67,84,73,79,78,0, 85,82,83,79,82,0, 45,0, 79,76,85,77,78,0, +84,65,66,65,83,69,0, 76,69,84,69,0, 78,68,69,88,0, +67,75,65,71,69,0, 79,71,82,65,77,0, 65,66,76,69,0, +80,68,65,84,69,0, 79,76,85,77,78,0, 65,66,76,69,0, 39,0, 45,0, +61,0, 68,0, 84,69,82,0, 68,0, 73,78,0, 87,69,69,78,0, +79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, 76,65,82,69,0, +69,84,69,0, 67,82,73,66,69,0, 79,80,0, 68,0, 69,80,84,0, +67,85,84,69,0, 84,67,72,0, 73,71,78,0, 79,77,0, 78,84,0, +85,80,0, 65,86,73,78,71,0, 76,85,68,69,0, 69,82,84,0, +82,83,69,67,84,0, 75,69,0, 67,75,0, 79,84,0, 69,78,0, 69,82,0, +80,65,82,69,0, 77,65,82,89,0, 69,82,69,78,67,69,83,0, 79,75,69,0, +76,76,66,65,67,75,0, 69,76,69,67,84,0, 73,79,78,0, 68,65,84,69,0, +69,86,69,82,0, 69,0, 84,72,0, 45,0, 61,0, 84,69,82,0, 68,0, +73,78,0, 87,69,69,78,0, 79,83,69,0, 78,84,0, 84,0, +69,65,84,69,0, 76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 68,0, +69,80,84,0, 67,85,84,69,0, 84,67,72,0, 82,0, 79,77,0, 78,84,0, +85,80,0, 65,86,73,78,71,0, 76,85,68,69,0, 69,82,84,0, +82,83,69,67,84,0, 75,69,0, 67,75,0, 79,84,0, 69,78,0, 69,82,0, +82,69,80,65,82,69,0, 86,79,75,69,0, 76,76,66,65,67,75,0, +69,76,69,67,84,0, 73,79,78,0, 68,65,84,69,0, 69,86,69,82,0, 69,0, +84,72,0, 45,0, 68,0, 84,69,82,0, 69,71,73,78,0, 79,83,69,0, +78,84,0, 84,0, 69,65,84,69,0, 76,65,82,69,0, 69,84,69,0, +67,82,73,66,69,0, 79,80,0, 68,0, 69,67,85,84,69,0, 84,67,72,0, +73,71,78,0, 82,65,78,84,0, 76,85,68,69,0, 69,82,84,0, 79,67,75,0, +79,84,0, 80,69,78,0, 80,65,82,69,0, 77,65,82,89,0, +69,82,69,78,67,69,83,0, 79,75,69,0, 76,76,66,65,67,75,0, +69,76,69,67,84,0, 80,68,65,84,69,0, 72,69,78,69,86,69,82,0, 45,0, +61,0, 84,69,82,0, 68,0, 73,78,0, 87,69,69,78,0, 79,83,69,0, +78,84,0, 84,0, 69,65,84,69,0, 76,65,82,69,0, 69,84,69,0, +67,82,73,66,69,0, 68,0, 69,80,84,0, 67,85,84,69,0, 84,67,72,0, +82,0, 79,77,0, 78,84,0, 85,80,0, 86,73,78,71,0, 76,85,68,69,0, +69,82,84,0, 82,83,69,67,84,0, 75,69,0, 67,75,0, 79,84,0, +69,78,0, 69,82,0, 82,69,80,65,82,69,0, 86,79,75,69,0, +76,76,66,65,67,75,0, 69,67,84,0, 73,79,78,0, 68,65,84,69,0, +69,86,69,82,0, 69,0, 84,72,0, 45,0, 61,0, 84,69,82,0, 68,0, +73,78,0, 87,69,69,78,0, 79,83,69,0, 78,84,0, 84,0, +69,65,84,69,0, 76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 68,0, +69,80,84,0, 67,85,84,69,0, 84,67,72,0, 82,0, 79,77,0, 78,84,0, +85,80,0, 86,73,78,71,0, 76,85,68,69,0, 69,82,84,0, +82,83,69,67,84,0, 75,69,0, 67,75,0, 79,84,0, 69,78,0, 69,82,0, +82,69,80,65,82,69,0, 86,79,75,69,0, 76,76,66,65,67,75,0, +69,67,84,0, 73,79,78,0, 68,65,84,69,0, 69,86,69,82,0, 69,0, +84,72,0, 61,0, 84,69,82,0, 68,0, 73,78,0, 87,69,69,78,0, +79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, 76,65,82,69,0, +69,84,69,0, 67,82,73,66,69,0, 68,0, 69,80,84,0, 67,85,84,69,0, +84,67,72,0, 82,0, 79,77,0, 78,84,0, 85,80,0, 86,73,78,71,0, +76,85,68,69,0, 69,82,84,0, 82,83,69,67,84,0, 75,69,0, 67,75,0, +79,84,0, 69,78,0, 69,82,0, 82,69,80,65,82,69,0, 86,79,75,69,0, +76,76,66,65,67,75,0, 69,67,84,0, 73,79,78,0, 68,65,84,69,0, +69,86,69,82,0, 69,0, 84,72,0, 61,0, 84,69,82,0, 68,0, 73,78,0, +87,69,69,78,0, 79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, +76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 68,0, 69,80,84,0, +67,85,84,69,0, 84,67,72,0, 82,0, 79,77,0, 78,84,0, 85,80,0, +86,73,78,71,0, 76,85,68,69,0, 69,82,84,0, 82,83,69,67,84,0, +75,69,0, 67,75,0, 79,84,0, 69,78,0, 69,82,0, +82,69,80,65,82,69,0, 86,79,75,69,0, 76,76,66,65,67,75,0, +69,67,84,0, 73,79,78,0, 68,65,84,69,0, 69,86,69,82,0, 69,0, +84,72,0, 45,0, 76,0, 71,0, 65,82,0, 85,78,84,0, +82,82,69,78,84,0, 69,0, 83,84,73,78,67,84,0, 88,73,83,84,83,0, +79,82,69,73,71,78,0, 79,85,82,0, 69,78,71,84,72,0, 88,0, +82,79,83,69,67,79,78,68,0, 84,69,0, 78,84,72,0, 84,0, 76,76,0, +82,73,77,65,82,89,0, 79,78,68,0, 69,67,84,0, 83,84,82,0, +84,65,77,80,0, 65,78,83,76,65,84,69,0, 83,69,82,0, 69,65,82,0, +45,0, 65,84,69,0, 70,0, 84,65,77,80,0, 65,84,69,0, +84,65,77,80,0, 61,0, 84,69,82,0, 68,0, 73,78,0, 87,69,69,78,0, +79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, 76,65,82,69,0, +69,84,69,0, 67,82,73,66,69,0, 68,0, 69,80,84,0, 67,85,84,69,0, +84,67,72,0, 82,0, 79,77,0, 78,84,0, 85,80,0, 65,86,73,78,71,0, +76,85,68,69,0, 69,82,84,0, 82,83,69,67,84,0, 75,69,0, 67,75,0, +79,84,0, 69,78,0, 69,82,0, 82,69,80,65,82,69,0, 86,79,75,69,0, +76,76,66,65,67,75,0, 69,76,69,67,84,0, 73,79,78,0, 68,65,84,69,0, +69,86,69,82,0, 69,0, 84,72,0, 82,79,77,0, 78,84,79,0, 45,0, +86,71,0, 65,82,0, 85,78,84,0, 82,82,69,78,84,0, 69,0, +82,79,77,0, 79,85,82,0, 78,84,79,0, 69,78,71,84,72,0, 88,0, +82,79,83,69,67,79,78,68,0, 84,69,0, 78,84,72,0, 67,79,78,68,0, +83,84,82,0, 84,65,77,80,0, 65,78,83,76,65,84,69,0, 83,69,82,0, +69,65,82,0, 45,0, 85,76,76,0, 45,0, 69,83,67,82,73,80,84,79,82,0, +69,83,67,82,73,80,84,79,82,0, 69,76,69,67,84,0, 65,76,85,69,83,0, +45,0, 86,71,0, 65,82,0, 85,78,84,0, 82,82,69,78,84,0, 69,0, +88,73,83,84,83,0, 79,85,82,0, 69,78,71,84,72,0, 88,0, +82,79,83,69,67,79,78,68,0, 84,69,0, 78,84,72,0, 79,84,0, +67,79,78,68,0, 83,84,82,0, 84,65,77,80,0, 65,78,83,76,65,84,69,0, +83,69,82,0, 69,65,82,0, 86,71,0, 65,82,0, 85,78,84,0, +82,82,69,78,84,0, 69,0, 88,73,83,84,83,0, 79,85,82,0, +69,78,71,84,72,0, 88,0, 82,79,83,69,67,79,78,68,0, 84,69,0, +78,84,72,0, 79,84,0, 67,79,78,68,0, 83,84,82,0, 84,65,77,80,0, +65,78,83,76,65,84,69,0, 83,69,82,0, 69,65,82,0, 83,0, 45,0, +79,0, 79,0, 45,0, 84,69,82,0, 71,0, 68,68,0, 65,82,0, +69,67,84,0, 82,79,76,0, 78,84,0, 69,65,84,69,84,65,66,0, +82,82,69,78,84,0, 69,0, 65,68,77,0, 76,69,84,69,0, 82,0, +69,67,85,84,69,0, 79,82,69,73,71,78,0, 79,85,82,0, 69,88,0, +69,82,84,0, 79,0, 73,83,0, 78,71,84,72,0, 67,65,76,0, 88,0, +82,79,83,69,67,79,78,68,0, 84,69,0, 78,84,72,0, 85,76,76,0, +82,73,77,65,82,89,0, 69,70,69,82,69,78,67,69,83,0, 79,78,68,0, +69,67,84,0, 83,84,82,0, 84,65,77,80,0, 65,78,83,76,65,84,69,0, +68,65,84,69,0, 82,0, 69,65,82,0, 76,84,69,82,0, 68,68,0, +69,67,84,0, 82,79,76,0, 69,65,84,69,84,65,66,0, 65,68,77,0, +76,69,84,69,0, 88,69,67,85,84,69,0, 69,88,0, 69,82,84,0, +69,70,69,82,69,78,67,69,83,0, 69,76,69,67,84,0, 80,68,65,84,69,0, +65,84,65,66,65,83,69,0, 78,68,69,88,0, 67,75,65,71,69,0, +79,71,82,65,77,0, 65,66,76,69,0, 78,0, 45,0, 79,82,0, +73,84,72,0, 79,82,0, 73,84,72,0, 83,0, 68,68,0, 82,79,80,0, +79,82,69,73,71,78,0, 82,73,77,65,82,89,0, 73,83,84,73,78,67,84,0, +76,84,69,82,0, 69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, +69,65,84,69,0, 76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 68,0, +69,67,85,84,69,0, 69,84,67,72,0, 78,84,0, 85,80,0, +65,86,73,78,71,0, 76,85,68,69,0, 69,82,84,0, 79,67,75,0, +80,69,78,0, 82,69,80,65,82,69,0, 86,79,75,69,0, +76,76,66,65,67,75,0, 69,76,69,67,84,0, 80,68,65,84,69,0, +69,86,69,82,0, 69,0, 69,76,69,67,84,0, 76,84,69,82,0, +69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, +76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 68,0, 69,80,84,0, +67,85,84,69,0, 69,84,67,72,0, 82,65,78,84,0, 76,85,68,69,0, +69,82,84,0, 69,82,83,69,67,84,0, 79,67,75,0, 80,69,78,0, +82,69,80,65,82,69,0, 86,79,75,69,0, 76,76,66,65,67,75,0, +69,76,69,67,84,0, 73,79,78,0, 68,65,84,69,0, +72,69,78,69,86,69,82,0, 65,84,69,0, 70,0, 84,65,77,80,0, 61,0, +69,84,87,69,69,78,0, 73,75,69,0, 79,84,0, 84,69,82,0, 68,0, +69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, +76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 68,0, 69,80,84,0, +67,85,84,69,0, 84,67,72,0, 82,0, 78,84,0, 85,80,0, +65,86,73,78,71,0, 76,85,68,69,0, 69,82,84,0, 69,82,83,69,67,84,0, +79,67,75,0, 69,78,0, 69,82,0, 82,69,80,65,82,69,0, 86,79,75,69,0, +76,76,66,65,67,75,0, 69,76,69,67,84,0, 73,79,78,0, 68,65,84,69,0, +69,78,69,86,69,82,0, 84,72,0, 79,82,69,73,71,78,0, +82,73,77,65,82,89,0, 45,0, 82,79,77,0, 79,0, 45,0, 86,71,0, +65,82,0, 85,78,84,0, 82,82,69,78,84,0, 69,0, +88,67,76,85,83,73,86,69,0, 79,85,82,0, 69,78,71,84,72,0, 88,0, +82,79,83,69,67,79,78,68,0, 84,69,0, 78,84,72,0, 67,79,78,68,0, +65,82,69,0, 83,84,82,0, 84,65,77,80,0, 65,78,83,76,65,84,69,0, +83,69,82,0, 69,65,82,0, 88,67,76,85,83,73,86,69,0, 72,65,82,69,0, +45,0, 72,69,67,75,0, 79,76,68,0, 79,76,68,0, 79,82,0, 45,0, +84,0, 76,76,0, 45,0, 69,89,0, 69,89,0, 68,0, 84,69,82,0, +69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, +76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 79,80,0, 68,0, +69,67,85,84,69,0, 84,67,72,0, 82,69,73,71,78,0, 82,65,78,84,0, +76,85,68,69,0, 69,82,84,0, 79,67,75,0, 80,69,78,0, 80,65,82,69,0, +77,65,82,89,0, 86,79,75,69,0, 76,76,66,65,67,75,0, +69,76,69,67,84,0, 80,68,65,84,69,0, 72,69,78,69,86,69,82,0, 45,0, +61,0, 68,0, 84,69,82,0, 68,0, 73,78,0, 87,69,69,78,0, +79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, 76,65,82,69,0, +69,84,69,0, 67,82,73,66,69,0, 79,80,0, 68,0, 69,80,84,0, +67,85,84,69,0, 84,67,72,0, 73,71,78,0, 79,77,0, 78,84,0, +85,80,0, 86,73,78,71,0, 76,85,68,69,0, 69,82,84,0, +82,83,69,67,84,0, 75,69,0, 67,75,0, 79,84,0, 69,78,0, 69,82,0, +80,65,82,69,0, 77,65,82,89,0, 69,82,69,78,67,69,83,0, 79,75,69,0, +76,76,66,65,67,75,0, 69,67,84,0, 73,79,78,0, 68,65,84,69,0, +65,76,85,69,83,0, 69,86,69,82,0, 69,0, 84,72,0, 45,0, 76,0, +89,0, 71,0, 65,82,0, 85,78,84,0, 82,82,69,78,84,0, 69,0, +79,85,82,0, 69,78,71,84,72,0, 88,0, 82,79,83,69,67,79,78,68,0, +84,69,0, 78,84,72,0, 85,76,76,0, 67,79,78,68,0, 77,69,0, +83,84,82,0, 84,65,77,80,0, 65,78,83,76,65,84,69,0, 83,69,82,0, +69,65,82,0, 86,71,0, 65,82,0, 85,78,84,0, 82,82,69,78,84,0, +69,0, 79,85,82,0, 69,78,71,84,72,0, 88,0, +82,79,83,69,67,79,78,68,0, 84,69,0, 78,84,72,0, 85,76,76,0, +67,79,78,68,0, 83,84,82,0, 84,65,77,80,0, 65,78,83,76,65,84,69,0, +83,69,82,0, 69,65,82,0, 76,84,69,82,0, 69,71,73,78,0, 79,83,69,0, +78,84,0, 84,0, 69,65,84,69,0, 76,65,82,69,0, 69,84,69,0, +67,82,73,66,69,0, 68,0, 69,80,84,0, 67,85,84,69,0, 84,67,72,0, +82,0, 78,84,0, 85,80,0, 65,86,73,78,71,0, 76,85,68,69,0, +69,82,84,0, 69,82,83,69,67,84,0, 79,67,75,0, 69,78,0, 68,69,82,0, +82,69,80,65,82,69,0, 86,79,75,69,0, 76,76,66,65,67,75,0, +69,76,69,67,84,0, 73,79,78,0, 68,65,84,69,0, 69,86,69,82,0, 69,0, +84,72,0, 76,84,69,82,0, 69,71,73,78,0, 79,83,69,0, 78,84,0, +84,0, 69,65,84,69,0, 76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, +68,0, 69,67,85,84,69,0, 69,84,67,72,0, 78,84,0, 85,80,0, +65,86,73,78,71,0, 76,85,68,69,0, 69,82,84,0, 79,67,75,0, +80,69,78,0, 82,69,80,65,82,69,0, 86,79,75,69,0, +76,76,66,65,67,75,0, 69,76,69,67,84,0, 80,68,65,84,69,0, +72,69,78,69,86,69,82,0, 88,67,69,80,84,0, +78,84,69,82,83,69,67,84,0, 78,73,79,78,0, 85,82,82,69,78,84,0, +85,76,76,0, 83,69,82,0, 45,0, 76,76,0, 69,76,69,67,84,0, +76,76,0, 69,76,69,67,84,0, 45,0, 83,69,82,0, 83,69,82,0, 84,0, +76,76,0, 69,84,87,69,69,78,0, 78,0, 73,75,69,0, 45,0, 76,0, +89,0, 71,0, 65,82,0, 85,78,84,0, 82,82,69,78,84,0, 69,0, +79,85,82,0, 69,78,71,84,72,0, 88,0, 82,79,83,69,67,79,78,68,0, +84,69,0, 78,84,72,0, 67,79,78,68,0, 77,69,0, 83,84,82,0, +84,65,77,80,0, 65,78,83,76,65,84,69,0, 83,69,82,0, 69,65,82,0, +76,0, 89,0, 71,0, 65,82,0, 85,78,84,0, 82,82,69,78,84,0, 69,0, +79,85,82,0, 69,78,71,84,72,0, 88,0, 82,79,83,69,67,79,78,68,0, +84,69,0, 78,84,72,0, 67,79,78,68,0, 77,69,0, 83,84,82,0, +84,65,77,80,0, 65,78,83,76,65,84,69,0, 83,69,82,0, 69,65,82,0, +78,68,0, 82,0, 45,0, 69,76,69,67,84,0, 67,84,69,82,0, 84,69,0, +77,65,76,0, 76,79,65,84,0, 71,69,82,0, 79,78,71,0, 82,73,67,0, +77,65,76,76,73,78,84,0, 84,65,77,80,0, 65,82,67,72,65,82,0, +79,82,0, 79,84,0, 69,70,69,82,69,78,67,69,83,0, 85,66,76,73,67,0, +45,0, 79,68,69,0, 79,68,69,0, 45,0, 79,82,0, 45,0, 73,84,0, +69,84,67,72,0, 69,76,69,67,84,0, 80,68,65,84,69,0, +69,70,69,82,69,78,67,69,83,0, 79,82,69,73,71,78,0, 78,68,69,88,0, +67,75,65,71,69,0, 77,65,82,89,0, 71,82,65,77,0, 65,66,76,69,0, +73,69,87,0, 85,82,0, 83,79,0, 73,83,0, 79,67,65,76,0, 83,65,0, +45,0, 61,0, 84,69,82,0, 68,0, 67,0, 73,78,0, 87,69,69,78,0, +79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, 76,65,82,69,0, +69,84,69,0, 73,66,69,0, 68,0, 69,80,84,0, 67,85,84,69,0, +84,67,72,0, 82,0, 79,77,0, 78,84,0, 85,80,0, 86,73,78,71,0, +76,85,68,69,0, 69,82,84,0, 82,83,69,67,84,0, 75,69,0, 67,75,0, +79,84,0, 69,78,0, 69,82,0, 82,69,80,65,82,69,0, 86,79,75,69,0, +76,76,66,65,67,75,0, 69,67,84,0, 73,79,78,0, 68,65,84,69,0, +69,86,69,82,0, 69,0, 84,72,0, 45,0, 68,0, 84,69,82,0, 68,0, +69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, +76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 79,80,0, 68,0, +69,80,84,0, 67,85,84,69,0, 84,67,72,0, 73,71,78,0, 78,84,0, +85,80,0, 65,86,73,78,71,0, 76,85,68,69,0, 69,82,84,0, +69,82,83,69,67,84,0, 79,67,75,0, 79,84,0, 69,78,0, 69,82,0, +80,65,82,69,0, 77,65,82,89,0, 69,82,69,78,67,69,83,0, 79,75,69,0, +76,76,66,65,67,75,0, 69,76,69,67,84,0, 73,79,78,0, 68,65,84,69,0, +69,86,69,82,0, 69,0, 84,72,0, 45,0, 89,0, 89,0, 76,84,69,82,0, +69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, +76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 68,0, +69,67,85,84,69,0, 69,84,67,72,0, 82,65,78,84,0, 65,86,73,78,71,0, +76,85,68,69,0, 69,82,84,0, 79,67,75,0, 80,69,78,0, +82,69,80,65,82,69,0, 86,79,75,69,0, 76,76,66,65,67,75,0, +69,76,69,67,84,0, 80,68,65,84,69,0, 72,69,78,69,86,69,82,0, +76,84,69,82,0, 69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, +69,65,84,69,0, 76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 68,0, +69,80,84,0, 67,85,84,69,0, 84,67,72,0, 82,0, 78,84,0, 85,80,0, +65,86,73,78,71,0, 76,85,68,69,0, 69,82,84,0, 69,82,83,69,67,84,0, +79,67,75,0, 69,78,0, 68,69,82,0, 82,69,80,65,82,69,0, +86,79,75,69,0, 76,76,66,65,67,75,0, 69,76,69,67,84,0, 73,79,78,0, +68,65,84,69,0, 69,78,69,86,69,82,0, 84,72,0, 86,71,0, 65,82,0, +85,78,84,0, 82,82,69,78,84,0, 69,0, 79,85,82,0, 69,78,71,84,72,0, +88,0, 82,79,83,69,67,79,78,68,0, 84,69,0, 78,84,72,0, 79,78,68,0, +69,67,84,0, 83,84,82,0, 84,65,77,80,0, 65,78,83,76,65,84,69,0, +83,69,82,0, 69,65,82,0, 85,76,76,0, 78,68,0, 76,84,69,82,0, +69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, +76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 68,0, 69,80,84,0, +67,85,84,69,0, 69,84,67,72,0, 82,65,78,84,0, 76,85,68,69,0, +69,82,84,0, 69,82,83,69,67,84,0, 79,67,75,0, 80,69,78,0, +82,69,80,65,82,69,0, 86,79,75,69,0, 76,76,66,65,67,75,0, +69,76,69,67,84,0, 73,79,78,0, 68,65,84,69,0, 69,78,69,86,69,82,0, +84,72,0, 45,0, 65,82,67,72,65,82,0, 65,82,67,72,65,82,0, 68,0, +84,69,82,0, 69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, +69,65,84,69,0, 76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, +79,80,0, 68,0, 69,67,85,84,69,0, 84,67,72,0, 73,71,78,0, +82,65,78,84,0, 76,85,68,69,0, 69,82,84,0, 79,67,75,0, 79,84,0, +80,69,78,0, 80,65,82,69,0, 77,65,82,89,0, 69,82,69,78,67,69,83,0, +79,75,69,0, 76,76,66,65,67,75,0, 69,76,69,67,84,0, +80,68,65,84,69,0, 72,69,78,69,86,69,82,0, 79,82,0, 79,84,0, +82,73,77,65,82,89,0, 69,70,69,82,69,78,67,69,83,0, 73,84,0, +76,84,69,82,0, 69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, +69,65,84,69,0, 76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 68,0, +69,80,84,0, 67,85,84,69,0, 84,67,72,0, 82,0, 82,65,78,84,0, +76,85,68,69,0, 69,82,84,0, 69,82,83,69,67,84,0, 79,67,75,0, +69,78,0, 68,69,82,0, 82,69,80,65,82,69,0, 86,79,75,69,0, +76,76,66,65,67,75,0, 69,76,69,67,84,0, 73,79,78,0, 68,65,84,69,0, +72,69,78,69,86,69,82,0, 68,0, 84,69,82,0, 69,71,73,78,0, +79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, 76,65,82,69,0, +69,84,69,0, 67,82,73,66,69,0, 79,80,0, 68,0, 69,67,85,84,69,0, +84,67,72,0, 73,71,78,0, 82,65,78,84,0, 76,85,68,69,0, 69,82,84,0, +79,67,75,0, 80,69,78,0, 80,65,82,69,0, 77,65,82,89,0, +69,82,69,78,67,69,83,0, 79,75,69,0, 76,76,66,65,67,75,0, +69,76,69,67,84,0, 80,68,65,84,69,0, 72,69,78,69,86,69,82,0, +76,84,69,82,0, 69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, +69,65,84,69,0, 76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 68,0, +69,80,84,0, 67,85,84,69,0, 84,67,72,0, 82,0, 82,65,78,84,0, +65,86,73,78,71,0, 76,85,68,69,0, 69,82,84,0, 69,82,83,69,67,84,0, +79,67,75,0, 69,78,0, 68,69,82,0, 82,69,80,65,82,69,0, +86,79,75,69,0, 76,76,66,65,67,75,0, 69,76,69,67,84,0, 73,79,78,0, +68,65,84,69,0, 69,78,69,86,69,82,0, 84,72,0, 72,69,67,75,0, 68,0, +84,69,82,0, 69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, +69,65,84,69,0, 76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, +79,80,0, 68,0, 69,67,85,84,69,0, 84,67,72,0, 73,71,78,0, +82,65,78,84,0, 76,85,68,69,0, 69,82,84,0, 79,67,75,0, 79,84,0, +69,78,0, 80,65,82,69,0, 77,65,82,89,0, 69,82,69,78,67,69,83,0, +79,75,69,0, 76,76,66,65,67,75,0, 69,76,69,67,84,0, +80,68,65,84,69,0, 72,69,78,69,86,69,82,0, 45,0, 65,84,65,0, +65,84,65,0, 69,84,67,72,0, 80,68,65,84,69,0, 76,84,69,82,0, +69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, +76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 68,0, +69,67,85,84,69,0, 84,67,72,0, 82,0, 82,65,78,84,0, 76,85,68,69,0, +69,82,84,0, 79,67,75,0, 80,69,78,0, 82,69,80,65,82,69,0, +86,79,75,69,0, 76,76,66,65,67,75,0, 69,76,69,67,84,0, +80,68,65,84,69,0, 72,69,78,69,86,69,82,0, 84,69,82,0, 68,0, +69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, +76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 68,0, 69,80,84,0, +67,85,84,69,0, 84,67,72,0, 82,0, 82,65,78,84,0, 76,85,68,69,0, +69,82,84,0, 69,82,83,69,67,84,0, 79,67,75,0, 69,78,0, 69,82,0, +82,69,80,65,82,69,0, 86,79,75,69,0, 76,76,66,65,67,75,0, +69,76,69,67,84,0, 73,79,78,0, 68,65,84,69,0, 69,78,69,86,69,82,0, +84,72,0, 45,0, 80,84,73,79,78,0, 80,84,73,79,78,0, +69,76,69,84,69,0, 80,68,65,84,69,0, 84,69,82,0, 67,0, +69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, +76,65,82,69,0, 69,84,69,0, 73,66,69,0, 68,0, 69,67,85,84,69,0, +84,67,72,0, 82,0, 82,65,78,84,0, 76,85,68,69,0, 69,82,84,0, +79,67,75,0, 80,69,78,0, 82,69,80,65,82,69,0, 86,79,75,69,0, +76,76,66,65,67,75,0, 69,76,69,67,84,0, 80,68,65,84,69,0, +72,69,78,69,86,69,82,0, 78,76,89,0, 70,0, 69,84,67,72,0, +65,83,67,65,68,69,0, 69,83,84,82,73,67,84,0, 69,84,0, +69,83,84,82,73,67,84,0, 80,68,65,84,69,0, 45,0, 76,84,69,82,0, +69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, +76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 68,0, +69,67,85,84,69,0, 84,67,72,0, 82,0, 82,65,78,84,0, 76,85,68,69,0, +69,82,84,0, 79,67,75,0, 80,69,78,0, 82,69,80,65,82,69,0, +86,79,75,69,0, 76,76,66,65,67,75,0, 69,76,69,67,84,0, +80,68,65,84,69,0, 72,69,78,69,86,69,82,0, 45,0, 68,0, 84,69,82,0, +69,71,73,78,0, 79,83,69,0, 78,84,0, 84,0, 69,65,84,69,0, +76,65,82,69,0, 69,84,69,0, 67,82,73,66,69,0, 79,80,0, 68,0, +69,67,85,84,69,0, 84,67,72,0, 73,71,78,0, 82,65,78,84,0, +76,85,68,69,0, 69,82,84,0, 79,67,75,0, 79,84,0, 69,78,0, +80,65,82,69,0, 77,65,82,89,0, 69,82,69,78,67,69,83,0, 79,75,69,0, +76,76,66,65,67,75,0, 69,76,69,67,84,0, 80,68,65,84,69,0, +72,69,78,69,86,69,82,0, 69,76,69,84,69,0, +}; +#define AG_TCV(x) (((int)(x) >= 0 && (int)(x) <= 255) ? ag_tcv[(x)] : 0) + +static const unsigned short far ag_tcv[] = { + 210,341,341,341,341,341,341,341,341, 33, 38,341,341, 33,341,341,341,341, + 341,341,341,341,341,341,341,341,341,341,341,341,341,341, 33,341, 52,342, + 342,341,341, 86,374,373,371,369,408,370,367,372,515,515,515,515,515,515, + 515,515,515,515,368,341,341,399,401,341,342,513,513,513,513,513,513,513, + 513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513, + 513,341,341,341,341,514,341,513,513,513,513,513,513,513,513,513,513,513, + 513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,341,341,341, + 341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341, + 341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341, + 341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341, + 341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341, + 341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341, + 341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341, + 341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341, + 341,341,341,341 +}; + +#ifndef SYNTAX_ERROR +#define SYNTAX_ERROR fprintf(stderr,"%s, line %d, column %d\n", \ + (PCB).error_message, (PCB).line, (PCB).column) +#endif + +#ifndef FIRST_LINE +#define FIRST_LINE 1 +#endif + +#ifndef FIRST_COLUMN +#define FIRST_COLUMN 1 +#endif + +#ifndef PARSER_STACK_OVERFLOW +#define PARSER_STACK_OVERFLOW {fprintf(stderr, \ + "\nParser stack overflow, line %d, column %d\n",\ + (PCB).line, (PCB).column);} +#endif + +#ifndef REDUCTION_TOKEN_ERROR +#define REDUCTION_TOKEN_ERROR {fprintf(stderr, \ + "\nReduction token error, line %d, column %d\n", \ + (PCB).line, (PCB).column);} +#endif + + +typedef enum + {ag_accept_key, ag_set_key, ag_jmp_key, ag_end_key, ag_no_match_key, + ag_cf_accept_key, ag_cf_set_key, ag_cf_end_key} key_words; + +#ifndef GET_INPUT +#define GET_INPUT ((PCB).input_code = getchar()) +#endif + + +static int ag_look_ahead(void) { + if ((PCB).rx < (PCB).fx) { + return CONVERT_CASE((PCB).lab[(PCB).rx++]); + } + GET_INPUT; + (PCB).fx++; + return CONVERT_CASE((PCB).lab[(PCB).rx++] = (PCB).input_code); +} + +static void ag_get_key_word(int ag_k) { + int save_index = (PCB).rx; + const unsigned char *sp; + int ag_ch; + while (1) { + switch (ag_key_act[ag_k]) { + case ag_cf_end_key: + sp = ag_key_ends + ag_key_jmp[ag_k]; + do { + if ((ag_ch = *sp++) == 0) { + int ag_k1 = ag_key_parm[ag_k]; + int ag_k2 = ag_key_pt[ag_k1]; + if (ag_key_itt[ag_k2 + ag_look_ahead()]) goto ag_fail; + (PCB).rx--; + (PCB).token_number = (sql_token_type) ag_key_pt[ag_k1 + 1]; + return; + } + } while (ag_look_ahead() == ag_ch); + goto ag_fail; + case ag_end_key: + sp = ag_key_ends + ag_key_jmp[ag_k]; + do { + if ((ag_ch = *sp++) == 0) { + (PCB).token_number = (sql_token_type) ag_key_parm[ag_k]; + return; + } + } while (ag_look_ahead() == ag_ch); + case ag_no_match_key: +ag_fail: + (PCB).rx = save_index; + return; + case ag_cf_set_key: { + int ag_k1 = ag_key_parm[ag_k]; + int ag_k2 = ag_key_pt[ag_k1]; + ag_k = ag_key_jmp[ag_k]; + if (ag_key_itt[ag_k2 + (ag_ch = ag_look_ahead())]) break; + save_index = --(PCB).rx; + (PCB).token_number = (sql_token_type) ag_key_pt[ag_k1+1]; + break; + } + case ag_set_key: + save_index = (PCB).rx; + (PCB).token_number = (sql_token_type) ag_key_parm[ag_k]; + case ag_jmp_key: + ag_k = ag_key_jmp[ag_k]; + ag_ch = ag_look_ahead(); + break; + case ag_accept_key: + (PCB).token_number = (sql_token_type) ag_key_parm[ag_k]; + return; + case ag_cf_accept_key: { + int ag_k1 = ag_key_parm[ag_k]; + int ag_k2 = ag_key_pt[ag_k1]; + if (ag_key_itt[ag_k2 + ag_look_ahead()]) (PCB).rx = save_index; + else { + (PCB).rx--; + (PCB).token_number = (sql_token_type) ag_key_pt[ag_k1+1]; + } + return; + } + default: + /* not reachable; here to suppress compiler warnings */ + goto ag_fail; + } + if (ag_ch <= 255) while (ag_key_ch[ag_k] < ag_ch) ag_k++; + if (ag_ch > 255 || ag_key_ch[ag_k] != ag_ch) { + (PCB).rx = save_index; + return; + } + } +} + + +#ifndef AG_NEWLINE +#define AG_NEWLINE 10 +#endif + +#ifndef AG_RETURN +#define AG_RETURN 13 +#endif + +#ifndef AG_FORMFEED +#define AG_FORMFEED 12 +#endif + +#ifndef AG_TABCHAR +#define AG_TABCHAR 9 +#endif + +static void ag_track(void) { + int ag_k = 0; + while (ag_k < (PCB).rx) { + int ag_ch = (PCB).lab[ag_k++]; + switch (ag_ch) { + case AG_NEWLINE: + (PCB).column = 1, (PCB).line++; + case AG_RETURN: + case AG_FORMFEED: + break; + case AG_TABCHAR: + (PCB).column += (TAB_SPACING) - ((PCB).column - 1) % (TAB_SPACING); + break; + default: + (PCB).column++; + } + } + ag_k = 0; + while ((PCB).rx < (PCB).fx) (PCB).lab[ag_k++] = (PCB).lab[(PCB).rx++]; + (PCB).fx = ag_k; + (PCB).rx = 0; +} + + +static void ag_prot(void) { + int ag_k; + ag_k = 128 - ++(PCB).btsx; + if (ag_k <= (PCB).ssx) { + (PCB).exit_flag = AG_STACK_ERROR_CODE; + PARSER_STACK_OVERFLOW; + return; + } + (PCB).bts[(PCB).btsx] = (PCB).sn; + (PCB).bts[ag_k] = (PCB).ssx; + (PCB).vs[ag_k] = (PCB).vs[(PCB).ssx]; + (PCB).ss[ag_k] = (PCB).ss[(PCB).ssx]; +} + +static void ag_undo(void) { + if ((PCB).drt == -1) return; + while ((PCB).btsx) { + int ag_k = 128 - (PCB).btsx; + (PCB).sn = (PCB).bts[(PCB).btsx--]; + (PCB).ssx = (PCB).bts[ag_k]; + (PCB).vs[(PCB).ssx] = (PCB).vs[ag_k]; + (PCB).ss[(PCB).ssx] = (PCB).ss[ag_k]; + } + (PCB).token_number = (sql_token_type) (PCB).drt; + (PCB).ssx = (PCB).dssx; + (PCB).sn = (PCB).dsn; + (PCB).drt = -1; +} + + +static const unsigned short far ag_tstt[] = { +512,510,500,496,479,475,469,468,467,466,462,459,457,456,451,449,447,446,445, + 443,440,428,356,354,210,41,39,38,34,33,0,27,40,345,346, +515,514,513,408,401,399,374,373,372,371,370,369,368,367,342,341,86,52,38,33, + 0,36,37, +515,514,513,408,401,399,374,373,372,371,370,369,368,367,342,341,86,52,45,38, + 33,0,43,44, +38,0, +515,514,513,408,401,399,374,373,372,371,370,369,368,367,342,341,86,52,38,33, + 0,36,37, +515,514,513,512,511,510,509,508,507,506,505,504,503,502,501,500,499,498,497, + 496,495,494,493,492,491,490,489,488,487,486,485,484,483,482,481,480,479, + 478,477,476,475,474,473,472,471,470,469,468,467,466,465,464,463,462,461, + 460,459,458,457,456,455,454,453,452,451,450,449,448,447,446,445,444,443, + 442,441,440,439,438,437,436,435,434,433,432,431,430,429,428,427,426,425, + 424,423,422,421,420,419,418,417,416,415,414,413,412,411,410,409,408,407, + 406,405,404,403,402,401,400,399,398,397,396,395,394,393,392,391,390,389, + 388,387,386,385,384,383,382,381,380,379,378,374,373,372,371,370,369,368, + 367,364,363,362,361,360,359,358,357,356,355,354,353,352,351,350,349,348, + 347,342,210,86,52,41,39,38,34,33,0,27,40, +512,510,500,496,479,475,469,468,467,466,462,459,457,456,451,449,447,446,445, + 443,440,428,356,354,210,0,9,12,14,166,174,203,205,207,208,209,211,212, + 213,218,219,220,223,226,232,233,235,236,237,238,243,247,248,253,254,256, + 257,258,259,260,275,303,316,330,335, +515,514,513,408,401,399,374,373,372,371,370,369,368,367,342,341,86,52,33,0, +515,514,513,408,401,399,374,373,372,371,370,369,368,367,342,341,86,52,38,33, + 0, +45,0, +38,0, +515,513,448,427,426,425,419,418,417,416,415,414,412,411,410,409,408,407,406, + 391,389,387,385,384,383,381,379,374,371,370,369,368,347,342,86,52,41,39, + 38,34,33,0,27,40,345,346, +487,486,485,448,408,355,41,39,38,34,33,0,27,40,345,346, +513,485,448,439,408,342,52,41,39,38,34,33,0,27,40,345,346, +515,513,427,426,425,419,418,417,416,415,414,412,411,410,409,407,406,391,389, + 387,385,384,383,381,379,374,371,370,369,368,347,342,86,52,0,129,155,175, +513,342,52,41,39,38,34,33,0,27,40,345,346, +455,448,408,41,39,38,34,33,0,27,40,345,346, +513,442,342,52,41,39,38,34,33,0,27,40,345,346, +513,501,448,408,342,52,41,39,38,34,33,0,27,40,345,346, +355,0,13, +495,481,477,444,41,39,38,34,33,0,27,40,345,346, +472,471,358,41,39,38,34,33,0,27,40,345,346, +513,342,52,0,28,29,46,47,49,365,366, +455,0,234, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,450,449,447,446,445, + 443,440,428,356,354,210,41,39,38,34,33,0,27,40,345,346, +510,509,508,507,506,505,504,500,484,477,445,440,428,406,356,41,39,38,34,33, + 0,27,40,345,346, +513,342,52,41,39,38,34,33,0,27,40,345,346, +513,342,52,0,28,29,46,47,49,365,366, +444,41,39,38,34,33,0,27,40,345,346, +455,0,234, +461,460,41,39,38,34,33,0,27,40,345,346, +510,509,508,507,506,505,504,500,484,477,445,440,428,406,356,41,39,38,34,33, + 0,27,40,345,346, +513,342,52,0,28,29,46,47,49,365,366, +513,501,342,52,0,28,29,46,318,365,366, +354,41,39,38,34,33,0,27,40,345,346, +513,342,52,41,39,38,34,33,0,27,40,345,346, +513,342,52,0,28,29,46,47,49,365,366, +513,353,342,52,41,39,38,34,33,0,27,40,345,346, +495,481,477,444,0,214,277,304,305, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,450,449,447,446,445, + 443,440,428,356,354,210,41,39,38,34,33,0,27,40,345,346, +448,41,39,38,34,33,0,27,40,345,346, +513,342,52,41,39,38,34,33,0,27,40,345,346, +354,41,39,38,34,33,0,27,40,345,346, +448,444,408,41,39,38,34,33,0,27,40,345,346, +481,480,477,444,362,360,359,41,39,38,34,33,0,27,40,345,346, +472,471,358,0,15,262,263,264, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,450,449,447,446,445, + 443,440,428,356,354,210,0,224,225, +510,509,508,507,506,505,504,500,484,477,445,440,428,406,356,0,12,129,174, + 203,213,239,270,287,316,322,323,324,325,326,327,328,329,330, +513,342,52,0,28,29,46,365,366, +444,0,214, +461,460,0,244,245,246, +510,509,508,507,506,505,504,500,484,477,445,440,428,406,356,0,12,129,174, + 203,213,239,270,287,316,322,323,324,325,326,327,328,329,330, +354,0,9,11, +513,342,52,0,28,29,46,365,366, +513,342,52,0,28,29,46,365,366, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,450,449,447,446,445, + 443,440,428,356,354,210,0,224,225, +448,0,221, +513,342,52,0,28,29,46,365,366, +354,0,9,11, +444,0,214, +481,477,444,360,359,0,18,19,214,270,277,278, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445,443, + 440,428,356,354,0,9,12,14,166,174,203,205,212,213,218,219,220,223,226, + 232,233,235,236,237,238,243,247,248,253,254,256,257,258,259,260,303,316, + 330,335, +210,0, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,371,370,369,368,347,342,86,52,41,39,38,34,33,0,27, + 40,345,346, +515,513,503,448,428,427,426,425,418,417,416,415,414,412,411,410,409,407,391, + 389,387,385,384,383,381,379,374,371,370,369,368,347,342,86,52,41,39,38, + 34,33,0,27,40,345,346, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,371,370,369,368,347,342,86,52,0,1,28,29,30,31,32,46, + 47,49,60,61,62,63,64,66,67,68,70,72,73,75,76,77,79,80,81,92,94,96,97,98, + 100,102,104,130,134,135,136,137,142,143,144,145,147,148,149,150,151,154, + 162,163,164,176,177,178,365,366,375,376,377, +513,502,368,342,52,41,39,38,34,33,0,27,40,345,346, +515,514,513,408,401,399,374,373,372,371,370,369,368,367,342,341,86,56,38,33, + 0,53,54, +513,512,511,510,500,499,496,493,492,491,490,489,488,487,484,480,479,478,475, + 469,468,467,466,462,459,458,457,456,455,454,453,451,449,448,447,446,445, + 443,441,440,438,437,436,435,434,433,432,431,429,428,413,412,411,409,408, + 403,402,401,400,399,398,397,396,394,393,392,391,390,389,388,387,386,385, + 384,383,382,381,380,379,374,373,372,371,370,369,367,364,362,358,356,355, + 354,352,351,350,349,348,347,342,210,52,41,39,38,34,33,0,27,40,345,346, +515,514,513,408,403,402,401,400,399,374,373,372,371,370,369,367,342,210,52, + 41,39,38,34,33,0,27,40,345,346, +367,0,48, +513,487,342,52,0,28,29,46,47,49,293,336,337,365,366, +513,368,342,52,41,39,38,34,33,0,27,40,345,346, +368,0,60,61,62,317, +364,0,24,26, +513,342,52,0,28,29,46,47,49,365,366, +455,364,0,24,26,234, +368,41,39,38,34,33,0,27,40,345,346, +368,0,60,61,62, +364,0,24,26, +513,512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445, + 443,440,429,428,356,354,342,210,52,0,28,29,46,47,49,168,169,181,315,365, + 366, +513,342,52,41,39,38,34,33,0,27,40,345,346, +513,342,52,0,28,29,46,47,49,365,366, +513,342,52,41,39,38,34,33,0,27,40,345,346, +513,342,52,0,28,29,46,47,49,365,366, +477,41,39,38,34,33,0,27,40,345,346, +477,0,270, +474,473,41,39,38,34,33,0,27,40,345,346, +474,473,41,39,38,34,33,0,27,40,345,346, +515,513,470,427,426,425,418,417,416,415,414,412,411,410,409,407,398,397,396, + 395,391,389,387,385,384,383,381,379,374,370,369,368,358,357,347,342,86, + 52,41,39,38,34,33,0,27,40,345,346, +470,0,261, +474,473,0,265,266,267, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445,443, + 440,428,356,354,210,41,39,38,34,33,0,27,40,345,346, +513,448,408,342,52,41,39,38,34,33,0,27,40,345,346, +513,448,408,342,52,41,39,38,34,33,0,27,40,345,346, +448,408,41,39,38,34,33,0,27,40,345,346, +448,408,41,39,38,34,33,0,27,40,345,346, +448,408,41,39,38,34,33,0,27,40,345,346, +448,408,41,39,38,34,33,0,27,40,345,346, +448,408,41,39,38,34,33,0,27,40,345,346, +448,408,41,39,38,34,33,0,27,40,345,346, +408,0,131, +503,448,0,320,321, +448,0,221, +455,355,0,234,255, +513,342,52,0,28,29,46,47,49,365,366, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445,443, + 440,428,356,354,210,41,39,38,34,33,0,27,40,345,346, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445,443, + 440,428,356,354,210,41,39,38,34,33,0,27,40,345,346, +448,0,221, +353,0,10, +455,0,234, +454,0,227, +513,494,477,476,444,440,360,359,356,342,52,41,39,38,34,33,0,27,40,345,346, +494,444,0,214,222,302, +513,342,52,0,28,29,46,47,49,365,366, +513,342,52,41,39,38,34,33,0,27,40,345,346, +513,342,52,41,39,38,34,33,0,27,40,345,346, +513,342,52,0,28,29,46,365,366, +374,41,39,38,34,33,0,27,40,345,346, +374,41,39,38,34,33,0,27,40,345,346, +374,41,39,38,34,33,0,27,40,345,346, +374,41,39,38,34,33,0,27,40,345,346, +514,513,41,39,38,34,33,0,27,40,345,346, +515,514,513,408,401,399,374,373,372,371,370,369,368,367,342,341,91,86,52,38, + 33,0,87,88,89, +374,41,39,38,34,33,0,27,40,345,346, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,455, + 453,451,449,447,446,445,443,441,440,436,435,434,433,432,431,429,428,413, + 408,403,402,401,400,399,398,397,396,394,393,374,373,372,371,370,369,362, + 358,356,355,354,342,210,52,41,39,38,34,33,0,27,40,345,346, +374,41,39,38,34,33,0,27,40,345,346, +512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447,446, + 445,443,441,440,436,435,434,433,432,431,429,428,413,408,403,402,401,400, + 399,398,397,396,394,393,374,373,372,371,370,369,358,356,355,354,210,41, + 39,38,34,33,0,27,40,345,346, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,455, + 453,451,449,447,446,445,443,441,440,436,435,434,433,432,431,429,428,413, + 408,403,402,401,400,399,398,397,396,394,393,374,373,372,371,370,369,362, + 358,356,355,354,342,210,52,41,39,38,34,33,0,27,40,345,346, +512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447,446, + 445,443,441,440,436,435,434,433,432,431,429,428,413,408,403,402,401,400, + 399,398,397,396,394,393,374,373,372,371,370,369,358,356,355,354,210,41, + 39,38,34,33,0,27,40,345,346, +512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447,446, + 445,443,441,440,436,435,434,433,432,431,429,428,413,408,403,402,401,400, + 399,398,397,396,394,393,374,373,372,371,370,369,358,356,355,354,210,41, + 39,38,34,33,0,27,40,345,346, +512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447,446, + 445,443,441,440,436,435,434,433,432,431,429,428,413,408,403,402,401,400, + 399,398,397,396,394,393,374,373,372,371,370,369,358,356,355,354,210,41, + 39,38,34,33,0,27,40,345,346, +512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447,446, + 445,443,441,440,436,435,434,433,432,431,429,428,413,408,403,402,401,400, + 399,398,397,396,394,393,374,373,372,371,370,369,358,356,355,354,210,41, + 39,38,34,33,0,27,40,345,346, +374,41,39,38,34,33,0,27,40,345,346, +512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447,446, + 445,443,441,440,436,435,434,433,432,431,429,428,413,408,403,402,401,400, + 399,398,397,396,394,393,374,373,372,371,370,369,358,356,355,354,210,41, + 39,38,34,33,0,27,40,345,346, +512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447,446, + 445,443,441,440,436,435,434,433,432,431,429,428,413,408,403,402,401,400, + 399,398,397,396,394,393,374,373,372,371,370,369,358,356,355,354,210,41, + 39,38,34,33,0,27,40,345,346, +512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447,446, + 445,443,441,440,436,435,434,433,432,431,429,428,413,408,403,402,401,400, + 399,398,397,396,394,393,374,373,372,371,370,369,358,356,355,354,210,41, + 39,38,34,33,0,27,40,345,346, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,455, + 453,451,449,447,446,445,443,441,440,436,435,434,433,432,431,429,428,413, + 408,403,402,401,400,399,398,397,396,394,393,374,373,372,371,370,369,362, + 358,356,355,354,342,210,52,41,39,38,34,33,0,27,40,345,346, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,447,446,445,443,441,440,428,408,374,373,362,358,356,354,342,210,52, + 41,39,38,34,33,0,27,40,345,346, +374,41,39,38,34,33,0,27,40,345,346, +514,513,0,57,343,344, +512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447,446, + 445,443,441,440,436,435,434,433,432,431,429,428,413,408,403,402,401,400, + 399,398,397,396,394,393,392,391,390,389,388,387,386,385,384,383,382,381, + 380,379,373,372,371,370,369,358,356,355,354,210,41,39,38,34,33,0,27,40, + 345,346, +515,512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447, + 446,445,443,441,440,436,435,434,433,432,431,429,428,413,408,403,402,401, + 400,399,398,397,396,394,393,392,391,390,389,388,387,386,385,384,383,382, + 381,380,379,378,373,372,371,370,369,358,356,355,354,210,41,39,38,34,33, + 0,27,40,345,346, +515,512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447, + 446,445,443,441,440,436,435,434,433,432,431,429,428,413,408,403,402,401, + 400,399,398,397,396,394,393,392,391,390,389,388,387,386,385,384,383,382, + 381,380,379,378,373,372,371,370,369,367,358,356,355,354,210,41,39,38,34, + 33,0,27,40,345,346, +374,0,77, +374,0,77,153, +374,0,77,153, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,370,369,368,347,342,86,52,41,39,38,34,33,0,27,40, + 345,346, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,370,369,368,347,342,86,52,41,39,38,34,33,0,27,40, + 345,346, +368,0,60,61, +378,0,83, +378,0,83, +515,513,480,428,427,426,425,419,418,417,416,415,414,412,411,410,409,407,406, + 395,391,389,387,385,384,383,381,379,374,371,370,369,368,362,358,357,347, + 342,86,52,41,39,38,34,33,0,27,40,345,346, +374,0,77, +439,412,411,409,41,39,38,34,33,0,27,40,345,346, +512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447,446, + 445,443,441,440,436,435,434,433,432,431,429,428,413,408,403,402,401,400, + 399,398,397,396,394,393,373,372,371,370,369,358,356,355,354,210,41,39, + 38,34,33,0,27,40,345,346, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,370,369,368,347,342,86,52,0,1,28,29,30,31,32,46,47, + 49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96,97,98,100, + 102,104,130,134,135,136,137,142,143,144,145,147,148,149,150,151,154,162, + 163,164,365,366,375,376,377, +412,411,409,0,135,136,137, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,370,369,368,347,342,86,52,0,1,28,29,30,31,32,46,47, + 49,60,61,62,66,67,68,72,73,75,76,77,79,80,81,92,94,96,97,98,100,102,104, + 130,134,135,136,137,142,143,144,145,147,148,149,150,151,154,162,163,164, + 365,366,375,376,377, +392,391,390,389,388,387,386,385,384,383,382,381,380,379,0,74,92,93,94,95,96, + 97,98,99,100,101,102,103,104,105, +372,371,0,69,70,71, +367,0,48, +370,369,0,65,66,67, +515,513,455,427,426,425,418,417,416,415,414,412,411,410,409,408,407,391,389, + 387,385,384,383,381,379,374,373,370,369,368,355,347,342,86,52,41,39,38, + 34,33,0,27,40,345,346, +408,0,131, +515,514,513,408,401,399,374,373,372,371,370,369,368,367,342,341,86,56,52,38, + 33,0,54, +513,371,342,52,41,39,38,34,33,0,27,40,345,346, +513,342,52,0,28,29,46,365,366, +487,0,293,336,337, +513,357,342,52,41,39,38,34,33,0,27,40,345,346, +513,342,52,0,28,29,46,338,339,365,366, +429,0,168,181,315, +408,355,0,13,131,167, +368,0,60,61, +368,363,41,39,38,34,33,0,27,40,345,346, +368,363,0,25,60,61,62,317, +511,428,374,0,77,117,165,166,174,185,187,331,333, +363,0,25, +368,0,60,61, +368,0,60,61,62,317, +368,0,60,61, +368,363,0,25,60,61,62,317, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445,443, + 440,429,428,356,354,210,0,168,169,181, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,395,391,389,387, + 385,384,383,381,379,374,370,369,368,358,347,342,86,52,41,39,38,34,33,0, + 27,40,345,346, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,395,391,389,387, + 385,384,383,381,379,374,370,369,368,358,347,342,86,52,0,1,15,28,29,30, + 31,32,46,47,49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96, + 97,98,100,102,104,106,116,130,134,135,136,137,138,139,142,143,144,145, + 147,148,149,150,151,154,162,163,164,365,366,375,376,377, +499,374,0,77,185,307, +374,0,77, +513,342,52,0,28,29,46,47,49,365,366, +474,473,41,39,38,34,33,0,27,40,345,346, +458,41,39,38,34,33,0,27,40,345,346, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445,443, + 440,428,356,354,210,41,39,38,34,33,0,27,40,345,346, +458,0,241, +515,513,510,509,508,507,506,505,504,500,484,480,477,445,440,428,427,426,425, + 424,423,422,421,420,418,417,416,415,414,412,411,410,409,407,391,389,387, + 385,384,383,381,379,374,370,369,368,362,357,356,347,342,86,52,41,39,38, + 34,33,0,27,40,345,346, +510,509,508,507,506,505,504,500,484,477,445,440,428,356,0,12,174,203,213, + 270,287,316,323,324,325,326,327,328,329,330, +448,41,39,38,34,33,0,27,40,345,346, +513,477,476,444,360,359,342,52,0,18,19,20,214,240,268,269,270, +368,0,60,61, +355,0,13, +396,0,118, +513,477,476,444,360,359,342,52,0,18,19,20,214,240,268,269,270, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445,443, + 440,428,356,354,210,41,39,38,34,33,0,27,40,345,346, +368,0,60,61, +453,441,41,39,38,34,33,0,27,40,345,346, +453,441,0,228,230, +513,342,52,41,39,38,34,33,0,27,40,345,346, +513,342,52,0,28,29,46,47,365,366, +513,342,52,0,28,29,46,47,49,365,366, +394,0,111, +480,479,478,362,0,21,23,215,271,272,274,275,276,286, +515,514,513,408,401,399,374,373,372,371,370,369,368,367,342,341,91,52,38,33, + 0,87, +86,0, +515,514,513,512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451, + 449,447,446,445,443,441,440,436,435,434,433,432,431,429,428,413,408,403, + 402,401,400,399,398,397,396,394,393,392,391,390,389,388,387,386,385,384, + 383,382,381,380,379,373,372,371,370,369,368,358,356,355,354,210,41,39, + 38,34,33,0,27,40,345,346, +515,514,513,512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451, + 449,447,446,445,443,441,440,436,435,434,433,432,431,429,428,413,408,403, + 402,401,400,399,398,397,396,394,393,392,391,390,389,388,387,386,385,384, + 383,382,381,380,379,373,372,371,370,369,368,358,356,355,354,210,41,39, + 38,34,33,0,27,40,345,346, +515,514,513,0,82,343,344, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,370,369,368,347,342,86,52,0,1,28,29,30,31,32,46,47, + 49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96,97,98,100, + 102,104,130,134,135,136,137,142,143,144,145,147,148,149,150,151,154,162, + 163,164,365,366,375,376,377, +419,371,0,70,155, +515,513,427,426,425,419,418,417,416,415,414,412,411,410,409,407,406,391,389, + 387,385,384,383,381,379,374,370,369,368,347,342,86,52,0,129,152,155, +515,370,369,41,39,38,34,33,0,27,40,345,346, +515,370,369,0,66,67,84,85, +515,370,369,0,66,67,84,85, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,370,369,368,347,342,86,52,0,1,28,29,30,31,32,46,47, + 49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96,97,98,100, + 102,104,130,134,135,136,137,142,143,144,145,146,147,148,149,150,151,154, + 162,163,164,365,366,375,376,377, +373,370,369,0,65,66,67,78, +512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447,446, + 445,443,441,440,436,435,434,433,432,431,429,428,413,408,403,402,401,400, + 399,398,397,396,394,393,373,372,371,370,369,358,356,355,354,210,41,39, + 38,34,33,0,27,40,345,346, +512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447,446, + 445,443,441,440,436,435,434,433,432,431,429,428,413,408,403,402,401,400, + 399,398,397,396,394,393,373,372,371,370,369,358,356,355,354,210,41,39, + 38,34,33,0,27,40,345,346, +512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447,446, + 445,443,441,440,436,435,434,433,432,431,429,428,413,408,403,402,401,400, + 399,398,397,396,394,393,373,372,371,370,369,358,356,355,354,210,41,39, + 38,34,33,0,27,40,345,346, +512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447,446, + 445,443,441,440,436,435,434,433,432,431,429,428,413,408,403,402,401,400, + 399,398,397,396,394,393,373,372,371,370,369,358,356,355,354,210,41,39, + 38,34,33,0,27,40,345,346, +512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447,446, + 445,443,441,440,436,435,434,433,432,431,429,428,413,408,403,402,401,400, + 399,398,397,396,394,393,373,372,371,370,369,358,356,355,354,210,41,39, + 38,34,33,0,27,40,345,346, +512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447,446, + 445,443,441,440,436,435,434,433,432,431,429,428,413,408,403,402,401,400, + 399,398,397,396,394,393,373,372,371,370,369,358,356,355,354,210,41,39, + 38,34,33,0,27,40,345,346, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,370,369,368,347,342,86,52,41,39,38,34,33,0,27,40, + 345,346, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,370,369,368,347,342,86,52,0,1,28,29,30,31,32,46,47, + 49,60,61,62,66,67,68,72,73,75,76,77,79,80,81,92,94,96,97,98,100,102,104, + 130,134,135,136,137,142,143,144,145,147,148,149,150,151,154,162,163,164, + 365,366,375,376,377, +513,371,342,52,0,28,29,46,70,365,366, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,370,369,368,347,342,86,52,0,1,28,29,30,31,32,46,47, + 49,60,61,62,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96,97,98,100,102, + 104,130,134,135,136,137,142,143,144,145,147,148,149,150,151,154,162,163, + 164,365,366,375,376,377, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,370,369,368,347,342,86,52,0,1,28,29,30,31,32,46,47, + 49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96,97,98,100, + 102,104,130,134,135,136,137,142,143,144,145,147,148,149,150,151,154,162, + 163,164,178,365,366,375,376,377, +429,0,168,181, +399,0,121, +408,0,131, +513,342,52,0,28,29,46,47,49,179,180,365,366, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445,443, + 440,432,431,429,428,356,354,210,0,168,169,181, +368,0,60,61,62, +408,0,131, +368,41,39,38,34,33,0,27,40,345,346, +511,428,374,0,77,117,165,166,174,187,331,333, +355,0,13,167, +513,428,374,342,52,0,28,29,46,47,49,77,117,165,166,174,184,187,365,366, +374,41,39,38,34,33,0,27,40,345,346, +374,0,77, +435,434,433,0,188,189,190,191, +408,0,131, +408,0,131, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,395,391,389,387, + 385,384,383,381,379,374,370,369,368,358,347,342,86,52,0,1,15,28,29,30, + 31,32,46,47,49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96, + 97,98,100,102,104,106,116,130,134,135,136,137,138,139,142,143,144,145, + 147,148,149,150,151,154,162,163,164,365,366,375,376,377, +439,412,411,409,0,135,136,137,204, +374,41,39,38,34,33,0,27,40,345,346, +374,0,77, +403,402,401,400,399,398,397,396,394,370,369,358,0,15,65,66,67,107,109,111, + 112,114,118,119,120,121,122,123,124,125, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,395,391,389,387, + 385,384,383,381,379,374,370,369,368,358,347,342,86,52,0,1,15,28,29,30, + 31,32,46,47,49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96, + 97,98,100,102,104,106,116,130,134,135,136,137,138,142,143,144,145,147, + 148,149,150,151,154,162,163,164,365,366,375,376,377, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,395,391,389,387, + 385,384,383,381,379,374,370,369,368,358,347,342,86,52,0,1,15,28,29,30, + 31,32,46,47,49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96, + 97,98,100,102,104,106,116,130,134,135,136,137,138,139,142,143,144,145, + 147,148,149,150,151,154,162,163,164,365,366,375,376,377, +413,393,0,110,140,141, +513,342,52,0,28,29,46,47,49,184,365,366, +499,0,308, +513,480,362,342,52,0,21,23,28,29,46,47,49,274,276,286,306,312,313,365,366, +448,0,221, +514,513,502,342,52,41,39,38,34,33,0,27,40,345,346, +514,513,0,57,343,344, +458,355,41,39,38,34,33,0,27,40,345,346, +513,342,52,0,28,29,46,47,49,365,366, +355,0,13, +368,0,60,61,62, +515,513,464,463,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389, + 387,385,384,383,381,379,374,370,369,368,347,342,86,52,41,39,38,34,33,0, + 27,40,345,346, +464,463,0,249,250,251, +458,0,241, +498,452,41,39,38,34,33,0,27,40,345,346, +452,0,229, +441,0,202, +367,0,48, +358,357,86,41,39,38,34,33,0,27,40,345,346, +86,0,32,377, +361,41,39,38,34,33,0,27,40,345,346, +361,0,22, +361,41,39,38,34,33,0,27,40,345,346, +374,0,77,185, +361,0,22, +513,342,52,41,39,38,34,33,0,27,40,345,346, +480,362,0,21,23,276, +374,0,77,185, +513,342,52,0,28,29,46,47,49,273,365,366, +512,510,500,496,480,479,478,475,469,468,467,466,462,459,457,456,451,449,447, + 446,445,443,440,428,362,356,354,210,0,21,23,211,216,217,271,272,274,275, + 276,286, +515,514,513,512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451, + 449,447,446,445,443,441,440,436,435,434,433,432,431,429,428,413,408,403, + 402,401,400,399,398,397,396,394,393,392,391,390,389,388,387,386,385,384, + 383,382,381,380,379,373,372,371,370,369,368,358,356,355,354,210,41,39, + 38,34,33,0,27,40,345,346, +408,373,370,369,0,65,66,67,131,156, +513,342,52,0,28,29,46,47,49,80,365,366, +373,0,78, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,370,369,368,347,342,86,52,0,1,28,29,30,31,32,46,47, + 49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96,97,98,100, + 102,104,130,134,135,136,137,142,143,144,145,147,148,149,150,151,154,162, + 163,164,365,366,375,376,377, +515,0,30,375, +515,0,30,375, +370,369,0,65,66,67, +408,373,0,78,131, +513,512,511,510,500,499,496,484,480,479,478,475,469,468,467,466,462,459,457, + 456,455,453,451,449,447,446,445,443,441,440,436,435,434,433,432,431,429, + 428,413,408,403,402,401,400,399,398,397,396,394,393,392,391,390,389,388, + 387,386,385,384,383,382,381,380,379,374,373,372,371,370,369,362,358,356, + 355,354,342,210,52,41,39,38,34,33,0,27,40,345,346, +367,0,48, +372,371,0,69,70,71, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,406,405,404,391, + 389,387,385,384,383,381,379,374,370,369,368,357,347,342,86,52,41,39,38, + 34,33,0,27,40,345,346, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,370,369,368,357,347,342,86,52,0,1,16,28,29,30,31,32, + 46,47,49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96,97,98, + 100,102,104,130,134,135,136,137,142,143,144,145,147,148,149,150,151,154, + 162,163,164,340,365,366,375,376,377, +513,342,52,0,28,29,46,339,365,366, +513,342,52,0,28,29,46,47,49,365,366, +408,0,131, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445,443, + 440,432,431,428,356,354,210,0,170,171,182, +428,374,0,77,117,165,166,174,187, +512,510,500,496,475,469,468,467,466,462,459,457,456,453,451,449,447,446,445, + 443,441,440,436,435,434,433,432,431,429,428,373,356,354,210,0,168,169, + 181, +435,434,433,373,0,78,188,189,190,191, +408,373,0,78,131, +515,410,407,368,357,86,0,16,30,31,32,60,61,62,72,79,81,130,134,332,334,375, + 376,377, +428,406,374,41,39,38,34,33,0,27,40,345,346, +428,406,374,41,39,38,34,33,0,27,40,345,346, +428,406,374,41,39,38,34,33,0,27,40,345,346, +406,0,129, +406,0,129, +406,0,129, +428,374,0,77,165,166,174,187, +513,342,52,41,39,38,34,33,0,27,40,345,346, +513,342,52,0,28,29,46,47,49,365,366, +428,374,0,77,117,165,166,174,187, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,370,369,368,347,342,86,52,0,1,28,29,30,31,32,46,47, + 49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96,97,98,100, + 102,104,115,130,134,135,136,137,142,143,144,145,147,148,149,150,151,154, + 162,163,164,365,366,375,376,377, +407,368,86,41,39,38,34,33,0,27,40,345,346, +407,368,86,0,32,60,61,62,113,130,377, +358,357,0,15,16,17, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,370,369,368,347,342,86,52,41,39,38,34,33,0,27,40, + 345,346, +398,397,396,0,118,119,120, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,370,369,368,347,342,86,52,0,1,28,29,30,31,32,46,47, + 49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96,97,98,100, + 102,104,130,134,135,136,137,142,143,144,145,147,148,149,150,151,154,162, + 163,164,365,366,375,376,377, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,406,405,404,391, + 389,387,385,384,383,381,379,374,370,369,368,347,342,86,52,41,39,38,34, + 33,0,27,40,345,346, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,406,405,404,391, + 389,387,385,384,383,381,379,374,370,369,368,347,342,86,52,41,39,38,34, + 33,0,27,40,345,346, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,406,405,404,391, + 389,387,385,384,383,381,379,374,370,369,368,347,342,86,52,41,39,38,34, + 33,0,27,40,345,346, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,406,405,404,391, + 389,387,385,384,383,381,379,374,370,369,368,347,342,86,52,41,39,38,34, + 33,0,27,40,345,346, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,406,405,404,391, + 389,387,385,384,383,381,379,374,370,369,368,347,342,86,52,0,1,28,29,30, + 31,32,46,47,49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96, + 97,98,100,102,104,108,126,127,128,129,130,134,135,136,137,142,143,144, + 145,147,148,149,150,151,154,162,163,164,365,366,375,376,377, +413,393,373,0,78,110,140,141, +403,402,401,400,399,398,397,396,394,373,370,369,358,0,15,65,66,67,78,107, + 109,111,112,114,118,119,120,121,122,123,124,125, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,395,391,389,387, + 385,384,383,381,379,374,370,369,368,358,347,342,86,52,41,39,38,34,33,0, + 27,40,345,346, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,395,391,389,387, + 385,384,383,381,379,374,370,369,368,358,347,342,86,52,41,39,38,34,33,0, + 27,40,345,346, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,395,391,389,387, + 385,384,383,381,379,374,370,369,368,358,347,342,86,52,0,1,15,28,29,30, + 31,32,46,47,49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96, + 97,98,100,102,104,106,116,130,134,135,136,137,138,142,143,144,145,147, + 148,149,150,151,154,162,163,164,365,366,375,376,377, +428,374,41,39,38,34,33,0,27,40,345,346, +428,374,0,77,117,165,166,174,187, +493,492,491,490,489,488,412,411,409,352,351,350,349,348,347,0,1,2,3,4,5,6,7, + 8,135,136,137,279,295,296,297,298,299,300,301, +374,0,77,185, +513,484,441,358,342,52,0,15,17,28,29,46,47,49,202,284,287,314,365,366, +408,373,0,78,131, +513,342,52,0,28,29,46,47,49,365,366, +515,514,513,0,82,343,344, +513,502,342,52,0,28,29,46,47,49,184,242,319,365,366, +465,41,39,38,34,33,0,27,40,345,346, +465,41,39,38,34,33,0,27,40,345,346, +465,0,252, +513,502,342,52,0,28,29,46,47,49,184,242,319,365,366, +441,41,39,38,34,33,0,27,40,345,346, +513,483,443,440,428,374,342,52,41,39,38,34,33,0,27,40,345,346, +513,428,374,342,52,0,28,29,46,77,117,165,166,174,187,192,231,365,366, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,447,446,445,443,441,440,428,408,374,373,362,358,356,354,342,210,52, + 41,39,38,34,33,0,27,40,345,346, +513,342,52,0,28,29,46,47,49,365,366, +484,0,284,287, +361,0,22, +493,492,491,490,489,488,412,411,409,352,351,350,349,348,347,0,1,2,3,4,5,6,7, + 8,135,136,137,279,295,296,297,298,299,300,301, +481,480,477,444,362,360,359,0,18,19,21,23,214,270,276,277,278, +479,0,211,275, +424,423,422,421,420,0,157,158,159,160,161, +373,0,78, +373,0,78, +373,370,369,0,65,66,67,78, +515,512,510,500,496,475,469,468,467,466,462,459,457,456,455,453,451,449,447, + 446,445,443,441,440,438,437,436,435,434,433,432,431,429,428,413,408,403, + 402,401,400,399,398,397,396,394,393,392,391,390,389,388,387,386,385,384, + 383,382,381,380,379,373,372,371,370,369,358,356,355,354,210,41,39,38,34, + 33,0,27,40,345,346, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,370,369,368,347,342,86,52,0,1,28,29,30,31,32,46,47, + 49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96,97,98,100, + 102,104,130,134,135,136,137,142,143,144,145,147,148,149,150,151,154,162, + 163,164,365,366,375,376,377, +371,0,70, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,453, + 451,449,448,447,446,445,443,441,440,436,435,434,433,432,431,429,428,413, + 408,393,373,362,358,356,354,342,210,52,41,39,38,34,33,0,27,40,345,346, +370,369,0,65,66,67, +513,342,52,0,28,29,46,47,49,180,365,366, +430,41,39,38,34,33,0,27,40,345,346, +430,0,183, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445,443, + 440,432,428,356,354,210,0,172,173,186, +512,510,500,496,475,469,468,467,466,462,459,457,456,453,451,449,447,446,445, + 443,441,440,436,435,434,433,432,431,428,373,356,354,210,0,170,171,182, +513,342,52,0,28,29,46,47,49,365,366, +408,373,0,78,131, +435,434,433,373,0,78,188,189,190,191, +370,369,0,65,66,67, +515,513,428,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387, + 385,384,383,381,379,374,370,369,368,347,342,86,52,0,1,28,29,30,31,32,46, + 47,49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96,97,98, + 100,102,104,117,130,134,135,136,137,142,143,144,145,147,148,149,150,151, + 154,162,163,164,165,166,174,187,365,366,375,376,377, +357,0,16, +393,370,369,0,65,66,67,110, +374,41,39,38,34,33,0,27,40,345,346, +374,41,39,38,34,33,0,27,40,345,346, +374,0,77, +515,513,428,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387, + 385,384,383,381,379,374,370,369,368,347,342,86,52,0,1,28,29,30,31,32,46, + 47,49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96,97,98, + 100,102,104,117,130,134,135,136,137,142,143,144,145,147,148,149,150,151, + 154,162,163,164,165,166,174,187,365,366,375,376,377, +370,369,0,65,66,67, +512,510,500,496,475,469,468,467,466,462,459,457,456,453,451,449,447,446,445, + 443,440,435,434,433,428,356,354,210,0,188,189,190,191,228,311, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,447,446,445,443,441,440,428,408,374,373,362,358,356,354,342,210,52, + 41,39,38,34,33,0,27,40,345,346, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,447,446,445,443,441,440,428,408,374,373,362,358,356,354,342,210,52, + 41,39,38,34,33,0,27,40,345,346, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,447,446,445,443,441,440,428,408,374,373,362,358,356,354,342,210,52, + 41,39,38,34,33,0,27,40,345,346, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,447,446,445,443,441,440,428,408,374,373,362,358,356,354,342,210,52, + 41,39,38,34,33,0,27,40,345,346, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,447,446,445,443,441,440,428,408,374,373,362,358,356,354,342,210,52, + 41,39,38,34,33,0,27,40,345,346, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,447,446,445,443,441,440,428,408,374,373,362,358,356,354,342,210,52, + 41,39,38,34,33,0,27,40,345,346, +492,41,39,38,34,33,0,27,40,345,346, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,447,446,445,443,441,440,428,408,373,362,358,356,354,342,210,52,41, + 39,38,34,33,0,27,40,345,346, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,447,446,445,443,441,440,428,408,373,362,358,356,354,342,210,52,41, + 39,38,34,33,0,27,40,345,346, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,447,446,445,443,441,440,428,408,373,362,358,356,354,342,210,52,41, + 39,38,34,33,0,27,40,345,346, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,447,446,445,443,441,440,428,408,373,362,358,356,354,342,210,52,41, + 39,38,34,33,0,27,40,345,346, +492,0,299, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,447,446,445,443,441,440,428,408,374,373,362,358,356,354,342,210,52, + 0, +374,0,77, +374,0,77, +513,342,52,0,28,29,46,47,49,365,366, +484,0,284,287, +362,0,21,23, +483,0,282, +513,480,362,342,52,0,21,23,28,29,46,47,49,274,276,286,312,313,365,366, +374,0,77, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445,443, + 440,428,356,354,210,41,39,38,34,33,0,27,40,345,346, +408,0,131, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445,443, + 440,428,356,354,210,41,39,38,34,33,0,27,40,345,346, +441,436,435,434,433,0,188,189,190,191,193,194,195,196,202, +513,342,52,0,28,29,46,365,366, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,447,446,445,443,441,440,428,362,356,354,342,210,52,0,280, +373,41,39,38,34,33,0,27,40,345,346, +373,41,39,38,34,33,0,27,40,345,346, +373,41,39,38,34,33,0,27,40,345,346, +373,41,39,38,34,33,0,27,40,345,346, +373,41,39,38,34,33,0,27,40,345,346, +370,369,0,65,66,67, +515,513,342,52,41,39,38,34,33,0,27,40,345,346, +513,342,52,0,28,29,46,47,49,184,365,366, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,395,391,389,387, + 385,384,383,381,379,374,370,369,368,358,347,342,86,52,41,39,38,34,33,0, + 27,40,345,346, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,395,391,389,387, + 385,384,383,381,379,374,370,369,368,358,347,342,86,52,0,1,15,28,29,30, + 31,32,46,47,49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96, + 97,98,100,102,104,106,116,130,134,135,136,137,138,139,142,143,144,145, + 147,148,149,150,151,154,162,163,164,365,366,375,376,377, +512,510,500,496,475,469,468,467,466,462,459,457,456,453,451,449,447,446,445, + 443,441,440,436,435,434,433,432,428,373,356,354,210,0,172,173,186, +515,410,407,368,357,86,0,16,30,31,32,60,61,62,72,79,81,130,134,334,375,376, + 377, +435,434,433,373,0,78,188,189,190,191, +515,513,428,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387, + 385,384,383,381,379,374,370,369,368,347,342,86,52,0,1,28,29,30,31,32,46, + 47,49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96,97,98, + 100,102,104,117,130,134,135,136,137,142,143,144,145,147,148,149,150,151, + 154,162,163,164,165,166,174,187,365,366,375,376,377, +408,373,370,369,0,65,66,67,78,131,132,133, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,370,369,368,347,342,86,52,0,1,28,29,30,31,32,46,47, + 49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96,97,98,100, + 102,104,130,134,135,136,137,142,143,144,145,147,148,149,150,151,154,162, + 163,164,365,366,375,376,377, +428,374,0,77,117,165,166,174,187, +435,434,433,373,0,78,188,189,190,191, +498,0,309, +515,0,30,375, +515,0,30,375, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,448,447,446,445,443,441,440,428,408,373,362,358,356,354,342,210,52, + 0,221,288,289, +482,41,39,38,34,33,0,27,40,345,346, +482,0,283, +515,513,342,52,0,28,29,30,46,47,49,197,198,365,366,375, +443,440,0,203,205, +430,41,39,38,34,33,0,27,40,345,346, +430,0,183, +441,0,194,202, +513,484,441,342,52,0,28,29,46,47,49,202,281,284,285,287,365,366, +408,0,131, +413,393,0,110,140,141, +515,513,427,426,425,418,417,416,415,414,412,411,410,409,407,391,389,387,385, + 384,383,381,379,374,370,369,368,347,342,86,52,0,1,28,29,30,31,32,46,47, + 49,60,61,62,63,64,66,67,68,72,73,75,76,77,79,80,81,92,94,96,97,98,100, + 102,104,130,134,135,136,137,142,143,144,145,147,148,149,150,151,154,162, + 163,164,365,366,375,376,377, +408,373,0,78,131,132, +370,369,0,65,66,67, +435,434,433,373,0,78,188,189,190,191, +497,41,39,38,34,33,0,27,40,345,346, +497,0,310, +373,0,78, +408,373,0,78,131, +440,356,0,12,203, +448,0,221, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,447,446,445,443,441,440,428,408,373,362,358,356,354,342,210,52,41, + 39,38,34,33,0,27,40,345,346, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445,443, + 441,440,438,437,428,408,373,356,354,210,0,199,200,201, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445,443, + 441,440,438,437,428,408,373,356,354,210,0,199,200,201, +408,373,0,78,131, +442,0,206, +439,0,204, +515,513,342,52,0,28,29,30,46,47,49,197,198,365,366,375, +443,0,205, +484,0,284,287, +483,0,282, +370,369,0,65,66,67, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445,443, + 440,428,356,354,210,41,39,38,34,33,0,27,40,345,346, +515,0,30,375, +487,486,485,0,290,292,293,294, +485,0,290, +440,0,203, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445,443, + 441,440,428,408,373,356,354,210,41,39,38,34,33,0,27,40,345,346, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445,443, + 441,440,428,408,373,356,354,210,41,39,38,34,33,0,27,40,345,346, +515,513,342,52,0,28,29,30,46,47,49,198,365,366,375, +512,510,500,496,475,469,468,467,466,462,459,457,456,451,449,447,446,445,443, + 440,428,356,354,210,41,39,38,34,33,0,27,40,345,346, +513,342,52,0,28,29,46,47,49,184,365,366, +408,0,131, +482,0,283, +373,0,78, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,448,447,446,445,443,441,440,428,408,373,362,358,356,354,342,210,52, + 41,39,38,34,33,0,27,40,345,346, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,448,447,446,445,443,441,440,428,408,373,362,358,356,354,342,210,52, + 41,39,38,34,33,0,27,40,345,346, +357,0,16, +513,512,510,500,496,484,480,479,478,475,469,468,467,466,462,459,457,456,451, + 449,448,447,446,445,443,441,440,428,408,373,362,358,356,354,342,210,52, + 0,221,289,291, +485,0,290, +408,0,131, +356,0,12, + +}; + + +static unsigned const char far ag_astt[10705] = { + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,1,1,8,1,1,7,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,7,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,8,1,1,7,1,1,3,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,1,7,1,1,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,9,7,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,8,7,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,5,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,5,3,7,3,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5, + 5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,8,8,8,8,8,1,8,8,8, + 8,8,8,8,8,8,8,1,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,1,1,1,5,5,5,1,1,8,1,1, + 7,1,1,1,3,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5, + 5,1,1,8,1,1,7,1,1,1,3,1,7,3,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,1,1,8,1,1,7, + 1,1,1,3,1,1,1,7,1,1,1,1,1,1,1,1,7,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7, + 1,1,1,3,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,7,1,1,1,1,1,1,1,5,1,1,8,1,1,7,1,1, + 1,3,1,7,1,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1, + 7,1,1,1,3,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,5,1,1,8,1,1,7,1,1,1, + 3,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,7,1,1,1,1,1,1,1,5,5,5,5,1,1,8,1,1,7,1,1, + 1,3,1,1,8,1,7,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1, + 1,8,1,1,7,1,1,1,3,5,1,1,8,1,1,7,1,1,1,3,5,5,5,1,1,8,1,1,7,1,1,1,3,5,1,1,8, + 1,1,7,1,1,1,3,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3, + 1,1,1,7,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,5,5,5,5,5,5,5,5,5,5,7,3,3,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7, + 1,1,1,1,1,1,7,1,1,1,7,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,7,1,3,1,1,1,7,1,1,1,1,1,1,1,1,7,1,1,1,1,1,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,1,5,5,5,5,5,5,5,5,5,5,7,3,3,1,7,1,1,1,1,7,3,3,3,1,1,1, + 7,1,3,1,7,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,5,1,1,1,1,1,1,1,3,1,1,1,1,1,3,3,1,1,3,3,1,1,3,1,3,1,1,1,3,3,1,1,1, + 1,1,3,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1, + 1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,5, + 5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3, + 9,9,9,5,5,5,5,5,5,5,5,5,5,5,5,5,9,5,5,1,1,8,1,1,7,1,1,1,3,1,5,1,1,1,1,1,7, + 1,1,1,1,1,1,1,3,1,1,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,7,1,1,1,1,1,5,1,1,1,1,1, + 7,1,1,1,1,1,1,1,1,1,7,1,1,1,5,1,1,8,1,1,7,1,1,1,3,1,7,1,1,3,1,5,1,1,1,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,5,5,5,1,5,1,7,1,1,1,1,1,3,3,1,3,1,1, + 5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,7,1,1,1,1,1,1,1,5,5,5,1,1,8,1,1,7,1,1,1,3, + 1,1,1,7,1,1,1,1,1,1,1,5,1,1,8,1,1,7,1,1,1,3,1,7,1,5,5,1,1,8,1,1,7,1,1,1,3, + 5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,7,3,1,1,7,3,1,3,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,1,1,8, + 1,1,7,1,1,1,3,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,1,1,8,1,1,7,1,1,1,3,5,5,1, + 1,8,1,1,7,1,1,1,3,5,5,1,1,8,1,1,7,1,1,1,3,5,5,1,1,8,1,1,7,1,1,1,3,5,5,1,1, + 8,1,1,7,1,1,1,3,5,5,1,1,8,1,1,7,1,1,1,3,1,5,1,1,5,7,3,3,1,7,1,1,8,7,1,1,1, + 1,1,7,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8, + 1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7, + 1,1,1,3,1,7,1,1,7,3,1,7,1,1,7,1,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3, + 1,1,7,1,1,1,1,1,1,7,1,1,1,1,1,1,1,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,1,1,8,1, + 1,7,1,1,1,3,1,1,1,7,3,3,3,1,1,5,1,1,8,1,1,7,1,1,1,3,5,1,1,8,1,1,7,1,1,1,3, + 5,1,1,8,1,1,7,1,1,1,3,5,1,1,8,1,1,7,1,1,1,3,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,1,1,1,7,1,1,1,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,1,1,8,1,1, + 7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,1,1,8,1,1,7,1,1,1, + 3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1, + 8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1, + 1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,1,1,8,1,1,7,1,1,1,3,1,1,7,1,1,1,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,9, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7, + 1,1,1,3,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,5,5,5,5,5, + 1,1,8,1,1,7,1,1,1,3,1,7,1,1,7,1,3,1,7,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,5,3,1,1,5,1,1, + 5,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,7,1,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,7,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,3,3,3,3,3, + 3,3,3,3,3,3,3,3,3,3,1,1,5,1,1,1,1,5,1,1,1,5,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,5,1,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,3,9,9,7,3,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1, + 1,1,7,3,3,3,1,1,1,7,1,1,3,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,7,1,1,1,1,1,1, + 1,1,5,3,1,3,1,1,7,1,1,1,1,7,3,1,5,5,1,1,8,1,1,7,1,1,1,3,1,1,7,3,1,1,1,1,1, + 1,1,7,1,1,1,1,1,1,1,1,3,1,7,3,1,7,3,1,1,7,1,1,1,1,1,7,3,1,1,1,7,3,1,1,1,1, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,5,5,5,5,7,3,3,1,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,1,7,1,1,1,1,7,1,1,1,1,7,1,1,1,1,1, + 1,1,5,5,1,1,8,1,1,7,1,1,1,3,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,7,1,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,5,1,1,8,1,1,7,1,1,1,3,8,1,1,1,1,1,8,8,7,1,1,1,1,1,1,1,1,1,7, + 3,1,1,7,1,1,7,1,8,1,1,1,1,1,8,8,7,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,7,3,1,5,5,1,1,8,1,1,7,1,1,1, + 3,1,8,7,1,1,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,7,1,1,1,3,1,1,1,1,1,7,1,1,1,3, + 3,1,1,1,7,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,5,3,3,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,5,3,3,3,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,7,1,1,8,8,8,8,8,1,8,8,8,8,8,8,8,8,8,8,1,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,7,1,1,1,5,5,5,1,1,8,1,1,7,1,1,1,3,8,1,1,7,1,1,3,1,8,1,1,7,1,1, + 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1, + 1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8, + 1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,5,3,1,1,7,1,1,5,1,1,1,1,7,1,1,1,1,1,1,1,1,1, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,8,1,5,5,5,5,7,1,1,1,1,7,1,1,3,1, + 5,1,5,1,1,8,1,1,7,1,1,1,3,1,1,1,7,1,1,1,1,1,1,1,3,1,7,1,1,1,1,1,1,1,7,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,8,1,1,7,1,1,1,3,1,7,1,1,1,1,5,1,1,1,1,1,5,1, + 1,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,3,3,3,1,5,1,1,8, + 1,1,7,1,1,1,3,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1, + 1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,7,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,7,1,1,1,5, + 5,1,1,8,1,1,7,1,1,1,3,1,1,1,7,1,1,1,3,3,1,1,1,7,1,1,7,1,1,3,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1, + 1,7,1,1,1,1,7,1,5,5,1,1,8,1,1,7,1,1,1,3,1,7,3,1,7,1,1,7,1,5,5,5,1,1,8,1,1, + 7,1,1,1,3,1,7,3,1,5,1,1,8,1,1,7,1,1,1,3,1,7,1,5,1,1,8,1,1,7,1,1,1,3,1,7,1, + 1,1,7,3,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,7,1,3,1,1,7,1,3,1,1,1,7,1,1,1,1,1,3, + 1,1,5,5,5,5,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,5,5,5,7,1,1,1,1,3,3, + 1,3,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,1,1,8,1,1,7,1,1,1,3,1,8,1,1,7,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,7,3, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,3,1,1,7,3,1,1,1,5,1,1,1,1,1,7,3,1,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 1,1,8,1,1,7,1,1,1,3,1,5,1,1,1,5,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,3,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,3,1,1,1,1,1,1,1,1,7,1,1,1,3,1,1,1,1,1,5,1,1,1,3,3,1,1,1,5,1,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,8,1,5,5,5,5,7,1,1,1,1,1,7,1,1,1,1,1,1,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,8,1,5,5,5,5,5,7,1,1,1,1,1,1, + 1,7,3,1,1,1,1,1,1,7,3,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5, + 5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,1,1,8,1,1,7,1,1,1, + 3,1,5,3,1,5,3,1,5,3,1,1,7,1,3,1,1,3,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,7,1,1, + 1,3,3,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,1,1,8,1,1, + 7,1,1,1,3,1,1,1,7,3,1,1,3,3,3,1,1,1,7,1,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,7,3,3,3,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1, + 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,3,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1, + 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1, + 1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,1,1,8,1,1,7,1,1,1,3,1,1,7,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3, + 1,1,1,1,7,1,3,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,3,1,3,1,1,1,1,7,3,1,1,1,1,7,1, + 1,1,1,1,1,1,1,1,1,5,3,3,3,1,1,1,1,7,1,1,1,1,1,1,3,3,1,1,5,1,1,8,1,1,7,1,1, + 1,3,5,1,1,8,1,1,7,1,1,1,3,1,7,3,1,1,1,1,7,1,1,1,1,1,1,3,3,1,1,5,1,1,8,1,1, + 7,1,1,1,3,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,1,1,7,3,3,3,1,1,1,1,1, + 1,3,3,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,5,1,1,1,3,3,1,1,1,7,3,1,1,7,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,7,1,1,1,3,1,1,1,1,1,1,5,3,1,1,1,1,1,1,7,3,3,3,3,3,1,7,3,1,7,3,1,1,1,7,1, + 1,1,3,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1, + 1,8,1,1,7,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,3,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1, + 1,8,1,1,7,1,1,1,3,1,1,5,1,1,1,1,1,1,7,1,1,1,1,1,3,1,1,5,1,1,8,1,1,7,1,1,1, + 3,1,7,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,5,5,5,5,7,3,3,1,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,8,1,5,5,5,5,5,7,1,1,1,1,1,1,7, + 1,1,1,3,3,1,1,1,1,7,3,1,1,1,1,1,7,3,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,7,3,1,1,1,7,1,1,1,1,5,1,1,8,1,1,7,1,1,1,3,5,1,1,8, + 1,1,7,1,1,1,3,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,5, + 5,5,5,5,5,5,5,5,5,5,5,5,1,5,5,5,5,5,5,5,1,1,1,5,5,5,5,7,1,1,1,1,1,3,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8, + 1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1, + 1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,7,3,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,1,7,1, + 1,5,1,1,1,1,7,1,1,1,1,1,1,1,1,7,3,1,1,5,1,3,1,7,1,1,1,1,1,1,7,1,1,1,1,1,1, + 1,3,1,1,3,1,1,1,1,7,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1, + 8,1,1,7,1,1,1,3,1,5,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1, + 8,1,1,7,1,1,1,3,1,1,1,1,1,5,1,1,1,1,1,3,3,1,1,1,1,1,7,3,3,3,1,1,8,5,5,5,5, + 8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,8,5,5,5,5,5,8,5,8,7,1,5,1,1,8,1,1,7, + 1,1,1,3,5,1,1,8,1,1,7,1,1,1,3,5,1,1,8,1,1,7,1,1,1,3,5,1,1,8,1,1,7,1,1,1,3, + 5,1,1,8,1,1,7,1,1,1,3,1,1,5,1,1,1,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,7,1,1, + 1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,5,5,5,5,5,7,3,3,1,1,1,1,1,1, + 1,7,3,1,1,3,1,1,3,3,3,3,3,1,3,1,1,1,1,1,1,1,7,3,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,7,1,1,1,1,1,1,1,1,1,1,7,3,1,1,1,1,1,7,1,1,7,1,1,1,7,1,1,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,1,3,1,5,1,1, + 8,1,1,7,1,1,1,3,1,7,3,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,5,1,1,8,1, + 1,7,1,1,1,3,1,7,1,1,5,3,1,1,1,1,1,1,5,1,1,1,1,1,1,3,3,1,1,1,1,1,5,1,1,1,5, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,3,1,3,1,1,5,1,1,1,1,1,1,1,7,3,1,1, + 1,1,5,1,1,8,1,1,7,1,1,1,3,1,7,3,1,7,3,1,1,7,3,1,1,1,7,1,1,1,5,1,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7, + 1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,5,5,5,5,5,5,7,3,3,3, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,5,5,5,5,5,5,7,3,3,3,1,1,7,3, + 1,1,7,3,1,7,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,7,3,1,1,7,1,1,1,5,1, + 1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1, + 7,1,1,1,1,1,7,3,3,1,3,1,7,1,1,7,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,1,7,1,1,1,1,1,1,3,1,1,1,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,1,1,7,1,1,1,1, + 1,1,1,1,1,5,1,1,7,3,1,7,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,8,1,1,7,1,1,1,3,1,7,3,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7, + 1,3,3,1,7,3,1,5,1,1,7,1 +}; + + +static const unsigned short far ag_pstt[] = { +6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,2,1,3,4,5,0,5,3,5,6, +7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,17,7,1,7,21, +8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,8,2,8,9, +22,3, +7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,10,7,4,7,10, +515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515, + 515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515, + 515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515, + 515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515, + 515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515, + 515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515, + 515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515, + 515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515, + 515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515, + 515,515,515,515,515,2,1,3,4,513,5,513,3, +15,16,18,20,44,21,24,25,26,28,30,31,34,35,39,40,41,42,43,17,13,11,12,37,62, + 6,54,19,36,23,14,22,32,0,61,62,61,61,59,58,57,56,55,61,61,53,52,61,61, + 51,50,61,49,61,48,47,46,61,61,45,60,38,33,29,27, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,18, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,26, +27,9, +19,10, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1, + 3,4,5,11,5,3,5,597, +514,514,514,514,514,514,2,1,3,4,5,12,5,3,5,525, +514,514,514,514,514,514,514,2,1,3,4,5,13,5,3,5,609, +65,65,65,65,65,63,65,65,65,65,65,65,65,65,65,65,64,65,65,65,65,65,65,65,65, + 65,65,65,65,65,65,65,65,65,14,65,65,65, +514,514,514,2,1,3,4,5,15,5,3,5,681, +514,514,514,2,1,3,4,5,16,5,3,5,679, +514,514,514,514,2,1,3,4,5,17,5,3,5,612, +514,514,514,514,514,514,2,1,3,4,5,18,5,3,5,669, +66,19,8, +514,514,514,514,2,1,3,4,5,20,5,3,5,665, +514,514,514,2,1,3,4,5,21,5,3,5,644, +69,69,67,22,70,70,70,71,71,69,68, +72,23,73, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,2,1,3,4,5,24,5,3,5,638, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5,25,5, + 3,5,637, +514,514,514,2,1,3,4,5,26,5,3,5,636, +69,69,67,27,70,70,70,74,74,69,68, +514,2,1,3,4,5,28,5,3,5,635, +72,29,75, +514,514,2,1,3,4,5,30,5,3,5,631, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5,31,5, + 3,5,628, +69,69,67,32,70,70,70,76,76,69,68, +69,77,69,67,33,79,79,79,78,69,68, +514,2,1,3,4,5,34,5,3,5,626, +514,514,514,2,1,3,4,5,35,5,3,5,625, +69,69,67,36,70,70,70,80,80,69,68, +514,514,514,514,2,1,3,4,5,37,5,3,5,523, +85,81,86,83,38,84,82,86,86, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,2,1,3,4,5,39,5,3,5,620, +514,2,1,3,4,5,40,5,3,5,618, +514,514,514,2,1,3,4,5,41,5,3,5,616, +514,2,1,3,4,5,42,5,3,5,615, +514,514,514,2,1,3,4,5,43,5,3,5,614, +514,514,514,514,514,514,514,2,1,3,4,5,44,5,3,5,648, +87,88,89,45,90,91,91,91, +250,250,250,250,250,250,250,250,250,250,250,250,250,250,92,250,250,250,250, + 250,250,250,250,250,250,46,277,277, +16,95,96,97,98,99,100,18,93,94,43,13,11,64,12,47,101,102,101,101,101,103, + 101,101,101,101,101,101,101,101,101,101,101,101, +69,69,67,48,104,104,104,69,68, +83,49,105, +106,107,50,267,267,267, +16,95,96,97,98,99,100,18,93,94,43,13,11,64,12,51,101,102,101,101,101,108, + 101,101,101,101,101,101,101,101,101,101,101,101, +37,52,109,261, +69,69,67,53,110,110,110,69,68, +69,69,67,54,111,111,111,69,68, +250,250,250,250,250,250,250,250,250,250,250,250,250,250,92,250,250,250,250, + 250,250,250,250,250,250,55,252,252, +112,56,113, +69,69,67,57,248,248,248,69,68, +37,58,109,247, +83,59,114, +81,94,83,115,116,60,117,117,117,117,117,117, +15,16,18,20,21,24,25,26,28,30,31,34,35,39,40,41,42,43,17,13,11,12,37,237,54, + 19,36,23,14,22,32,241,59,58,57,56,55,241,241,53,52,241,241,51,50,241,49, + 241,48,47,46,241,241,45,38,33,29,27, +238,62, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5,63,5,3,5, + 588, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4, + 5,64,5,3,5,575, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,132,129,131,134, + 135,136,130,127,152,163,148,147,122,138,69,123,67,65,144,161,161,151, + 150,159,161,159,159,149,140,159,162,160,158,158,160,194,160,159,158,159, + 156,159,159,159,153,153,153,153,153,153,153,153,160,157,153,153,153,159, + 159,159,153,146,146,146,146,146,145,153,153,153,164,194,164,69,68,143, + 142,141, +514,514,514,514,514,2,1,3,4,5,66,5,3,5,524, +165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165, + 165,67,165,165, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,2,1,3,4,5,68,5,3,5,535, +34,34,34,514,514,514,514,514,514,514,514,514,514,514,514,514,34,514,514,2,1, + 3,4,5,69,5,3,5,534, +166,31,167, +69,169,69,67,71,70,70,70,168,168,170,171,414,69,68, +514,514,514,514,2,1,3,4,5,72,5,3,5,624, +122,73,149,140,172,172, +174,408,175,173, +69,69,67,75,70,70,70,176,176,69,68, +72,174,76,177,178,179, +514,2,1,3,4,5,77,5,3,5,670, +122,78,149,140,371, +174,368,181,180, +69,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182, + 182,182,183,182,182,182,69,182,67,80,70,70,70,182,182,364,364,184,366, + 69,68, +514,514,514,2,1,3,4,5,81,5,3,5,650, +69,69,67,82,70,70,70,185,185,69,68, +514,514,514,2,1,3,4,5,83,5,3,5,613, +69,69,67,84,70,70,70,186,186,69,68, +514,2,1,3,4,5,85,5,3,5,664, +94,86,187, +514,514,2,1,3,4,5,87,5,3,5,641, +514,514,2,1,3,4,5,88,5,3,5,640, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,2,1,3,4,5,89,5,3,5,527, +188,90,280, +189,190,91,285,191,285, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,2,1,3,4,5,92,5,3,5,619, +514,514,514,514,514,2,1,3,4,5,93,5,3,5,653, +514,514,514,514,514,2,1,3,4,5,94,5,3,5,646, +514,514,2,1,3,4,5,95,5,3,5,678, +514,514,2,1,3,4,5,96,5,3,5,677, +514,514,2,1,3,4,5,97,5,3,5,676, +514,514,2,1,3,4,5,98,5,3,5,675, +514,514,2,1,3,4,5,99,5,3,5,674, +514,514,2,1,3,4,5,100,5,3,5,673, +192,381,193, +194,378,102,380,380, +112,103,195, +72,197,104,196,197, +69,69,67,105,70,70,70,198,198,69,68, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,2,1,3,4,5,106,5,3,5,630, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,2,1,3,4,5,107,5,3,5,629, +112,108,199, +200,109,7, +72,110,201, +202,111,203, +514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5,112,5,3,5,617, +204,83,113,206,207,205, +69,69,67,114,70,70,70,208,208,69,68, +514,514,514,2,1,3,4,5,115,5,3,5,529, +514,514,514,2,1,3,4,5,116,5,3,5,528, +69,69,67,117,304,304,304,69,68, +514,2,1,3,4,5,118,5,3,5,586, +514,2,1,3,4,5,119,5,3,5,585, +514,2,1,3,4,5,120,5,3,5,584, +514,2,1,3,4,5,121,5,3,5,583, +514,514,2,1,3,4,5,122,5,3,5,537, +209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,210,209, + 209,209,123,209,209,210, +514,2,1,3,4,5,124,5,3,5,596, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,2,1,3,4,5,125,5,3,5,581, +514,2,1,3,4,5,126,5,3,5,595, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1, + 3,4,5,127,5,3,5,548, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,2,1,3,4,5,128,5,3,5,580, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1, + 3,4,5,129,5,3,5,558, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1, + 3,4,5,130,5,3,5,550, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1, + 3,4,5,131,5,3,5,556, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1, + 3,4,5,132,5,3,5,560, +514,2,1,3,4,5,133,5,3,5,594, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1, + 3,4,5,134,5,3,5,554, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1, + 3,4,5,135,5,3,5,553, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1, + 3,4,5,136,5,3,5,552, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,2,1,3,4,5,137,5,3,5,578, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 2,1,3,4,5,138,5,3,5,516, +514,2,1,3,4,5,139,5,3,5,587, +211,212,140,213,213,213, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5,141,5,3,5,546, +72,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5,142,5, + 3,5,545, +70,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,71,514,514,514,514,514,2,1,3,4,5, + 143,5,3,5,544, +152,144,214, +152,145,215,156, +152,146,216,155, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5,147,5,3,5,538, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5,148,5,3,5,539, +122,43,44,140, +217,66,218, +217,65,219, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,2,1,3,4,5,152,5,3,5,543, +152,153,220, +514,514,514,514,2,1,3,4,5,154,5,3,5,579, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4, + 5,155,5,3,5,576, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,132,129,131,134, + 135,136,130,127,152,148,147,122,138,69,123,67,156,144,70,70,151,150,159, + 70,159,159,149,140,159,221,160,158,158,160,160,159,158,159,156,159,159, + 159,153,153,153,153,153,153,153,153,160,157,153,153,153,159,159,159,153, + 146,146,146,146,146,145,153,153,153,69,68,143,142,141, +125,128,137,157,134,135,136, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,132,129,131,134, + 135,136,130,127,152,148,147,122,138,69,123,67,158,144,70,70,151,150,159, + 70,159,159,149,140,159,158,158,56,56,159,158,159,156,159,159,159,153, + 153,153,153,153,153,153,153,56,157,153,153,153,159,159,159,153,146,146, + 146,146,146,145,153,153,153,69,68,143,142,141, +222,132,223,129,224,131,225,134,135,136,226,130,227,127,54,55,55,55,55,55, + 55,55,55,55,55,55,55,55,55,55, +228,163,45,229,229,229, +166,31,230, +148,147,197,231,231,231, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4, + 5,163,5,3,5,540, +192,193,232, +37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,35,37,37,165,37, +514,514,514,514,2,1,3,4,5,166,5,3,5,536, +69,69,67,167,30,30,30,69,68, +169,168,170,233,415, +514,514,514,514,2,1,3,4,5,169,5,3,5,656, +69,69,67,170,234,234,234,235,235,69,68, +183,412,418,184,416, +192,66,172,236,238,237, +122,173,410,140, +514,514,2,1,3,4,5,174,5,3,5,533, +122,240,175,13,149,140,239,239, +244,11,152,176,243,246,246,242,14,241,246,245,400, +240,177,13, +122,178,375,140, +122,179,149,140,247,247, +122,180,370,140, +122,240,181,13,149,140,248,248, +182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182, + 182,183,182,182,182,182,182,365,365,249, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5,183,5, + 3,5,598, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,251,132,129,131, + 134,135,136,130,127,152,148,147,122,89,138,69,123,67,184,144,254,70,70, + 151,150,159,70,159,159,149,140,159,253,160,158,158,160,160,159,158,159, + 255,159,159,159,153,153,153,153,153,153,153,153,256,252,160,250,153,153, + 153,256,256,159,159,159,153,146,146,146,146,146,145,153,153,153,69,68, + 143,142,141, +258,152,185,257,258,258, +152,186,259, +69,69,67,187,70,70,70,260,260,69,68, +514,514,2,1,3,4,5,188,5,3,5,639, +514,2,1,3,4,5,189,5,3,5,643, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,2,1,3,4,5,190,5,3,5,642, +261,191,262, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4, + 5,192,5,3,5,577, +16,95,96,97,98,99,100,18,93,94,43,13,11,12,193,383,383,383,383,383,383,383, + 383,383,383,383,383,383,383,383, +514,2,1,3,4,5,194,5,3,5,672, +264,94,263,83,115,116,264,264,195,264,264,264,264,265,264,265,264, +122,196,274,140, +66,197,266, +267,198,268, +264,94,263,83,115,116,264,264,199,264,264,264,264,269,264,269,264, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,2,1,3,4,5,200,5,3,5,522, +122,201,260,140, +514,514,2,1,3,4,5,202,5,3,5,623, +270,272,203,271,272, +514,514,514,2,1,3,4,5,204,5,3,5,663, +69,69,67,205,273,273,273,342,69,68, +69,69,67,206,70,70,70,341,341,69,68, +274,207,275, +276,44,281,278,208,280,283,285,285,284,285,282,277,279, +80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,82,80, +83,210, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4, + 5,211,5,3,5,683, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4, + 5,212,5,3,5,682, +286,211,212,42,41,41,41, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,132,129,131,134, + 135,136,130,127,152,148,147,122,138,69,123,67,214,144,70,70,151,150,159, + 70,159,159,149,140,159,287,160,158,158,160,160,159,158,159,156,159,159, + 159,153,153,153,153,153,153,153,153,160,157,153,153,153,159,159,159,153, + 146,146,146,146,146,145,153,153,153,69,68,143,142,141, +63,163,215,289,288, +290,290,290,290,290,63,290,290,290,290,290,290,290,290,290,290,64,290,290, + 290,290,290,290,290,290,290,290,290,290,290,290,290,290,216,290,290,288, +514,514,514,2,1,3,4,5,217,5,3,5,547, +292,148,147,218,292,291,74,292, +292,148,147,219,292,291,73,292, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,132,129,131,134, + 135,136,130,127,152,148,147,122,138,69,123,67,220,144,70,70,151,150,159, + 70,159,159,149,140,159,293,160,158,158,160,160,159,158,159,156,159,159, + 159,153,153,153,153,153,153,153,153,160,157,153,153,153,159,159,159,153, + 294,146,146,146,146,146,145,153,153,153,69,68,143,142,141, +295,148,147,221,231,231,231,58, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4, + 5,222,5,3,5,561, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4, + 5,223,5,3,5,559, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4, + 5,224,5,3,5,557, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4, + 5,225,5,3,5,555, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4, + 5,226,5,3,5,551, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4, + 5,227,5,3,5,549, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5,228,5,3,5,541, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,132,129,131,134, + 135,136,130,127,152,148,147,122,138,69,123,67,229,144,70,70,151,150,159, + 70,159,159,149,140,159,158,158,50,50,159,158,159,156,159,159,159,153, + 153,153,153,153,153,153,153,50,157,153,153,153,159,159,159,153,146,146, + 146,146,146,145,153,153,153,69,68,143,142,141, +69,163,69,67,230,296,296,296,198,69,68, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,132,129,131,134, + 135,136,130,127,152,148,147,122,138,69,123,67,231,144,70,70,151,150,159, + 70,159,159,149,140,159,297,158,158,297,297,159,158,159,156,159,159,159, + 153,153,153,153,153,153,153,153,297,157,153,153,153,159,159,159,153,146, + 146,146,146,146,145,153,153,153,69,68,143,142,141, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,132,129,131,134, + 135,136,130,127,152,148,147,122,138,69,123,67,232,144,161,161,151,150, + 159,161,159,159,149,140,159,162,160,158,158,160,160,159,158,159,156,159, + 159,159,153,153,153,153,153,153,153,153,160,157,153,153,153,159,159,159, + 153,146,146,146,146,146,145,153,153,153,196,69,68,143,142,141, +183,413,418,249, +298,234,299, +192,417,300, +69,69,67,236,70,70,70,301,301,302,302,69,68, +182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182, + 182,182,303,183,182,182,182,182,237,303,303,249, +122,238,149,140,373, +192,409,238, +514,2,1,3,4,5,240,5,3,5,532, +244,11,152,241,304,246,246,242,14,246,245,401, +66,242,236,305, +69,11,152,69,67,243,70,70,70,307,307,304,306,306,242,14,307,306,69,68, +514,2,1,3,4,5,244,5,3,5,680, +152,245,308, +309,310,311,398,315,314,313,312, +192,374,238, +192,369,238, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,251,132,129,131, + 134,135,136,130,127,152,148,147,122,89,138,69,123,67,249,144,254,70,70, + 151,150,159,70,159,159,149,140,159,253,160,158,158,160,160,159,158,159, + 255,159,159,159,153,153,153,153,153,153,153,153,256,252,160,157,153,153, + 153,256,256,159,159,159,153,146,146,146,146,146,145,153,153,153,69,68, + 143,142,141, +316,125,128,137,250,134,135,136,317, +514,2,1,3,4,5,251,5,3,5,564, +152,252,318, +326,327,328,329,298,320,323,267,274,148,147,89,253,324,231,231,231,330,325, + 322,321,319,319,325,321,330,330,330,330,330, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,251,132,129,131, + 134,135,136,130,127,152,148,147,122,89,138,69,123,67,254,144,254,70,70, + 151,150,159,70,159,159,149,140,159,253,160,158,158,160,160,159,158,159, + 255,159,159,159,153,153,153,153,153,153,153,153,139,252,160,157,153,153, + 153,139,159,159,159,153,146,146,146,146,146,145,153,153,153,69,68,143, + 142,141, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,251,132,129,131, + 134,135,136,130,127,152,148,147,122,89,138,69,123,67,255,144,254,70,70, + 151,150,159,70,159,159,149,140,159,332,160,158,158,160,160,159,158,159, + 255,159,159,159,153,153,153,153,153,153,153,153,331,252,160,157,153,153, + 153,331,331,159,159,159,153,146,146,146,146,146,145,153,153,153,69,68, + 143,142,141, +333,334,205,335,335,335, +69,69,67,257,70,70,70,307,307,307,69,68, +336,258,337, +69,276,278,69,67,259,280,339,70,70,70,338,338,341,277,279,341,341,340,69,68, +112,260,342, +514,514,514,514,514,2,1,3,4,5,261,5,3,5,627, +211,212,262,343,343,343, +514,514,2,1,3,4,5,263,5,3,5,645, +69,69,67,264,70,70,70,286,286,69,68, +66,265,344, +122,266,149,140,275, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5,267,5, + 3,5,565, +345,346,268,347,347,347, +261,269,348, +514,514,2,1,3,4,5,270,5,3,5,622, +349,271,255, +350,272,351, +166,273,167, +514,514,514,2,1,3,4,5,274,5,3,5,563, +123,275,249,141, +514,2,1,3,4,5,276,5,3,5,649, +352,277,353, +514,2,1,3,4,5,278,5,3,5,531, +152,279,257,354, +352,280,12, +514,514,514,2,1,3,4,5,281,5,3,5,647, +276,278,282,280,297,355, +152,283,257,295, +69,69,67,284,70,70,70,356,356,294,69,68, +244,244,244,244,276,44,281,244,244,244,244,244,244,244,244,244,244,244,244, + 244,244,244,244,244,278,244,244,244,285,280,283,358,358,246,293,284,293, + 357,277,279, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4, + 5,286,5,3,5,684, +192,360,148,147,287,231,231,231,359,360, +69,69,67,288,70,70,70,361,361,361,69,68, +295,289,157, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,132,129,131,134, + 135,136,130,127,152,148,147,122,138,69,123,67,290,144,70,70,151,150,159, + 70,159,159,149,140,159,362,160,158,158,160,160,159,158,159,156,159,159, + 159,153,153,153,153,153,153,153,153,160,157,153,153,153,159,159,159,153, + 146,146,146,146,146,145,153,153,153,69,68,143,142,141, +363,291,78,363, +363,292,77,363, +148,147,180,231,231,231, +192,295,294,147,364, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,2,1,3,4,5,295,5,3,5,542, +166,30,365, +228,163,46,229,229,229, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4, + 5,298,5,3,5,568, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,132,129,131,134, + 135,136,130,127,152,148,147,122,366,138,69,123,67,299,144,423,70,70,151, + 150,159,70,159,159,149,140,159,367,160,158,158,160,160,159,158,159,156, + 159,159,159,153,153,153,153,153,153,153,153,160,157,153,153,153,159,159, + 159,153,146,146,146,146,146,145,153,153,153,423,69,68,143,142,141, +69,69,67,300,234,234,234,420,69,68, +69,69,67,203,70,70,70,204,204,69,68, +192,200,368, +184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, + 184,371,369,184,184,184,184,303,371,371,370, +11,152,304,304,306,306,242,14,306, +182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182, + 182,182,182,182,182,182,182,182,372,183,182,182,182,182,182,305,372,372, + 249, +309,310,311,295,306,212,315,314,313,312, +192,295,307,209,373, +143,154,155,122,366,123,308,374,151,150,374,149,140,374,374,374,374,374,157, + 374,374,143,142,141, +514,514,514,2,1,3,4,5,309,5,3,5,604, +514,514,514,2,1,3,4,5,310,5,3,5,603, +514,514,514,2,1,3,4,5,311,5,3,5,602, +64,219,220, +64,217,218, +64,215,216, +11,152,315,304,214,242,14,214, +514,514,514,2,1,3,4,5,316,5,3,5,608, +69,69,67,317,70,70,70,367,367,69,68, +11,152,318,304,375,375,242,14,375, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,132,129,131,134, + 135,136,130,127,152,148,147,122,138,69,123,67,319,144,70,70,151,150,159, + 70,159,159,149,140,159,376,160,158,158,160,160,159,158,159,377,159,159, + 159,153,153,153,153,153,153,153,153,105,160,157,153,153,153,159,159,159, + 153,146,146,146,146,146,145,153,153,153,69,68,143,142,141, +514,514,514,2,1,3,4,5,320,5,3,5,567, +155,122,123,321,104,149,140,104,104,104,141, +89,366,322,378,102,103, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5,323,5,3,5,566, +320,323,267,324,108,110,112, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,132,129,131,134, + 135,136,130,127,152,148,147,122,138,69,123,67,325,144,70,70,151,150,159, + 70,159,159,149,140,159,379,160,158,158,160,160,159,158,159,156,159,159, + 159,153,153,153,153,153,153,153,153,160,157,153,153,153,159,159,159,153, + 146,146,146,146,146,145,153,153,153,69,68,143,142,141, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5, + 326,5,3,5,572, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5, + 327,5,3,5,571, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5, + 328,5,3,5,570, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5, + 329,5,3,5,569, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,64,380,381,132, + 129,131,134,135,136,130,127,152,148,147,122,138,69,123,67,330,144,70,70, + 151,150,159,70,159,159,149,140,159,384,160,158,158,160,160,159,158,159, + 383,159,159,159,153,153,153,153,153,153,153,153,100,382,382,382,382,160, + 157,153,153,153,159,159,159,153,146,146,146,146,146,145,153,153,153,69, + 68,143,142,141, +333,334,295,331,138,335,335,335, +326,327,328,329,298,320,323,267,274,295,148,147,89,332,324,231,231,231,58, + 330,325,322,321,319,319,325,321,330,330,330,330,330, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5,333,5, + 3,5,582, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5,334,5, + 3,5,562, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,251,132,129,131, + 134,135,136,130,127,152,148,147,122,89,138,69,123,67,335,144,254,70,70, + 151,150,159,70,159,159,149,140,159,253,160,158,158,160,160,159,158,159, + 255,159,159,159,153,153,153,153,153,153,153,153,141,252,160,157,153,153, + 153,141,159,159,159,153,146,146,146,146,146,145,153,153,153,69,68,143, + 142,141, +514,514,2,1,3,4,5,336,5,3,5,668, +11,152,337,304,385,385,242,14,385, +392,387,393,394,395,396,125,128,137,388,389,390,391,386,138,338,398,398,398, + 400,400,400,400,400,357,357,357,357,357,357,357,357,399,399,397, +152,339,257,355, +69,93,350,89,69,67,354,378,403,70,70,70,402,402,404,358,401,358,69,68, +192,295,341,346,405, +69,69,67,342,70,70,70,406,406,69,68, +286,211,212,284,41,41,41, +69,407,69,67,344,70,70,70,408,408,408,276,276,69,68, +514,2,1,3,4,5,345,5,3,5,633, +514,2,1,3,4,5,346,5,3,5,632, +409,347,271, +69,407,69,67,348,70,70,70,408,408,408,264,264,69,68, +514,2,1,3,4,5,349,5,3,5,621, +514,514,514,514,514,514,514,514,2,1,3,4,5,350,5,3,5,610, +69,11,152,69,67,351,258,258,258,304,410,410,242,14,410,258,258,69,68, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 2,1,3,4,5,352,5,3,5,530, +69,69,67,313,70,70,70,314,314,69,68, +93,354,312,401, +352,355,411, +392,387,393,394,395,396,125,128,137,388,389,390,391,386,138,356,398,398,398, + 400,400,400,400,400,412,412,412,412,412,412,412,412,399,399,397, +81,276,94,83,278,115,116,357,117,117,280,297,117,117,355,117,117, +44,245,243,60, +413,414,415,416,417,359,161,162,163,164,165, +295,360,159, +295,361,158, +295,148,147,362,231,231,231,154, +70,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5, + 363,5,3,5,544, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,132,129,131,134, + 135,136,130,127,152,148,147,122,138,69,123,67,364,144,70,70,151,150,159, + 70,159,159,149,140,159,418,160,158,158,160,160,159,158,159,156,159,159, + 159,153,153,153,153,153,153,153,153,160,157,153,153,153,159,159,159,153, + 146,146,146,146,146,145,153,153,153,69,68,143,142,141, +163,365,199, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,2,1,3,4,5,366,5,3,5,526, +148,147,421,231,231,231, +69,69,67,368,70,70,70,301,301,202,69,68, +514,2,1,3,4,5,369,5,3,5,600, +419,370,420, +186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186, + 186,421,186,186,186,186,371,411,411,422, +184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, + 184,184,184,184,184,184,184,423,369,184,184,184,184,184,372,423,423,370, +69,69,67,373,70,70,70,208,208,69,68, +192,295,374,399,424, +309,310,311,295,375,106,315,314,313,312, +148,147,132,231,231,231, +143,69,11,124,126,133,139,118,119,120,121,125,128,154,137,155,132,129,131, + 134,135,136,130,127,152,148,147,122,138,69,123,67,377,144,70,70,151,150, + 159,70,159,159,149,140,159,427,160,158,158,160,160,159,158,159,426,159, + 159,159,153,153,153,153,153,153,153,153,425,160,157,153,153,153,159,159, + 159,153,146,146,146,146,146,145,153,153,153,425,242,14,425,69,68,143, + 142,141, +366,378,9, +334,148,147,379,231,231,231,428, +514,2,1,3,4,5,380,5,3,5,574, +514,2,1,3,4,5,381,5,3,5,573, +152,382,429, +143,69,11,124,126,133,139,118,119,120,121,125,128,154,137,155,132,129,131, + 134,135,136,130,127,152,148,147,122,138,69,123,67,383,144,70,70,151,150, + 159,70,159,159,149,140,159,221,160,158,158,160,160,159,158,159,426,159, + 159,159,153,153,153,153,153,153,153,153,430,160,157,153,153,153,159,159, + 159,153,146,146,146,146,146,145,153,153,153,430,242,14,430,69,68,143, + 142,141, +148,147,118,231,231,231, +349,349,349,349,349,349,349,349,349,349,349,349,349,270,349,349,349,349,349, + 349,349,309,310,311,349,349,349,349,385,315,314,313,312,431,351, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 2,1,3,4,5,386,5,3,5,517, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 2,1,3,4,5,387,5,3,5,661, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 2,1,3,4,5,388,5,3,5,521, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 2,1,3,4,5,389,5,3,5,520, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 2,1,3,4,5,390,5,3,5,519, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 2,1,3,4,5,391,5,3,5,518, +514,2,1,3,4,5,392,5,3,5,662, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1, + 3,4,5,393,5,3,5,660, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1, + 3,4,5,394,5,3,5,659, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1, + 3,4,5,395,5,3,5,658, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1, + 3,4,5,396,5,3,5,657, +387,397,337, +336,336,336,336,336,336,336,336,336,336,336,336,336,336,336,336,336,336,336, + 336,336,336,336,336,336,336,336,336,331,336,336,336,336,336,336,336,336, + 398, +152,399,432, +152,330,433, +69,69,67,401,70,70,70,434,434,69,68, +93,402,363,401, +278,360,280,361, +435,404,436, +69,276,278,69,67,405,280,339,70,70,70,338,338,353,277,279,353,340,69,68, +152,406,437, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,2,1,3,4,5,407,5,3,5,671, +192,377,373, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,2,1,3,4,5,409,5,3,5,634, +350,439,309,310,311,221,315,314,313,312,441,223,225,440,438, +69,69,67,411,298,298,298,69,68, +442,306,306,306,306,442,306,306,306,306,306,306,306,306,306,306,306,306,306, + 306,306,306,306,306,442,306,306,306,306,306,442,306,442,412,442, +514,2,1,3,4,5,413,5,3,5,593, +514,2,1,3,4,5,414,5,3,5,592, +514,2,1,3,4,5,415,5,3,5,591, +514,2,1,3,4,5,416,5,3,5,590, +514,2,1,3,4,5,417,5,3,5,589, +148,147,181,231,231,231, +514,514,514,514,2,1,3,4,5,419,5,3,5,599, +69,69,67,420,70,70,70,443,443,443,69,68, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1,3,4,5,421,5, + 3,5,601, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,251,132,129,131, + 134,135,136,130,127,152,148,147,122,89,138,69,123,67,422,144,254,70,70, + 151,150,159,70,159,159,149,140,159,253,160,158,158,160,160,159,158,159, + 255,159,159,159,153,153,153,153,153,153,153,153,444,252,160,157,153,153, + 153,444,444,159,159,159,153,146,146,146,146,146,145,153,153,153,69,68, + 143,142,141, +186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186, + 186,186,186,186,186,186,186,421,186,186,186,186,186,423,188,188,422, +143,154,155,122,366,123,424,403,151,150,403,149,140,403,403,403,403,403,157, + 403,143,142,141, +309,310,311,295,425,127,315,314,313,312, +143,69,11,124,126,133,139,118,119,120,121,125,128,154,137,155,132,129,131, + 134,135,136,130,127,152,148,147,122,138,69,123,67,426,144,70,70,151,150, + 159,70,159,159,149,140,159,221,160,158,158,160,160,159,158,159,426,159, + 159,159,153,153,153,153,153,153,153,153,306,160,157,153,153,153,159,159, + 159,153,146,146,146,146,146,145,153,153,153,306,242,14,306,69,68,143, + 142,141, +192,295,148,147,427,231,231,231,58,445,446,446, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,132,129,131,134, + 135,136,130,127,152,148,147,122,138,69,123,67,428,144,70,70,151,150,159, + 70,159,159,149,140,159,447,160,158,158,160,160,159,158,159,156,159,159, + 159,153,153,153,153,153,153,153,153,160,157,153,153,153,159,159,159,153, + 146,146,146,146,146,145,153,153,153,69,68,143,142,141, +11,152,429,304,448,448,242,14,448, +309,310,311,295,430,119,315,314,313,312, +449,431,450, +363,432,451,363, +363,433,452,363, +316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316, + 316,112,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316, + 434,453,315,454, +514,2,1,3,4,5,435,5,3,5,652, +455,436,359, +363,69,69,67,437,70,70,456,70,457,457,458,458,69,68,363, +17,13,438,460,459, +514,2,1,3,4,5,439,5,3,5,605, +419,440,461, +350,222,224,462, +69,93,350,69,67,305,70,70,70,463,463,464,307,307,463,401,69,68, +192,206,373, +333,334,210,335,335,335, +143,69,124,126,133,139,118,119,120,121,125,128,154,137,155,132,129,131,134, + 135,136,130,127,152,148,147,122,138,69,123,67,445,144,70,70,151,150,159, + 70,159,159,149,140,159,465,160,158,158,160,160,159,158,159,156,159,159, + 159,153,153,153,153,153,153,153,153,160,157,153,153,153,159,159,159,153, + 146,146,146,146,146,145,153,153,153,69,68,143,142,141, +192,295,446,131,445,130, +148,147,101,231,231,231, +309,310,311,295,448,120,315,314,313,312, +514,2,1,3,4,5,449,5,3,5,667, +466,450,350, +295,451,333, +192,295,452,334,467, +13,12,453,468,469, +112,317,470, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,2,1, + 3,4,5,455,5,3,5,651, +231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231, + 231,231,471,472,231,231,231,231,231,231,456,230,230,230, +231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231, + 231,231,471,472,231,231,231,231,231,231,457,229,229,229, +192,295,458,345,473, +474,459,235, +316,460,475, +363,69,69,67,461,70,70,456,70,457,457,476,476,69,68,363, +17,462,459, +93,463,310,401, +435,464,477, +148,147,128,231,231,231, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,2,1,3,4,5,466,5,3,5,666, +363,467,478,363, +169,479,480,468,325,325,481,325, +480,469,482, +13,470,483, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,2,1,3,4,5,471,5,3,5,607, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,2,1,3,4,5,472,5,3,5,606, +363,69,69,67,473,70,70,456,70,457,457,228,69,68,363, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,2,1,3,4,5,474,5,3,5,611, +69,69,67,475,70,70,70,484,484,484,69,68, +192,226,473, +455,477,308, +295,478,335, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 2,1,3,4,5,479,5,3,5,655, +514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, + 2,1,3,4,5,480,5,3,5,654, +366,481,324, +319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319, + 319,112,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319, + 482,485,321,321, +480,483,318, +192,234,373, +12,485,468, + +}; + + +static const unsigned short far ag_sbt[] = { + 0, 35, 58, 82, 84, 107, 283, 348, 368, 389, 391, 393, 439, 455, + 472, 510, 523, 536, 550, 566, 569, 583, 596, 607, 610, 645, 670, 683, + 694, 705, 708, 720, 745, 756, 767, 778, 791, 802, 816, 825, 860, 871, + 884, 895, 908, 925, 933, 961, 995,1004,1007,1013,1047,1051,1060,1069, + 1097,1100,1109,1113,1116,1128,1186,1188,1230,1275,1368,1383,1406,1517, + 1546,1549,1564,1578,1584,1588,1599,1605,1616,1621,1625,1665,1678,1689, + 1702,1713,1724,1727,1739,1751,1799,1802,1808,1842,1857,1872,1884,1896, + 1908,1920,1932,1944,1947,1952,1955,1960,1971,2005,2039,2042,2045,2048, + 2051,2072,2078,2089,2102,2115,2124,2135,2146,2157,2168,2180,2205,2216, + 2288,2299,2363,2435,2499,2563,2627,2691,2702,2766,2830,2894,2966,3013, + 3024,3030,3107,3186,3266,3269,3273,3277,3318,3359,3363,3366,3369,3419, + 3422,3436,3499,3587,3594,3680,3710,3716,3719,3725,3770,3773,3796,3810, + 3819,3824,3838,3849,3854,3860,3864,3876,3884,3897,3900,3904,3910,3914, + 3922,3951,3994,4089,4095,4098,4109,4121,4132,4166,4169,4232,4262,4273, + 4290,4294,4297,4300,4317,4351,4355,4367,4372,4385,4395,4406,4409,4423, + 4445,4447,4528,4609,4616,4704,4709,4746,4759,4767,4775,4864,4872,4935, + 4998,5061,5124,5187,5250,5291,5377,5388,5475,5564,5568,5571,5574,5587, + 5618,5623,5626,5637,5649,5653,5673,5684,5687,5695,5698,5701,5796,5805, + 5816,5819,5849,5943,6038,6044,6056,6059,6080,6083,6098,6104,6116,6127, + 6130,6135,6178,6184,6187,6199,6202,6205,6208,6221,6225,6236,6239,6250, + 6254,6257,6270,6276,6280,6292,6332,6413,6423,6435,6438,6526,6530,6534, + 6540,6545,6633,6636,6642,6687,6778,6788,6799,6802,6832,6841,6879,6889, + 6894,6918,6931,6944,6957,6960,6963,6966,6974,6987,6998,7007,7096,7109, + 7120,7126,7167,7174,7262,7306,7350,7394,7438,7534,7542,7574,7617,7660, + 7754,7766,7775,7810,7814,7834,7839,7850,7857,7872,7883,7894,7897,7912, + 7923,7941,7960,8007,8018,8022,8025,8060,8077,8081,8092,8095,8098,8106, + 8186,8274,8277,8334,8340,8352,8363,8366,8395,8432,8443,8448,8458,8464, + 8558,8561,8569,8580,8591,8594,8688,8694,8729,8776,8823,8870,8917,8964, + 9011,9022,9068,9114,9160,9206,9209,9247,9250,9253,9264,9268,9272,9275, + 9295,9298,9332,9335,9369,9384,9393,9428,9439,9450,9461,9472,9483,9489, + 9503,9515,9558,9653,9689,9712,9722,9816,9828,9916,9925,9935,9938,9942, + 9946,9987,9998,10001,10017,10022,10033,10036,10040,10058,10061,10067, + 10155,10161,10167,10177,10188,10191,10194,10199,10204,10207,10253,10286, + 10319,10324,10327,10330,10346,10349,10353,10356,10362,10396,10400,10408, + 10411,10414,10451,10488,10503,10537,10549,10552,10555,10558,10605,10652, + 10655,10696,10699,10702,10705 +}; + + +static const unsigned short far ag_sbe[] = { + 30, 55, 79, 83, 104, 280, 308, 367, 388, 390, 392, 434, 450, 467, + 506, 518, 531, 545, 561, 567, 578, 591, 599, 608, 640, 665, 678, 686, + 700, 706, 715, 740, 748, 760, 773, 786, 794, 811, 820, 855, 866, 879, + 890, 903, 920, 928, 958, 976, 998,1005,1009,1028,1048,1054,1063,1094, + 1098,1103,1110,1114,1121,1151,1187,1225,1270,1307,1378,1403,1512,1541, + 1547,1553,1573,1579,1585,1591,1601,1611,1617,1622,1653,1673,1681,1697, + 1705,1719,1725,1734,1746,1794,1800,1804,1837,1852,1867,1879,1891,1903, + 1915,1927,1939,1945,1949,1953,1957,1963,2000,2034,2040,2043,2046,2049, + 2067,2074,2081,2097,2110,2118,2130,2141,2152,2163,2175,2201,2211,2283, + 2294,2358,2430,2494,2558,2622,2686,2697,2761,2825,2889,2961,3008,3019, + 3026,3102,3181,3261,3267,3270,3274,3313,3354,3360,3364,3367,3414,3420, + 3431,3494,3530,3590,3625,3694,3712,3717,3721,3765,3771,3794,3805,3813, + 3820,3833,3841,3850,3856,3861,3871,3878,3887,3898,3901,3905,3911,3916, + 3947,3989,4027,4091,4096,4101,4116,4127,4161,4167,4227,4246,4268,4281, + 4291,4295,4298,4308,4346,4352,4362,4369,4380,4388,4398,4407,4413,4443, + 4446,4523,4604,4612,4647,4706,4742,4754,4762,4770,4806,4867,4930,4993, + 5056,5119,5182,5245,5286,5322,5381,5419,5506,5565,5569,5572,5577,5614, + 5619,5624,5632,5640,5650,5658,5679,5685,5690,5696,5699,5734,5800,5811, + 5817,5831,5882,5976,6040,6047,6057,6064,6081,6093,6100,6111,6119,6128, + 6131,6173,6180,6185,6194,6200,6203,6206,6216,6222,6231,6237,6245,6251, + 6255,6265,6272,6277,6283,6320,6408,6417,6426,6436,6469,6527,6531,6536, + 6542,6628,6634,6638,6682,6719,6781,6791,6800,6828,6834,6875,6883,6891, + 6900,6926,6939,6952,6958,6961,6964,6968,6982,6990,7000,7038,7104,7112, + 7122,7162,7170,7205,7301,7345,7389,7433,7472,7537,7555,7612,7655,7693, + 7761,7768,7790,7811,7820,7836,7842,7853,7861,7878,7889,7895,7901,7918, + 7936,7946,8002,8010,8019,8023,8040,8067,8078,8086,8093,8096,8101,8181, + 8217,8275,8329,8336,8343,8358,8364,8391,8428,8435,8445,8452,8460,8496, + 8559,8564,8575,8586,8592,8626,8690,8722,8771,8818,8865,8912,8959,9006, + 9017,9063,9109,9155,9201,9207,9246,9248,9251,9256,9265,9269,9273,9280, + 9296,9327,9333,9364,9374,9387,9426,9434,9445,9456,9467,9478,9485,9498, + 9506,9553,9591,9685,9695,9716,9754,9820,9859,9918,9929,9936,9939,9943, + 9983,9993,9999,10005,10019,10028,10034,10037,10045,10059,10063,10098, + 10157,10163,10171,10183,10189,10192,10196,10201,10205,10248,10282,10315, + 10321,10325,10328,10334,10347,10350,10354,10358,10391,10397,10403,10409, + 10412,10446,10483,10492,10532,10540,10550,10553,10556,10600,10647,10653, + 10692,10697,10700,10703,10705 +}; + + +static const unsigned char far ag_fl[] = { + 2,1,1,1,1,1,1,2,2,2,1,1,2,2,1,1,2,0,1,3,0,2,2,1,2,0,1,3,1,1,3,1,1,1,2, + 3,1,2,1,1,1,2,2,1,2,1,3,1,1,1,3,1,1,1,1,2,2,1,3,1,1,1,1,1,1,1,1,1,1,1, + 2,2,2,3,3,0,1,2,2,1,2,0,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,5,3,3,3, + 3,4,1,2,1,2,1,2,1,1,1,1,1,1,3,4,1,1,1,1,1,1,3,2,1,2,4,1,1,2,2,2,1,3,2, + 1,3,1,1,1,1,1,4,1,1,1,1,0,1,5,2,2,4,4,5,0,2,2,2,2,2,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,3,0,1,0,1,0,1,5,0,1,1,1,1,3,1,3,1,3,5,2,1,3,1,2,2,3,1,3,3, + 2,1,3,1,3,1,2,1,2,1,2,1,2,2,3,2,3,1,3,2,2,0,1,1,4,3,0,1,2,1,1,2,1,2,0, + 1,5,2,2,5,0,1,2,1,0,2,1,1,6,1,4,2,1,1,6,1,1,2,1,1,1,6,1,0,2,5,6,2,1,1, + 2,1,1,1,3,3,2,1,0,1,1,1,1,2,2,2,1,2,4,1,1,1,1,1,3,3,0,2,3,1,2,1,3,2,3, + 3,0,1,4,0,1,4,1,1,2,3,1,1,1,1,1,1,1,4,4,6,1,2,1,1,1,2,2,0,1,9,6,0,1,0, + 3,7,1,3,1,2,1,2,2,3,1,2,1,2,3,4,3,4,2,4,4,3,1,3,4,4,1,1,0,1,2,1,1,3,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,5,1,3,1,1,1,1,2,4,4,7,3,4,3,4,4,2,2,1, + 3,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,0,1,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 +}; + +static const unsigned short far ag_ptt[] = { + 0, 3, 3, 8, 8, 8, 8, 11, 14, 17, 20, 20, 23, 26, 27, 36, 36, 37, + 37, 27, 40, 40, 27, 43, 43, 44, 44, 27, 46, 46, 47, 49, 49,365,365,366, + 53, 53, 54, 54, 57, 57, 60, 62, 62, 63, 63, 65, 65, 64, 64, 69, 69, 68, + 68, 68, 68, 73, 73, 73, 73, 73, 75, 75, 80, 79, 79, 79, 79,375,375,376, + 376, 81, 81, 85, 85, 84, 84, 88, 88, 89, 89,377, 87, 87, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,106,106,106,106,106,106,106,114, + 114,109,109,112,112,107,107,107,107,107,108,108,108,126,126,126,113,113, + 113,115,132,133,133,115,115, 72, 72, 72, 72,138,138,138,139,139,140,140, + 76, 76, 76, 76,147,147,147,147,152,152,142,142,143,143,153,144,156,156, + 156,156,156,156,145,145,145,145,145,145,145,145,145,145,145,145,145,145, + 146,146,169,169,171,171,173,173,165,175,175,175,177,177,166,176,176,178, + 178,178,167,179,179,180,180,168,170,184,184,185,172,187,187,117,117,188, + 188,188,188,188,188,192,192,192,192,192,193,197,197,198,198,199,199,199, + 195,194,209,209,207,208,208,208,216,216,217,217,212,212,212,212,225,225, + 212,212,230,230,231,231,212,212,212,212,212,212,212,246,246,212,212,251, + 251,212,212,255,255,212,212,212,212,212,264,264,264,267,267,212,240,240, + 268,268,268,268,215,215,271,271,271,271,271,278,278,278,278,278,211,273, + 280,280,281,281,281,285,274,286,286,284,288,288,288,291,291,288,294,294, + 294,289,279,279,279,279,279,300,300,279,279,279,279,279,279,279,279,222, + 222,305,305,226,226,307,307,311,311,226,306,306,312,312,312,313,313,314, + 314,314,314,314,232,232,232,315,236,236,236,236,317,317,237,237,242,242, + 321,321,239,239,322,322,323,323,323,323,323,323,323,323,323,323,323,323, + 323,323,333,333,247,247,332,332,334,334,334,334,253,253,253,258,259,259, + 259,259,259,336,337,338,338,340,340,339, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 50, 50, 51, 51, 51, + 51, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 58, 58, 59, 59, 59, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90,345,345,346,346, 1, 2, 4, 5, 6, 7, + 10, 9, 13, 12, 16, 15, 18, 19, 22, 21, 25, 24, 28, 29, 48, 61, 66, 67, + 70, 71, 78, 77, 30, 31, 32, 83, 92, 93, 94, 95, 96, 97, 98, 99,100,101, + 102,103,104,105,110,111,116,118,119,120,121,122,123,124,125,127,128,129, + 130,131,135,134,136,137,141,148,149,150,151,154,155,157,158,159,160,161, + 162,163,164,174,181,183,182,186,189,190,191,196,200,201,204,203,202,206, + 205,214,213,218,219,221,220,224,223,229,228,227,234,233,235,241,238,244, + 245,243,249,250,252,248,254,256,257,261,262,263,265,266,260,269,270,272, + 275,276,277,283,282,287,290,292,293,295,296,297,298,299,301,302,304,303, + 310,309,308,316,318,319,320,324,325,326,327,328,329,330,331,335,343,344, + 82 +}; + + +static void ag_ra(void) +{ +} + +#define TOKEN_NAMES sql_token_names +const char *const sql_token_names[516] = { + "grammar", + "\"CHAR\"", + "\"CHARACTER\"", + "", + "\"DEC\"", + "\"DECIMAL\"", + "\"NUM\"", + "\"NUMERIC\"", + "", + "\"DECLARE\"", + "\"SECTION\"", + "", + "\"DELETE\"", + "\"FROM\"", + "", + "\"NOT\"", + "\"NULL\"", + "", + "\"PACKAGE\"", + "\"PROGRAM\"", + "", + "\"PRIMARY\"", + "\"KEY\"", + "", + "\"USING\"", + "\"DESCRIPTOR\"", + "", + "white space", + "ordinary identifier", + "delimited identifier", + "integer", + "decimal constant", + "character string constant", + "blank", + "\"//\"", + "", + "", + "", + "'\\n'", + "\"--\"", + "", + "\"/*\"", + "", + "", + "", + "\"*/\"", + "identifier", + "qualified identifier", + "'.'", + "any identifier", + "letter", + "", + "'\\\"'", + "delimited identifier text", + "delimited identifier char", + "", + "\"\\\"\\\"\"", + "host identifier", + "", + "", + "descriptor name", + "':'", + "host variable", + "expression", + "term", + "addop", + "'+'", + "'-'", + "factor", + "multop", + "'*'", + "'/'", + "special register", + "simple factor", + "duration", + "sign", + "function", + "'('", + "')'", + "constant", + "column name", + "floating point constant", + "digit", + "\"E\"", + "signed integer", + "", + "'\\''", + "character string char", + "", + "", + "", + "\"\\'\\'\"", + "\"YEAR\"", + "\"YEARS\"", + "\"MONTH\"", + "\"MONTHS\"", + "\"DAY\"", + "\"DAYS\"", + "\"HOUR\"", + "\"HOURS\"", + "\"MINUTE\"", + "\"MINUTES\"", + "\"SECOND\"", + "\"SECONDS\"", + "\"MICROSECOND\"", + "\"MICROSECONDS\"", + "predicate", + "comparison operator", + "comparand", + "between operator", + "\"AND\"", + "\"IS\"", + "similarity operator", + "like operand", + "existence operator", + "set designation", + "\"EXISTS\"", + "fullselect", + "\"IN\"", + "\"BETWEEN\"", + "\"LIKE\"", + "'='", + "\"<>\"", + "'>'", + "\"<=\"", + "\">=\"", + "quantifier", + "\"SOME\"", + "\"ANY\"", + "\"ALL\"", + "\"USER\"", + "','", + "", + "", + "\"CURRENT\"", + "\"DATE\"", + "\"TIME\"", + "\"TIMESTAMP\"", + "simple search condition", + "search condition", + "logical op", + "\"OR\"", + "aggregate function", + "count function", + "char function", + "function name", + "args", + "aggregate function name", + "\"AVG\"", + "\"MAX\"", + "\"MIN\"", + "\"SUM\"", + "", + "distinct column name", + "\"COUNT\"", + "\"DISTINCT\"", + "date type", + "\"ISO\"", + "\"USA\"", + "\"EUR\"", + "\"JIS\"", + "\"LOCAL\"", + "\"LENGTH\"", + "\"SUBSTR\"", + "\"TRANSLATE\"", + "subselect", + "select clause", + "from clause", + "where clause", + "", + "group by clause", + "", + "having clause", + "", + "\"SELECT\"", + "", + "select list", + "", + "select item", + "from list", + "from item", + "\"WHERE\"", + "\"GROUP\"", + "\"BY\"", + "identifier list", + "paren identifier list", + "\"HAVING\"", + "simple select", + "set operator", + "\"UNION\"", + "\"EXCEPT\"", + "\"INTERSECT\"", + "select statement", + "order by clause", + "fetch clause", + "update clause", + "\"ORDER\"", + "sort list", + "sort item", + "sort direction", + "\"ASC\"", + "\"DESC\"", + "\"FOR\"", + "\"UPDATE\"", + "\"OF\"", + "\"FETCH\"", + "\"ONLY\"", + "grammar", + "statements", + "", + "eof", + "drop hack", + "statement", + "\"ALTER\"", + "\"TABLE\"", + "alter table item list", + "", + "", + "\"BEGIN\"", + "\"CLOSE\"", + "\"COMMENT\"", + "\"ON\"", + "comment object", + "\"COMMIT\"", + "\"WORK\"", + "", + "create statement", + "\"CURSOR\"", + "\"WITH\"", + "\"HOLD\"", + "", + "", + "delete statement", + "\"DESCRIBE\"", + "\"INTO\"", + "\"END\"", + "execute statement", + "fetch statement", + "\"GRANT\"", + "privileges", + "privileged object", + "\"TO\"", + "grantee", + "\"INCLUDE\"", + "\"SQLCA\"", + "\"SQLDA\"", + "", + "insert statement", + "\"LOCK\"", + "\"SHARE\"", + "\"EXCLUSIVE\"", + "", + "\"MODE\"", + "open statement", + "\"PREPARE\"", + "", + "\"REVOKE\"", + "\"ROLLBACK\"", + "select into statement", + "update statement", + "\"WHENEVER\"", + "\"FOUND\"", + "\"SQLERROR\"", + "\"SQLWARNING\"", + "", + "\"CONTINUE\"", + "\"GO\"", + "", + "privileged object type", + "\"DATABASE\"", + "\"INDEX\"", + "alter table item", + "\"ADD\"", + "alter column definition", + "referential constraint", + "\"DROP\"", + "\"FOREIGN\"", + "\"VIEW\"", + "", + "data type", + "alter column attribute list", + "alter column attribute", + "\"BIT\"", + "\"DATA\"", + "references", + "alter column identifier", + "referential constraint head", + "\"REFERENCES\"", + "rules", + "delete rule", + "\"RESTRICT\"", + "", + "\"CASCADE\"", + "\"SET\"", + "", + "\"INT\"", + "\"INTEGER\"", + "\"SMALLINT\"", + "\"FLOAT\"", + "\"VARCHAR\"", + "", + "\"LONG\"", + "\"COLUMN\"", + "\"CREATE\"", + "\"UNIQUE\"", + "", + "create table list", + "", + "\"AS\"", + "\"CHECK\"", + "\"OPTION\"", + "", + "create table item", + "create column definition", + "create column attribute", + "where current clause", + "\"EXECUTE\"", + "host variable list", + "\"IMMEDIATELY\"", + "\"PUBLIC\"", + "\"PRIVILEGES\"", + "", + "privilege list", + "privilege", + "\"BINDADD\"", + "\"CONNECT\"", + "\"CREATETAB\"", + "\"DBADM\"", + "\"BIND\"", + "\"CONTROL\"", + "\"INSERT\"", + "\"VALUES\"", + "value list", + "", + "value", + "\"OPEN\"", + "set clause", + "conditioned set clause", + "assignment list", + "assignment", + "", + "", + "", + "", + "", + "", + "", + "\"CHAR\"", + "\"CHARACTER\"", + "\"DEC\"", + "\"DECIMAL\"", + "\"NUM\"", + "\"NUMERIC\"", + "\"SECTION\"", + "\"DECLARE\"", + "\"FROM\"", + "\"DELETE\"", + "\"NULL\"", + "\"NOT\"", + "\"PACKAGE\"", + "\"PROGRAM\"", + "\"KEY\"", + "\"PRIMARY\"", + "\"DESCRIPTOR\"", + "\"USING\"", + "ordinary identifier", + "delimited identifier", + "'.'", + "':'", + "'+'", + "'-'", + "'*'", + "'/'", + "')'", + "'('", + "integer", + "decimal constant", + "character string constant", + "\"E\"", + "\"YEAR\"", + "\"YEARS\"", + "\"MONTH\"", + "\"MONTHS\"", + "\"DAY\"", + "\"DAYS\"", + "\"HOUR\"", + "\"HOURS\"", + "\"MINUTE\"", + "\"MINUTES\"", + "\"SECOND\"", + "\"SECONDS\"", + "\"MICROSECOND\"", + "\"MICROSECONDS\"", + "\"AND\"", + "\"IS\"", + "\"EXISTS\"", + "\"IN\"", + "\"BETWEEN\"", + "\"LIKE\"", + "'='", + "\"<>\"", + "'>'", + "\"<=\"", + "\">=\"", + "\"SOME\"", + "\"ANY\"", + "\"ALL\"", + "\"USER\"", + "','", + "\"DATE\"", + "\"CURRENT\"", + "\"TIME\"", + "\"TIMESTAMP\"", + "\"OR\"", + "\"AVG\"", + "\"MAX\"", + "\"MIN\"", + "\"SUM\"", + "\"COUNT\"", + "\"DISTINCT\"", + "\"ISO\"", + "\"USA\"", + "\"EUR\"", + "\"JIS\"", + "\"LOCAL\"", + "\"LENGTH\"", + "\"SUBSTR\"", + "\"TRANSLATE\"", + "\"SELECT\"", + "\"WHERE\"", + "\"BY\"", + "\"GROUP\"", + "\"HAVING\"", + "\"UNION\"", + "\"EXCEPT\"", + "\"INTERSECT\"", + "\"ORDER\"", + "\"ASC\"", + "\"DESC\"", + "\"OF\"", + "\"UPDATE\"", + "\"FOR\"", + "\"ONLY\"", + "\"FETCH\"", + "\"TABLE\"", + "\"ALTER\"", + "\"BEGIN\"", + "\"CLOSE\"", + "\"ON\"", + "\"COMMENT\"", + "\"WORK\"", + "\"COMMIT\"", + "\"HOLD\"", + "\"WITH\"", + "\"CURSOR\"", + "\"INTO\"", + "\"DESCRIBE\"", + "\"END\"", + "\"TO\"", + "\"GRANT\"", + "\"SQLCA\"", + "\"SQLDA\"", + "\"INCLUDE\"", + "\"SHARE\"", + "\"EXCLUSIVE\"", + "\"MODE\"", + "\"LOCK\"", + "\"PREPARE\"", + "\"REVOKE\"", + "\"ROLLBACK\"", + "\"FOUND\"", + "\"SQLERROR\"", + "\"SQLWARNING\"", + "\"CONTINUE\"", + "\"GO\"", + "\"WHENEVER\"", + "\"DATABASE\"", + "\"INDEX\"", + "\"ADD\"", + "\"DROP\"", + "\"FOREIGN\"", + "\"VIEW\"", + "\"DATA\"", + "\"BIT\"", + "\"REFERENCES\"", + "\"RESTRICT\"", + "\"CASCADE\"", + "\"SET\"", + "\"INT\"", + "\"INTEGER\"", + "\"SMALLINT\"", + "\"FLOAT\"", + "\"VARCHAR\"", + "\"LONG\"", + "\"COLUMN\"", + "\"UNIQUE\"", + "\"CREATE\"", + "\"OPTION\"", + "\"CHECK\"", + "\"AS\"", + "\"EXECUTE\"", + "\"IMMEDIATELY\"", + "\"PUBLIC\"", + "\"PRIVILEGES\"", + "\"BINDADD\"", + "\"CONNECT\"", + "\"CREATETAB\"", + "\"DBADM\"", + "\"BIND\"", + "\"CONTROL\"", + "\"INSERT\"", + "\"VALUES\"", + "\"OPEN\"", + "", + "", + "digit", + +}; + +#ifndef MISSING_FORMAT +#define MISSING_FORMAT "Missing %s" +#endif +#ifndef UNEXPECTED_FORMAT +#define UNEXPECTED_FORMAT "Unexpected %s" +#endif +#ifndef UNNAMED_TOKEN +#define UNNAMED_TOKEN "input" +#endif + + +static void ag_diagnose(void) { + int ag_snd = (PCB).sn; + int ag_k = ag_sbt[ag_snd]; + + if (*TOKEN_NAMES[ag_tstt[ag_k]] && ag_astt[ag_k + 1] == ag_action_8) { + sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]); + } + else if (ag_astt[ag_sbe[(PCB).sn]] == ag_action_8 + && (ag_k = (int) ag_sbe[(PCB).sn] + 1) == (int) ag_sbt[(PCB).sn+1] - 1 + && *TOKEN_NAMES[ag_tstt[ag_k]]) { + sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]); + } + else if ((PCB).token_number && *TOKEN_NAMES[(PCB).token_number]) { + sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, TOKEN_NAMES[(PCB).token_number]); + } + else if (isprint((*(PCB).lab)) && (*(PCB).lab) != '\\') { + char buf[20]; + sprintf(buf, "\'%c\'", (char) (*(PCB).lab)); + sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, buf); + } + else sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, UNNAMED_TOKEN); + (PCB).error_message = (PCB).ag_msg; + + +} +static int ag_action_1_r_proc(void); +static int ag_action_2_r_proc(void); +static int ag_action_3_r_proc(void); +static int ag_action_4_r_proc(void); +static int ag_action_1_s_proc(void); +static int ag_action_3_s_proc(void); +static int ag_action_1_proc(void); +static int ag_action_2_proc(void); +static int ag_action_3_proc(void); +static int ag_action_4_proc(void); +static int ag_action_5_proc(void); +static int ag_action_6_proc(void); +static int ag_action_7_proc(void); +static int ag_action_8_proc(void); +static int ag_action_9_proc(void); +static int ag_action_10_proc(void); +static int ag_action_11_proc(void); +static int ag_action_8_proc(void); + + +static int (*const ag_r_procs_scan[])(void) = { + ag_action_1_r_proc, + ag_action_2_r_proc, + ag_action_3_r_proc, + ag_action_4_r_proc +}; + +static int (*const ag_s_procs_scan[])(void) = { + ag_action_1_s_proc, + ag_action_2_r_proc, + ag_action_3_s_proc, + ag_action_4_r_proc +}; + +static int (*const ag_gt_procs_scan[])(void) = { + ag_action_1_proc, + ag_action_2_proc, + ag_action_3_proc, + ag_action_4_proc, + ag_action_5_proc, + ag_action_6_proc, + ag_action_7_proc, + ag_action_8_proc, + ag_action_9_proc, + ag_action_10_proc, + ag_action_11_proc, + ag_action_8_proc +}; + + +static int ag_action_10_proc(void) { + int ag_t = (PCB).token_number; + (PCB).btsx = 0, (PCB).drt = -1; + do { + ag_track(); + if ((PCB).rx < (PCB).fx) { + (PCB).input_code = (PCB).lab[(PCB).rx++]; + (PCB).token_number = (sql_token_type) AG_TCV((PCB).input_code);} + else { + GET_INPUT; + (PCB).lab[(PCB).fx++] = (PCB).input_code; + (PCB).token_number = (sql_token_type) AG_TCV((PCB).input_code); + (PCB).rx++; + } + if (ag_key_index[(PCB).sn]) { + unsigned ag_k = ag_key_index[(PCB).sn]; + int ag_ch = CONVERT_CASE((PCB).input_code); + if (ag_ch < 255) { + while (ag_key_ch[ag_k] < ag_ch) ag_k++; + if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k); + } + } + } while ((PCB).token_number == (sql_token_type) ag_t); + (PCB).rx = 0; + return 1; +} + +static int ag_action_11_proc(void) { + int ag_t = (PCB).token_number; + + (PCB).btsx = 0, (PCB).drt = -1; + do { + (PCB).vs[(PCB).ssx] = *(PCB).lab; + (PCB).ssx--; + ag_track(); + ag_ra(); + if ((PCB).exit_flag != AG_RUNNING_CODE) return 0; + (PCB).ssx++; + if ((PCB).rx < (PCB).fx) { + (PCB).input_code = (PCB).lab[(PCB).rx++]; + (PCB).token_number = (sql_token_type) AG_TCV((PCB).input_code);} + else { + GET_INPUT; + (PCB).lab[(PCB).fx++] = (PCB).input_code; + (PCB).token_number = (sql_token_type) AG_TCV((PCB).input_code); + (PCB).rx++; + } + if (ag_key_index[(PCB).sn]) { + unsigned ag_k = ag_key_index[(PCB).sn]; + int ag_ch = CONVERT_CASE((PCB).input_code); + if (ag_ch < 255) { + while (ag_key_ch[ag_k] < ag_ch) ag_k++; + if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k); + } + } + } + while ((PCB).token_number == (sql_token_type) ag_t); + (PCB).rx = 0; + return 1; +} + +static int ag_action_3_r_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + (PCB).btsx = 0, (PCB).drt = -1; + (PCB).reduction_token = (sql_token_type) ag_ptt[(PCB).ag_ap]; + ag_ra(); + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_3_s_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + (PCB).btsx = 0, (PCB).drt = -1; + (PCB).reduction_token = (sql_token_type) ag_ptt[(PCB).ag_ap]; + ag_ra(); + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_4_r_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + (PCB).reduction_token = (sql_token_type) ag_ptt[(PCB).ag_ap]; + return 1; +} + +static int ag_action_2_proc(void) { + (PCB).btsx = 0, (PCB).drt = -1; + if ((PCB).ssx >= 128) { + (PCB).exit_flag = AG_STACK_ERROR_CODE; + PARSER_STACK_OVERFLOW; + } + (PCB).vs[(PCB).ssx] = *(PCB).lab; + (PCB).ss[(PCB).ssx] = (PCB).sn; + (PCB).ssx++; + (PCB).sn = (PCB).ag_ap; + ag_track(); + return 0; +} + +static int ag_action_9_proc(void) { + if ((PCB).drt == -1) { + (PCB).drt=(PCB).token_number; + (PCB).dssx=(PCB).ssx; + (PCB).dsn=(PCB).sn; + } + ag_prot(); + (PCB).vs[(PCB).ssx] = ag_null_value; + (PCB).ss[(PCB).ssx] = (PCB).sn; + (PCB).ssx++; + (PCB).sn = (PCB).ag_ap; + (PCB).rx = 0; + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_2_r_proc(void) { + (PCB).ssx++; + (PCB).sn = (PCB).ag_ap; + return 0; +} + +static int ag_action_7_proc(void) { + --(PCB).ssx; + (PCB).rx = 0; + (PCB).exit_flag = AG_SUCCESS_CODE; + return 0; +} + +static int ag_action_1_proc(void) { + ag_track(); + (PCB).exit_flag = AG_SUCCESS_CODE; + return 0; +} + +static int ag_action_1_r_proc(void) { + (PCB).exit_flag = AG_SUCCESS_CODE; + return 0; +} + +static int ag_action_1_s_proc(void) { + (PCB).exit_flag = AG_SUCCESS_CODE; + return 0; +} + +static int ag_action_4_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + (PCB).reduction_token = (sql_token_type) ag_ptt[(PCB).ag_ap]; + (PCB).btsx = 0, (PCB).drt = -1; + (PCB).vs[(PCB).ssx] = *(PCB).lab; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + else (PCB).ss[(PCB).ssx] = (PCB).sn; + ag_track(); + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; + unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + (PCB).ag_ap = ag_pstt[ag_t1]; + if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break; + } + return 0; +} + +static int ag_action_3_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap] - 1; + (PCB).btsx = 0, (PCB).drt = -1; + (PCB).vs[(PCB).ssx] = *(PCB).lab; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + else (PCB).ss[(PCB).ssx] = (PCB).sn; + ag_track(); + (PCB).reduction_token = (sql_token_type) ag_ptt[(PCB).ag_ap]; + ag_ra(); + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; + unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + (PCB).ag_ap = ag_pstt[ag_t1]; + if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break; + } + return 0; +} + +static int ag_action_8_proc(void) { + ag_undo(); + (PCB).rx = 0; + (PCB).exit_flag = AG_SYNTAX_ERROR_CODE; + ag_diagnose(); + SYNTAX_ERROR; + {(PCB).rx = 1; ag_track();} + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_5_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap]; + (PCB).btsx = 0, (PCB).drt = -1; + if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + else { + (PCB).ss[(PCB).ssx] = (PCB).sn; + } + (PCB).rx = 0; + (PCB).reduction_token = (sql_token_type) ag_ptt[(PCB).ag_ap]; + ag_ra(); + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; + unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + (PCB).ag_ap = ag_pstt[ag_t1]; + if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break; + } + return (PCB).exit_flag == AG_RUNNING_CODE; +} + +static int ag_action_6_proc(void) { + int ag_sd = ag_fl[(PCB).ag_ap]; + (PCB).reduction_token = (sql_token_type) ag_ptt[(PCB).ag_ap]; + if ((PCB).drt == -1) { + (PCB).drt=(PCB).token_number; + (PCB).dssx=(PCB).ssx; + (PCB).dsn=(PCB).sn; + } + if (ag_sd) { + (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd]; + } + else { + ag_prot(); + (PCB).vs[(PCB).ssx] = ag_null_value; + (PCB).ss[(PCB).ssx] = (PCB).sn; + } + (PCB).rx = 0; + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbe[(PCB).sn] + 1; + unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1; + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + (PCB).ag_ap = ag_pstt[ag_t1]; + if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break; + } + return (PCB).exit_flag == AG_RUNNING_CODE; +} + + +void init_sql(void) { + (PCB).rx = (PCB).fx = 0; + (PCB).ss[0] = (PCB).sn = (PCB).ssx = 0; + (PCB).exit_flag = AG_RUNNING_CODE; + (PCB).line = FIRST_LINE; + (PCB).column = FIRST_COLUMN; + (PCB).btsx = 0, (PCB).drt = -1; +} + +void sql(void) { + init_sql(); + (PCB).exit_flag = AG_RUNNING_CODE; + while ((PCB).exit_flag == AG_RUNNING_CODE) { + unsigned ag_t1 = ag_sbt[(PCB).sn]; + if (ag_tstt[ag_t1]) { + unsigned ag_t2 = ag_sbe[(PCB).sn] - 1; + if ((PCB).rx < (PCB).fx) { + (PCB).input_code = (PCB).lab[(PCB).rx++]; + (PCB).token_number = (sql_token_type) AG_TCV((PCB).input_code);} + else { + GET_INPUT; + (PCB).lab[(PCB).fx++] = (PCB).input_code; + (PCB).token_number = (sql_token_type) AG_TCV((PCB).input_code); + (PCB).rx++; + } + if (ag_key_index[(PCB).sn]) { + unsigned ag_k = ag_key_index[(PCB).sn]; + int ag_ch = CONVERT_CASE((PCB).input_code); + if (ag_ch < 255) { + while (ag_key_ch[ag_k] < ag_ch) ag_k++; + if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k); + } + } + do { + unsigned ag_tx = (ag_t1 + ag_t2)/2; + if (ag_tstt[ag_tx] > (unsigned short)(PCB).token_number) + ag_t1 = ag_tx + 1; + else ag_t2 = ag_tx; + } while (ag_t1 < ag_t2); + if (ag_tstt[ag_t1] != (unsigned short)(PCB).token_number) + ag_t1 = ag_sbe[(PCB).sn]; + } + (PCB).ag_ap = ag_pstt[ag_t1]; + (ag_gt_procs_scan[ag_astt[ag_t1]])(); + } +} + + + +int main(void) { + sql(); + return 0; +}