Mercurial > ~dholland > hg > ag > index.cgi
view tests/agcl/parsifal/good/sql.c @ 24:a4899cdfc2d6 default tip
Obfuscate the regexps to strip off the IBM compiler's copyright banners.
I don't want bots scanning github to think they're real copyright
notices because that could cause real problems.
author | David A. Holland |
---|---|
date | Mon, 13 Jun 2022 00:40:23 -0400 |
parents | 13d2b8934445 |
children |
line wrap: on
line source
/* * 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; }