text: /*
   * Copyright 2017 Google Inc.
   *
   * Use of this source code is governed by a BSD-style license that can be
   * found in the LICENSE file.
   */
  /*****************************************************************************************
   ******************** This file was generated by sksllex. Do not edit. *******************
   *****************************************************************************************/
  #include "src/sksl/SkSLLexer.h"
  
  namespace SkSL {
  
  using State = uint8_t;
  static const uint8_t INVALID_CHAR = 18;
  static int8_t mappings[127] = {
          0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  2,  3,  3,  1,  3,  3,  3,  3,  3,  3,  3,  3,
          3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  1,  4,  3,  5,  6,  7,  8,  3,  9,  10, 11, 12,
          13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26,
          26, 26, 26, 27, 26, 6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
          6,  6,  6,  28, 3,  29, 30, 31, 3,  32, 33, 34, 35, 36, 37, 38, 39, 40, 6,  41, 42, 43,
          44, 45, 46, 6,  47, 48, 49, 50, 51, 52, 53, 54, 6,  55, 56, 57, 58};
  static State transitions[59][233] = {
          {
                  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0, 2, 3, 3, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0, 3, 3, 3, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0, 4, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0, 5, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0, 7, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0,  9,  0,  0,  0,  0,  0,  8,  8,  10, 10, 0,  0,  0,  0,  0,  0,  0,  0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  34, 34, 0,  37, 0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 0,
                  0,  0,  0,  0,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 0,  0,  0,  0,  0,  0,
          },
          {
                  0, 11, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0, 13, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0, 16, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0, 17, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0, 18, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 34, 35, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0, 20, 0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 21, 0,  0, 0,
                  0, 0,  0, 0, 0, 0, 31, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 43, 0, 0,  46, 0, 0,
                  0, 50, 0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0, 0,
                  0, 0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0, 0,
                  0, 0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0, 0,
                  0, 0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0, 0,
                  0, 0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0, 0,
                  0, 0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0, 0,
                  0, 0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0, 0,
                  0, 0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0,
          },
          {
                  0, 23, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0,  24, 0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0, 0,
                  25, 0,  0, 0, 0, 0, 31, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 43, 0, 0, 46, 0, 0,
                  0,  50, 0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0, 0,
                  0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0, 0,
                  0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0, 0,
                  0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0, 0,
                  0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0, 0,
                  0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0, 0,
                  0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0,  0, 0, 0,  0, 0,
                  0,  0,  0, 0, 0, 0, 0,  0, 0, 0, 0,  0,  0, 0,  0, 0, 0,
          },
          {
                  0, 28, 0,  0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0,
                  0, 0,  0,  0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0,
                  0, 0,  40, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0,
                  0, 0,  0,  0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0,
                  0, 0,  0,  0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0,
                  0, 0,  0,  0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0,
                  0, 0,  0,  0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0,
                  0, 0,  0,  0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0,
                  0, 0,  0,  0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,
          },
          {
                  0, 33, 0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 37, 34, 36, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0,  0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0,  39, 0,  0,  0,  0,  0,  0,  8,  10, 10, 0,  0,  0,  0,  0,  0,  0,  0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  29, 29, 32, 32, 32, 0,  34, 34, 0,  37, 0,  48,
                  41, 41, 44, 44, 44, 47, 47, 47, 48, 51, 51, 51, 53, 53, 48, 0,  0,  0,  0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  70, 70, 70, 70, 70, 70, 70, 70, 70, 0,
                  0,  0,  0,  0,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 0,  0,  0,  0,  0,  0,
          },
          {
                  0,  54, 0,  0,  0,  0,  0,  0,  8,  10, 10, 0,  0,  0,  0,  0,  0,  0,  0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  29, 29, 32, 32, 32, 0,  34, 34, 0,  37, 0,  48,
                  41, 41, 44, 44, 44, 47, 47, 47, 48, 51, 51, 51, 53, 53, 48, 0,  0,  0,  0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  70, 70, 70, 70, 70, 70, 70, 70, 70, 0,
                  0,  0,  0,  0,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 0,  0,  0,  0,  0,  0,
          },
          {
                  0, 55, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0,  0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 56, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0, 57, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0, 58, 0, 0, 0, 0, 0,  0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0,  0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 59, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0,  0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0,  62, 0, 0, 0, 6, 0, 0, 0, 0,  0,  12, 0,   15, 0,  0, 0,  0, 19, 0, 22, 0, 0, 0,
                  26, 0,  0, 0, 0, 0, 0, 0, 0, 38, 34, 34, 0,   37, 0,  0, 0,  0, 0,  0, 0,  0, 0, 0,
                  0,  0,  0, 0, 0, 0, 0, 0, 0, 0,  61, 60, 0,   0,  63, 0, 65, 0, 67, 0, 0,  0, 0, 0,
                  0,  0,  0, 0, 0, 0, 0, 0, 0, 82, 0,  0,  0,   0,  0,  0, 0,  0, 0,  0, 0,  0, 0, 0,
                  0,  0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0,  0,   0,  0,  0, 0,  0, 0,  0, 0,  0, 0, 0,
                  0,  0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0,  0,   0,  0,  0, 0,  0, 0,  0, 0,  0, 0, 0,
                  0,  0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0,  0,   0,  0,  0, 0,  0, 0,  0, 0,  0, 0, 0,
                  0,  0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0,  0,   0,  0,  0, 0,  0, 0,  0, 0,  0, 0, 0,
                  0,  0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0,  0,   0,  0,  0, 0,  0, 0,  0, 0,  0, 0, 0,
                  0,  0,  0, 0, 0, 0, 0, 0, 0, 0,  0,  0,  229, 0,  0,  0, 0,
          },
          {
                  0, 64, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0, 68, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0, 69, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0,  9,  0,  0,  0,  0,  0,  8,  8,  10, 10, 0,  0,  0,  0,  0,  0,  0,  0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  34, 34, 0,  37, 0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  53, 53, 0,  0,  0,  0,  0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 0,
                  0,  0,  0,  0,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 0,  0,  0,  0,  0,  0,
          },
          {
                  0,  9,  0,  0,  0,  0,  0,  8,  8,  10, 10, 0,  0,  0,  0,  0,  0,  0,  0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  30, 0,  0,  0,  0,  34, 34, 0,  37, 0,  49,
                  45, 42, 0,  0,  0,  0,  0,  0,  49, 0,  0,  0,  53, 53, 49, 0,  0,  0,  0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 0,
                  0,  0,  0,  0,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 0,  0,  0,  0,  0,  0,
          },
          {
                  0, 79, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0, 80, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0, 81, 0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0,  0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 83, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,  0, 0,  0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0,   9,  0,  0,  0,  0,   0,  8,  8,  10, 10, 0,  0,  0,  0,  0,  0,   0,  0,  0,
                  0,   0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  34, 34, 0,   37, 0,  0,
                  0,   0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,
                  0,   0,  0,  0,  0,  0,   0,  0,  0,  70, 70, 70, 70, 70, 70, 70, 70,  70, 70, 0,
                  0,   0,  0,  0,  10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10,
                  10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10,
                  10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10,
                  10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10,
                  10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 177, 10, 10, 10,
                  181, 10, 10, 10, 10, 186, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10,
                  10,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10,
                  10,  10, 10, 10, 10, 10,  10, 0,  0,  0,  0,  0,  0,
          },
          {
                  0,  9,  0,  0,  0,  0,  0,  8,   8,   10, 10, 0,  0,   0,  0,  0,   0,  0,  0,   0,
                  0,  0,  0,  0,  0,  0,  0,  0,   0,   0,  0,  0,  0,   0,  34, 34,  0,  37, 0,   0,
                  0,  0,  0,  0,  0,  0,  0,  0,   0,   0,  0,  0,  53,  53, 0,  0,   0,  0,  0,   0,
                  0,  0,  0,  0,  0,  0,  0,  0,   0,   70, 70, 70, 70,  70, 70, 70,  70, 70, 70,  0,
                  0,  0,  0,  0,  10, 10, 87, 10,  10,  90, 10, 10, 10,  94, 10, 10,  10, 10, 10,  10,
                  10, 10, 10, 10, 10, 10, 10, 10,  109, 10, 10, 10, 10,  10, 10, 116, 10, 10, 10,  10,
                  10, 10, 10, 10, 10, 10, 10, 128, 10,  10, 10, 10, 133, 10, 10, 10,  10, 10, 10,  10,
                  10, 10, 10, 10, 10, 10, 10, 148, 10,  10, 10, 10, 10,  10, 10, 10,  10, 10, 10,  10,
                  10, 10, 10, 10, 10, 10, 10, 10,  10,  10, 10, 10, 10,  10, 10, 10,  10, 10, 179, 10,
                  10, 10, 10, 10, 10, 10, 10, 10,  10,  10, 10, 10, 10,  10, 10, 10,  10, 10, 10,  10,
                  10, 10, 10, 10, 10, 10, 10, 10,  10,  10, 10, 10, 10,  10, 10, 216, 10, 10, 10,  10,
                  10, 10, 10, 10, 10, 10, 10, 0,   0,   0,  0,  0,  0,
          },
          {
                  0,  84, 0,  0,  0,  0,  0,  8,  8,  10, 10, 0,  0,  0,  0,  0,  0,  0,  0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  34, 34, 0,  37, 0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  53, 53, 0,  0,  0,  0,  0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 0,
                  0,  0,  0,  0,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 0,  0,  0,  0,  0,  0,
          },
          {
                  0,   89,  0,  0,  0,  0,  0,  8,  8,  10, 10,  0,  0,  0,  0,   0,  0,   0,  0,  0,
                  0,   0,   0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  34,  34, 0,   37, 0,  0,
                  0,   0,   0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  53, 53, 0,   0,  0,   0,  0,  0,
                  0,   0,   0,  0,  0,  0,  0,  0,  0,  70, 70,  70, 70, 70, 70,  70, 77,  70, 70, 0,
                  0,   0,   0,  0,  10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10,  10, 10, 10,
                  10,  10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 115, 10, 10,  10, 10, 10,
                  10,  10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10,  10, 10, 10,
                  10,  10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10,  10, 10, 10,
                  161, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10,  10, 10, 10,
                  10,  10,  10, 10, 10, 10, 10, 10, 10, 10, 191, 10, 10, 10, 10,  10, 197, 10, 10, 10,
                  10,  202, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10,  10, 10, 10,
                  10,  10,  10, 10, 10, 10, 10, 0,  0,  0,  0,   0,  0,
          },
          {
                  0,  106, 0,  0,   0,  0,  0,  8,  8,  10, 10, 0,  0,  0,  0,  0,  0,  0,   0,  0,
                  0,  0,   0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  34, 34, 0,  37,  0,  0,
                  0,  0,   0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  53, 53, 0,  0,  0,  0,   0,  0,
                  0,  0,   0,  0,   0,  0,  0,  0,  0,  70, 70, 70, 70, 70, 70, 70, 70, 70,  70, 0,
                  0,  0,   0,  0,   10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 118, 10, 10,
                  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10,  10, 184, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10,  10, 10,  10, 10, 10, 0,  0,  0,  0,  0,  0,
          },
          {
                  0,  120, 0,   0,  0,   0,  0,   8,   8,   10,  10, 0,   0,  0,  0,   0,   0,   0,
                  0,  0,   0,   0,  0,   0,  0,   0,   0,   0,   0,  30,  0,  0,  0,   0,   34,  34,
                  0,  37,  0,   49, 45,  42, 0,   0,   0,   0,   0,  0,   49, 0,  0,   0,   53,  53,
                  49, 0,   0,   0,  0,   0,  0,   0,   0,   0,   0,  0,   0,  0,  0,   70,  70,  70,
                  70, 70,  70,  70, 70,  70, 70,  0,   0,   0,   0,  0,   10, 86, 10,  10,  10,  10,
                  10, 92,  10,  10, 10,  10, 10,  10,  10,  10,  10, 10,  10, 10, 105, 10,  107, 10,
                  10, 10,  10,  10, 10,  10, 10,  10,  10,  10,  10, 10,  10, 10, 123, 10,  10,  10,
                  10, 10,  10,  10, 131, 10, 10,  10,  10,  10,  10, 10,  10, 10, 10,  10,  143, 10,
                  10, 10,  10,  10, 10,  10, 10,  10,  10,  10,  10, 156, 10, 10, 10,  160, 10,  10,
                  10, 10,  165, 10, 10,  10, 10,  170, 10,  10,  10, 10,  10, 10, 10,  10,  10,  10,
                  10, 10,  10,  10, 185, 10, 187, 10,  10,  190, 10, 10,  10, 10, 10,  10,  10,  10,
                  10, 10,  10,  10, 10,  10, 10,  10,  207, 10,  10, 10,  10, 10, 10,  10,  10,  10,
                  10, 10,  10,  10, 10,  10, 10,  10,  10,  226, 10, 0,   0,  0,  0,   0,   0,
          },
          {
                  0,  127, 0,  0,  0,  0,  0,  8,   8,   10, 10,  0,  0,  0,  0,  0,  0,  0,   0,  0,
                  0,  0,   0,  0,  0,  0,  0,  0,   0,   0,  0,   0,  0,  0,  34, 34, 0,  37,  0,  0,
                  0,  0,   0,  0,  0,  0,  0,  0,   0,   0,  0,   0,  53, 53, 0,  0,  0,  0,   0,  0,
                  0,  0,   0,  0,  0,  0,  0,  0,   0,   70, 70,  72, 70, 70, 70, 70, 70, 70,  70, 0,
                  0,  0,   0,  0,  10, 10, 10, 10,  10,  10, 10,  10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10,  10, 10, 10, 10, 10, 108, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10,  10, 10, 10, 10, 10, 10,  10,  10, 10,  10, 10, 10, 10, 10, 10, 138, 10, 10,
                  10, 10,  10, 10, 10, 10, 10, 10,  10,  10, 10,  10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10,  10, 10, 10, 10, 10, 10,  10,  10, 10,  10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10,  10, 10, 10, 10, 10, 188, 189, 10, 10,  10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10,  10, 10, 10, 10, 10, 10,  10,  10, 211, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10,  10, 10, 10, 10, 10, 0,   0,   0,  0,   0,  0,
          },
          {
                  0,   9,  0,  0,  0,  0,  0,  8,  8,  10, 10, 0,  0,  0,  0,  0,  0,  0,  0,  0,
                  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  34, 34, 0,  37, 0,  0,
                  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
                  0,   0,  0,  0,  0,  0,  0,  0,  0,  70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 0,
                  0,   0,  0,  0,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  221, 10, 10, 10, 10, 10, 10, 0,  0,  0,  0,  0,  0,
          },
          {
                  0,  9,  0,   0,  0,  0,  0,  8,  8,  10, 10, 0,  0,  0,  0,  0,  0,  0,   0,  0,
                  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  34, 34, 0,  37,  0,  0,
                  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,
                  0,  0,  0,   0,  0,  0,  0,  0,  0,  70, 70, 70, 70, 70, 70, 70, 70, 78,  70, 0,
                  0,  0,  0,   0,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 178, 10, 10,
                  10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10, 203, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10, 223, 10, 10, 10, 10, 0,  0,  0,  0,  0,  0,
          },
          {
                  0,   137, 0,   0,  0,  0,  0,  8,   8,  10, 10, 0,   0,  0,  0,   0,  0,   0,
                  0,   0,   0,   0,  0,  0,  0,  0,   0,  0,  0,  0,   0,  0,  0,   0,  34,  34,
                  0,   37,  0,   0,  0,  0,  0,  0,   0,  0,  0,  0,   0,  0,  0,   0,  0,   0,
                  0,   0,   0,   0,  0,  0,  0,  0,   0,  0,  0,  0,   0,  0,  0,   71, 70,  70,
                  70,  70,  75,  70, 70, 70, 70, 0,   0,  0,  0,  0,   10, 10, 10,  10, 10,  10,
                  10,  10,  10,  10, 10, 10, 10, 10,  10, 10, 10, 102, 10, 10, 10,  10, 113, 10,
                  10,  10,  10,  10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10,  10, 10,  10,
                  10,  10,  10,  10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 141, 10, 10,  10,
                  10,  10,  10,  10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10,  10, 10,  10,
                  163, 10,  10,  10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10,  10, 10,  10,
                  10,  10,  183, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10,  10, 10,  10,
                  10,  200, 10,  10, 10, 10, 10, 10,  10, 10, 10, 210, 10, 10, 10,  10, 10,  10,
                  10,  10,  219, 10, 10, 10, 10, 224, 10, 10, 10, 0,   0,  0,  0,   0,  0,
          },
          {
                  0,  9,  0,  0,  0,  0,  0,  8,  8,  10, 10, 0,  0,  0,  0,  0,   0,  0,  0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  34, 34,  0,  37, 0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  70, 70, 70, 70, 70, 70, 70,  70, 70, 70, 0,
                  0,  0,  0,  0,  10, 10, 10, 88, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 176, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 0,  0,  0,  0,  0,  0,
          },
          {
                  0,  147, 0,   0,  0,  0,  0,  8,  8,   10, 10, 0,  0,   0,   0,  0,  0,  0,
                  0,  0,   0,   0,  0,  0,  0,  0,  0,   0,  0,  0,  0,   0,   0,  0,  34, 34,
                  0,  37,  0,   0,  0,  0,  0,  0,  0,   0,  0,  0,  0,   0,   0,  0,  0,  0,
                  0,  0,   0,   0,  0,  0,  0,  0,  0,   0,  0,  0,  0,   0,   0,  70, 70, 70,
                  70, 70,  70,  70, 70, 70, 70, 0,  0,   0,  0,  0,  10,  10,  10, 10, 10, 93,
                  10, 10,  10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,  10, 10, 10, 10,
                  10, 10,  111, 10, 10, 10, 10, 10, 10,  10, 10, 10, 121, 10,  10, 10, 10, 10,
                  10, 132, 129, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  140, 10, 10, 10, 10,
                  10, 10,  10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,  10, 10, 10, 10,
                  10, 10,  10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,  10, 10, 10, 10,
                  10, 10,  10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,  10, 10, 10, 10,
                  10, 10,  10,  10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,  10, 10, 10, 10,
                  10, 10,  10,  10, 10, 10, 10, 10, 225, 10, 10, 0,  0,   0,   0,  0,  0,
          },
          {
                  0,  9,  0,  0,  0,  0,   0,  8,  8,  10, 10, 0,  0,  0,   0,  0,  0,  0,  0,  0,
                  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,   34, 34, 0,  37, 0,  0,
                  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,
                  0,  0,  0,  0,  0,  0,   0,  0,  0,  70, 70, 70, 70, 70,  70, 70, 70, 70, 70, 0,
                  0,  0,  0,  0,  10, 10,  10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 126, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 214, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10,  10, 0,  0,  0,  0,  0,  0,
          },
          {
                  0,  153, 0,  0,   0,  0,  0,  8,  8,  10, 10,  0,   0,   0,  0,  0,   0,  0,
                  0,  0,   0,  0,   0,  0,  0,  0,  0,  0,  0,   0,   0,   0,  0,  0,   34, 34,
                  0,  37,  0,  0,   0,  0,  0,  0,  0,  0,  0,   0,   0,   0,  0,  0,   0,  0,
                  0,  0,   0,  0,   0,  0,  0,  0,  0,  0,  0,   0,   0,   0,  0,  70,  70, 70,
                  70, 70,  70, 70,  70, 70, 70, 0,  0,  0,  0,   0,   10,  10, 10, 10,  10, 10,
                  10, 10,  10, 10,  10, 10, 10, 98, 10, 10, 10,  10,  103, 10, 10, 10,  10, 10,
                  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10,  10,  124, 10, 10, 10,  10, 10,
                  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10,  139, 10,  10, 10, 142, 10, 10,
                  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10,  10,  10,  10, 10, 10,  10, 10,
                  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10,  174, 10,  10, 10, 10,  10, 10,
                  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10,  10,  10,  10, 10, 10,  10, 10,
                  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 209, 10,  10,  10, 10, 10,  10, 10,
                  10, 10,  10, 220, 10, 10, 10, 10, 10, 10, 10,  0,   0,   0,  0,  0,   0,
          },
          {
                  0,  166, 0,  0,  0,  0,   0,  8,  8,  10,  10, 0,  0,  0,   0,  0,  0,   0,
                  0,  0,   0,  0,  0,  0,   0,  0,  0,  0,   0,  0,  0,  0,   0,  0,  34,  34,
                  0,  37,  0,  0,  0,  0,   0,  0,  0,  0,   0,  0,  0,  0,   0,  0,  0,   0,
                  0,  0,   0,  0,  0,  0,   0,  0,  0,  0,   0,  0,  0,  0,   0,  70, 70,  70,
                  70, 70,  70, 70, 70, 70,  70, 0,  0,  0,   0,  0,  10, 10,  10, 10, 10,  97,
                  10, 10,  10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 119, 10,
                  10, 10,  10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10,  10,
                  10, 135, 10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10, 144, 10, 10, 10,  10,
                  10, 10,  10, 10, 10, 150, 10, 10, 10, 154, 10, 10, 10, 10,  10, 10, 10,  10,
                  10, 10,  10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10,  10,
                  10, 10,  10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10,  10,
                  10, 10,  10, 10, 10, 10,  10, 10, 10, 10,  10, 10, 10, 212, 10, 10, 10,  10,
                  10, 10,  10, 10, 10, 10,  10, 10, 10, 10,  10, 0,  0,  0,   0,  0,  0,
          },
          {
                  0,  9,  0,  0,  0,  0,  0,  8,  8,  10, 10, 0,  0,  0,  0,   0,  0,  0,  0,   0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  34,  34, 0,  37, 0,   0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,   0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  70, 70, 70, 70, 70, 70,  70, 70, 70, 70,  0,
                  0,  0,  0,  0,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 155, 10, 10, 10, 159, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,  10,
                  10, 10, 10, 10, 10, 10, 10, 0,  0,  0,  0,  0,  0,
          },
          {
                  0,   169, 0,  0,  0,  0,  0,   8,  8,   10,  10,  0,  0,   0,  0,   0,  0,  0,
                  0,   0,   0,  0,  0,  0,  0,   0,  0,   0,   0,   0,  0,   0,  0,   0,  34, 34,
                  0,   37,  0,  0,  0,  0,  0,   0,  0,   0,   0,   0,  0,   0,  0,   0,  0,  0,
                  0,   0,   0,  0,  0,  0,  0,   0,  0,   0,   0,   0,  0,   0,  0,   70, 70, 70,
                  70,  70,  70, 70, 70, 70, 70,  0,  0,   0,   0,   0,  85,  10, 10,  10, 10, 10,
                  10,  10,  10, 10, 10, 10, 10,  10, 10,  10,  10,  10, 10,  10, 10,  10, 10, 10,
                  10,  10,  10, 10, 10, 10, 10,  10, 117, 10,  10,  10, 10,  10, 10,  10, 10, 10,
                  10,  10,  10, 10, 10, 10, 10,  10, 10,  136, 10,  10, 10,  10, 10,  10, 10, 10,
                  10,  10,  10, 10, 10, 10, 10,  10, 10,  10,  10,  10, 157, 10, 10,  10, 10, 10,
                  10,  10,  10, 10, 10, 10, 10,  10, 10,  10,  173, 10, 10,  10, 10,  10, 10, 10,
                  10,  10,  10, 10, 10, 10, 10,  10, 10,  10,  10,  10, 10,  10, 195, 10, 10, 10,
                  10,  10,  10, 10, 10, 10, 205, 10, 10,  10,  10,  10, 10,  10, 213, 10, 10, 10,
                  217, 10,  10, 10, 10, 10, 10,  10, 10,  10,  10,  0,  0,   0,  0,   0,  0,
          },
          {
                  0,  175, 0,  0,   0,  0,   0,  8,  8,  10, 10, 0,  0,   0,   0,  0,  0,  0,
                  0,  0,   0,  0,   0,  0,   0,  0,  0,  0,  0,  0,  0,   0,   0,  0,  34, 34,
                  0,  37,  0,  0,   0,  0,   0,  0,  0,  0,  0,  0,  0,   0,   0,  0,  0,  0,
                  0,  0,   0,  0,   0,  0,   0,  0,  0,  0,  0,  0,  0,   0,   0,  73, 70, 70,
                  70, 70,  70, 70,  70, 70,  70, 0,  0,  0,  0,  0,  10,  10,  10, 10, 10, 10,
                  91, 10,  10, 10,  95, 96,  10, 10, 99, 10, 10, 10, 10,  10,  10, 10, 10, 10,
                  10, 10,  10, 10,  10, 114, 10, 10, 10, 10, 10, 10, 10,  122, 10, 10, 10, 10,
                  10, 10,  10, 130, 10, 10,  10, 10, 10, 10, 10, 10, 10,  10,  10, 10, 10, 10,
                  10, 10,  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10,  158, 10, 10, 10, 10,
                  10, 10,  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10,  10,  10, 10, 10, 180,
                  10, 182, 10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 193, 10,  10, 10, 10, 10,
                  10, 10,  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10,  10,  10, 10, 10, 10,
                  10, 10,  10, 10,  10, 10,  10, 10, 10, 10, 10, 0,  0,   0,   0,  0,  0,
          },
          {
                  0,  204, 0,   0,   0,  0,   0,  8,   8,   10,  10, 0,   0,  0,   0,  0,  0,  0,
                  0,  0,   0,   0,   0,  0,   0,  0,   0,   0,   0,  0,   0,  0,   0,  0,  34, 34,
                  0,  37,  0,   0,   0,  0,   0,  0,   0,   0,   0,  0,   0,  0,   0,  0,  0,  0,
                  0,  0,   0,   0,   0,  0,   0,  0,   0,   0,   0,  0,   0,  0,   0,  70, 70, 70,
                  70, 70,  70,  76,  70, 70,  70, 0,   0,   0,   0,  0,   10, 10,  10, 10, 10, 10,
                  10, 10,  10,  10,  10, 10,  10, 10,  101, 100, 10, 10,  10, 10,  10, 10, 10, 10,
                  10, 10,  10,  112, 10, 10,  10, 10,  10,  10,  10, 10,  10, 10,  10, 10, 10, 10,
                  10, 10,  10,  10,  10, 10,  10, 134, 10,  10,  10, 10,  10, 10,  10, 10, 10, 10,
                  10, 146, 10,  10,  10, 10,  10, 152, 10,  10,  10, 10,  10, 10,  10, 10, 10, 162,
                  10, 10,  10,  10,  10, 168, 10, 10,  171, 10,  10, 10,  10, 194, 10, 10, 10, 10,
                  10, 10,  10,  10,  10, 10,  10, 10,  10,  10,  10, 192, 10, 10,  10, 10, 10, 198,
                  10, 10,  201, 10,  10, 10,  10, 10,  10,  10,  10, 10,  10, 10,  10, 10, 10, 10,
                  10, 10,  10,  10,  10, 10,  10, 10,  10,  10,  10, 0,   0,  0,   0,  0,  0,
          },
          {
                  0,   208, 0,  0,  0,   0,  0,   8,   8,  10,  10, 0,  0,  0,   0,  0,   0,   0,
                  0,   0,   0,  0,  0,   0,  0,   0,   0,  0,   0,  0,  0,  0,   0,  0,   34,  34,
                  0,   37,  0,  0,  0,   0,  0,   0,   0,  0,   0,  0,  0,  0,   0,  0,   0,   0,
                  0,   0,   0,  0,  0,   0,  0,   0,   0,  0,   0,  0,  0,  0,   0,  70,  70,  70,
                  70,  70,  70, 70, 70,  70, 70,  0,   0,  0,   0,  0,  10, 10,  10, 10,  10,  10,
                  10,  10,  10, 10, 10,  10, 10,  10,  10, 10,  10, 10, 10, 104, 10, 10,  10,  10,
                  10,  110, 10, 10, 10,  10, 10,  10,  10, 10,  10, 10, 10, 10,  10, 10,  125, 10,
                  10,  10,  10, 10, 10,  10, 10,  10,  10, 10,  10, 10, 10, 10,  10, 10,  10,  10,
                  145, 10,  10, 10, 10,  10, 151, 10,  10, 10,  10, 10, 10, 10,  10, 10,  10,  10,
                  10,  10,  10, 10, 167, 10, 10,  10,  10, 172, 10, 10, 10, 10,  10, 10,  10,  10,
                  10,  10,  10, 10, 10,  10, 10,  10,  10, 10,  10, 10, 10, 10,  10, 196, 10,  10,
                  10,  10,  10, 10, 10,  10, 10,  206, 10, 10,  10, 10, 10, 10,  10, 10,  10,  10,
                  10,  10,  10, 10, 10,  10, 10,  10,  10, 10,  10, 0,  0,  0,   0,  0,   0,
          },
          {
                  0,  215, 0,  0,   0,  0,  0,  8,  8,  10, 10, 0,  0,  0,  0,  0,  0,  0,  0,  0,
                  0,  0,   0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  34, 34, 0,  37, 0,  0,
                  0,  0,   0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
                  0,  0,   0,  0,   0,  0,  0,  0,  0,  70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 0,
                  0,  0,   0,  0,   10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10,  10, 164, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10,  10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10,  10, 10,  10, 10, 10, 0,  0,  0,  0,  0,  0,
          },
          {
                  0,  222, 0,  0,  0,  0,  0,  8,  8,  10, 10, 0,  0,  0,  0,  0,   0,  0,  0,  0,
                  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  34, 34,  0,  37, 0,  0,
                  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,
                  0,  0,   0,  0,  0,  0,  0,  0,  0,  70, 70, 70, 70, 74, 70, 70,  70, 70, 70, 0,
                  0,  0,   0,  0,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
                  10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
                  10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
                  10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
                  10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 199, 10, 10, 10, 10,
                  10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
                  10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10,
                  10, 10,  10, 10, 10, 10, 10, 0,  0,  0,  0,  0,  0,
          },
          {
                  0,  9,  0,  0,  0,  0,  0,  8,  8,  10, 10, 0,  0,  0,  0,  0,  0,  0,  0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  34, 34, 0,  37, 0,  52,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,  70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 0,
                  0,  0,  0,  0,  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 0,  0,  0,  0,  0,  0,
          },
          {
                  0,  9,  0,  0,  0,  0,  0,  8,  8,   10, 10, 0,  0,  0,  0,  0,  0,  0,   0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  34, 34, 0,  37,  0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,
                  0,  0,  0,  0,  0,  0,  0,  0,  0,   70, 70, 70, 70, 70, 70, 70, 70, 70,  70, 0,
                  0,  0,  0,  0,  10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 149, 10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10,
                  10, 10, 10, 10, 10, 10, 10, 10, 10,  10, 10, 10, 10, 10, 10, 10, 10, 218, 10, 10,
                  10, 10, 10, 10, 10, 10, 10, 0,  0,   0,  0,  0,  0,
          },
          {
                  0, 227, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0, 228, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0,
          },
          {
                  0, 231, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          },
          {
                  0, 232, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 34, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0,   0, 0, 0, 0, 0, 0, 0,  0,  0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 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 int8_t accepts[233] = {
          -1, -1, 83, 83, 86, 60, 66, 86, 34, 33, 33, 50, 75, 55, 59, 80, 36, 37, 48, 73, 46, 44,
          71, 43, 47, 45, 72, 82, 42, 1,  -1, -1, 1,  49, -1, -1, 85, 84, 74, 2,  1,  1,  -1, -1,
          1,  -1, -1, 1,  2,  -1, -1, 1,  -1, 2,  2,  63, 62, 81, 68, 51, 76, 70, 64, 65, 67, 69,
          52, 77, 61, 86, 35, 35, 6,  35, 35, 35, 35, 35, 12, 40, 41, 54, 79, 58, 33, 33, 33, 33,
          15, 33, 33, 33, 13, 33, 33, 33, 32, 33, 33, 33, 23, 33, 33, 33, 33, 16, 33, 33, 33, 33,
          33, 33, 14, 33, 33, 33, 33, 33, 17, 10, 33, 33, 33, 7,  33, 33, 31, 33, 33, 33, 33, 4,
          33, 33, 24, 33, 8,  33, 5,  19, 33, 33, 33, 26, 33, 33, 21, 33, 33, 33, 33, 33, 30, 33,
          33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 25, 33, 33, 20, 33, 33, 33, 33, 33, 18, 33,
          33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 27, 33, 33, 33, 33,
          29, 33, 33, 33, 33, 11, 33, 33, 33, 3,  33, 33, 33, 33, 33, 33, 22, 33, 33, 33, 33, 33,
          33, 28, 33, 33, 33, 33, 9,  38, 53, 78, 57, 39, 56,
  };
  
  Token Lexer::next() {
      // note that we cheat here: normally a lexer needs to worry about the case
      // where a token has a prefix which is not itself a valid token - for instance,
      // maybe we have a valid token 'while', but 'w', 'wh', etc. are not valid
      // tokens. Our grammar doesn't have this property, so we can simplify the logic
      // a bit.
      int32_t startOffset = fOffset;
      if (startOffset == fLength) {
          return Token(Token::Kind::TK_END_OF_FILE, startOffset, 0);
      }
      State state = 1;
      for (;;) {
          if (fOffset >= fLength) {
              if (accepts[state] == -1) {
                  return Token(Token::Kind::TK_END_OF_FILE, startOffset, 0);
              }
              break;
          }
          uint8_t c = (uint8_t)fText[fOffset];
          if (c <= 8 || c >= 127) {
              c = INVALID_CHAR;
          }
          State newState = transitions[mappings[c]][state];
          if (!newState) {
              break;
          }
          state = newState;
          ++fOffset;
      }
      Token::Kind kind = (Token::Kind)accepts[state];
      return Token(kind, startOffset, fOffset - startOffset);
  }
  
  }  // namespace SkSL
  