view tests/agcl/parsifal/good/sql.c @ 23:cac4c76600eb

Update lint ok file for recent change.
author David A. Holland
date Mon, 13 Jun 2022 00:17:10 -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;
}