/* The copyright in this software is being made available under the BSD
 * License, included below. This software may be subject to other third party
 * and contributor rights, including patent rights, and no such rights are
 * granted under this license.
 *
 * Copyright (c) 2010-2017, ITU/ISO/IEC
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 *  * Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *  * Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions and the following disclaimer in the documentation
 *    and/or other materials provided with the distribution.
 *  * Neither the name of the ITU/ISO/IEC nor the names of its contributors may
 *    be used to endorse or promote products derived from this software without
 *    specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 * THE POSSIBILITY OF SUCH DAMAGE.
 */

/** \file     RomNSST.cpp
    \brief    Transformations
*/

#include "Rom.h"

//--------------------------------------------------------------------------------------------------
// Transformations

#if HEVC_USE_4x4_DSTVII
#define DEFINE_DST4x4_MATRIX(a,b,c,d) \
{ \
  {  a,  b,  c,  d }, \
  {  c,  c,  0, -c }, \
  {  d, -a, -c,  b }, \
  {  b, -d,  c, -a }, \
}

#endif
#define DEFINE_DCT2x2_MATRIX(a) \
{ \
  {a,  a}, \
  {a, -a}  \
}

#define DEFINE_DCT4x4_MATRIX(a,b,c) \
{ \
  { a,  a,  a,  a}, \
  { b,  c, -c, -b}, \
  { a, -a, -a,  a}, \
  { c, -b,  b, -c}  \
}

#define DEFINE_DCT8x8_MATRIX(a,b,c,d,e,f,g) \
{ \
  { a,  a,  a,  a,  a,  a,  a,  a}, \
  { d,  e,  f,  g, -g, -f, -e, -d}, \
  { b,  c, -c, -b, -b, -c,  c,  b}, \
  { e, -g, -d, -f,  f,  d,  g, -e}, \
  { a, -a, -a,  a,  a, -a, -a,  a}, \
  { f, -d,  g,  e, -e, -g,  d, -f}, \
  { c, -b,  b, -c, -c,  b, -b,  c}, \
  { g, -f,  e, -d,  d, -e,  f, -g}  \
}

#define DEFINE_DCT16x16_MATRIX(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) \
{ \
  { a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a}, \
  { h,  i,  j,  k,  l,  m,  n,  o, -o, -n, -m, -l, -k, -j, -i, -h}, \
  { d,  e,  f,  g, -g, -f, -e, -d, -d, -e, -f, -g,  g,  f,  e,  d}, \
  { i,  l,  o, -m, -j, -h, -k, -n,  n,  k,  h,  j,  m, -o, -l, -i}, \
  { b,  c, -c, -b, -b, -c,  c,  b,  b,  c, -c, -b, -b, -c,  c,  b}, \
  { j,  o, -k, -i, -n,  l,  h,  m, -m, -h, -l,  n,  i,  k, -o, -j}, \
  { e, -g, -d, -f,  f,  d,  g, -e, -e,  g,  d,  f, -f, -d, -g,  e}, \
  { k, -m, -i,  o,  h,  n, -j, -l,  l,  j, -n, -h, -o,  i,  m, -k}, \
  { a, -a, -a,  a,  a, -a, -a,  a,  a, -a, -a,  a,  a, -a, -a,  a}, \
  { l, -j, -n,  h, -o, -i,  m,  k, -k, -m,  i,  o, -h,  n,  j, -l}, \
  { f, -d,  g,  e, -e, -g,  d, -f, -f,  d, -g, -e,  e,  g, -d,  f}, \
  { m, -h,  l,  n, -i,  k,  o, -j,  j, -o, -k,  i, -n, -l,  h, -m}, \
  { c, -b,  b, -c, -c,  b, -b,  c,  c, -b,  b, -c, -c,  b, -b,  c}, \
  { n, -k,  h, -j,  m,  o, -l,  i, -i,  l, -o, -m,  j, -h,  k, -n}, \
  { g, -f,  e, -d,  d, -e,  f, -g, -g,  f, -e,  d, -d,  e, -f,  g}, \
  { o, -n,  m, -l,  k, -j,  i, -h,  h, -i,  j, -k,  l, -m,  n, -o}  \
}

#define DEFINE_DCT32x32_MATRIX(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E) \
{ \
  { a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a,  a}, \
  { p,  q,  r,  s,  t,  u,  v,  w,  x,  y,  z,  A,  B,  C,  D,  E, -E, -D, -C, -B, -A, -z, -y, -x, -w, -v, -u, -t, -s, -r, -q, -p}, \
  { h,  i,  j,  k,  l,  m,  n,  o, -o, -n, -m, -l, -k, -j, -i, -h, -h, -i, -j, -k, -l, -m, -n, -o,  o,  n,  m,  l,  k,  j,  i,  h}, \
  { q,  t,  w,  z,  C, -E, -B, -y, -v, -s, -p, -r, -u, -x, -A, -D,  D,  A,  x,  u,  r,  p,  s,  v,  y,  B,  E, -C, -z, -w, -t, -q}, \
  { d,  e,  f,  g, -g, -f, -e, -d, -d, -e, -f, -g,  g,  f,  e,  d,  d,  e,  f,  g, -g, -f, -e, -d, -d, -e, -f, -g,  g,  f,  e,  d}, \
  { r,  w,  B, -D, -y, -t, -p, -u, -z, -E,  A,  v,  q,  s,  x,  C, -C, -x, -s, -q, -v, -A,  E,  z,  u,  p,  t,  y,  D, -B, -w, -r}, \
  { i,  l,  o, -m, -j, -h, -k, -n,  n,  k,  h,  j,  m, -o, -l, -i, -i, -l, -o,  m,  j,  h,  k,  n, -n, -k, -h, -j, -m,  o,  l,  i}, \
  { s,  z, -D, -w, -p, -v, -C,  A,  t,  r,  y, -E, -x, -q, -u, -B,  B,  u,  q,  x,  E, -y, -r, -t, -A,  C,  v,  p,  w,  D, -z, -s}, \
  { b,  c, -c, -b, -b, -c,  c,  b,  b,  c, -c, -b, -b, -c,  c,  b,  b,  c, -c, -b, -b, -c,  c,  b,  b,  c, -c, -b, -b, -c,  c,  b}, \
  { t,  C, -y, -p, -x,  D,  u,  s,  B, -z, -q, -w,  E,  v,  r,  A, -A, -r, -v, -E,  w,  q,  z, -B, -s, -u, -D,  x,  p,  y, -C, -t}, \
  { j,  o, -k, -i, -n,  l,  h,  m, -m, -h, -l,  n,  i,  k, -o, -j, -j, -o,  k,  i,  n, -l, -h, -m,  m,  h,  l, -n, -i, -k,  o,  j}, \
  { u, -E, -t, -v,  D,  s,  w, -C, -r, -x,  B,  q,  y, -A, -p, -z,  z,  p,  A, -y, -q, -B,  x,  r,  C, -w, -s, -D,  v,  t,  E, -u}, \
  { e, -g, -d, -f,  f,  d,  g, -e, -e,  g,  d,  f, -f, -d, -g,  e,  e, -g, -d, -f,  f,  d,  g, -e, -e,  g,  d,  f, -f, -d, -g,  e}, \
  { v, -B, -p, -C,  u,  w, -A, -q, -D,  t,  x, -z, -r, -E,  s,  y, -y, -s,  E,  r,  z, -x, -t,  D,  q,  A, -w, -u,  C,  p,  B, -v}, \
  { k, -m, -i,  o,  h,  n, -j, -l,  l,  j, -n, -h, -o,  i,  m, -k, -k,  m,  i, -o, -h, -n,  j,  l, -l, -j,  n,  h,  o, -i, -m,  k}, \
  { w, -y, -u,  A,  s, -C, -q,  E,  p,  D, -r, -B,  t,  z, -v, -x,  x,  v, -z, -t,  B,  r, -D, -p, -E,  q,  C, -s, -A,  u,  y, -w}, \
  { a, -a, -a,  a,  a, -a, -a,  a,  a, -a, -a,  a,  a, -a, -a,  a,  a, -a, -a,  a,  a, -a, -a,  a,  a, -a, -a,  a,  a, -a, -a,  a}, \
  { x, -v, -z,  t,  B, -r, -D,  p, -E, -q,  C,  s, -A, -u,  y,  w, -w, -y,  u,  A, -s, -C,  q,  E, -p,  D,  r, -B, -t,  z,  v, -x}, \
  { l, -j, -n,  h, -o, -i,  m,  k, -k, -m,  i,  o, -h,  n,  j, -l, -l,  j,  n, -h,  o,  i, -m, -k,  k,  m, -i, -o,  h, -n, -j,  l}, \
  { y, -s, -E,  r, -z, -x,  t,  D, -q,  A,  w, -u, -C,  p, -B, -v,  v,  B, -p,  C,  u, -w, -A,  q, -D, -t,  x,  z, -r,  E,  s, -y}, \
  { f, -d,  g,  e, -e, -g,  d, -f, -f,  d, -g, -e,  e,  g, -d,  f,  f, -d,  g,  e, -e, -g,  d, -f, -f,  d, -g, -e,  e,  g, -d,  f}, \
  { z, -p,  A,  y, -q,  B,  x, -r,  C,  w, -s,  D,  v, -t,  E,  u, -u, -E,  t, -v, -D,  s, -w, -C,  r, -x, -B,  q, -y, -A,  p, -z}, \
  { m, -h,  l,  n, -i,  k,  o, -j,  j, -o, -k,  i, -n, -l,  h, -m, -m,  h, -l, -n,  i, -k, -o,  j, -j,  o,  k, -i,  n,  l, -h,  m}, \
  { A, -r,  v, -E, -w,  q, -z, -B,  s, -u,  D,  x, -p,  y,  C, -t,  t, -C, -y,  p, -x, -D,  u, -s,  B,  z, -q,  w,  E, -v,  r, -A}, \
  { c, -b,  b, -c, -c,  b, -b,  c,  c, -b,  b, -c, -c,  b, -b,  c,  c, -b,  b, -c, -c,  b, -b,  c,  c, -b,  b, -c, -c,  b, -b,  c}, \
  { B, -u,  q, -x,  E,  y, -r,  t, -A, -C,  v, -p,  w, -D, -z,  s, -s,  z,  D, -w,  p, -v,  C,  A, -t,  r, -y, -E,  x, -q,  u, -B}, \
  { n, -k,  h, -j,  m,  o, -l,  i, -i,  l, -o, -m,  j, -h,  k, -n, -n,  k, -h,  j, -m, -o,  l, -i,  i, -l,  o,  m, -j,  h, -k,  n}, \
  { C, -x,  s, -q,  v, -A, -E,  z, -u,  p, -t,  y, -D, -B,  w, -r,  r, -w,  B,  D, -y,  t, -p,  u, -z,  E,  A, -v,  q, -s,  x, -C}, \
  { g, -f,  e, -d,  d, -e,  f, -g, -g,  f, -e,  d, -d,  e, -f,  g,  g, -f,  e, -d,  d, -e,  f, -g, -g,  f, -e,  d, -d,  e, -f,  g}, \
  { D, -A,  x, -u,  r, -p,  s, -v,  y, -B,  E,  C, -z,  w, -t,  q, -q,  t, -w,  z, -C, -E,  B, -y,  v, -s,  p, -r,  u, -x,  A, -D}, \
  { o, -n,  m, -l,  k, -j,  i, -h,  h, -i,  j, -k,  l, -m,  n, -o, -o,  n, -m,  l, -k,  j, -i,  h, -h,  i, -j,  k, -l,  m, -n,  o}, \
  { E, -D,  C, -B,  A, -z,  y, -x,  w, -v,  u, -t,  s, -r,  q, -p,  p, -q,  r, -s,  t, -u,  v, -w,  x, -y,  z, -A,  B, -C,  D, -E}  \
}


#define DEFINE_DCT64x64_MATRIX(aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk, bl, bm, bn, bo, bp, bq, br, bs, bt, bu, bv, bw, bx, by, bz, ca, cb, cc, cd, ce, cf, cg, ch, ci, cj, ck) \
{ \
  { aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa }, \
  { bf,  bg,  bh,  bi,  bj,  bk,  bl,  bm,  bn,  bo,  bp,  bq,  br,  bs,  bt,  bu,  bv,  bw,  bx,  by,  bz,  ca,  cb,  cc,  cd,  ce,  cf,  cg,  ch,  ci,  cj,  ck, -ck, -cj, -ci, -ch, -cg, -cf, -ce, -cd, -cc, -cb, -ca, -bz, -by, -bx, -bw, -bv, -bu, -bt, -bs, -br, -bq, -bp, -bo, -bn, -bm, -bl, -bk, -bj, -bi, -bh, -bg, -bf }, \
  { ap,  aq,  ar,  as,  at,  au,  av,  aw,  ax,  ay,  az,  ba,  bb,  bc,  bd,  be, -be, -bd, -bc, -bb, -ba, -az, -ay, -ax, -aw, -av, -au, -at, -as, -ar, -aq, -ap, -ap, -aq, -ar, -as, -at, -au, -av, -aw, -ax, -ay, -az, -ba, -bb, -bc, -bd, -be,  be,  bd,  bc,  bb,  ba,  az,  ay,  ax,  aw,  av,  au,  at,  as,  ar,  aq,  ap }, \
  { bg,  bj,  bm,  bp,  bs,  bv,  by,  cb,  ce,  ch,  ck, -ci, -cf, -cc, -bz, -bw, -bt, -bq, -bn, -bk, -bh, -bf, -bi, -bl, -bo, -br, -bu, -bx, -ca, -cd, -cg, -cj,  cj,  cg,  cd,  ca,  bx,  bu,  br,  bo,  bl,  bi,  bf,  bh,  bk,  bn,  bq,  bt,  bw,  bz,  cc,  cf,  ci, -ck, -ch, -ce, -cb, -by, -bv, -bs, -bp, -bm, -bj, -bg }, \
  { ah,  ai,  aj,  ak,  al,  am,  an,  ao, -ao, -an, -am, -al, -ak, -aj, -ai, -ah, -ah, -ai, -aj, -ak, -al, -am, -an, -ao,  ao,  an,  am,  al,  ak,  aj,  ai,  ah,  ah,  ai,  aj,  ak,  al,  am,  an,  ao, -ao, -an, -am, -al, -ak, -aj, -ai, -ah, -ah, -ai, -aj, -ak, -al, -am, -an, -ao,  ao,  an,  am,  al,  ak,  aj,  ai,  ah }, \
  { bh,  bm,  br,  bw,  cb,  cg, -ck, -cf, -ca, -bv, -bq, -bl, -bg, -bi, -bn, -bs, -bx, -cc, -ch,  cj,  ce,  bz,  bu,  bp,  bk,  bf,  bj,  bo,  bt,  by,  cd,  ci, -ci, -cd, -by, -bt, -bo, -bj, -bf, -bk, -bp, -bu, -bz, -ce, -cj,  ch,  cc,  bx,  bs,  bn,  bi,  bg,  bl,  bq,  bv,  ca,  cf,  ck, -cg, -cb, -bw, -br, -bm, -bh }, \
  { aq,  at,  aw,  az,  bc, -be, -bb, -ay, -av, -as, -ap, -ar, -au, -ax, -ba, -bd,  bd,  ba,  ax,  au,  ar,  ap,  as,  av,  ay,  bb,  be, -bc, -az, -aw, -at, -aq, -aq, -at, -aw, -az, -bc,  be,  bb,  ay,  av,  as,  ap,  ar,  au,  ax,  ba,  bd, -bd, -ba, -ax, -au, -ar, -ap, -as, -av, -ay, -bb, -be,  bc,  az,  aw,  at,  aq }, \
  { bi,  bp,  bw,  cd,  ck, -ce, -bx, -bq, -bj, -bh, -bo, -bv, -cc, -cj,  cf,  by,  br,  bk,  bg,  bn,  bu,  cb,  ci, -cg, -bz, -bs, -bl, -bf, -bm, -bt, -ca, -ch,  ch,  ca,  bt,  bm,  bf,  bl,  bs,  bz,  cg, -ci, -cb, -bu, -bn, -bg, -bk, -br, -by, -cf,  cj,  cc,  bv,  bo,  bh,  bj,  bq,  bx,  ce, -ck, -cd, -bw, -bp, -bi }, \
  { ad,  ae,  af,  ag, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag,  ag,  af,  ae,  ad,  ad,  ae,  af,  ag, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag,  ag,  af,  ae,  ad,  ad,  ae,  af,  ag, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag,  ag,  af,  ae,  ad,  ad,  ae,  af,  ag, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag,  ag,  af,  ae,  ad }, \
  { bj,  bs,  cb,  ck, -cc, -bt, -bk, -bi, -br, -ca, -cj,  cd,  bu,  bl,  bh,  bq,  bz,  ci, -ce, -bv, -bm, -bg, -bp, -by, -ch,  cf,  bw,  bn,  bf,  bo,  bx,  cg, -cg, -bx, -bo, -bf, -bn, -bw, -cf,  ch,  by,  bp,  bg,  bm,  bv,  ce, -ci, -bz, -bq, -bh, -bl, -bu, -cd,  cj,  ca,  br,  bi,  bk,  bt,  cc, -ck, -cb, -bs, -bj }, \
  { ar,  aw,  bb, -bd, -ay, -at, -ap, -au, -az, -be,  ba,  av,  aq,  as,  ax,  bc, -bc, -ax, -as, -aq, -av, -ba,  be,  az,  au,  ap,  at,  ay,  bd, -bb, -aw, -ar, -ar, -aw, -bb,  bd,  ay,  at,  ap,  au,  az,  be, -ba, -av, -aq, -as, -ax, -bc,  bc,  ax,  as,  aq,  av,  ba, -be, -az, -au, -ap, -at, -ay, -bd,  bb,  aw,  ar }, \
  { bk,  bv,  cg, -ce, -bt, -bi, -bm, -bx, -ci,  cc,  br,  bg,  bo,  bz,  ck, -ca, -bp, -bf, -bq, -cb,  cj,  by,  bn,  bh,  bs,  cd, -ch, -bw, -bl, -bj, -bu, -cf,  cf,  bu,  bj,  bl,  bw,  ch, -cd, -bs, -bh, -bn, -by, -cj,  cb,  bq,  bf,  bp,  ca, -ck, -bz, -bo, -bg, -br, -cc,  ci,  bx,  bm,  bi,  bt,  ce, -cg, -bv, -bk }, \
  { ai,  al,  ao, -am, -aj, -ah, -ak, -an,  an,  ak,  ah,  aj,  am, -ao, -al, -ai, -ai, -al, -ao,  am,  aj,  ah,  ak,  an, -an, -ak, -ah, -aj, -am,  ao,  al,  ai,  ai,  al,  ao, -am, -aj, -ah, -ak, -an,  an,  ak,  ah,  aj,  am, -ao, -al, -ai, -ai, -al, -ao,  am,  aj,  ah,  ak,  an, -an, -ak, -ah, -aj, -am,  ao,  al,  ai }, \
  { bl,  by, -ck, -bx, -bk, -bm, -bz,  cj,  bw,  bj,  bn,  ca, -ci, -bv, -bi, -bo, -cb,  ch,  bu,  bh,  bp,  cc, -cg, -bt, -bg, -bq, -cd,  cf,  bs,  bf,  br,  ce, -ce, -br, -bf, -bs, -cf,  cd,  bq,  bg,  bt,  cg, -cc, -bp, -bh, -bu, -ch,  cb,  bo,  bi,  bv,  ci, -ca, -bn, -bj, -bw, -cj,  bz,  bm,  bk,  bx,  ck, -by, -bl }, \
  { as,  az, -bd, -aw, -ap, -av, -bc,  ba,  at,  ar,  ay, -be, -ax, -aq, -au, -bb,  bb,  au,  aq,  ax,  be, -ay, -ar, -at, -ba,  bc,  av,  ap,  aw,  bd, -az, -as, -as, -az,  bd,  aw,  ap,  av,  bc, -ba, -at, -ar, -ay,  be,  ax,  aq,  au,  bb, -bb, -au, -aq, -ax, -be,  ay,  ar,  at,  ba, -bc, -av, -ap, -aw, -bd,  az,  as }, \
  { bm,  cb, -cf, -bq, -bi, -bx,  cj,  bu,  bf,  bt,  ci, -by, -bj, -bp, -ce,  cc,  bn,  bl,  ca, -cg, -br, -bh, -bw,  ck,  bv,  bg,  bs,  ch, -bz, -bk, -bo, -cd,  cd,  bo,  bk,  bz, -ch, -bs, -bg, -bv, -ck,  bw,  bh,  br,  cg, -ca, -bl, -bn, -cc,  ce,  bp,  bj,  by, -ci, -bt, -bf, -bu, -cj,  bx,  bi,  bq,  cf, -cb, -bm }, \
  { ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab }, \
  { bn,  ce, -ca, -bj, -br, -ci,  bw,  bf,  bv, -cj, -bs, -bi, -bz,  cf,  bo,  bm,  cd, -cb, -bk, -bq, -ch,  bx,  bg,  bu, -ck, -bt, -bh, -by,  cg,  bp,  bl,  cc, -cc, -bl, -bp, -cg,  by,  bh,  bt,  ck, -bu, -bg, -bx,  ch,  bq,  bk,  cb, -cd, -bm, -bo, -cf,  bz,  bi,  bs,  cj, -bv, -bf, -bw,  ci,  br,  bj,  ca, -ce, -bn }, \
  { at,  bc, -ay, -ap, -ax,  bd,  au,  as,  bb, -az, -aq, -aw,  be,  av,  ar,  ba, -ba, -ar, -av, -be,  aw,  aq,  az, -bb, -as, -au, -bd,  ax,  ap,  ay, -bc, -at, -at, -bc,  ay,  ap,  ax, -bd, -au, -as, -bb,  az,  aq,  aw, -be, -av, -ar, -ba,  ba,  ar,  av,  be, -aw, -aq, -az,  bb,  as,  au,  bd, -ax, -ap, -ay,  bc,  at }, \
  { bo,  ch, -bv, -bh, -ca,  cc,  bj,  bt, -cj, -bq, -bm, -cf,  bx,  bf,  by, -ce, -bl, -br, -ck,  bs,  bk,  cd, -bz, -bg, -bw,  cg,  bn,  bp,  ci, -bu, -bi, -cb,  cb,  bi,  bu, -ci, -bp, -bn, -cg,  bw,  bg,  bz, -cd, -bk, -bs,  ck,  br,  bl,  ce, -by, -bf, -bx,  cf,  bm,  bq,  cj, -bt, -bj, -cc,  ca,  bh,  bv, -ch, -bo }, \
  { aj,  ao, -ak, -ai, -an,  al,  ah,  am, -am, -ah, -al,  an,  ai,  ak, -ao, -aj, -aj, -ao,  ak,  ai,  an, -al, -ah, -am,  am,  ah,  al, -an, -ai, -ak,  ao,  aj,  aj,  ao, -ak, -ai, -an,  al,  ah,  am, -am, -ah, -al,  an,  ai,  ak, -ao, -aj, -aj, -ao,  ak,  ai,  an, -al, -ah, -am,  am,  ah,  al, -an, -ai, -ak,  ao,  aj }, \
  { bp,  ck, -bq, -bo, -cj,  br,  bn,  ci, -bs, -bm, -ch,  bt,  bl,  cg, -bu, -bk, -cf,  bv,  bj,  ce, -bw, -bi, -cd,  bx,  bh,  cc, -by, -bg, -cb,  bz,  bf,  ca, -ca, -bf, -bz,  cb,  bg,  by, -cc, -bh, -bx,  cd,  bi,  bw, -ce, -bj, -bv,  cf,  bk,  bu, -cg, -bl, -bt,  ch,  bm,  bs, -ci, -bn, -br,  cj,  bo,  bq, -ck, -bp }, \
  { au, -be, -at, -av,  bd,  as,  aw, -bc, -ar, -ax,  bb,  aq,  ay, -ba, -ap, -az,  az,  ap,  ba, -ay, -aq, -bb,  ax,  ar,  bc, -aw, -as, -bd,  av,  at,  be, -au, -au,  be,  at,  av, -bd, -as, -aw,  bc,  ar,  ax, -bb, -aq, -ay,  ba,  ap,  az, -az, -ap, -ba,  ay,  aq,  bb, -ax, -ar, -bc,  aw,  as,  bd, -av, -at, -be,  au }, \
  { bq, -ci, -bl, -bv,  cd,  bg,  ca, -by, -bi, -cf,  bt,  bn,  ck, -bo, -bs,  cg,  bj,  bx, -cb, -bf, -cc,  bw,  bk,  ch, -br, -bp,  cj,  bm,  bu, -ce, -bh, -bz,  bz,  bh,  ce, -bu, -bm, -cj,  bp,  br, -ch, -bk, -bw,  cc,  bf,  cb, -bx, -bj, -cg,  bs,  bo, -ck, -bn, -bt,  cf,  bi,  by, -ca, -bg, -cd,  bv,  bl,  ci, -bq }, \
  { ae, -ag, -ad, -af,  af,  ad,  ag, -ae, -ae,  ag,  ad,  af, -af, -ad, -ag,  ae,  ae, -ag, -ad, -af,  af,  ad,  ag, -ae, -ae,  ag,  ad,  af, -af, -ad, -ag,  ae,  ae, -ag, -ad, -af,  af,  ad,  ag, -ae, -ae,  ag,  ad,  af, -af, -ad, -ag,  ae,  ae, -ag, -ad, -af,  af,  ad,  ag, -ae, -ae,  ag,  ad,  af, -af, -ad, -ag,  ae }, \
  { br, -cf, -bg, -cc,  bu,  bo, -ci, -bj, -bz,  bx,  bl,  ck, -bm, -bw,  ca,  bi,  ch, -bp, -bt,  cd,  bf,  ce, -bs, -bq,  cg,  bh,  cb, -bv, -bn,  cj,  bk,  by, -by, -bk, -cj,  bn,  bv, -cb, -bh, -cg,  bq,  bs, -ce, -bf, -cd,  bt,  bp, -ch, -bi, -ca,  bw,  bm, -ck, -bl, -bx,  bz,  bj,  ci, -bo, -bu,  cc,  bg,  cf, -br }, \
  { av, -bb, -ap, -bc,  au,  aw, -ba, -aq, -bd,  at,  ax, -az, -ar, -be,  as,  ay, -ay, -as,  be,  ar,  az, -ax, -at,  bd,  aq,  ba, -aw, -au,  bc,  ap,  bb, -av, -av,  bb,  ap,  bc, -au, -aw,  ba,  aq,  bd, -at, -ax,  az,  ar,  be, -as, -ay,  ay,  as, -be, -ar, -az,  ax,  at, -bd, -aq, -ba,  aw,  au, -bc, -ap, -bb,  av }, \
  { bs, -cc, -bi, -cj,  bl,  bz, -bv, -bp,  cf,  bf,  cg, -bo, -bw,  by,  bm, -ci, -bh, -cd,  br,  bt, -cb, -bj, -ck,  bk,  ca, -bu, -bq,  ce,  bg,  ch, -bn, -bx,  bx,  bn, -ch, -bg, -ce,  bq,  bu, -ca, -bk,  ck,  bj,  cb, -bt, -br,  cd,  bh,  ci, -bm, -by,  bw,  bo, -cg, -bf, -cf,  bp,  bv, -bz, -bl,  cj,  bi,  cc, -bs }, \
  { ak, -am, -ai,  ao,  ah,  an, -aj, -al,  al,  aj, -an, -ah, -ao,  ai,  am, -ak, -ak,  am,  ai, -ao, -ah, -an,  aj,  al, -al, -aj,  an,  ah,  ao, -ai, -am,  ak,  ak, -am, -ai,  ao,  ah,  an, -aj, -al,  al,  aj, -an, -ah, -ao,  ai,  am, -ak, -ak,  am,  ai, -ao, -ah, -an,  aj,  al, -al, -aj,  an,  ah,  ao, -ai, -am,  ak }, \
  { bt, -bz, -bn,  cf,  bh,  ck, -bi, -ce,  bo,  by, -bu, -bs,  ca,  bm, -cg, -bg, -cj,  bj,  cd, -bp, -bx,  bv,  br, -cb, -bl,  ch,  bf,  ci, -bk, -cc,  bq,  bw, -bw, -bq,  cc,  bk, -ci, -bf, -ch,  bl,  cb, -br, -bv,  bx,  bp, -cd, -bj,  cj,  bg,  cg, -bm, -ca,  bs,  bu, -by, -bo,  ce,  bi, -ck, -bh, -cf,  bn,  bz, -bt }, \
  { aw, -ay, -au,  ba,  as, -bc, -aq,  be,  ap,  bd, -ar, -bb,  at,  az, -av, -ax,  ax,  av, -az, -at,  bb,  ar, -bd, -ap, -be,  aq,  bc, -as, -ba,  au,  ay, -aw, -aw,  ay,  au, -ba, -as,  bc,  aq, -be, -ap, -bd,  ar,  bb, -at, -az,  av,  ax, -ax, -av,  az,  at, -bb, -ar,  bd,  ap,  be, -aq, -bc,  as,  ba, -au, -ay,  aw }, \
  { bu, -bw, -bs,  by,  bq, -ca, -bo,  cc,  bm, -ce, -bk,  cg,  bi, -ci, -bg,  ck,  bf,  cj, -bh, -ch,  bj,  cf, -bl, -cd,  bn,  cb, -bp, -bz,  br,  bx, -bt, -bv,  bv,  bt, -bx, -br,  bz,  bp, -cb, -bn,  cd,  bl, -cf, -bj,  ch,  bh, -cj, -bf, -ck,  bg,  ci, -bi, -cg,  bk,  ce, -bm, -cc,  bo,  ca, -bq, -by,  bs,  bw, -bu }, \
  { aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa }, \
  { bv, -bt, -bx,  br,  bz, -bp, -cb,  bn,  cd, -bl, -cf,  bj,  ch, -bh, -cj,  bf, -ck, -bg,  ci,  bi, -cg, -bk,  ce,  bm, -cc, -bo,  ca,  bq, -by, -bs,  bw,  bu, -bu, -bw,  bs,  by, -bq, -ca,  bo,  cc, -bm, -ce,  bk,  cg, -bi, -ci,  bg,  ck, -bf,  cj,  bh, -ch, -bj,  cf,  bl, -cd, -bn,  cb,  bp, -bz, -br,  bx,  bt, -bv }, \
  { ax, -av, -az,  at,  bb, -ar, -bd,  ap, -be, -aq,  bc,  as, -ba, -au,  ay,  aw, -aw, -ay,  au,  ba, -as, -bc,  aq,  be, -ap,  bd,  ar, -bb, -at,  az,  av, -ax, -ax,  av,  az, -at, -bb,  ar,  bd, -ap,  be,  aq, -bc, -as,  ba,  au, -ay, -aw,  aw,  ay, -au, -ba,  as,  bc, -aq, -be,  ap, -bd, -ar,  bb,  at, -az, -av,  ax }, \
  { bw, -bq, -cc,  bk,  ci, -bf,  ch,  bl, -cb, -br,  bv,  bx, -bp, -cd,  bj,  cj, -bg,  cg,  bm, -ca, -bs,  bu,  by, -bo, -ce,  bi,  ck, -bh,  cf,  bn, -bz, -bt,  bt,  bz, -bn, -cf,  bh, -ck, -bi,  ce,  bo, -by, -bu,  bs,  ca, -bm, -cg,  bg, -cj, -bj,  cd,  bp, -bx, -bv,  br,  cb, -bl, -ch,  bf, -ci, -bk,  cc,  bq, -bw }, \
  { al, -aj, -an,  ah, -ao, -ai,  am,  ak, -ak, -am,  ai,  ao, -ah,  an,  aj, -al, -al,  aj,  an, -ah,  ao,  ai, -am, -ak,  ak,  am, -ai, -ao,  ah, -an, -aj,  al,  al, -aj, -an,  ah, -ao, -ai,  am,  ak, -ak, -am,  ai,  ao, -ah,  an,  aj, -al, -al,  aj,  an, -ah,  ao,  ai, -am, -ak,  ak,  am, -ai, -ao,  ah, -an, -aj,  al }, \
  { bx, -bn, -ch,  bg, -ce, -bq,  bu,  ca, -bk, -ck,  bj, -cb, -bt,  br,  cd, -bh,  ci,  bm, -by, -bw,  bo,  cg, -bf,  cf,  bp, -bv, -bz,  bl,  cj, -bi,  cc,  bs, -bs, -cc,  bi, -cj, -bl,  bz,  bv, -bp, -cf,  bf, -cg, -bo,  bw,  by, -bm, -ci,  bh, -cd, -br,  bt,  cb, -bj,  ck,  bk, -ca, -bu,  bq,  ce, -bg,  ch,  bn, -bx }, \
  { ay, -as, -be,  ar, -az, -ax,  at,  bd, -aq,  ba,  aw, -au, -bc,  ap, -bb, -av,  av,  bb, -ap,  bc,  au, -aw, -ba,  aq, -bd, -at,  ax,  az, -ar,  be,  as, -ay, -ay,  as,  be, -ar,  az,  ax, -at, -bd,  aq, -ba, -aw,  au,  bc, -ap,  bb,  av, -av, -bb,  ap, -bc, -au,  aw,  ba, -aq,  bd,  at, -ax, -az,  ar, -be, -as,  ay }, \
  { by, -bk,  cj,  bn, -bv, -cb,  bh, -cg, -bq,  bs,  ce, -bf,  cd,  bt, -bp, -ch,  bi, -ca, -bw,  bm,  ck, -bl,  bx,  bz, -bj,  ci,  bo, -bu, -cc,  bg, -cf, -br,  br,  cf, -bg,  cc,  bu, -bo, -ci,  bj, -bz, -bx,  bl, -ck, -bm,  bw,  ca, -bi,  ch,  bp, -bt, -cd,  bf, -ce, -bs,  bq,  cg, -bh,  cb,  bv, -bn, -cj,  bk, -by }, \
  { af, -ad,  ag,  ae, -ae, -ag,  ad, -af, -af,  ad, -ag, -ae,  ae,  ag, -ad,  af,  af, -ad,  ag,  ae, -ae, -ag,  ad, -af, -af,  ad, -ag, -ae,  ae,  ag, -ad,  af,  af, -ad,  ag,  ae, -ae, -ag,  ad, -af, -af,  ad, -ag, -ae,  ae,  ag, -ad,  af,  af, -ad,  ag,  ae, -ae, -ag,  ad, -af, -af,  ad, -ag, -ae,  ae,  ag, -ad,  af }, \
  { bz, -bh,  ce,  bu, -bm,  cj,  bp, -br, -ch,  bk, -bw, -cc,  bf, -cb, -bx,  bj, -cg, -bs,  bo,  ck, -bn,  bt,  cf, -bi,  by,  ca, -bg,  cd,  bv, -bl,  ci,  bq, -bq, -ci,  bl, -bv, -cd,  bg, -ca, -by,  bi, -cf, -bt,  bn, -ck, -bo,  bs,  cg, -bj,  bx,  cb, -bf,  cc,  bw, -bk,  ch,  br, -bp, -cj,  bm, -bu, -ce,  bh, -bz }, \
  { az, -ap,  ba,  ay, -aq,  bb,  ax, -ar,  bc,  aw, -as,  bd,  av, -at,  be,  au, -au, -be,  at, -av, -bd,  as, -aw, -bc,  ar, -ax, -bb,  aq, -ay, -ba,  ap, -az, -az,  ap, -ba, -ay,  aq, -bb, -ax,  ar, -bc, -aw,  as, -bd, -av,  at, -be, -au,  au,  be, -at,  av,  bd, -as,  aw,  bc, -ar,  ax,  bb, -aq,  ay,  ba, -ap,  az }, \
  { ca, -bf,  bz,  cb, -bg,  by,  cc, -bh,  bx,  cd, -bi,  bw,  ce, -bj,  bv,  cf, -bk,  bu,  cg, -bl,  bt,  ch, -bm,  bs,  ci, -bn,  br,  cj, -bo,  bq,  ck, -bp,  bp, -ck, -bq,  bo, -cj, -br,  bn, -ci, -bs,  bm, -ch, -bt,  bl, -cg, -bu,  bk, -cf, -bv,  bj, -ce, -bw,  bi, -cd, -bx,  bh, -cc, -by,  bg, -cb, -bz,  bf, -ca }, \
  { am, -ah,  al,  an, -ai,  ak,  ao, -aj,  aj, -ao, -ak,  ai, -an, -al,  ah, -am, -am,  ah, -al, -an,  ai, -ak, -ao,  aj, -aj,  ao,  ak, -ai,  an,  al, -ah,  am,  am, -ah,  al,  an, -ai,  ak,  ao, -aj,  aj, -ao, -ak,  ai, -an, -al,  ah, -am, -am,  ah, -al, -an,  ai, -ak, -ao,  aj, -aj,  ao,  ak, -ai,  an,  al, -ah,  am }, \
  { cb, -bi,  bu,  ci, -bp,  bn, -cg, -bw,  bg, -bz, -cd,  bk, -bs, -ck,  br, -bl,  ce,  by, -bf,  bx,  cf, -bm,  bq, -cj, -bt,  bj, -cc, -ca,  bh, -bv, -ch,  bo, -bo,  ch,  bv, -bh,  ca,  cc, -bj,  bt,  cj, -bq,  bm, -cf, -bx,  bf, -by, -ce,  bl, -br,  ck,  bs, -bk,  cd,  bz, -bg,  bw,  cg, -bn,  bp, -ci, -bu,  bi, -cb }, \
  { ba, -ar,  av, -be, -aw,  aq, -az, -bb,  as, -au,  bd,  ax, -ap,  ay,  bc, -at,  at, -bc, -ay,  ap, -ax, -bd,  au, -as,  bb,  az, -aq,  aw,  be, -av,  ar, -ba, -ba,  ar, -av,  be,  aw, -aq,  az,  bb, -as,  au, -bd, -ax,  ap, -ay, -bc,  at, -at,  bc,  ay, -ap,  ax,  bd, -au,  as, -bb, -az,  aq, -aw, -be,  av, -ar,  ba }, \
  { cc, -bl,  bp, -cg, -by,  bh, -bt,  ck,  bu, -bg,  bx,  ch, -bq,  bk, -cb, -cd,  bm, -bo,  cf,  bz, -bi,  bs, -cj, -bv,  bf, -bw, -ci,  br, -bj,  ca,  ce, -bn,  bn, -ce, -ca,  bj, -br,  ci,  bw, -bf,  bv,  cj, -bs,  bi, -bz, -cf,  bo, -bm,  cd,  cb, -bk,  bq, -ch, -bx,  bg, -bu, -ck,  bt, -bh,  by,  cg, -bp,  bl, -cc }, \
  { ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac }, \
  { cd, -bo,  bk, -bz, -ch,  bs, -bg,  bv, -ck, -bw,  bh, -br,  cg,  ca, -bl,  bn, -cc, -ce,  bp, -bj,  by,  ci, -bt,  bf, -bu,  cj,  bx, -bi,  bq, -cf, -cb,  bm, -bm,  cb,  cf, -bq,  bi, -bx, -cj,  bu, -bf,  bt, -ci, -by,  bj, -bp,  ce,  cc, -bn,  bl, -ca, -cg,  br, -bh,  bw,  ck, -bv,  bg, -bs,  ch,  bz, -bk,  bo, -cd }, \
  { bb, -au,  aq, -ax,  be,  ay, -ar,  at, -ba, -bc,  av, -ap,  aw, -bd, -az,  as, -as,  az,  bd, -aw,  ap, -av,  bc,  ba, -at,  ar, -ay, -be,  ax, -aq,  au, -bb, -bb,  au, -aq,  ax, -be, -ay,  ar, -at,  ba,  bc, -av,  ap, -aw,  bd,  az, -as,  as, -az, -bd,  aw, -ap,  av, -bc, -ba,  at, -ar,  ay,  be, -ax,  aq, -au,  bb }, \
  { ce, -br,  bf, -bs,  cf,  cd, -bq,  bg, -bt,  cg,  cc, -bp,  bh, -bu,  ch,  cb, -bo,  bi, -bv,  ci,  ca, -bn,  bj, -bw,  cj,  bz, -bm,  bk, -bx,  ck,  by, -bl,  bl, -by, -ck,  bx, -bk,  bm, -bz, -cj,  bw, -bj,  bn, -ca, -ci,  bv, -bi,  bo, -cb, -ch,  bu, -bh,  bp, -cc, -cg,  bt, -bg,  bq, -cd, -cf,  bs, -bf,  br, -ce }, \
  { an, -ak,  ah, -aj,  am,  ao, -al,  ai, -ai,  al, -ao, -am,  aj, -ah,  ak, -an, -an,  ak, -ah,  aj, -am, -ao,  al, -ai,  ai, -al,  ao,  am, -aj,  ah, -ak,  an,  an, -ak,  ah, -aj,  am,  ao, -al,  ai, -ai,  al, -ao, -am,  aj, -ah,  ak, -an, -an,  ak, -ah,  aj, -am, -ao,  al, -ai,  ai, -al,  ao,  am, -aj,  ah, -ak,  an }, \
  { cf, -bu,  bj, -bl,  bw, -ch, -cd,  bs, -bh,  bn, -by,  cj,  cb, -bq,  bf, -bp,  ca,  ck, -bz,  bo, -bg,  br, -cc, -ci,  bx, -bm,  bi, -bt,  ce,  cg, -bv,  bk, -bk,  bv, -cg, -ce,  bt, -bi,  bm, -bx,  ci,  cc, -br,  bg, -bo,  bz, -ck, -ca,  bp, -bf,  bq, -cb, -cj,  by, -bn,  bh, -bs,  cd,  ch, -bw,  bl, -bj,  bu, -cf }, \
  { bc, -ax,  as, -aq,  av, -ba, -be,  az, -au,  ap, -at,  ay, -bd, -bb,  aw, -ar,  ar, -aw,  bb,  bd, -ay,  at, -ap,  au, -az,  be,  ba, -av,  aq, -as,  ax, -bc, -bc,  ax, -as,  aq, -av,  ba,  be, -az,  au, -ap,  at, -ay,  bd,  bb, -aw,  ar, -ar,  aw, -bb, -bd,  ay, -at,  ap, -au,  az, -be, -ba,  av, -aq,  as, -ax,  bc }, \
  { cg, -bx,  bo, -bf,  bn, -bw,  cf,  ch, -by,  bp, -bg,  bm, -bv,  ce,  ci, -bz,  bq, -bh,  bl, -bu,  cd,  cj, -ca,  br, -bi,  bk, -bt,  cc,  ck, -cb,  bs, -bj,  bj, -bs,  cb, -ck, -cc,  bt, -bk,  bi, -br,  ca, -cj, -cd,  bu, -bl,  bh, -bq,  bz, -ci, -ce,  bv, -bm,  bg, -bp,  by, -ch, -cf,  bw, -bn,  bf, -bo,  bx, -cg }, \
  { ag, -af,  ae, -ad,  ad, -ae,  af, -ag, -ag,  af, -ae,  ad, -ad,  ae, -af,  ag,  ag, -af,  ae, -ad,  ad, -ae,  af, -ag, -ag,  af, -ae,  ad, -ad,  ae, -af,  ag,  ag, -af,  ae, -ad,  ad, -ae,  af, -ag, -ag,  af, -ae,  ad, -ad,  ae, -af,  ag,  ag, -af,  ae, -ad,  ad, -ae,  af, -ag, -ag,  af, -ae,  ad, -ad,  ae, -af,  ag }, \
  { ch, -ca,  bt, -bm,  bf, -bl,  bs, -bz,  cg,  ci, -cb,  bu, -bn,  bg, -bk,  br, -by,  cf,  cj, -cc,  bv, -bo,  bh, -bj,  bq, -bx,  ce,  ck, -cd,  bw, -bp,  bi, -bi,  bp, -bw,  cd, -ck, -ce,  bx, -bq,  bj, -bh,  bo, -bv,  cc, -cj, -cf,  by, -br,  bk, -bg,  bn, -bu,  cb, -ci, -cg,  bz, -bs,  bl, -bf,  bm, -bt,  ca, -ch }, \
  { bd, -ba,  ax, -au,  ar, -ap,  as, -av,  ay, -bb,  be,  bc, -az,  aw, -at,  aq, -aq,  at, -aw,  az, -bc, -be,  bb, -ay,  av, -as,  ap, -ar,  au, -ax,  ba, -bd, -bd,  ba, -ax,  au, -ar,  ap, -as,  av, -ay,  bb, -be, -bc,  az, -aw,  at, -aq,  aq, -at,  aw, -az,  bc,  be, -bb,  ay, -av,  as, -ap,  ar, -au,  ax, -ba,  bd }, \
  { ci, -cd,  by, -bt,  bo, -bj,  bf, -bk,  bp, -bu,  bz, -ce,  cj,  ch, -cc,  bx, -bs,  bn, -bi,  bg, -bl,  bq, -bv,  ca, -cf,  ck,  cg, -cb,  bw, -br,  bm, -bh,  bh, -bm,  br, -bw,  cb, -cg, -ck,  cf, -ca,  bv, -bq,  bl, -bg,  bi, -bn,  bs, -bx,  cc, -ch, -cj,  ce, -bz,  bu, -bp,  bk, -bf,  bj, -bo,  bt, -by,  cd, -ci }, \
  { ao, -an,  am, -al,  ak, -aj,  ai, -ah,  ah, -ai,  aj, -ak,  al, -am,  an, -ao, -ao,  an, -am,  al, -ak,  aj, -ai,  ah, -ah,  ai, -aj,  ak, -al,  am, -an,  ao,  ao, -an,  am, -al,  ak, -aj,  ai, -ah,  ah, -ai,  aj, -ak,  al, -am,  an, -ao, -ao,  an, -am,  al, -ak,  aj, -ai,  ah, -ah,  ai, -aj,  ak, -al,  am, -an,  ao }, \
  { cj, -cg,  cd, -ca,  bx, -bu,  br, -bo,  bl, -bi,  bf, -bh,  bk, -bn,  bq, -bt,  bw, -bz,  cc, -cf,  ci,  ck, -ch,  ce, -cb,  by, -bv,  bs, -bp,  bm, -bj,  bg, -bg,  bj, -bm,  bp, -bs,  bv, -by,  cb, -ce,  ch, -ck, -ci,  cf, -cc,  bz, -bw,  bt, -bq,  bn, -bk,  bh, -bf,  bi, -bl,  bo, -br,  bu, -bx,  ca, -cd,  cg, -cj }, \
  { be, -bd,  bc, -bb,  ba, -az,  ay, -ax,  aw, -av,  au, -at,  as, -ar,  aq, -ap,  ap, -aq,  ar, -as,  at, -au,  av, -aw,  ax, -ay,  az, -ba,  bb, -bc,  bd, -be, -be,  bd, -bc,  bb, -ba,  az, -ay,  ax, -aw,  av, -au,  at, -as,  ar, -aq,  ap, -ap,  aq, -ar,  as, -at,  au, -av,  aw, -ax,  ay, -az,  ba, -bb,  bc, -bd,  be }, \
  { ck, -cj,  ci, -ch,  cg, -cf,  ce, -cd,  cc, -cb,  ca, -bz,  by, -bx,  bw, -bv,  bu, -bt,  bs, -br,  bq, -bp,  bo, -bn,  bm, -bl,  bk, -bj,  bi, -bh,  bg, -bf,  bf, -bg,  bh, -bi,  bj, -bk,  bl, -bm,  bn, -bo,  bp, -bq,  br, -bs,  bt, -bu,  bv, -bw,  bx, -by,  bz, -ca,  cb, -cc,  cd, -ce,  cf, -cg,  ch, -ci,  cj, -ck }, \
 }


#define DEFINE_DCT128x128_MATRIX( aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk, bl, bm, bn, bo, bp, bq, br, bs, bt, bu, bv, bw, bx, by, bz, ca, cb, cc, cd, ce, cf, cg, ch, ci, cj, ck, cl, cm, cn, co, cp, cq, cr, cs, ct, cu, cv, cw, cx, cy, cz, da, db, dc, dd, de, df, dg, dh, di, dj, dk, dl, dm, dn, d_, dp, dq, dr, ds, dt, du, dv, dw, dx, dy, dz, ea, eb, ec, ed, ee, ef, eg, eh, ei, ej, ek, el, em, en, eo, ep, eq, er, es, et, eu, ev, ew ) \
{ \
  { aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa,  aa } ,\
  { cl,  cm,  cn,  co,  cp,  cq,  cr,  cs,  ct,  cu,  cv,  cw,  cx,  cy,  cz,  da,  db,  dc,  dd,  de,  df,  dg,  dh,  di,  dj,  dk,  dl,  dm,  dn,  d_,  dp,  dq,  dr,  ds,  dt,  du,  dv,  dw,  dx,  dy,  dz,  ea,  eb,  ec,  ed,  ee,  ef,  eg,  eh,  ei,  ej,  ek,  el,  em,  en,  eo,  ep,  eq,  er,  es,  et,  eu,  ev,  ew, -ew, -ev, -eu, -et, -es, -er, -eq, -ep, -eo, -en, -em, -el, -ek, -ej, -ei, -eh, -eg, -ef, -ee, -ed, -ec, -eb, -ea, -dz, -dy, -dx, -dw, -dv, -du, -dt, -ds, -dr, -dq, -dp, -d_, -dn, -dm, -dl, -dk, -dj, -di, -dh, -dg, -df, -de, -dd, -dc, -db, -da, -cz, -cy, -cx, -cw, -cv, -cu, -ct, -cs, -cr, -cq, -cp, -co, -cn, -cm, -cl } ,\
  { bf,  bg,  bh,  bi,  bj,  bk,  bl,  bm,  bn,  bo,  bp,  bq,  br,  bs,  bt,  bu,  bv,  bw,  bx,  by,  bz,  ca,  cb,  cc,  cd,  ce,  cf,  cg,  ch,  ci,  cj,  ck, -ck, -cj, -ci, -ch, -cg, -cf, -ce, -cd, -cc, -cb, -ca, -bz, -by, -bx, -bw, -bv, -bu, -bt, -bs, -br, -bq, -bp, -bo, -bn, -bm, -bl, -bk, -bj, -bi, -bh, -bg, -bf, -bf, -bg, -bh, -bi, -bj, -bk, -bl, -bm, -bn, -bo, -bp, -bq, -br, -bs, -bt, -bu, -bv, -bw, -bx, -by, -bz, -ca, -cb, -cc, -cd, -ce, -cf, -cg, -ch, -ci, -cj, -ck,  ck,  cj,  ci,  ch,  cg,  cf,  ce,  cd,  cc,  cb,  ca,  bz,  by,  bx,  bw,  bv,  bu,  bt,  bs,  br,  bq,  bp,  bo,  bn,  bm,  bl,  bk,  bj,  bi,  bh,  bg,  bf } ,\
  { cm,  cp,  cs,  cv,  cy,  db,  de,  dh,  dk,  dn,  dq,  dt,  dw,  dz,  ec,  ef,  ei,  el,  eo,  er,  eu, -ew, -et, -eq, -en, -ek, -eh, -ee, -eb, -dy, -dv, -ds, -dp, -dm, -dj, -dg, -dd, -da, -cx, -cu, -cr, -co, -cl, -cn, -cq, -ct, -cw, -cz, -dc, -df, -di, -dl, -d_, -dr, -du, -dx, -ea, -ed, -eg, -ej, -em, -ep, -es, -ev,  ev,  es,  ep,  em,  ej,  eg,  ed,  ea,  dx,  du,  dr,  d_,  dl,  di,  df,  dc,  cz,  cw,  ct,  cq,  cn,  cl,  co,  cr,  cu,  cx,  da,  dd,  dg,  dj,  dm,  dp,  ds,  dv,  dy,  eb,  ee,  eh,  ek,  en,  eq,  et,  ew, -eu, -er, -eo, -el, -ei, -ef, -ec, -dz, -dw, -dt, -dq, -dn, -dk, -dh, -de, -db, -cy, -cv, -cs, -cp, -cm } ,\
  { ap,  aq,  ar,  as,  at,  au,  av,  aw,  ax,  ay,  az,  ba,  bb,  bc,  bd,  be, -be, -bd, -bc, -bb, -ba, -az, -ay, -ax, -aw, -av, -au, -at, -as, -ar, -aq, -ap, -ap, -aq, -ar, -as, -at, -au, -av, -aw, -ax, -ay, -az, -ba, -bb, -bc, -bd, -be,  be,  bd,  bc,  bb,  ba,  az,  ay,  ax,  aw,  av,  au,  at,  as,  ar,  aq,  ap,  ap,  aq,  ar,  as,  at,  au,  av,  aw,  ax,  ay,  az,  ba,  bb,  bc,  bd,  be, -be, -bd, -bc, -bb, -ba, -az, -ay, -ax, -aw, -av, -au, -at, -as, -ar, -aq, -ap, -ap, -aq, -ar, -as, -at, -au, -av, -aw, -ax, -ay, -az, -ba, -bb, -bc, -bd, -be,  be,  bd,  bc,  bb,  ba,  az,  ay,  ax,  aw,  av,  au,  at,  as,  ar,  aq,  ap } ,\
  { cn,  cs,  cx,  dc,  dh,  dm,  dr,  dw,  eb,  eg,  el,  eq,  ev, -et, -eo, -ej, -ee, -dz, -du, -dp, -dk, -df, -da, -cv, -cq, -cl, -cp, -cu, -cz, -de, -dj, -d_, -dt, -dy, -ed, -ei, -en, -es,  ew,  er,  em,  eh,  ec,  dx,  ds,  dn,  di,  dd,  cy,  ct,  co,  cm,  cr,  cw,  db,  dg,  dl,  dq,  dv,  ea,  ef,  ek,  ep,  eu, -eu, -ep, -ek, -ef, -ea, -dv, -dq, -dl, -dg, -db, -cw, -cr, -cm, -co, -ct, -cy, -dd, -di, -dn, -ds, -dx, -ec, -eh, -em, -er, -ew,  es,  en,  ei,  ed,  dy,  dt,  d_,  dj,  de,  cz,  cu,  cp,  cl,  cq,  cv,  da,  df,  dk,  dp,  du,  dz,  ee,  ej,  eo,  et, -ev, -eq, -el, -eg, -eb, -dw, -dr, -dm, -dh, -dc, -cx, -cs, -cn } ,\
  { bg,  bj,  bm,  bp,  bs,  bv,  by,  cb,  ce,  ch,  ck, -ci, -cf, -cc, -bz, -bw, -bt, -bq, -bn, -bk, -bh, -bf, -bi, -bl, -bo, -br, -bu, -bx, -ca, -cd, -cg, -cj,  cj,  cg,  cd,  ca,  bx,  bu,  br,  bo,  bl,  bi,  bf,  bh,  bk,  bn,  bq,  bt,  bw,  bz,  cc,  cf,  ci, -ck, -ch, -ce, -cb, -by, -bv, -bs, -bp, -bm, -bj, -bg, -bg, -bj, -bm, -bp, -bs, -bv, -by, -cb, -ce, -ch, -ck,  ci,  cf,  cc,  bz,  bw,  bt,  bq,  bn,  bk,  bh,  bf,  bi,  bl,  bo,  br,  bu,  bx,  ca,  cd,  cg,  cj, -cj, -cg, -cd, -ca, -bx, -bu, -br, -bo, -bl, -bi, -bf, -bh, -bk, -bn, -bq, -bt, -bw, -bz, -cc, -cf, -ci,  ck,  ch,  ce,  cb,  by,  bv,  bs,  bp,  bm,  bj,  bg } ,\
  { co,  cv,  dc,  dj,  dq,  dx,  ee,  el,  es, -eu, -en, -eg, -dz, -ds, -dl, -de, -cx, -cq, -cm, -ct, -da, -dh, -d_, -dv, -ec, -ej, -eq,  ew,  ep,  ei,  eb,  du,  dn,  dg,  cz,  cs,  cl,  cr,  cy,  df,  dm,  dt,  ea,  eh,  eo,  ev, -er, -ek, -ed, -dw, -dp, -di, -db, -cu, -cn, -cp, -cw, -dd, -dk, -dr, -dy, -ef, -em, -et,  et,  em,  ef,  dy,  dr,  dk,  dd,  cw,  cp,  cn,  cu,  db,  di,  dp,  dw,  ed,  ek,  er, -ev, -eo, -eh, -ea, -dt, -dm, -df, -cy, -cr, -cl, -cs, -cz, -dg, -dn, -du, -eb, -ei, -ep, -ew,  eq,  ej,  ec,  dv,  d_,  dh,  da,  ct,  cm,  cq,  cx,  de,  dl,  ds,  dz,  eg,  en,  eu, -es, -el, -ee, -dx, -dq, -dj, -dc, -cv, -co } ,\
  { ah,  ai,  aj,  ak,  al,  am,  an,  ao, -ao, -an, -am, -al, -ak, -aj, -ai, -ah, -ah, -ai, -aj, -ak, -al, -am, -an, -ao,  ao,  an,  am,  al,  ak,  aj,  ai,  ah,  ah,  ai,  aj,  ak,  al,  am,  an,  ao, -ao, -an, -am, -al, -ak, -aj, -ai, -ah, -ah, -ai, -aj, -ak, -al, -am, -an, -ao,  ao,  an,  am,  al,  ak,  aj,  ai,  ah,  ah,  ai,  aj,  ak,  al,  am,  an,  ao, -ao, -an, -am, -al, -ak, -aj, -ai, -ah, -ah, -ai, -aj, -ak, -al, -am, -an, -ao,  ao,  an,  am,  al,  ak,  aj,  ai,  ah,  ah,  ai,  aj,  ak,  al,  am,  an,  ao, -ao, -an, -am, -al, -ak, -aj, -ai, -ah, -ah, -ai, -aj, -ak, -al, -am, -an, -ao,  ao,  an,  am,  al,  ak,  aj,  ai,  ah } ,\
  { cp,  cy,  dh,  dq,  dz,  ei,  er, -et, -ek, -eb, -ds, -dj, -da, -cr, -cn, -cw, -df, -d_, -dx, -eg, -ep,  ev,  em,  ed,  du,  dl,  dc,  ct,  cl,  cu,  dd,  dm,  dv,  ee,  en,  ew, -eo, -ef, -dw, -dn, -de, -cv, -cm, -cs, -db, -dk, -dt, -ec, -el, -eu,  eq,  eh,  dy,  dp,  dg,  cx,  co,  cq,  cz,  di,  dr,  ea,  ej,  es, -es, -ej, -ea, -dr, -di, -cz, -cq, -co, -cx, -dg, -dp, -dy, -eh, -eq,  eu,  el,  ec,  dt,  dk,  db,  cs,  cm,  cv,  de,  dn,  dw,  ef,  eo, -ew, -en, -ee, -dv, -dm, -dd, -cu, -cl, -ct, -dc, -dl, -du, -ed, -em, -ev,  ep,  eg,  dx,  d_,  df,  cw,  cn,  cr,  da,  dj,  ds,  eb,  ek,  et, -er, -ei, -dz, -dq, -dh, -cy, -cp } ,\
  { bh,  bm,  br,  bw,  cb,  cg, -ck, -cf, -ca, -bv, -bq, -bl, -bg, -bi, -bn, -bs, -bx, -cc, -ch,  cj,  ce,  bz,  bu,  bp,  bk,  bf,  bj,  bo,  bt,  by,  cd,  ci, -ci, -cd, -by, -bt, -bo, -bj, -bf, -bk, -bp, -bu, -bz, -ce, -cj,  ch,  cc,  bx,  bs,  bn,  bi,  bg,  bl,  bq,  bv,  ca,  cf,  ck, -cg, -cb, -bw, -br, -bm, -bh, -bh, -bm, -br, -bw, -cb, -cg,  ck,  cf,  ca,  bv,  bq,  bl,  bg,  bi,  bn,  bs,  bx,  cc,  ch, -cj, -ce, -bz, -bu, -bp, -bk, -bf, -bj, -bo, -bt, -by, -cd, -ci,  ci,  cd,  by,  bt,  bo,  bj,  bf,  bk,  bp,  bu,  bz,  ce,  cj, -ch, -cc, -bx, -bs, -bn, -bi, -bg, -bl, -bq, -bv, -ca, -cf, -ck,  cg,  cb,  bw,  br,  bm,  bh } ,\
  { cq,  db,  dm,  dx,  ei,  et, -ep, -ee, -dt, -di, -cx, -cm, -cu, -df, -dq, -eb, -em,  ew,  el,  ea,  dp,  de,  ct,  cn,  cy,  dj,  du,  ef,  eq, -es, -eh, -dw, -dl, -da, -cp, -cr, -dc, -dn, -dy, -ej, -eu,  eo,  ed,  ds,  dh,  cw,  cl,  cv,  dg,  dr,  ec,  en, -ev, -ek, -dz, -d_, -dd, -cs, -co, -cz, -dk, -dv, -eg, -er,  er,  eg,  dv,  dk,  cz,  co,  cs,  dd,  d_,  dz,  ek,  ev, -en, -ec, -dr, -dg, -cv, -cl, -cw, -dh, -ds, -ed, -eo,  eu,  ej,  dy,  dn,  dc,  cr,  cp,  da,  dl,  dw,  eh,  es, -eq, -ef, -du, -dj, -cy, -cn, -ct, -de, -dp, -ea, -el, -ew,  em,  eb,  dq,  df,  cu,  cm,  cx,  di,  dt,  ee,  ep, -et, -ei, -dx, -dm, -db, -cq } ,\
  { aq,  at,  aw,  az,  bc, -be, -bb, -ay, -av, -as, -ap, -ar, -au, -ax, -ba, -bd,  bd,  ba,  ax,  au,  ar,  ap,  as,  av,  ay,  bb,  be, -bc, -az, -aw, -at, -aq, -aq, -at, -aw, -az, -bc,  be,  bb,  ay,  av,  as,  ap,  ar,  au,  ax,  ba,  bd, -bd, -ba, -ax, -au, -ar, -ap, -as, -av, -ay, -bb, -be,  bc,  az,  aw,  at,  aq,  aq,  at,  aw,  az,  bc, -be, -bb, -ay, -av, -as, -ap, -ar, -au, -ax, -ba, -bd,  bd,  ba,  ax,  au,  ar,  ap,  as,  av,  ay,  bb,  be, -bc, -az, -aw, -at, -aq, -aq, -at, -aw, -az, -bc,  be,  bb,  ay,  av,  as,  ap,  ar,  au,  ax,  ba,  bd, -bd, -ba, -ax, -au, -ar, -ap, -as, -av, -ay, -bb, -be,  bc,  az,  aw,  at,  aq } ,\
  { cr,  de,  dr,  ee,  er, -ep, -ec, -dp, -dc, -cp, -ct, -dg, -dt, -eg, -et,  en,  ea,  dn,  da,  cn,  cv,  di,  dv,  ei,  ev, -el, -dy, -dl, -cy, -cl, -cx, -dk, -dx, -ek,  ew,  ej,  dw,  dj,  cw,  cm,  cz,  dm,  dz,  em, -eu, -eh, -du, -dh, -cu, -co, -db, -d_, -eb, -eo,  es,  ef,  ds,  df,  cs,  cq,  dd,  dq,  ed,  eq, -eq, -ed, -dq, -dd, -cq, -cs, -df, -ds, -ef, -es,  eo,  eb,  d_,  db,  co,  cu,  dh,  du,  eh,  eu, -em, -dz, -dm, -cz, -cm, -cw, -dj, -dw, -ej, -ew,  ek,  dx,  dk,  cx,  cl,  cy,  dl,  dy,  el, -ev, -ei, -dv, -di, -cv, -cn, -da, -dn, -ea, -en,  et,  eg,  dt,  dg,  ct,  cp,  dc,  dp,  ec,  ep, -er, -ee, -dr, -de, -cr } ,\
  { bi,  bp,  bw,  cd,  ck, -ce, -bx, -bq, -bj, -bh, -bo, -bv, -cc, -cj,  cf,  by,  br,  bk,  bg,  bn,  bu,  cb,  ci, -cg, -bz, -bs, -bl, -bf, -bm, -bt, -ca, -ch,  ch,  ca,  bt,  bm,  bf,  bl,  bs,  bz,  cg, -ci, -cb, -bu, -bn, -bg, -bk, -br, -by, -cf,  cj,  cc,  bv,  bo,  bh,  bj,  bq,  bx,  ce, -ck, -cd, -bw, -bp, -bi, -bi, -bp, -bw, -cd, -ck,  ce,  bx,  bq,  bj,  bh,  bo,  bv,  cc,  cj, -cf, -by, -br, -bk, -bg, -bn, -bu, -cb, -ci,  cg,  bz,  bs,  bl,  bf,  bm,  bt,  ca,  ch, -ch, -ca, -bt, -bm, -bf, -bl, -bs, -bz, -cg,  ci,  cb,  bu,  bn,  bg,  bk,  br,  by,  cf, -cj, -cc, -bv, -bo, -bh, -bj, -bq, -bx, -ce,  ck,  cd,  bw,  bp,  bi } ,\
  { cs,  dh,  dw,  el, -et, -ee, -dp, -da, -cl, -cz, -d_, -ed, -es,  em,  dx,  di,  ct,  cr,  dg,  dv,  ek, -eu, -ef, -dq, -db, -cm, -cy, -dn, -ec, -er,  en,  dy,  dj,  cu,  cq,  df,  du,  ej, -ev, -eg, -dr, -dc, -cn, -cx, -dm, -eb, -eq,  eo,  dz,  dk,  cv,  cp,  de,  dt,  ei, -ew, -eh, -ds, -dd, -co, -cw, -dl, -ea, -ep,  ep,  ea,  dl,  cw,  co,  dd,  ds,  eh,  ew, -ei, -dt, -de, -cp, -cv, -dk, -dz, -eo,  eq,  eb,  dm,  cx,  cn,  dc,  dr,  eg,  ev, -ej, -du, -df, -cq, -cu, -dj, -dy, -en,  er,  ec,  dn,  cy,  cm,  db,  dq,  ef,  eu, -ek, -dv, -dg, -cr, -ct, -di, -dx, -em,  es,  ed,  d_,  cz,  cl,  da,  dp,  ee,  et, -el, -dw, -dh, -cs } ,\
  { ad,  ae,  af,  ag, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag,  ag,  af,  ae,  ad,  ad,  ae,  af,  ag, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag,  ag,  af,  ae,  ad,  ad,  ae,  af,  ag, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag,  ag,  af,  ae,  ad,  ad,  ae,  af,  ag, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag,  ag,  af,  ae,  ad,  ad,  ae,  af,  ag, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag,  ag,  af,  ae,  ad,  ad,  ae,  af,  ag, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag,  ag,  af,  ae,  ad,  ad,  ae,  af,  ag, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag,  ag,  af,  ae,  ad,  ad,  ae,  af,  ag, -ag, -af, -ae, -ad, -ad, -ae, -af, -ag,  ag,  af,  ae,  ad } ,\
  { ct,  dk,  eb,  es, -ek, -dt, -dc, -cl, -db, -ds, -ej,  et,  ec,  dl,  cu,  cs,  dj,  ea,  er, -el, -du, -dd, -cm, -da, -dr, -ei,  eu,  ed,  dm,  cv,  cr,  di,  dz,  eq, -em, -dv, -de, -cn, -cz, -dq, -eh,  ev,  ee,  dn,  cw,  cq,  dh,  dy,  ep, -en, -dw, -df, -co, -cy, -dp, -eg,  ew,  ef,  d_,  cx,  cp,  dg,  dx,  eo, -eo, -dx, -dg, -cp, -cx, -d_, -ef, -ew,  eg,  dp,  cy,  co,  df,  dw,  en, -ep, -dy, -dh, -cq, -cw, -dn, -ee, -ev,  eh,  dq,  cz,  cn,  de,  dv,  em, -eq, -dz, -di, -cr, -cv, -dm, -ed, -eu,  ei,  dr,  da,  cm,  dd,  du,  el, -er, -ea, -dj, -cs, -cu, -dl, -ec, -et,  ej,  ds,  db,  cl,  dc,  dt,  ek, -es, -eb, -dk, -ct } ,\
  { bj,  bs,  cb,  ck, -cc, -bt, -bk, -bi, -br, -ca, -cj,  cd,  bu,  bl,  bh,  bq,  bz,  ci, -ce, -bv, -bm, -bg, -bp, -by, -ch,  cf,  bw,  bn,  bf,  bo,  bx,  cg, -cg, -bx, -bo, -bf, -bn, -bw, -cf,  ch,  by,  bp,  bg,  bm,  bv,  ce, -ci, -bz, -bq, -bh, -bl, -bu, -cd,  cj,  ca,  br,  bi,  bk,  bt,  cc, -ck, -cb, -bs, -bj, -bj, -bs, -cb, -ck,  cc,  bt,  bk,  bi,  br,  ca,  cj, -cd, -bu, -bl, -bh, -bq, -bz, -ci,  ce,  bv,  bm,  bg,  bp,  by,  ch, -cf, -bw, -bn, -bf, -bo, -bx, -cg,  cg,  bx,  bo,  bf,  bn,  bw,  cf, -ch, -by, -bp, -bg, -bm, -bv, -ce,  ci,  bz,  bq,  bh,  bl,  bu,  cd, -cj, -ca, -br, -bi, -bk, -bt, -cc,  ck,  cb,  bs,  bj } ,\
  { cu,  dn,  eg, -eu, -eb, -di, -cp, -cz, -ds, -el,  ep,  dw,  dd,  cl,  de,  dx,  eq, -ek, -dr, -cy, -cq, -dj, -ec, -ev,  ef,  dm,  ct,  cv,  d_,  eh, -et, -ea, -dh, -co, -da, -dt, -em,  eo,  dv,  dc,  cm,  df,  dy,  er, -ej, -dq, -cx, -cr, -dk, -ed, -ew,  ee,  dl,  cs,  cw,  dp,  ei, -es, -dz, -dg, -cn, -db, -du, -en,  en,  du,  db,  cn,  dg,  dz,  es, -ei, -dp, -cw, -cs, -dl, -ee,  ew,  ed,  dk,  cr,  cx,  dq,  ej, -er, -dy, -df, -cm, -dc, -dv, -eo,  em,  dt,  da,  co,  dh,  ea,  et, -eh, -d_, -cv, -ct, -dm, -ef,  ev,  ec,  dj,  cq,  cy,  dr,  ek, -eq, -dx, -de, -cl, -dd, -dw, -ep,  el,  ds,  cz,  cp,  di,  eb,  eu, -eg, -dn, -cu } ,\
  { ar,  aw,  bb, -bd, -ay, -at, -ap, -au, -az, -be,  ba,  av,  aq,  as,  ax,  bc, -bc, -ax, -as, -aq, -av, -ba,  be,  az,  au,  ap,  at,  ay,  bd, -bb, -aw, -ar, -ar, -aw, -bb,  bd,  ay,  at,  ap,  au,  az,  be, -ba, -av, -aq, -as, -ax, -bc,  bc,  ax,  as,  aq,  av,  ba, -be, -az, -au, -ap, -at, -ay, -bd,  bb,  aw,  ar,  ar,  aw,  bb, -bd, -ay, -at, -ap, -au, -az, -be,  ba,  av,  aq,  as,  ax,  bc, -bc, -ax, -as, -aq, -av, -ba,  be,  az,  au,  ap,  at,  ay,  bd, -bb, -aw, -ar, -ar, -aw, -bb,  bd,  ay,  at,  ap,  au,  az,  be, -ba, -av, -aq, -as, -ax, -bc,  bc,  ax,  as,  aq,  av,  ba, -be, -az, -au, -ap, -at, -ay, -bd,  bb,  aw,  ar } ,\
  { cv,  dq,  el, -en, -ds, -cx, -ct, -d_, -ej,  ep,  du,  cz,  cr,  dm,  eh, -er, -dw, -db, -cp, -dk, -ef,  et,  dy,  dd,  cn,  di,  ed, -ev, -ea, -df, -cl, -dg, -eb, -ew,  ec,  dh,  cm,  de,  dz,  eu, -ee, -dj, -co, -dc, -dx, -es,  eg,  dl,  cq,  da,  dv,  eq, -ei, -dn, -cs, -cy, -dt, -eo,  ek,  dp,  cu,  cw,  dr,  em, -em, -dr, -cw, -cu, -dp, -ek,  eo,  dt,  cy,  cs,  dn,  ei, -eq, -dv, -da, -cq, -dl, -eg,  es,  dx,  dc,  co,  dj,  ee, -eu, -dz, -de, -cm, -dh, -ec,  ew,  eb,  dg,  cl,  df,  ea,  ev, -ed, -di, -cn, -dd, -dy, -et,  ef,  dk,  cp,  db,  dw,  er, -eh, -dm, -cr, -cz, -du, -ep,  ej,  d_,  ct,  cx,  ds,  en, -el, -dq, -cv } ,\
  { bk,  bv,  cg, -ce, -bt, -bi, -bm, -bx, -ci,  cc,  br,  bg,  bo,  bz,  ck, -ca, -bp, -bf, -bq, -cb,  cj,  by,  bn,  bh,  bs,  cd, -ch, -bw, -bl, -bj, -bu, -cf,  cf,  bu,  bj,  bl,  bw,  ch, -cd, -bs, -bh, -bn, -by, -cj,  cb,  bq,  bf,  bp,  ca, -ck, -bz, -bo, -bg, -br, -cc,  ci,  bx,  bm,  bi,  bt,  ce, -cg, -bv, -bk, -bk, -bv, -cg,  ce,  bt,  bi,  bm,  bx,  ci, -cc, -br, -bg, -bo, -bz, -ck,  ca,  bp,  bf,  bq,  cb, -cj, -by, -bn, -bh, -bs, -cd,  ch,  bw,  bl,  bj,  bu,  cf, -cf, -bu, -bj, -bl, -bw, -ch,  cd,  bs,  bh,  bn,  by,  cj, -cb, -bq, -bf, -bp, -ca,  ck,  bz,  bo,  bg,  br,  cc, -ci, -bx, -bm, -bi, -bt, -ce,  cg,  bv,  bk } ,\
  { cw,  dt,  eq, -eg, -dj, -cm, -dg, -ed,  et,  dw,  cz,  ct,  dq,  en, -ej, -dm, -cp, -dd, -ea,  ew,  dz,  dc,  cq,  dn,  ek, -em, -dp, -cs, -da, -dx, -eu,  ec,  df,  cn,  dk,  eh, -ep, -ds, -cv, -cx, -du, -er,  ef,  di,  cl,  dh,  ee, -es, -dv, -cy, -cu, -dr, -eo,  ei,  dl,  co,  de,  eb, -ev, -dy, -db, -cr, -d_, -el,  el,  d_,  cr,  db,  dy,  ev, -eb, -de, -co, -dl, -ei,  eo,  dr,  cu,  cy,  dv,  es, -ee, -dh, -cl, -di, -ef,  er,  du,  cx,  cv,  ds,  ep, -eh, -dk, -cn, -df, -ec,  eu,  dx,  da,  cs,  dp,  em, -ek, -dn, -cq, -dc, -dz, -ew,  ea,  dd,  cp,  dm,  ej, -en, -dq, -ct, -cz, -dw, -et,  ed,  dg,  cm,  dj,  eg, -eq, -dt, -cw } ,\
  { ai,  al,  ao, -am, -aj, -ah, -ak, -an,  an,  ak,  ah,  aj,  am, -ao, -al, -ai, -ai, -al, -ao,  am,  aj,  ah,  ak,  an, -an, -ak, -ah, -aj, -am,  ao,  al,  ai,  ai,  al,  ao, -am, -aj, -ah, -ak, -an,  an,  ak,  ah,  aj,  am, -ao, -al, -ai, -ai, -al, -ao,  am,  aj,  ah,  ak,  an, -an, -ak, -ah, -aj, -am,  ao,  al,  ai,  ai,  al,  ao, -am, -aj, -ah, -ak, -an,  an,  ak,  ah,  aj,  am, -ao, -al, -ai, -ai, -al, -ao,  am,  aj,  ah,  ak,  an, -an, -ak, -ah, -aj, -am,  ao,  al,  ai,  ai,  al,  ao, -am, -aj, -ah, -ak, -an,  an,  ak,  ah,  aj,  am, -ao, -al, -ai, -ai, -al, -ao,  am,  aj,  ah,  ak,  an, -an, -ak, -ah, -aj, -am,  ao,  al,  ai } ,\
  { cx,  dw,  ev, -dz, -da, -cu, -dt, -es,  ec,  dd,  cr,  dq,  ep, -ef, -dg, -co, -dn, -em,  ei,  dj,  cl,  dk,  ej, -el, -dm, -cn, -dh, -eg,  eo,  dp,  cq,  de,  ed, -er, -ds, -ct, -db, -ea,  eu,  dv,  cw,  cy,  dx,  ew, -dy, -cz, -cv, -du, -et,  eb,  dc,  cs,  dr,  eq, -ee, -df, -cp, -d_, -en,  eh,  di,  cm,  dl,  ek, -ek, -dl, -cm, -di, -eh,  en,  d_,  cp,  df,  ee, -eq, -dr, -cs, -dc, -eb,  et,  du,  cv,  cz,  dy, -ew, -dx, -cy, -cw, -dv, -eu,  ea,  db,  ct,  ds,  er, -ed, -de, -cq, -dp, -eo,  eg,  dh,  cn,  dm,  el, -ej, -dk, -cl, -dj, -ei,  em,  dn,  co,  dg,  ef, -ep, -dq, -cr, -dd, -ec,  es,  dt,  cu,  da,  dz, -ev, -dw, -cx } ,\
  { bl,  by, -ck, -bx, -bk, -bm, -bz,  cj,  bw,  bj,  bn,  ca, -ci, -bv, -bi, -bo, -cb,  ch,  bu,  bh,  bp,  cc, -cg, -bt, -bg, -bq, -cd,  cf,  bs,  bf,  br,  ce, -ce, -br, -bf, -bs, -cf,  cd,  bq,  bg,  bt,  cg, -cc, -bp, -bh, -bu, -ch,  cb,  bo,  bi,  bv,  ci, -ca, -bn, -bj, -bw, -cj,  bz,  bm,  bk,  bx,  ck, -by, -bl, -bl, -by,  ck,  bx,  bk,  bm,  bz, -cj, -bw, -bj, -bn, -ca,  ci,  bv,  bi,  bo,  cb, -ch, -bu, -bh, -bp, -cc,  cg,  bt,  bg,  bq,  cd, -cf, -bs, -bf, -br, -ce,  ce,  br,  bf,  bs,  cf, -cd, -bq, -bg, -bt, -cg,  cc,  bp,  bh,  bu,  ch, -cb, -bo, -bi, -bv, -ci,  ca,  bn,  bj,  bw,  cj, -bz, -bm, -bk, -bx, -ck,  by,  bl } ,\
  { cy,  dz, -et, -ds, -cr, -df, -eg,  em,  dl,  cl,  dm,  en, -ef, -de, -cs, -dt, -eu,  dy,  cx,  cz,  ea, -es, -dr, -cq, -dg, -eh,  el,  dk,  cm,  dn,  eo, -ee, -dd, -ct, -du, -ev,  dx,  cw,  da,  eb, -er, -dq, -cp, -dh, -ei,  ek,  dj,  cn,  d_,  ep, -ed, -dc, -cu, -dv, -ew,  dw,  cv,  db,  ec, -eq, -dp, -co, -di, -ej,  ej,  di,  co,  dp,  eq, -ec, -db, -cv, -dw,  ew,  dv,  cu,  dc,  ed, -ep, -d_, -cn, -dj, -ek,  ei,  dh,  cp,  dq,  er, -eb, -da, -cw, -dx,  ev,  du,  ct,  dd,  ee, -eo, -dn, -cm, -dk, -el,  eh,  dg,  cq,  dr,  es, -ea, -cz, -cx, -dy,  eu,  dt,  cs,  de,  ef, -en, -dm, -cl, -dl, -em,  eg,  df,  cr,  ds,  et, -dz, -cy } ,\
  { as,  az, -bd, -aw, -ap, -av, -bc,  ba,  at,  ar,  ay, -be, -ax, -aq, -au, -bb,  bb,  au,  aq,  ax,  be, -ay, -ar, -at, -ba,  bc,  av,  ap,  aw,  bd, -az, -as, -as, -az,  bd,  aw,  ap,  av,  bc, -ba, -at, -ar, -ay,  be,  ax,  aq,  au,  bb, -bb, -au, -aq, -ax, -be,  ay,  ar,  at,  ba, -bc, -av, -ap, -aw, -bd,  az,  as,  as,  az, -bd, -aw, -ap, -av, -bc,  ba,  at,  ar,  ay, -be, -ax, -aq, -au, -bb,  bb,  au,  aq,  ax,  be, -ay, -ar, -at, -ba,  bc,  av,  ap,  aw,  bd, -az, -as, -as, -az,  bd,  aw,  ap,  av,  bc, -ba, -at, -ar, -ay,  be,  ax,  aq,  au,  bb, -bb, -au, -aq, -ax, -be,  ay,  ar,  at,  ba, -bc, -av, -ap, -aw, -bd,  az,  as } ,\
  { cz,  ec, -eo, -dl, -cn, -dq, -et,  dx,  cu,  de,  eh, -ej, -dg, -cs, -dv,  ev,  ds,  cp,  dj,  em, -ee, -db, -cx, -ea,  eq,  dn,  cl,  d_,  er, -dz, -cw, -dc, -ef,  el,  di,  cq,  dt,  ew, -du, -cr, -dh, -ek,  eg,  dd,  cv,  dy, -es, -dp, -cm, -dm, -ep,  eb,  cy,  da,  ed, -en, -dk, -co, -dr, -eu,  dw,  ct,  df,  ei, -ei, -df, -ct, -dw,  eu,  dr,  co,  dk,  en, -ed, -da, -cy, -eb,  ep,  dm,  cm,  dp,  es, -dy, -cv, -dd, -eg,  ek,  dh,  cr,  du, -ew, -dt, -cq, -di, -el,  ef,  dc,  cw,  dz, -er, -d_, -cl, -dn, -eq,  ea,  cx,  db,  ee, -em, -dj, -cp, -ds, -ev,  dv,  cs,  dg,  ej, -eh, -de, -cu, -dx,  et,  dq,  cn,  dl,  eo, -ec, -cz } ,\
  { bm,  cb, -cf, -bq, -bi, -bx,  cj,  bu,  bf,  bt,  ci, -by, -bj, -bp, -ce,  cc,  bn,  bl,  ca, -cg, -br, -bh, -bw,  ck,  bv,  bg,  bs,  ch, -bz, -bk, -bo, -cd,  cd,  bo,  bk,  bz, -ch, -bs, -bg, -bv, -ck,  bw,  bh,  br,  cg, -ca, -bl, -bn, -cc,  ce,  bp,  bj,  by, -ci, -bt, -bf, -bu, -cj,  bx,  bi,  bq,  cf, -cb, -bm, -bm, -cb,  cf,  bq,  bi,  bx, -cj, -bu, -bf, -bt, -ci,  by,  bj,  bp,  ce, -cc, -bn, -bl, -ca,  cg,  br,  bh,  bw, -ck, -bv, -bg, -bs, -ch,  bz,  bk,  bo,  cd, -cd, -bo, -bk, -bz,  ch,  bs,  bg,  bv,  ck, -bw, -bh, -br, -cg,  ca,  bl,  bn,  cc, -ce, -bp, -bj, -by,  ci,  bt,  bf,  bu,  cj, -bx, -bi, -bq, -cf,  cb,  bm } ,\
  { da,  ef, -ej, -de, -cw, -eb,  en,  di,  cs,  dx, -er, -dm, -co, -dt,  ev,  dq,  cl,  dp,  eu, -du, -cp, -dl, -eq,  dy,  ct,  dh,  em, -ec, -cx, -dd, -ei,  eg,  db,  cz,  ee, -ek, -df, -cv, -ea,  eo,  dj,  cr,  dw, -es, -dn, -cn, -ds,  ew,  dr,  cm,  d_,  et, -dv, -cq, -dk, -ep,  dz,  cu,  dg,  el, -ed, -cy, -dc, -eh,  eh,  dc,  cy,  ed, -el, -dg, -cu, -dz,  ep,  dk,  cq,  dv, -et, -d_, -cm, -dr, -ew,  ds,  cn,  dn,  es, -dw, -cr, -dj, -eo,  ea,  cv,  df,  ek, -ee, -cz, -db, -eg,  ei,  dd,  cx,  ec, -em, -dh, -ct, -dy,  eq,  dl,  cp,  du, -eu, -dp, -cl, -dq, -ev,  dt,  co,  dm,  er, -dx, -cs, -di, -en,  eb,  cw,  de,  ej, -ef, -da } ,\
  { ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab,  ab,  ac, -ac, -ab, -ab, -ac,  ac,  ab } ,\
  { db,  ei, -ee, -cx, -df, -em,  ea,  ct,  dj,  eq, -dw, -cp, -dn, -eu,  ds,  cl,  dr, -ev, -d_, -co, -dv,  er,  dk,  cs,  dz, -en, -dg, -cw, -ed,  ej,  dc,  da,  eh, -ef, -cy, -de, -el,  eb,  cu,  di,  ep, -dx, -cq, -dm, -et,  dt,  cm,  dq, -ew, -dp, -cn, -du,  es,  dl,  cr,  dy, -eo, -dh, -cv, -ec,  ek,  dd,  cz,  eg, -eg, -cz, -dd, -ek,  ec,  cv,  dh,  eo, -dy, -cr, -dl, -es,  du,  cn,  dp,  ew, -dq, -cm, -dt,  et,  dm,  cq,  dx, -ep, -di, -cu, -eb,  el,  de,  cy,  ef, -eh, -da, -dc, -ej,  ed,  cw,  dg,  en, -dz, -cs, -dk, -er,  dv,  co,  d_,  ev, -dr, -cl, -ds,  eu,  dn,  cp,  dw, -eq, -dj, -ct, -ea,  em,  df,  cx,  ee, -ei, -db } ,\
  { bn,  ce, -ca, -bj, -br, -ci,  bw,  bf,  bv, -cj, -bs, -bi, -bz,  cf,  bo,  bm,  cd, -cb, -bk, -bq, -ch,  bx,  bg,  bu, -ck, -bt, -bh, -by,  cg,  bp,  bl,  cc, -cc, -bl, -bp, -cg,  by,  bh,  bt,  ck, -bu, -bg, -bx,  ch,  bq,  bk,  cb, -cd, -bm, -bo, -cf,  bz,  bi,  bs,  cj, -bv, -bf, -bw,  ci,  br,  bj,  ca, -ce, -bn, -bn, -ce,  ca,  bj,  br,  ci, -bw, -bf, -bv,  cj,  bs,  bi,  bz, -cf, -bo, -bm, -cd,  cb,  bk,  bq,  ch, -bx, -bg, -bu,  ck,  bt,  bh,  by, -cg, -bp, -bl, -cc,  cc,  bl,  bp,  cg, -by, -bh, -bt, -ck,  bu,  bg,  bx, -ch, -bq, -bk, -cb,  cd,  bm,  bo,  cf, -bz, -bi, -bs, -cj,  bv,  bf,  bw, -ci, -br, -bj, -ca,  ce,  bn } ,\
  { dc,  el, -dz, -cq, -d_,  ew,  dn,  cr,  ea, -ek, -db, -dd, -em,  dy,  cp,  dp, -ev, -dm, -cs, -eb,  ej,  da,  de,  en, -dx, -co, -dq,  eu,  dl,  ct,  ec, -ei, -cz, -df, -eo,  dw,  cn,  dr, -et, -dk, -cu, -ed,  eh,  cy,  dg,  ep, -dv, -cm, -ds,  es,  dj,  cv,  ee, -eg, -cx, -dh, -eq,  du,  cl,  dt, -er, -di, -cw, -ef,  ef,  cw,  di,  er, -dt, -cl, -du,  eq,  dh,  cx,  eg, -ee, -cv, -dj, -es,  ds,  cm,  dv, -ep, -dg, -cy, -eh,  ed,  cu,  dk,  et, -dr, -cn, -dw,  eo,  df,  cz,  ei, -ec, -ct, -dl, -eu,  dq,  co,  dx, -en, -de, -da, -ej,  eb,  cs,  dm,  ev, -dp, -cp, -dy,  em,  dd,  db,  ek, -ea, -cr, -dn, -ew,  d_,  cq,  dz, -el, -dc } ,\
  { at,  bc, -ay, -ap, -ax,  bd,  au,  as,  bb, -az, -aq, -aw,  be,  av,  ar,  ba, -ba, -ar, -av, -be,  aw,  aq,  az, -bb, -as, -au, -bd,  ax,  ap,  ay, -bc, -at, -at, -bc,  ay,  ap,  ax, -bd, -au, -as, -bb,  az,  aq,  aw, -be, -av, -ar, -ba,  ba,  ar,  av,  be, -aw, -aq, -az,  bb,  as,  au,  bd, -ax, -ap, -ay,  bc,  at,  at,  bc, -ay, -ap, -ax,  bd,  au,  as,  bb, -az, -aq, -aw,  be,  av,  ar,  ba, -ba, -ar, -av, -be,  aw,  aq,  az, -bb, -as, -au, -bd,  ax,  ap,  ay, -bc, -at, -at, -bc,  ay,  ap,  ax, -bd, -au, -as, -bb,  az,  aq,  aw, -be, -av, -ar, -ba,  ba,  ar,  av,  be, -aw, -aq, -az,  bb,  as,  au,  bd, -ax, -ap, -ay,  bc,  at } ,\
  { dd,  eo, -du, -cm, -dx,  el,  da,  dg,  er, -dr, -cp, -ea,  ei,  cx,  dj,  eu, -d_, -cs, -ed,  ef,  cu,  dm, -ew, -dl, -cv, -eg,  ec,  cr,  dp, -et, -di, -cy, -ej,  dz,  co,  ds, -eq, -df, -db, -em,  dw,  cl,  dv, -en, -dc, -de, -ep,  dt,  cn,  dy, -ek, -cz, -dh, -es,  dq,  cq,  eb, -eh, -cw, -dk, -ev,  dn,  ct,  ee, -ee, -ct, -dn,  ev,  dk,  cw,  eh, -eb, -cq, -dq,  es,  dh,  cz,  ek, -dy, -cn, -dt,  ep,  de,  dc,  en, -dv, -cl, -dw,  em,  db,  df,  eq, -ds, -co, -dz,  ej,  cy,  di,  et, -dp, -cr, -ec,  eg,  cv,  dl,  ew, -dm, -cu, -ef,  ed,  cs,  d_, -eu, -dj, -cx, -ei,  ea,  cp,  dr, -er, -dg, -da, -el,  dx,  cm,  du, -eo, -dd } ,\
  { bo,  ch, -bv, -bh, -ca,  cc,  bj,  bt, -cj, -bq, -bm, -cf,  bx,  bf,  by, -ce, -bl, -br, -ck,  bs,  bk,  cd, -bz, -bg, -bw,  cg,  bn,  bp,  ci, -bu, -bi, -cb,  cb,  bi,  bu, -ci, -bp, -bn, -cg,  bw,  bg,  bz, -cd, -bk, -bs,  ck,  br,  bl,  ce, -by, -bf, -bx,  cf,  bm,  bq,  cj, -bt, -bj, -cc,  ca,  bh,  bv, -ch, -bo, -bo, -ch,  bv,  bh,  ca, -cc, -bj, -bt,  cj,  bq,  bm,  cf, -bx, -bf, -by,  ce,  bl,  br,  ck, -bs, -bk, -cd,  bz,  bg,  bw, -cg, -bn, -bp, -ci,  bu,  bi,  cb, -cb, -bi, -bu,  ci,  bp,  bn,  cg, -bw, -bg, -bz,  cd,  bk,  bs, -ck, -br, -bl, -ce,  by,  bf,  bx, -cf, -bm, -bq, -cj,  bt,  bj,  cc, -ca, -bh, -bv,  ch,  bo } ,\
  { de,  er, -dp, -ct, -eg,  ea,  cn,  dv, -el, -cy, -dk,  ew,  dj,  cz,  em, -du, -co, -eb,  ef,  cs,  dq, -eq, -dd, -df, -es,  d_,  cu,  eh, -dz, -cm, -dw,  ek,  cx,  dl, -ev, -di, -da, -en,  dt,  cp,  ec, -ee, -cr, -dr,  ep,  dc,  dg,  et, -dn, -cv, -ei,  dy,  cl,  dx, -ej, -cw, -dm,  eu,  dh,  db,  eo, -ds, -cq, -ed,  ed,  cq,  ds, -eo, -db, -dh, -eu,  dm,  cw,  ej, -dx, -cl, -dy,  ei,  cv,  dn, -et, -dg, -dc, -ep,  dr,  cr,  ee, -ec, -cp, -dt,  en,  da,  di,  ev, -dl, -cx, -ek,  dw,  cm,  dz, -eh, -cu, -d_,  es,  df,  dd,  eq, -dq, -cs, -ef,  eb,  co,  du, -em, -cz, -dj, -ew,  dk,  cy,  el, -dv, -cn, -ea,  eg,  ct,  dp, -er, -de } ,\
  { aj,  ao, -ak, -ai, -an,  al,  ah,  am, -am, -ah, -al,  an,  ai,  ak, -ao, -aj, -aj, -ao,  ak,  ai,  an, -al, -ah, -am,  am,  ah,  al, -an, -ai, -ak,  ao,  aj,  aj,  ao, -ak, -ai, -an,  al,  ah,  am, -am, -ah, -al,  an,  ai,  ak, -ao, -aj, -aj, -ao,  ak,  ai,  an, -al, -ah, -am,  am,  ah,  al, -an, -ai, -ak,  ao,  aj,  aj,  ao, -ak, -ai, -an,  al,  ah,  am, -am, -ah, -al,  an,  ai,  ak, -ao, -aj, -aj, -ao,  ak,  ai,  an, -al, -ah, -am,  am,  ah,  al, -an, -ai, -ak,  ao,  aj,  aj,  ao, -ak, -ai, -an,  al,  ah,  am, -am, -ah, -al,  an,  ai,  ak, -ao, -aj, -aj, -ao,  ak,  ai,  an, -al, -ah, -am,  am,  ah,  al, -an, -ai, -ak,  ao,  aj } ,\
  { df,  eu, -dk, -da, -ep,  dp,  cv,  ek, -du, -cq, -ef,  dz,  cl,  ea, -ee, -cp, -dv,  ej,  cu,  dq, -eo, -cz, -dl,  et,  de,  dg,  ev, -dj, -db, -eq,  d_,  cw,  el, -dt, -cr, -eg,  dy,  cm,  eb, -ed, -co, -dw,  ei,  ct,  dr, -en, -cy, -dm,  es,  dd,  dh,  ew, -di, -dc, -er,  dn,  cx,  em, -ds, -cs, -eh,  dx,  cn,  ec, -ec, -cn, -dx,  eh,  cs,  ds, -em, -cx, -dn,  er,  dc,  di, -ew, -dh, -dd, -es,  dm,  cy,  en, -dr, -ct, -ei,  dw,  co,  ed, -eb, -cm, -dy,  eg,  cr,  dt, -el, -cw, -d_,  eq,  db,  dj, -ev, -dg, -de, -et,  dl,  cz,  eo, -dq, -cu, -ej,  dv,  cp,  ee, -ea, -cl, -dz,  ef,  cq,  du, -ek, -cv, -dp,  ep,  da,  dk, -eu, -df } ,\
  { bp,  ck, -bq, -bo, -cj,  br,  bn,  ci, -bs, -bm, -ch,  bt,  bl,  cg, -bu, -bk, -cf,  bv,  bj,  ce, -bw, -bi, -cd,  bx,  bh,  cc, -by, -bg, -cb,  bz,  bf,  ca, -ca, -bf, -bz,  cb,  bg,  by, -cc, -bh, -bx,  cd,  bi,  bw, -ce, -bj, -bv,  cf,  bk,  bu, -cg, -bl, -bt,  ch,  bm,  bs, -ci, -bn, -br,  cj,  bo,  bq, -ck, -bp, -bp, -ck,  bq,  bo,  cj, -br, -bn, -ci,  bs,  bm,  ch, -bt, -bl, -cg,  bu,  bk,  cf, -bv, -bj, -ce,  bw,  bi,  cd, -bx, -bh, -cc,  by,  bg,  cb, -bz, -bf, -ca,  ca,  bf,  bz, -cb, -bg, -by,  cc,  bh,  bx, -cd, -bi, -bw,  ce,  bj,  bv, -cf, -bk, -bu,  cg,  bl,  bt, -ch, -bm, -bs,  ci,  bn,  br, -cj, -bo, -bq,  ck,  bp } ,\
  { dg, -ew, -df, -dh,  ev,  de,  di, -eu, -dd, -dj,  et,  dc,  dk, -es, -db, -dl,  er,  da,  dm, -eq, -cz, -dn,  ep,  cy,  d_, -eo, -cx, -dp,  en,  cw,  dq, -em, -cv, -dr,  el,  cu,  ds, -ek, -ct, -dt,  ej,  cs,  du, -ei, -cr, -dv,  eh,  cq,  dw, -eg, -cp, -dx,  ef,  co,  dy, -ee, -cn, -dz,  ed,  cm,  ea, -ec, -cl, -eb,  eb,  cl,  ec, -ea, -cm, -ed,  dz,  cn,  ee, -dy, -co, -ef,  dx,  cp,  eg, -dw, -cq, -eh,  dv,  cr,  ei, -du, -cs, -ej,  dt,  ct,  ek, -ds, -cu, -el,  dr,  cv,  em, -dq, -cw, -en,  dp,  cx,  eo, -d_, -cy, -ep,  dn,  cz,  eq, -dm, -da, -er,  dl,  db,  es, -dk, -dc, -et,  dj,  dd,  eu, -di, -de, -ev,  dh,  df,  ew, -dg } ,\
  { au, -be, -at, -av,  bd,  as,  aw, -bc, -ar, -ax,  bb,  aq,  ay, -ba, -ap, -az,  az,  ap,  ba, -ay, -aq, -bb,  ax,  ar,  bc, -aw, -as, -bd,  av,  at,  be, -au, -au,  be,  at,  av, -bd, -as, -aw,  bc,  ar,  ax, -bb, -aq, -ay,  ba,  ap,  az, -az, -ap, -ba,  ay,  aq,  bb, -ax, -ar, -bc,  aw,  as,  bd, -av, -at, -be,  au,  au, -be, -at, -av,  bd,  as,  aw, -bc, -ar, -ax,  bb,  aq,  ay, -ba, -ap, -az,  az,  ap,  ba, -ay, -aq, -bb,  ax,  ar,  bc, -aw, -as, -bd,  av,  at,  be, -au, -au,  be,  at,  av, -bd, -as, -aw,  bc,  ar,  ax, -bb, -aq, -ay,  ba,  ap,  az, -az, -ap, -ba,  ay,  aq,  bb, -ax, -ar, -bc,  aw,  as,  bd, -av, -at, -be,  au } ,\
  { dh, -et, -da, -d_,  em,  ct,  dv, -ef, -cm, -ec,  dy,  cq,  ej, -dr, -cx, -eq,  dk,  de, -ew, -dd, -dl,  ep,  cw,  ds, -ei, -cp, -dz,  eb,  cn,  eg, -du, -cu, -en,  dn,  db,  eu, -dg, -di,  es,  cz,  dp, -el, -cs, -dw,  ee,  cl,  ed, -dx, -cr, -ek,  dq,  cy,  er, -dj, -df,  ev,  dc,  dm, -eo, -cv, -dt,  eh,  co,  ea, -ea, -co, -eh,  dt,  cv,  eo, -dm, -dc, -ev,  df,  dj, -er, -cy, -dq,  ek,  cr,  dx, -ed, -cl, -ee,  dw,  cs,  el, -dp, -cz, -es,  di,  dg, -eu, -db, -dn,  en,  cu,  du, -eg, -cn, -eb,  dz,  cp,  ei, -ds, -cw, -ep,  dl,  dd,  ew, -de, -dk,  eq,  cx,  dr, -ej, -cq, -dy,  ec,  cm,  ef, -dv, -ct, -em,  d_,  da,  et, -dh } ,\
  { bq, -ci, -bl, -bv,  cd,  bg,  ca, -by, -bi, -cf,  bt,  bn,  ck, -bo, -bs,  cg,  bj,  bx, -cb, -bf, -cc,  bw,  bk,  ch, -br, -bp,  cj,  bm,  bu, -ce, -bh, -bz,  bz,  bh,  ce, -bu, -bm, -cj,  bp,  br, -ch, -bk, -bw,  cc,  bf,  cb, -bx, -bj, -cg,  bs,  bo, -ck, -bn, -bt,  cf,  bi,  by, -ca, -bg, -cd,  bv,  bl,  ci, -bq, -bq,  ci,  bl,  bv, -cd, -bg, -ca,  by,  bi,  cf, -bt, -bn, -ck,  bo,  bs, -cg, -bj, -bx,  cb,  bf,  cc, -bw, -bk, -ch,  br,  bp, -cj, -bm, -bu,  ce,  bh,  bz, -bz, -bh, -ce,  bu,  bm,  cj, -bp, -br,  ch,  bk,  bw, -cc, -bf, -cb,  bx,  bj,  cg, -bs, -bo,  ck,  bn,  bt, -cf, -bi, -by,  ca,  bg,  cd, -bv, -bl, -ci,  bq } ,\
  { di, -eq, -cv, -dv,  ed,  cn,  ei, -dq, -da, -ev,  dd,  dn, -el, -cq, -ea,  dy,  cs,  en, -dl, -df,  et,  cy,  ds, -eg, -cl, -ef,  dt,  cx,  es, -dg, -dk,  eo,  ct,  dx, -eb, -cp, -ek,  d_,  dc, -ew, -db, -dp,  ej,  co,  ec, -dw, -cu, -ep,  dj,  dh, -er, -cw, -du,  ee,  cm,  eh, -dr, -cz, -eu,  de,  dm, -em, -cr, -dz,  dz,  cr,  em, -dm, -de,  eu,  cz,  dr, -eh, -cm, -ee,  du,  cw,  er, -dh, -dj,  ep,  cu,  dw, -ec, -co, -ej,  dp,  db,  ew, -dc, -d_,  ek,  cp,  eb, -dx, -ct, -eo,  dk,  dg, -es, -cx, -dt,  ef,  cl,  eg, -ds, -cy, -et,  df,  dl, -en, -cs, -dy,  ea,  cq,  el, -dn, -dd,  ev,  da,  dq, -ei, -cn, -ed,  dv,  cv,  eq, -di } ,\
  { ae, -ag, -ad, -af,  af,  ad,  ag, -ae, -ae,  ag,  ad,  af, -af, -ad, -ag,  ae,  ae, -ag, -ad, -af,  af,  ad,  ag, -ae, -ae,  ag,  ad,  af, -af, -ad, -ag,  ae,  ae, -ag, -ad, -af,  af,  ad,  ag, -ae, -ae,  ag,  ad,  af, -af, -ad, -ag,  ae,  ae, -ag, -ad, -af,  af,  ad,  ag, -ae, -ae,  ag,  ad,  af, -af, -ad, -ag,  ae,  ae, -ag, -ad, -af,  af,  ad,  ag, -ae, -ae,  ag,  ad,  af, -af, -ad, -ag,  ae,  ae, -ag, -ad, -af,  af,  ad,  ag, -ae, -ae,  ag,  ad,  af, -af, -ad, -ag,  ae,  ae, -ag, -ad, -af,  af,  ad,  ag, -ae, -ae,  ag,  ad,  af, -af, -ad, -ag,  ae,  ae, -ag, -ad, -af,  af,  ad,  ag, -ae, -ae,  ag,  ad,  af, -af, -ad, -ag,  ae } ,\
  { dj, -en, -cq, -ec,  du,  cy,  ev, -db, -dr,  ef,  cn,  ek, -dm, -dg,  eq,  ct,  dz, -dx, -cv, -es,  de,  d_, -ei, -cl, -eh,  dp,  dd, -et, -cw, -dw,  ea,  cs,  ep, -dh, -dl,  el,  co,  ee, -ds, -da,  ew,  cz,  dt, -ed, -cp, -em,  dk,  di, -eo, -cr, -eb,  dv,  cx,  eu, -dc, -dq,  eg,  cm,  ej, -dn, -df,  er,  cu,  dy, -dy, -cu, -er,  df,  dn, -ej, -cm, -eg,  dq,  dc, -eu, -cx, -dv,  eb,  cr,  eo, -di, -dk,  em,  cp,  ed, -dt, -cz, -ew,  da,  ds, -ee, -co, -el,  dl,  dh, -ep, -cs, -ea,  dw,  cw,  et, -dd, -dp,  eh,  cl,  ei, -d_, -de,  es,  cv,  dx, -dz, -ct, -eq,  dg,  dm, -ek, -cn, -ef,  dr,  db, -ev, -cy, -du,  ec,  cq,  en, -dj } ,\
  { br, -cf, -bg, -cc,  bu,  bo, -ci, -bj, -bz,  bx,  bl,  ck, -bm, -bw,  ca,  bi,  ch, -bp, -bt,  cd,  bf,  ce, -bs, -bq,  cg,  bh,  cb, -bv, -bn,  cj,  bk,  by, -by, -bk, -cj,  bn,  bv, -cb, -bh, -cg,  bq,  bs, -ce, -bf, -cd,  bt,  bp, -ch, -bi, -ca,  bw,  bm, -ck, -bl, -bx,  bz,  bj,  ci, -bo, -bu,  cc,  bg,  cf, -br, -br,  cf,  bg,  cc, -bu, -bo,  ci,  bj,  bz, -bx, -bl, -ck,  bm,  bw, -ca, -bi, -ch,  bp,  bt, -cd, -bf, -ce,  bs,  bq, -cg, -bh, -cb,  bv,  bn, -cj, -bk, -by,  by,  bk,  cj, -bn, -bv,  cb,  bh,  cg, -bq, -bs,  ce,  bf,  cd, -bt, -bp,  ch,  bi,  ca, -bw, -bm,  ck,  bl,  bx, -bz, -bj, -ci,  bo,  bu, -cc, -bg, -cf,  br } ,\
  { dk, -ek, -cl, -ej,  dl,  dj, -el, -cm, -ei,  dm,  di, -em, -cn, -eh,  dn,  dh, -en, -co, -eg,  d_,  dg, -eo, -cp, -ef,  dp,  df, -ep, -cq, -ee,  dq,  de, -eq, -cr, -ed,  dr,  dd, -er, -cs, -ec,  ds,  dc, -es, -ct, -eb,  dt,  db, -et, -cu, -ea,  du,  da, -eu, -cv, -dz,  dv,  cz, -ev, -cw, -dy,  dw,  cy, -ew, -cx, -dx,  dx,  cx,  ew, -cy, -dw,  dy,  cw,  ev, -cz, -dv,  dz,  cv,  eu, -da, -du,  ea,  cu,  et, -db, -dt,  eb,  ct,  es, -dc, -ds,  ec,  cs,  er, -dd, -dr,  ed,  cr,  eq, -de, -dq,  ee,  cq,  ep, -df, -dp,  ef,  cp,  eo, -dg, -d_,  eg,  co,  en, -dh, -dn,  eh,  cn,  em, -di, -dm,  ei,  cm,  el, -dj, -dl,  ej,  cl,  ek, -dk } ,\
  { av, -bb, -ap, -bc,  au,  aw, -ba, -aq, -bd,  at,  ax, -az, -ar, -be,  as,  ay, -ay, -as,  be,  ar,  az, -ax, -at,  bd,  aq,  ba, -aw, -au,  bc,  ap,  bb, -av, -av,  bb,  ap,  bc, -au, -aw,  ba,  aq,  bd, -at, -ax,  az,  ar,  be, -as, -ay,  ay,  as, -be, -ar, -az,  ax,  at, -bd, -aq, -ba,  aw,  au, -bc, -ap, -bb,  av,  av, -bb, -ap, -bc,  au,  aw, -ba, -aq, -bd,  at,  ax, -az, -ar, -be,  as,  ay, -ay, -as,  be,  ar,  az, -ax, -at,  bd,  aq,  ba, -aw, -au,  bc,  ap,  bb, -av, -av,  bb,  ap,  bc, -au, -aw,  ba,  aq,  bd, -at, -ax,  az,  ar,  be, -as, -ay,  ay,  as, -be, -ar, -az,  ax,  at, -bd, -aq, -ba,  aw,  au, -bc, -ap, -bb,  av } ,\
  { dl, -eh, -cp, -eq,  dc,  du, -dy, -cy,  eu,  ct,  ed, -dp, -dh,  el,  cl,  em, -dg, -dq,  ec,  cu,  ev, -cx, -dz,  dt,  dd, -ep, -co, -ei,  dk,  dm, -eg, -cq, -er,  db,  dv, -dx, -cz,  et,  cs,  ee, -d_, -di,  ek,  cm,  en, -df, -dr,  eb,  cv,  ew, -cw, -ea,  ds,  de, -eo, -cn, -ej,  dj,  dn, -ef, -cr, -es,  da,  dw, -dw, -da,  es,  cr,  ef, -dn, -dj,  ej,  cn,  eo, -de, -ds,  ea,  cw, -ew, -cv, -eb,  dr,  df, -en, -cm, -ek,  di,  d_, -ee, -cs, -et,  cz,  dx, -dv, -db,  er,  cq,  eg, -dm, -dk,  ei,  co,  ep, -dd, -dt,  dz,  cx, -ev, -cu, -ec,  dq,  dg, -em, -cl, -el,  dh,  dp, -ed, -ct, -eu,  cy,  dy, -du, -dc,  eq,  cp,  eh, -dl } ,\
  { bs, -cc, -bi, -cj,  bl,  bz, -bv, -bp,  cf,  bf,  cg, -bo, -bw,  by,  bm, -ci, -bh, -cd,  br,  bt, -cb, -bj, -ck,  bk,  ca, -bu, -bq,  ce,  bg,  ch, -bn, -bx,  bx,  bn, -ch, -bg, -ce,  bq,  bu, -ca, -bk,  ck,  bj,  cb, -bt, -br,  cd,  bh,  ci, -bm, -by,  bw,  bo, -cg, -bf, -cf,  bp,  bv, -bz, -bl,  cj,  bi,  cc, -bs, -bs,  cc,  bi,  cj, -bl, -bz,  bv,  bp, -cf, -bf, -cg,  bo,  bw, -by, -bm,  ci,  bh,  cd, -br, -bt,  cb,  bj,  ck, -bk, -ca,  bu,  bq, -ce, -bg, -ch,  bn,  bx, -bx, -bn,  ch,  bg,  ce, -bq, -bu,  ca,  bk, -ck, -bj, -cb,  bt,  br, -cd, -bh, -ci,  bm,  by, -bw, -bo,  cg,  bf,  cf, -bp, -bv,  bz,  bl, -cj, -bi, -cc,  bs } ,\
  { dm, -ee, -cu,  ew,  ct,  ef, -dl, -dn,  ed,  cv, -ev, -cs, -eg,  dk,  d_, -ec, -cw,  eu,  cr,  eh, -dj, -dp,  eb,  cx, -et, -cq, -ei,  di,  dq, -ea, -cy,  es,  cp,  ej, -dh, -dr,  dz,  cz, -er, -co, -ek,  dg,  ds, -dy, -da,  eq,  cn,  el, -df, -dt,  dx,  db, -ep, -cm, -em,  de,  du, -dw, -dc,  eo,  cl,  en, -dd, -dv,  dv,  dd, -en, -cl, -eo,  dc,  dw, -du, -de,  em,  cm,  ep, -db, -dx,  dt,  df, -el, -cn, -eq,  da,  dy, -ds, -dg,  ek,  co,  er, -cz, -dz,  dr,  dh, -ej, -cp, -es,  cy,  ea, -dq, -di,  ei,  cq,  et, -cx, -eb,  dp,  dj, -eh, -cr, -eu,  cw,  ec, -d_, -dk,  eg,  cs,  ev, -cv, -ed,  dn,  dl, -ef, -ct, -ew,  cu,  ee, -dm } ,\
  { ak, -am, -ai,  ao,  ah,  an, -aj, -al,  al,  aj, -an, -ah, -ao,  ai,  am, -ak, -ak,  am,  ai, -ao, -ah, -an,  aj,  al, -al, -aj,  an,  ah,  ao, -ai, -am,  ak,  ak, -am, -ai,  ao,  ah,  an, -aj, -al,  al,  aj, -an, -ah, -ao,  ai,  am, -ak, -ak,  am,  ai, -ao, -ah, -an,  aj,  al, -al, -aj,  an,  ah,  ao, -ai, -am,  ak,  ak, -am, -ai,  ao,  ah,  an, -aj, -al,  al,  aj, -an, -ah, -ao,  ai,  am, -ak, -ak,  am,  ai, -ao, -ah, -an,  aj,  al, -al, -aj,  an,  ah,  ao, -ai, -am,  ak,  ak, -am, -ai,  ao,  ah,  an, -aj, -al,  al,  aj, -an, -ah, -ao,  ai,  am, -ak, -ak,  am,  ai, -ao, -ah, -an,  aj,  al, -al, -aj,  an,  ah,  ao, -ai, -am,  ak } ,\
  { dn, -eb, -cz,  ep,  cl,  eq, -cy, -ec,  dm,  d_, -ea, -da,  eo,  cm,  er, -cx, -ed,  dl,  dp, -dz, -db,  en,  cn,  es, -cw, -ee,  dk,  dq, -dy, -dc,  em,  co,  et, -cv, -ef,  dj,  dr, -dx, -dd,  el,  cp,  eu, -cu, -eg,  di,  ds, -dw, -de,  ek,  cq,  ev, -ct, -eh,  dh,  dt, -dv, -df,  ej,  cr,  ew, -cs, -ei,  dg,  du, -du, -dg,  ei,  cs, -ew, -cr, -ej,  df,  dv, -dt, -dh,  eh,  ct, -ev, -cq, -ek,  de,  dw, -ds, -di,  eg,  cu, -eu, -cp, -el,  dd,  dx, -dr, -dj,  ef,  cv, -et, -co, -em,  dc,  dy, -dq, -dk,  ee,  cw, -es, -cn, -en,  db,  dz, -dp, -dl,  ed,  cx, -er, -cm, -eo,  da,  ea, -d_, -dm,  ec,  cy, -eq, -cl, -ep,  cz,  eb, -dn } ,\
  { bt, -bz, -bn,  cf,  bh,  ck, -bi, -ce,  bo,  by, -bu, -bs,  ca,  bm, -cg, -bg, -cj,  bj,  cd, -bp, -bx,  bv,  br, -cb, -bl,  ch,  bf,  ci, -bk, -cc,  bq,  bw, -bw, -bq,  cc,  bk, -ci, -bf, -ch,  bl,  cb, -br, -bv,  bx,  bp, -cd, -bj,  cj,  bg,  cg, -bm, -ca,  bs,  bu, -by, -bo,  ce,  bi, -ck, -bh, -cf,  bn,  bz, -bt, -bt,  bz,  bn, -cf, -bh, -ck,  bi,  ce, -bo, -by,  bu,  bs, -ca, -bm,  cg,  bg,  cj, -bj, -cd,  bp,  bx, -bv, -br,  cb,  bl, -ch, -bf, -ci,  bk,  cc, -bq, -bw,  bw,  bq, -cc, -bk,  ci,  bf,  ch, -bl, -cb,  br,  bv, -bx, -bp,  cd,  bj, -cj, -bg, -cg,  bm,  ca, -bs, -bu,  by,  bo, -ce, -bi,  ck,  bh,  cf, -bn, -bz,  bt } ,\
  { d_, -dy, -de,  ei,  cu, -es, -cl, -er,  cv,  eh, -df, -dx,  dp,  dn, -dz, -dd,  ej,  ct, -et, -cm, -eq,  cw,  eg, -dg, -dw,  dq,  dm, -ea, -dc,  ek,  cs, -eu, -cn, -ep,  cx,  ef, -dh, -dv,  dr,  dl, -eb, -db,  el,  cr, -ev, -co, -eo,  cy,  ee, -di, -du,  ds,  dk, -ec, -da,  em,  cq, -ew, -cp, -en,  cz,  ed, -dj, -dt,  dt,  dj, -ed, -cz,  en,  cp,  ew, -cq, -em,  da,  ec, -dk, -ds,  du,  di, -ee, -cy,  eo,  co,  ev, -cr, -el,  db,  eb, -dl, -dr,  dv,  dh, -ef, -cx,  ep,  cn,  eu, -cs, -ek,  dc,  ea, -dm, -dq,  dw,  dg, -eg, -cw,  eq,  cm,  et, -ct, -ej,  dd,  dz, -dn, -dp,  dx,  df, -eh, -cv,  er,  cl,  es, -cu, -ei,  de,  dy, -d_ } ,\
  { aw, -ay, -au,  ba,  as, -bc, -aq,  be,  ap,  bd, -ar, -bb,  at,  az, -av, -ax,  ax,  av, -az, -at,  bb,  ar, -bd, -ap, -be,  aq,  bc, -as, -ba,  au,  ay, -aw, -aw,  ay,  au, -ba, -as,  bc,  aq, -be, -ap, -bd,  ar,  bb, -at, -az,  av,  ax, -ax, -av,  az,  at, -bb, -ar,  bd,  ap,  be, -aq, -bc,  as,  ba, -au, -ay,  aw,  aw, -ay, -au,  ba,  as, -bc, -aq,  be,  ap,  bd, -ar, -bb,  at,  az, -av, -ax,  ax,  av, -az, -at,  bb,  ar, -bd, -ap, -be,  aq,  bc, -as, -ba,  au,  ay, -aw, -aw,  ay,  au, -ba, -as,  bc,  aq, -be, -ap, -bd,  ar,  bb, -at, -az,  av,  ax, -ax, -av,  az,  at, -bb, -ar,  bd,  ap,  be, -aq, -bc,  as,  ba, -au, -ay,  aw } ,\
  { dp, -dv, -dj,  eb,  dd, -eh, -cx,  en,  cr, -et, -cl, -eu,  cq,  eo, -cw, -ei,  dc,  ec, -di, -dw,  d_,  dq, -du, -dk,  ea,  de, -eg, -cy,  em,  cs, -es, -cm, -ev,  cp,  ep, -cv, -ej,  db,  ed, -dh, -dx,  dn,  dr, -dt, -dl,  dz,  df, -ef, -cz,  el,  ct, -er, -cn, -ew,  co,  eq, -cu, -ek,  da,  ee, -dg, -dy,  dm,  ds, -ds, -dm,  dy,  dg, -ee, -da,  ek,  cu, -eq, -co,  ew,  cn,  er, -ct, -el,  cz,  ef, -df, -dz,  dl,  dt, -dr, -dn,  dx,  dh, -ed, -db,  ej,  cv, -ep, -cp,  ev,  cm,  es, -cs, -em,  cy,  eg, -de, -ea,  dk,  du, -dq, -d_,  dw,  di, -ec, -dc,  ei,  cw, -eo, -cq,  eu,  cl,  et, -cr, -en,  cx,  eh, -dd, -eb,  dj,  dv, -dp } ,\
  { bu, -bw, -bs,  by,  bq, -ca, -bo,  cc,  bm, -ce, -bk,  cg,  bi, -ci, -bg,  ck,  bf,  cj, -bh, -ch,  bj,  cf, -bl, -cd,  bn,  cb, -bp, -bz,  br,  bx, -bt, -bv,  bv,  bt, -bx, -br,  bz,  bp, -cb, -bn,  cd,  bl, -cf, -bj,  ch,  bh, -cj, -bf, -ck,  bg,  ci, -bi, -cg,  bk,  ce, -bm, -cc,  bo,  ca, -bq, -by,  bs,  bw, -bu, -bu,  bw,  bs, -by, -bq,  ca,  bo, -cc, -bm,  ce,  bk, -cg, -bi,  ci,  bg, -ck, -bf, -cj,  bh,  ch, -bj, -cf,  bl,  cd, -bn, -cb,  bp,  bz, -br, -bx,  bt,  bv, -bv, -bt,  bx,  br, -bz, -bp,  cb,  bn, -cd, -bl,  cf,  bj, -ch, -bh,  cj,  bf,  ck, -bg, -ci,  bi,  cg, -bk, -ce,  bm,  cc, -bo, -ca,  bq,  by, -bs, -bw,  bu } ,\
  { dq, -ds, -d_,  du,  dm, -dw, -dk,  dy,  di, -ea, -dg,  ec,  de, -ee, -dc,  eg,  da, -ei, -cy,  ek,  cw, -em, -cu,  eo,  cs, -eq, -cq,  es,  co, -eu, -cm,  ew,  cl,  ev, -cn, -et,  cp,  er, -cr, -ep,  ct,  en, -cv, -el,  cx,  ej, -cz, -eh,  db,  ef, -dd, -ed,  df,  eb, -dh, -dz,  dj,  dx, -dl, -dv,  dn,  dt, -dp, -dr,  dr,  dp, -dt, -dn,  dv,  dl, -dx, -dj,  dz,  dh, -eb, -df,  ed,  dd, -ef, -db,  eh,  cz, -ej, -cx,  el,  cv, -en, -ct,  ep,  cr, -er, -cp,  et,  cn, -ev, -cl, -ew,  cm,  eu, -co, -es,  cq,  eq, -cs, -eo,  cu,  em, -cw, -ek,  cy,  ei, -da, -eg,  dc,  ee, -de, -ec,  dg,  ea, -di, -dy,  dk,  dw, -dm, -du,  d_,  ds, -dq } ,\
  { aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa,  aa, -aa, -aa,  aa } ,\
  { dr, -dp, -dt,  dn,  dv, -dl, -dx,  dj,  dz, -dh, -eb,  df,  ed, -dd, -ef,  db,  eh, -cz, -ej,  cx,  el, -cv, -en,  ct,  ep, -cr, -er,  cp,  et, -cn, -ev,  cl, -ew, -cm,  eu,  co, -es, -cq,  eq,  cs, -eo, -cu,  em,  cw, -ek, -cy,  ei,  da, -eg, -dc,  ee,  de, -ec, -dg,  ea,  di, -dy, -dk,  dw,  dm, -du, -d_,  ds,  dq, -dq, -ds,  d_,  du, -dm, -dw,  dk,  dy, -di, -ea,  dg,  ec, -de, -ee,  dc,  eg, -da, -ei,  cy,  ek, -cw, -em,  cu,  eo, -cs, -eq,  cq,  es, -co, -eu,  cm,  ew, -cl,  ev,  cn, -et, -cp,  er,  cr, -ep, -ct,  en,  cv, -el, -cx,  ej,  cz, -eh, -db,  ef,  dd, -ed, -df,  eb,  dh, -dz, -dj,  dx,  dl, -dv, -dn,  dt,  dp, -dr } ,\
  { bv, -bt, -bx,  br,  bz, -bp, -cb,  bn,  cd, -bl, -cf,  bj,  ch, -bh, -cj,  bf, -ck, -bg,  ci,  bi, -cg, -bk,  ce,  bm, -cc, -bo,  ca,  bq, -by, -bs,  bw,  bu, -bu, -bw,  bs,  by, -bq, -ca,  bo,  cc, -bm, -ce,  bk,  cg, -bi, -ci,  bg,  ck, -bf,  cj,  bh, -ch, -bj,  cf,  bl, -cd, -bn,  cb,  bp, -bz, -br,  bx,  bt, -bv, -bv,  bt,  bx, -br, -bz,  bp,  cb, -bn, -cd,  bl,  cf, -bj, -ch,  bh,  cj, -bf,  ck,  bg, -ci, -bi,  cg,  bk, -ce, -bm,  cc,  bo, -ca, -bq,  by,  bs, -bw, -bu,  bu,  bw, -bs, -by,  bq,  ca, -bo, -cc,  bm,  ce, -bk, -cg,  bi,  ci, -bg, -ck,  bf, -cj, -bh,  ch,  bj, -cf, -bl,  cd,  bn, -cb, -bp,  bz,  br, -bx, -bt,  bv } ,\
  { ds, -dm, -dy,  dg,  ee, -da, -ek,  cu,  eq, -co, -ew,  cn, -er, -ct,  el,  cz, -ef, -df,  dz,  dl, -dt, -dr,  dn,  dx, -dh, -ed,  db,  ej, -cv, -ep,  cp,  ev, -cm,  es,  cs, -em, -cy,  eg,  de, -ea, -dk,  du,  dq, -d_, -dw,  di,  ec, -dc, -ei,  cw,  eo, -cq, -eu,  cl, -et, -cr,  en,  cx, -eh, -dd,  eb,  dj, -dv, -dp,  dp,  dv, -dj, -eb,  dd,  eh, -cx, -en,  cr,  et, -cl,  eu,  cq, -eo, -cw,  ei,  dc, -ec, -di,  dw,  d_, -dq, -du,  dk,  ea, -de, -eg,  cy,  em, -cs, -es,  cm, -ev, -cp,  ep,  cv, -ej, -db,  ed,  dh, -dx, -dn,  dr,  dt, -dl, -dz,  df,  ef, -cz, -el,  ct,  er, -cn,  ew,  co, -eq, -cu,  ek,  da, -ee, -dg,  dy,  dm, -ds } ,\
  { ax, -av, -az,  at,  bb, -ar, -bd,  ap, -be, -aq,  bc,  as, -ba, -au,  ay,  aw, -aw, -ay,  au,  ba, -as, -bc,  aq,  be, -ap,  bd,  ar, -bb, -at,  az,  av, -ax, -ax,  av,  az, -at, -bb,  ar,  bd, -ap,  be,  aq, -bc, -as,  ba,  au, -ay, -aw,  aw,  ay, -au, -ba,  as,  bc, -aq, -be,  ap, -bd, -ar,  bb,  at, -az, -av,  ax,  ax, -av, -az,  at,  bb, -ar, -bd,  ap, -be, -aq,  bc,  as, -ba, -au,  ay,  aw, -aw, -ay,  au,  ba, -as, -bc,  aq,  be, -ap,  bd,  ar, -bb, -at,  az,  av, -ax, -ax,  av,  az, -at, -bb,  ar,  bd, -ap,  be,  aq, -bc, -as,  ba,  au, -ay, -aw,  aw,  ay, -au, -ba,  as,  bc, -aq, -be,  ap, -bd, -ar,  bb,  at, -az, -av,  ax } ,\
  { dt, -dj, -ed,  cz,  en, -cp,  ew,  cq, -em, -da,  ec,  dk, -ds, -du,  di,  ee, -cy, -eo,  co, -ev, -cr,  el,  db, -eb, -dl,  dr,  dv, -dh, -ef,  cx,  ep, -cn,  eu,  cs, -ek, -dc,  ea,  dm, -dq, -dw,  dg,  eg, -cw, -eq,  cm, -et, -ct,  ej,  dd, -dz, -dn,  dp,  dx, -df, -eh,  cv,  er, -cl,  es,  cu, -ei, -de,  dy,  d_, -d_, -dy,  de,  ei, -cu, -es,  cl, -er, -cv,  eh,  df, -dx, -dp,  dn,  dz, -dd, -ej,  ct,  et, -cm,  eq,  cw, -eg, -dg,  dw,  dq, -dm, -ea,  dc,  ek, -cs, -eu,  cn, -ep, -cx,  ef,  dh, -dv, -dr,  dl,  eb, -db, -el,  cr,  ev, -co,  eo,  cy, -ee, -di,  du,  ds, -dk, -ec,  da,  em, -cq, -ew,  cp, -en, -cz,  ed,  dj, -dt } ,\
  { bw, -bq, -cc,  bk,  ci, -bf,  ch,  bl, -cb, -br,  bv,  bx, -bp, -cd,  bj,  cj, -bg,  cg,  bm, -ca, -bs,  bu,  by, -bo, -ce,  bi,  ck, -bh,  cf,  bn, -bz, -bt,  bt,  bz, -bn, -cf,  bh, -ck, -bi,  ce,  bo, -by, -bu,  bs,  ca, -bm, -cg,  bg, -cj, -bj,  cd,  bp, -bx, -bv,  br,  cb, -bl, -ch,  bf, -ci, -bk,  cc,  bq, -bw, -bw,  bq,  cc, -bk, -ci,  bf, -ch, -bl,  cb,  br, -bv, -bx,  bp,  cd, -bj, -cj,  bg, -cg, -bm,  ca,  bs, -bu, -by,  bo,  ce, -bi, -ck,  bh, -cf, -bn,  bz,  bt, -bt, -bz,  bn,  cf, -bh,  ck,  bi, -ce, -bo,  by,  bu, -bs, -ca,  bm,  cg, -bg,  cj,  bj, -cd, -bp,  bx,  bv, -br, -cb,  bl,  ch, -bf,  ci,  bk, -cc, -bq,  bw } ,\
  { du, -dg, -ei,  cs,  ew, -cr,  ej,  df, -dv, -dt,  dh,  eh, -ct, -ev,  cq, -ek, -de,  dw,  ds, -di, -eg,  cu,  eu, -cp,  el,  dd, -dx, -dr,  dj,  ef, -cv, -et,  co, -em, -dc,  dy,  dq, -dk, -ee,  cw,  es, -cn,  en,  db, -dz, -dp,  dl,  ed, -cx, -er,  cm, -eo, -da,  ea,  d_, -dm, -ec,  cy,  eq, -cl,  ep,  cz, -eb, -dn,  dn,  eb, -cz, -ep,  cl, -eq, -cy,  ec,  dm, -d_, -ea,  da,  eo, -cm,  er,  cx, -ed, -dl,  dp,  dz, -db, -en,  cn, -es, -cw,  ee,  dk, -dq, -dy,  dc,  em, -co,  et,  cv, -ef, -dj,  dr,  dx, -dd, -el,  cp, -eu, -cu,  eg,  di, -ds, -dw,  de,  ek, -cq,  ev,  ct, -eh, -dh,  dt,  dv, -df, -ej,  cr, -ew, -cs,  ei,  dg, -du } ,\
  { al, -aj, -an,  ah, -ao, -ai,  am,  ak, -ak, -am,  ai,  ao, -ah,  an,  aj, -al, -al,  aj,  an, -ah,  ao,  ai, -am, -ak,  ak,  am, -ai, -ao,  ah, -an, -aj,  al,  al, -aj, -an,  ah, -ao, -ai,  am,  ak, -ak, -am,  ai,  ao, -ah,  an,  aj, -al, -al,  aj,  an, -ah,  ao,  ai, -am, -ak,  ak,  am, -ai, -ao,  ah, -an, -aj,  al,  al, -aj, -an,  ah, -ao, -ai,  am,  ak, -ak, -am,  ai,  ao, -ah,  an,  aj, -al, -al,  aj,  an, -ah,  ao,  ai, -am, -ak,  ak,  am, -ai, -ao,  ah, -an, -aj,  al,  al, -aj, -an,  ah, -ao, -ai,  am,  ak, -ak, -am,  ai,  ao, -ah,  an,  aj, -al, -al,  aj,  an, -ah,  ao,  ai, -am, -ak,  ak,  am, -ai, -ao,  ah, -an, -aj,  al } ,\
  { dv, -dd, -en,  cl, -eo, -dc,  dw,  du, -de, -em,  cm, -ep, -db,  dx,  dt, -df, -el,  cn, -eq, -da,  dy,  ds, -dg, -ek,  co, -er, -cz,  dz,  dr, -dh, -ej,  cp, -es, -cy,  ea,  dq, -di, -ei,  cq, -et, -cx,  eb,  dp, -dj, -eh,  cr, -eu, -cw,  ec,  d_, -dk, -eg,  cs, -ev, -cv,  ed,  dn, -dl, -ef,  ct, -ew, -cu,  ee,  dm, -dm, -ee,  cu,  ew, -ct,  ef,  dl, -dn, -ed,  cv,  ev, -cs,  eg,  dk, -d_, -ec,  cw,  eu, -cr,  eh,  dj, -dp, -eb,  cx,  et, -cq,  ei,  di, -dq, -ea,  cy,  es, -cp,  ej,  dh, -dr, -dz,  cz,  er, -co,  ek,  dg, -ds, -dy,  da,  eq, -cn,  el,  df, -dt, -dx,  db,  ep, -cm,  em,  de, -du, -dw,  dc,  eo, -cl,  en,  dd, -dv } ,\
  { bx, -bn, -ch,  bg, -ce, -bq,  bu,  ca, -bk, -ck,  bj, -cb, -bt,  br,  cd, -bh,  ci,  bm, -by, -bw,  bo,  cg, -bf,  cf,  bp, -bv, -bz,  bl,  cj, -bi,  cc,  bs, -bs, -cc,  bi, -cj, -bl,  bz,  bv, -bp, -cf,  bf, -cg, -bo,  bw,  by, -bm, -ci,  bh, -cd, -br,  bt,  cb, -bj,  ck,  bk, -ca, -bu,  bq,  ce, -bg,  ch,  bn, -bx, -bx,  bn,  ch, -bg,  ce,  bq, -bu, -ca,  bk,  ck, -bj,  cb,  bt, -br, -cd,  bh, -ci, -bm,  by,  bw, -bo, -cg,  bf, -cf, -bp,  bv,  bz, -bl, -cj,  bi, -cc, -bs,  bs,  cc, -bi,  cj,  bl, -bz, -bv,  bp,  cf, -bf,  cg,  bo, -bw, -by,  bm,  ci, -bh,  cd,  br, -bt, -cb,  bj, -ck, -bk,  ca,  bu, -bq, -ce,  bg, -ch, -bn,  bx } ,\
  { dw, -da, -es,  cr, -ef, -dn,  dj,  ej, -cn,  eo,  de, -ds, -ea,  cw,  ew, -cv,  eb,  dr, -df, -en,  cm, -ek, -di,  d_,  ee, -cs,  et,  cz, -dx, -dv,  db,  er, -cq,  eg,  dm, -dk, -ei,  co, -ep, -dd,  dt,  dz, -cx, -ev,  cu, -ec, -dq,  dg,  em, -cl,  el,  dh, -dp, -ed,  ct, -eu, -cy,  dy,  du, -dc, -eq,  cp, -eh, -dl,  dl,  eh, -cp,  eq,  dc, -du, -dy,  cy,  eu, -ct,  ed,  dp, -dh, -el,  cl, -em, -dg,  dq,  ec, -cu,  ev,  cx, -dz, -dt,  dd,  ep, -co,  ei,  dk, -dm, -eg,  cq, -er, -db,  dv,  dx, -cz, -et,  cs, -ee, -d_,  di,  ek, -cm,  en,  df, -dr, -eb,  cv, -ew, -cw,  ea,  ds, -de, -eo,  cn, -ej, -dj,  dn,  ef, -cr,  es,  da, -dw } ,\
  { ay, -as, -be,  ar, -az, -ax,  at,  bd, -aq,  ba,  aw, -au, -bc,  ap, -bb, -av,  av,  bb, -ap,  bc,  au, -aw, -ba,  aq, -bd, -at,  ax,  az, -ar,  be,  as, -ay, -ay,  as,  be, -ar,  az,  ax, -at, -bd,  aq, -ba, -aw,  au,  bc, -ap,  bb,  av, -av, -bb,  ap, -bc, -au,  aw,  ba, -aq,  bd,  at, -ax, -az,  ar, -be, -as,  ay,  ay, -as, -be,  ar, -az, -ax,  at,  bd, -aq,  ba,  aw, -au, -bc,  ap, -bb, -av,  av,  bb, -ap,  bc,  au, -aw, -ba,  aq, -bd, -at,  ax,  az, -ar,  be,  as, -ay, -ay,  as,  be, -ar,  az,  ax, -at, -bd,  aq, -ba, -aw,  au,  bc, -ap,  bb,  av, -av, -bb,  ap, -bc, -au,  aw,  ba, -aq,  bd,  at, -ax, -az,  ar, -be, -as,  ay } ,\
  { dx, -cx,  ew,  cy, -dw, -dy,  cw, -ev, -cz,  dv,  dz, -cv,  eu,  da, -du, -ea,  cu, -et, -db,  dt,  eb, -ct,  es,  dc, -ds, -ec,  cs, -er, -dd,  dr,  ed, -cr,  eq,  de, -dq, -ee,  cq, -ep, -df,  dp,  ef, -cp,  eo,  dg, -d_, -eg,  co, -en, -dh,  dn,  eh, -cn,  em,  di, -dm, -ei,  cm, -el, -dj,  dl,  ej, -cl,  ek,  dk, -dk, -ek,  cl, -ej, -dl,  dj,  el, -cm,  ei,  dm, -di, -em,  cn, -eh, -dn,  dh,  en, -co,  eg,  d_, -dg, -eo,  cp, -ef, -dp,  df,  ep, -cq,  ee,  dq, -de, -eq,  cr, -ed, -dr,  dd,  er, -cs,  ec,  ds, -dc, -es,  ct, -eb, -dt,  db,  et, -cu,  ea,  du, -da, -eu,  cv, -dz, -dv,  cz,  ev, -cw,  dy,  dw, -cy, -ew,  cx, -dx } ,\
  { by, -bk,  cj,  bn, -bv, -cb,  bh, -cg, -bq,  bs,  ce, -bf,  cd,  bt, -bp, -ch,  bi, -ca, -bw,  bm,  ck, -bl,  bx,  bz, -bj,  ci,  bo, -bu, -cc,  bg, -cf, -br,  br,  cf, -bg,  cc,  bu, -bo, -ci,  bj, -bz, -bx,  bl, -ck, -bm,  bw,  ca, -bi,  ch,  bp, -bt, -cd,  bf, -ce, -bs,  bq,  cg, -bh,  cb,  bv, -bn, -cj,  bk, -by, -by,  bk, -cj, -bn,  bv,  cb, -bh,  cg,  bq, -bs, -ce,  bf, -cd, -bt,  bp,  ch, -bi,  ca,  bw, -bm, -ck,  bl, -bx, -bz,  bj, -ci, -bo,  bu,  cc, -bg,  cf,  br, -br, -cf,  bg, -cc, -bu,  bo,  ci, -bj,  bz,  bx, -bl,  ck,  bm, -bw, -ca,  bi, -ch, -bp,  bt,  cd, -bf,  ce,  bs, -bq, -cg,  bh, -cb, -bv,  bn,  cj, -bk,  by } ,\
  { dy, -cu,  er,  df, -dn, -ej,  cm, -eg, -dq,  dc,  eu, -cx,  dv,  eb, -cr,  eo,  di, -dk, -em,  cp, -ed, -dt,  cz, -ew, -da,  ds,  ee, -co,  el,  dl, -dh, -ep,  cs, -ea, -dw,  cw, -et, -dd,  dp,  eh, -cl,  ei,  d_, -de, -es,  cv, -dx, -dz,  ct, -eq, -dg,  dm,  ek, -cn,  ef,  dr, -db, -ev,  cy, -du, -ec,  cq, -en, -dj,  dj,  en, -cq,  ec,  du, -cy,  ev,  db, -dr, -ef,  cn, -ek, -dm,  dg,  eq, -ct,  dz,  dx, -cv,  es,  de, -d_, -ei,  cl, -eh, -dp,  dd,  et, -cw,  dw,  ea, -cs,  ep,  dh, -dl, -el,  co, -ee, -ds,  da,  ew, -cz,  dt,  ed, -cp,  em,  dk, -di, -eo,  cr, -eb, -dv,  cx, -eu, -dc,  dq,  eg, -cm,  ej,  dn, -df, -er,  cu, -dy } ,\
  { af, -ad,  ag,  ae, -ae, -ag,  ad, -af, -af,  ad, -ag, -ae,  ae,  ag, -ad,  af,  af, -ad,  ag,  ae, -ae, -ag,  ad, -af, -af,  ad, -ag, -ae,  ae,  ag, -ad,  af,  af, -ad,  ag,  ae, -ae, -ag,  ad, -af, -af,  ad, -ag, -ae,  ae,  ag, -ad,  af,  af, -ad,  ag,  ae, -ae, -ag,  ad, -af, -af,  ad, -ag, -ae,  ae,  ag, -ad,  af,  af, -ad,  ag,  ae, -ae, -ag,  ad, -af, -af,  ad, -ag, -ae,  ae,  ag, -ad,  af,  af, -ad,  ag,  ae, -ae, -ag,  ad, -af, -af,  ad, -ag, -ae,  ae,  ag, -ad,  af,  af, -ad,  ag,  ae, -ae, -ag,  ad, -af, -af,  ad, -ag, -ae,  ae,  ag, -ad,  af,  af, -ad,  ag,  ae, -ae, -ag,  ad, -af, -af,  ad, -ag, -ae,  ae,  ag, -ad,  af } ,\
  { dz, -cr,  em,  dm, -de, -eu,  cz, -dr, -eh,  cm, -ee, -du,  cw, -er, -dh,  dj,  ep, -cu,  dw,  ec, -co,  ej,  dp, -db,  ew,  dc, -d_, -ek,  cp, -eb, -dx,  ct, -eo, -dk,  dg,  es, -cx,  dt,  ef, -cl,  eg,  ds, -cy,  et,  df, -dl, -en,  cs, -dy, -ea,  cq, -el, -dn,  dd,  ev, -da,  dq,  ei, -cn,  ed,  dv, -cv,  eq,  di, -di, -eq,  cv, -dv, -ed,  cn, -ei, -dq,  da, -ev, -dd,  dn,  el, -cq,  ea,  dy, -cs,  en,  dl, -df, -et,  cy, -ds, -eg,  cl, -ef, -dt,  cx, -es, -dg,  dk,  eo, -ct,  dx,  eb, -cp,  ek,  d_, -dc, -ew,  db, -dp, -ej,  co, -ec, -dw,  cu, -ep, -dj,  dh,  er, -cw,  du,  ee, -cm,  eh,  dr, -cz,  eu,  de, -dm, -em,  cr, -dz } ,\
  { bz, -bh,  ce,  bu, -bm,  cj,  bp, -br, -ch,  bk, -bw, -cc,  bf, -cb, -bx,  bj, -cg, -bs,  bo,  ck, -bn,  bt,  cf, -bi,  by,  ca, -bg,  cd,  bv, -bl,  ci,  bq, -bq, -ci,  bl, -bv, -cd,  bg, -ca, -by,  bi, -cf, -bt,  bn, -ck, -bo,  bs,  cg, -bj,  bx,  cb, -bf,  cc,  bw, -bk,  ch,  br, -bp, -cj,  bm, -bu, -ce,  bh, -bz, -bz,  bh, -ce, -bu,  bm, -cj, -bp,  br,  ch, -bk,  bw,  cc, -bf,  cb,  bx, -bj,  cg,  bs, -bo, -ck,  bn, -bt, -cf,  bi, -by, -ca,  bg, -cd, -bv,  bl, -ci, -bq,  bq,  ci, -bl,  bv,  cd, -bg,  ca,  by, -bi,  cf,  bt, -bn,  ck,  bo, -bs, -cg,  bj, -bx, -cb,  bf, -cc, -bw,  bk, -ch, -br,  bp,  cj, -bm,  bu,  ce, -bh,  bz } ,\
  { ea, -co,  eh,  dt, -cv,  eo,  dm, -dc,  ev,  df, -dj, -er,  cy, -dq, -ek,  cr, -dx, -ed,  cl, -ee, -dw,  cs, -el, -dp,  cz, -es, -di,  dg,  eu, -db,  dn,  en, -cu,  du,  eg, -cn,  eb,  dz, -cp,  ei,  ds, -cw,  ep,  dl, -dd,  ew,  de, -dk, -eq,  cx, -dr, -ej,  cq, -dy, -ec,  cm, -ef, -dv,  ct, -em, -d_,  da, -et, -dh,  dh,  et, -da,  d_,  em, -ct,  dv,  ef, -cm,  ec,  dy, -cq,  ej,  dr, -cx,  eq,  dk, -de, -ew,  dd, -dl, -ep,  cw, -ds, -ei,  cp, -dz, -eb,  cn, -eg, -du,  cu, -en, -dn,  db, -eu, -dg,  di,  es, -cz,  dp,  el, -cs,  dw,  ee, -cl,  ed,  dx, -cr,  ek,  dq, -cy,  er,  dj, -df, -ev,  dc, -dm, -eo,  cv, -dt, -eh,  co, -ea } ,\
  { az, -ap,  ba,  ay, -aq,  bb,  ax, -ar,  bc,  aw, -as,  bd,  av, -at,  be,  au, -au, -be,  at, -av, -bd,  as, -aw, -bc,  ar, -ax, -bb,  aq, -ay, -ba,  ap, -az, -az,  ap, -ba, -ay,  aq, -bb, -ax,  ar, -bc, -aw,  as, -bd, -av,  at, -be, -au,  au,  be, -at,  av,  bd, -as,  aw,  bc, -ar,  ax,  bb, -aq,  ay,  ba, -ap,  az,  az, -ap,  ba,  ay, -aq,  bb,  ax, -ar,  bc,  aw, -as,  bd,  av, -at,  be,  au, -au, -be,  at, -av, -bd,  as, -aw, -bc,  ar, -ax, -bb,  aq, -ay, -ba,  ap, -az, -az,  ap, -ba, -ay,  aq, -bb, -ax,  ar, -bc, -aw,  as, -bd, -av,  at, -be, -au,  au,  be, -at,  av,  bd, -as,  aw,  bc, -ar,  ax,  bb, -aq,  ay,  ba, -ap,  az } ,\
  { eb, -cl,  ec,  ea, -cm,  ed,  dz, -cn,  ee,  dy, -co,  ef,  dx, -cp,  eg,  dw, -cq,  eh,  dv, -cr,  ei,  du, -cs,  ej,  dt, -ct,  ek,  ds, -cu,  el,  dr, -cv,  em,  dq, -cw,  en,  dp, -cx,  eo,  d_, -cy,  ep,  dn, -cz,  eq,  dm, -da,  er,  dl, -db,  es,  dk, -dc,  et,  dj, -dd,  eu,  di, -de,  ev,  dh, -df,  ew,  dg, -dg, -ew,  df, -dh, -ev,  de, -di, -eu,  dd, -dj, -et,  dc, -dk, -es,  db, -dl, -er,  da, -dm, -eq,  cz, -dn, -ep,  cy, -d_, -eo,  cx, -dp, -en,  cw, -dq, -em,  cv, -dr, -el,  cu, -ds, -ek,  ct, -dt, -ej,  cs, -du, -ei,  cr, -dv, -eh,  cq, -dw, -eg,  cp, -dx, -ef,  co, -dy, -ee,  cn, -dz, -ed,  cm, -ea, -ec,  cl, -eb } ,\
  { ca, -bf,  bz,  cb, -bg,  by,  cc, -bh,  bx,  cd, -bi,  bw,  ce, -bj,  bv,  cf, -bk,  bu,  cg, -bl,  bt,  ch, -bm,  bs,  ci, -bn,  br,  cj, -bo,  bq,  ck, -bp,  bp, -ck, -bq,  bo, -cj, -br,  bn, -ci, -bs,  bm, -ch, -bt,  bl, -cg, -bu,  bk, -cf, -bv,  bj, -ce, -bw,  bi, -cd, -bx,  bh, -cc, -by,  bg, -cb, -bz,  bf, -ca, -ca,  bf, -bz, -cb,  bg, -by, -cc,  bh, -bx, -cd,  bi, -bw, -ce,  bj, -bv, -cf,  bk, -bu, -cg,  bl, -bt, -ch,  bm, -bs, -ci,  bn, -br, -cj,  bo, -bq, -ck,  bp, -bp,  ck,  bq, -bo,  cj,  br, -bn,  ci,  bs, -bm,  ch,  bt, -bl,  cg,  bu, -bk,  cf,  bv, -bj,  ce,  bw, -bi,  cd,  bx, -bh,  cc,  by, -bg,  cb,  bz, -bf,  ca } ,\
  { ec, -cn,  dx,  eh, -cs,  ds,  em, -cx,  dn,  er, -dc,  di,  ew, -dh,  dd, -es, -dm,  cy, -en, -dr,  ct, -ei, -dw,  co, -ed, -eb,  cm, -dy, -eg,  cr, -dt, -el,  cw, -d_, -eq,  db, -dj, -ev,  dg, -de,  et,  dl, -cz,  eo,  dq, -cu,  ej,  dv, -cp,  ee,  ea, -cl,  dz,  ef, -cq,  du,  ek, -cv,  dp,  ep, -da,  dk,  eu, -df,  df, -eu, -dk,  da, -ep, -dp,  cv, -ek, -du,  cq, -ef, -dz,  cl, -ea, -ee,  cp, -dv, -ej,  cu, -dq, -eo,  cz, -dl, -et,  de, -dg,  ev,  dj, -db,  eq,  d_, -cw,  el,  dt, -cr,  eg,  dy, -cm,  eb,  ed, -co,  dw,  ei, -ct,  dr,  en, -cy,  dm,  es, -dd,  dh, -ew, -di,  dc, -er, -dn,  cx, -em, -ds,  cs, -eh, -dx,  cn, -ec } ,\
  { am, -ah,  al,  an, -ai,  ak,  ao, -aj,  aj, -ao, -ak,  ai, -an, -al,  ah, -am, -am,  ah, -al, -an,  ai, -ak, -ao,  aj, -aj,  ao,  ak, -ai,  an,  al, -ah,  am,  am, -ah,  al,  an, -ai,  ak,  ao, -aj,  aj, -ao, -ak,  ai, -an, -al,  ah, -am, -am,  ah, -al, -an,  ai, -ak, -ao,  aj, -aj,  ao,  ak, -ai,  an,  al, -ah,  am,  am, -ah,  al,  an, -ai,  ak,  ao, -aj,  aj, -ao, -ak,  ai, -an, -al,  ah, -am, -am,  ah, -al, -an,  ai, -ak, -ao,  aj, -aj,  ao,  ak, -ai,  an,  al, -ah,  am,  am, -ah,  al,  an, -ai,  ak,  ao, -aj,  aj, -ao, -ak,  ai, -an, -al,  ah, -am, -am,  ah, -al, -an,  ai, -ak, -ao,  aj, -aj,  ao,  ak, -ai,  an,  al, -ah,  am } ,\
  { ed, -cq,  ds,  eo, -db,  dh, -eu, -dm,  cw, -ej, -dx,  cl, -dy, -ei,  cv, -dn, -et,  dg, -dc,  ep,  dr, -cr,  ee,  ec, -cp,  dt,  en, -da,  di, -ev, -dl,  cx, -ek, -dw,  cm, -dz, -eh,  cu, -d_, -es,  df, -dd,  eq,  dq, -cs,  ef,  eb, -co,  du,  em, -cz,  dj, -ew, -dk,  cy, -el, -dv,  cn, -ea, -eg,  ct, -dp, -er,  de, -de,  er,  dp, -ct,  eg,  ea, -cn,  dv,  el, -cy,  dk,  ew, -dj,  cz, -em, -du,  co, -eb, -ef,  cs, -dq, -eq,  dd, -df,  es,  d_, -cu,  eh,  dz, -cm,  dw,  ek, -cx,  dl,  ev, -di,  da, -en, -dt,  cp, -ec, -ee,  cr, -dr, -ep,  dc, -dg,  et,  dn, -cv,  ei,  dy, -cl,  dx,  ej, -cw,  dm,  eu, -dh,  db, -eo, -ds,  cq, -ed } ,\
  { cb, -bi,  bu,  ci, -bp,  bn, -cg, -bw,  bg, -bz, -cd,  bk, -bs, -ck,  br, -bl,  ce,  by, -bf,  bx,  cf, -bm,  bq, -cj, -bt,  bj, -cc, -ca,  bh, -bv, -ch,  bo, -bo,  ch,  bv, -bh,  ca,  cc, -bj,  bt,  cj, -bq,  bm, -cf, -bx,  bf, -by, -ce,  bl, -br,  ck,  bs, -bk,  cd,  bz, -bg,  bw,  cg, -bn,  bp, -ci, -bu,  bi, -cb, -cb,  bi, -bu, -ci,  bp, -bn,  cg,  bw, -bg,  bz,  cd, -bk,  bs,  ck, -br,  bl, -ce, -by,  bf, -bx, -cf,  bm, -bq,  cj,  bt, -bj,  cc,  ca, -bh,  bv,  ch, -bo,  bo, -ch, -bv,  bh, -ca, -cc,  bj, -bt, -cj,  bq, -bm,  cf,  bx, -bf,  by,  ce, -bl,  br, -ck, -bs,  bk, -cd, -bz,  bg, -bw, -cg,  bn, -bp,  ci,  bu, -bi,  cb } ,\
  { ee, -ct,  dn,  ev, -dk,  cw, -eh, -eb,  cq, -dq, -es,  dh, -cz,  ek,  dy, -cn,  dt,  ep, -de,  dc, -en, -dv,  cl, -dw, -em,  db, -df,  eq,  ds, -co,  dz,  ej, -cy,  di, -et, -dp,  cr, -ec, -eg,  cv, -dl,  ew,  dm, -cu,  ef,  ed, -cs,  d_,  eu, -dj,  cx, -ei, -ea,  cp, -dr, -er,  dg, -da,  el,  dx, -cm,  du,  eo, -dd,  dd, -eo, -du,  cm, -dx, -el,  da, -dg,  er,  dr, -cp,  ea,  ei, -cx,  dj, -eu, -d_,  cs, -ed, -ef,  cu, -dm, -ew,  dl, -cv,  eg,  ec, -cr,  dp,  et, -di,  cy, -ej, -dz,  co, -ds, -eq,  df, -db,  em,  dw, -cl,  dv,  en, -dc,  de, -ep, -dt,  cn, -dy, -ek,  cz, -dh,  es,  dq, -cq,  eb,  eh, -cw,  dk, -ev, -dn,  ct, -ee } ,\
  { ba, -ar,  av, -be, -aw,  aq, -az, -bb,  as, -au,  bd,  ax, -ap,  ay,  bc, -at,  at, -bc, -ay,  ap, -ax, -bd,  au, -as,  bb,  az, -aq,  aw,  be, -av,  ar, -ba, -ba,  ar, -av,  be,  aw, -aq,  az,  bb, -as,  au, -bd, -ax,  ap, -ay, -bc,  at, -at,  bc,  ay, -ap,  ax,  bd, -au,  as, -bb, -az,  aq, -aw, -be,  av, -ar,  ba,  ba, -ar,  av, -be, -aw,  aq, -az, -bb,  as, -au,  bd,  ax, -ap,  ay,  bc, -at,  at, -bc, -ay,  ap, -ax, -bd,  au, -as,  bb,  az, -aq,  aw,  be, -av,  ar, -ba, -ba,  ar, -av,  be,  aw, -aq,  az,  bb, -as,  au, -bd, -ax,  ap, -ay, -bc,  at, -at,  bc,  ay, -ap,  ax,  bd, -au,  as, -bb, -az,  aq, -aw, -be,  av, -ar,  ba } ,\
  { ef, -cw,  di, -er, -dt,  cl, -du, -eq,  dh, -cx,  eg,  ee, -cv,  dj, -es, -ds,  cm, -dv, -ep,  dg, -cy,  eh,  ed, -cu,  dk, -et, -dr,  cn, -dw, -eo,  df, -cz,  ei,  ec, -ct,  dl, -eu, -dq,  co, -dx, -en,  de, -da,  ej,  eb, -cs,  dm, -ev, -dp,  cp, -dy, -em,  dd, -db,  ek,  ea, -cr,  dn, -ew, -d_,  cq, -dz, -el,  dc, -dc,  el,  dz, -cq,  d_,  ew, -dn,  cr, -ea, -ek,  db, -dd,  em,  dy, -cp,  dp,  ev, -dm,  cs, -eb, -ej,  da, -de,  en,  dx, -co,  dq,  eu, -dl,  ct, -ec, -ei,  cz, -df,  eo,  dw, -cn,  dr,  et, -dk,  cu, -ed, -eh,  cy, -dg,  ep,  dv, -cm,  ds,  es, -dj,  cv, -ee, -eg,  cx, -dh,  eq,  du, -cl,  dt,  er, -di,  cw, -ef } ,\
  { cc, -bl,  bp, -cg, -by,  bh, -bt,  ck,  bu, -bg,  bx,  ch, -bq,  bk, -cb, -cd,  bm, -bo,  cf,  bz, -bi,  bs, -cj, -bv,  bf, -bw, -ci,  br, -bj,  ca,  ce, -bn,  bn, -ce, -ca,  bj, -br,  ci,  bw, -bf,  bv,  cj, -bs,  bi, -bz, -cf,  bo, -bm,  cd,  cb, -bk,  bq, -ch, -bx,  bg, -bu, -ck,  bt, -bh,  by,  cg, -bp,  bl, -cc, -cc,  bl, -bp,  cg,  by, -bh,  bt, -ck, -bu,  bg, -bx, -ch,  bq, -bk,  cb,  cd, -bm,  bo, -cf, -bz,  bi, -bs,  cj,  bv, -bf,  bw,  ci, -br,  bj, -ca, -ce,  bn, -bn,  ce,  ca, -bj,  br, -ci, -bw,  bf, -bv, -cj,  bs, -bi,  bz,  cf, -bo,  bm, -cd, -cb,  bk, -bq,  ch,  bx, -bg,  bu,  ck, -bt,  bh, -by, -cg,  bp, -bl,  cc } ,\
  { eg, -cz,  dd, -ek, -ec,  cv, -dh,  eo,  dy, -cr,  dl, -es, -du,  cn, -dp,  ew,  dq, -cm,  dt,  et, -dm,  cq, -dx, -ep,  di, -cu,  eb,  el, -de,  cy, -ef, -eh,  da, -dc,  ej,  ed, -cw,  dg, -en, -dz,  cs, -dk,  er,  dv, -co,  d_, -ev, -dr,  cl, -ds, -eu,  dn, -cp,  dw,  eq, -dj,  ct, -ea, -em,  df, -cx,  ee,  ei, -db,  db, -ei, -ee,  cx, -df,  em,  ea, -ct,  dj, -eq, -dw,  cp, -dn,  eu,  ds, -cl,  dr,  ev, -d_,  co, -dv, -er,  dk, -cs,  dz,  en, -dg,  cw, -ed, -ej,  dc, -da,  eh,  ef, -cy,  de, -el, -eb,  cu, -di,  ep,  dx, -cq,  dm, -et, -dt,  cm, -dq, -ew,  dp, -cn,  du,  es, -dl,  cr, -dy, -eo,  dh, -cv,  ec,  ek, -dd,  cz, -eg } ,\
  { ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac,  ac, -ab,  ab, -ac, -ac,  ab, -ab,  ac } ,\
  { eh, -dc,  cy, -ed, -el,  dg, -cu,  dz,  ep, -dk,  cq, -dv, -et,  d_, -cm,  dr, -ew, -ds,  cn, -dn,  es,  dw, -cr,  dj, -eo, -ea,  cv, -df,  ek,  ee, -cz,  db, -eg, -ei,  dd, -cx,  ec,  em, -dh,  ct, -dy, -eq,  dl, -cp,  du,  eu, -dp,  cl, -dq,  ev,  dt, -co,  dm, -er, -dx,  cs, -di,  en,  eb, -cw,  de, -ej, -ef,  da, -da,  ef,  ej, -de,  cw, -eb, -en,  di, -cs,  dx,  er, -dm,  co, -dt, -ev,  dq, -cl,  dp, -eu, -du,  cp, -dl,  eq,  dy, -ct,  dh, -em, -ec,  cx, -dd,  ei,  eg, -db,  cz, -ee, -ek,  df, -cv,  ea,  eo, -dj,  cr, -dw, -es,  dn, -cn,  ds,  ew, -dr,  cm, -d_,  et,  dv, -cq,  dk, -ep, -dz,  cu, -dg,  el,  ed, -cy,  dc, -eh } ,\
  { cd, -bo,  bk, -bz, -ch,  bs, -bg,  bv, -ck, -bw,  bh, -br,  cg,  ca, -bl,  bn, -cc, -ce,  bp, -bj,  by,  ci, -bt,  bf, -bu,  cj,  bx, -bi,  bq, -cf, -cb,  bm, -bm,  cb,  cf, -bq,  bi, -bx, -cj,  bu, -bf,  bt, -ci, -by,  bj, -bp,  ce,  cc, -bn,  bl, -ca, -cg,  br, -bh,  bw,  ck, -bv,  bg, -bs,  ch,  bz, -bk,  bo, -cd, -cd,  bo, -bk,  bz,  ch, -bs,  bg, -bv,  ck,  bw, -bh,  br, -cg, -ca,  bl, -bn,  cc,  ce, -bp,  bj, -by, -ci,  bt, -bf,  bu, -cj, -bx,  bi, -bq,  cf,  cb, -bm,  bm, -cb, -cf,  bq, -bi,  bx,  cj, -bu,  bf, -bt,  ci,  by, -bj,  bp, -ce, -cc,  bn, -bl,  ca,  cg, -br,  bh, -bw, -ck,  bv, -bg,  bs, -ch, -bz,  bk, -bo,  cd } ,\
  { ei, -df,  ct, -dw, -eu,  dr, -co,  dk, -en, -ed,  da, -cy,  eb,  ep, -dm,  cm, -dp,  es,  dy, -cv,  dd, -eg, -ek,  dh, -cr,  du,  ew, -dt,  cq, -di,  el,  ef, -dc,  cw, -dz, -er,  d_, -cl,  dn, -eq, -ea,  cx, -db,  ee,  em, -dj,  cp, -ds,  ev,  dv, -cs,  dg, -ej, -eh,  de, -cu,  dx,  et, -dq,  cn, -dl,  eo,  ec, -cz,  cz, -ec, -eo,  dl, -cn,  dq, -et, -dx,  cu, -de,  eh,  ej, -dg,  cs, -dv, -ev,  ds, -cp,  dj, -em, -ee,  db, -cx,  ea,  eq, -dn,  cl, -d_,  er,  dz, -cw,  dc, -ef, -el,  di, -cq,  dt, -ew, -du,  cr, -dh,  ek,  eg, -dd,  cv, -dy, -es,  dp, -cm,  dm, -ep, -eb,  cy, -da,  ed,  en, -dk,  co, -dr,  eu,  dw, -ct,  df, -ei } ,\
  { bb, -au,  aq, -ax,  be,  ay, -ar,  at, -ba, -bc,  av, -ap,  aw, -bd, -az,  as, -as,  az,  bd, -aw,  ap, -av,  bc,  ba, -at,  ar, -ay, -be,  ax, -aq,  au, -bb, -bb,  au, -aq,  ax, -be, -ay,  ar, -at,  ba,  bc, -av,  ap, -aw,  bd,  az, -as,  as, -az, -bd,  aw, -ap,  av, -bc, -ba,  at, -ar,  ay,  be, -ax,  aq, -au,  bb,  bb, -au,  aq, -ax,  be,  ay, -ar,  at, -ba, -bc,  av, -ap,  aw, -bd, -az,  as, -as,  az,  bd, -aw,  ap, -av,  bc,  ba, -at,  ar, -ay, -be,  ax, -aq,  au, -bb, -bb,  au, -aq,  ax, -be, -ay,  ar, -at,  ba,  bc, -av,  ap, -aw,  bd,  az, -as,  as, -az, -bd,  aw, -ap,  av, -bc, -ba,  at, -ar,  ay,  be, -ax,  aq, -au,  bb } ,\
  { ej, -di,  co, -dp,  eq,  ec, -db,  cv, -dw, -ew,  dv, -cu,  dc, -ed, -ep,  d_, -cn,  dj, -ek, -ei,  dh, -cp,  dq, -er, -eb,  da, -cw,  dx,  ev, -du,  ct, -dd,  ee,  eo, -dn,  cm, -dk,  el,  eh, -dg,  cq, -dr,  es,  ea, -cz,  cx, -dy, -eu,  dt, -cs,  de, -ef, -en,  dm, -cl,  dl, -em, -eg,  df, -cr,  ds, -et, -dz,  cy, -cy,  dz,  et, -ds,  cr, -df,  eg,  em, -dl,  cl, -dm,  en,  ef, -de,  cs, -dt,  eu,  dy, -cx,  cz, -ea, -es,  dr, -cq,  dg, -eh, -el,  dk, -cm,  dn, -eo, -ee,  dd, -ct,  du, -ev, -dx,  cw, -da,  eb,  er, -dq,  cp, -dh,  ei,  ek, -dj,  cn, -d_,  ep,  ed, -dc,  cu, -dv,  ew,  dw, -cv,  db, -ec, -eq,  dp, -co,  di, -ej } ,\
  { ce, -br,  bf, -bs,  cf,  cd, -bq,  bg, -bt,  cg,  cc, -bp,  bh, -bu,  ch,  cb, -bo,  bi, -bv,  ci,  ca, -bn,  bj, -bw,  cj,  bz, -bm,  bk, -bx,  ck,  by, -bl,  bl, -by, -ck,  bx, -bk,  bm, -bz, -cj,  bw, -bj,  bn, -ca, -ci,  bv, -bi,  bo, -cb, -ch,  bu, -bh,  bp, -cc, -cg,  bt, -bg,  bq, -cd, -cf,  bs, -bf,  br, -ce, -ce,  br, -bf,  bs, -cf, -cd,  bq, -bg,  bt, -cg, -cc,  bp, -bh,  bu, -ch, -cb,  bo, -bi,  bv, -ci, -ca,  bn, -bj,  bw, -cj, -bz,  bm, -bk,  bx, -ck, -by,  bl, -bl,  by,  ck, -bx,  bk, -bm,  bz,  cj, -bw,  bj, -bn,  ca,  ci, -bv,  bi, -bo,  cb,  ch, -bu,  bh, -bp,  cc,  cg, -bt,  bg, -bq,  cd,  cf, -bs,  bf, -br,  ce } ,\
  { ek, -dl,  cm, -di,  eh,  en, -d_,  cp, -df,  ee,  eq, -dr,  cs, -dc,  eb,  et, -du,  cv, -cz,  dy,  ew, -dx,  cy, -cw,  dv, -eu, -ea,  db, -ct,  ds, -er, -ed,  de, -cq,  dp, -eo, -eg,  dh, -cn,  dm, -el, -ej,  dk, -cl,  dj, -ei, -em,  dn, -co,  dg, -ef, -ep,  dq, -cr,  dd, -ec, -es,  dt, -cu,  da, -dz, -ev,  dw, -cx,  cx, -dw,  ev,  dz, -da,  cu, -dt,  es,  ec, -dd,  cr, -dq,  ep,  ef, -dg,  co, -dn,  em,  ei, -dj,  cl, -dk,  ej,  el, -dm,  cn, -dh,  eg,  eo, -dp,  cq, -de,  ed,  er, -ds,  ct, -db,  ea,  eu, -dv,  cw, -cy,  dx, -ew, -dy,  cz, -cv,  du, -et, -eb,  dc, -cs,  dr, -eq, -ee,  df, -cp,  d_, -en, -eh,  di, -cm,  dl, -ek } ,\
  { an, -ak,  ah, -aj,  am,  ao, -al,  ai, -ai,  al, -ao, -am,  aj, -ah,  ak, -an, -an,  ak, -ah,  aj, -am, -ao,  al, -ai,  ai, -al,  ao,  am, -aj,  ah, -ak,  an,  an, -ak,  ah, -aj,  am,  ao, -al,  ai, -ai,  al, -ao, -am,  aj, -ah,  ak, -an, -an,  ak, -ah,  aj, -am, -ao,  al, -ai,  ai, -al,  ao,  am, -aj,  ah, -ak,  an,  an, -ak,  ah, -aj,  am,  ao, -al,  ai, -ai,  al, -ao, -am,  aj, -ah,  ak, -an, -an,  ak, -ah,  aj, -am, -ao,  al, -ai,  ai, -al,  ao,  am, -aj,  ah, -ak,  an,  an, -ak,  ah, -aj,  am,  ao, -al,  ai, -ai,  al, -ao, -am,  aj, -ah,  ak, -an, -an,  ak, -ah,  aj, -am, -ao,  al, -ai,  ai, -al,  ao,  am, -aj,  ah, -ak,  an } ,\
  { el, -d_,  cr, -db,  dy, -ev, -eb,  de, -co,  dl, -ei, -eo,  dr, -cu,  cy, -dv,  es,  ee, -dh,  cl, -di,  ef,  er, -du,  cx, -cv,  ds, -ep, -eh,  dk, -cn,  df, -ec, -eu,  dx, -da,  cs, -dp,  em,  ek, -dn,  cq, -dc,  dz, -ew, -ea,  dd, -cp,  dm, -ej, -en,  dq, -ct,  cz, -dw,  et,  ed, -dg,  cm, -dj,  eg,  eq, -dt,  cw, -cw,  dt, -eq, -eg,  dj, -cm,  dg, -ed, -et,  dw, -cz,  ct, -dq,  en,  ej, -dm,  cp, -dd,  ea,  ew, -dz,  dc, -cq,  dn, -ek, -em,  dp, -cs,  da, -dx,  eu,  ec, -df,  cn, -dk,  eh,  ep, -ds,  cv, -cx,  du, -er, -ef,  di, -cl,  dh, -ee, -es,  dv, -cy,  cu, -dr,  eo,  ei, -dl,  co, -de,  eb,  ev, -dy,  db, -cr,  d_, -el } ,\
  { cf, -bu,  bj, -bl,  bw, -ch, -cd,  bs, -bh,  bn, -by,  cj,  cb, -bq,  bf, -bp,  ca,  ck, -bz,  bo, -bg,  br, -cc, -ci,  bx, -bm,  bi, -bt,  ce,  cg, -bv,  bk, -bk,  bv, -cg, -ce,  bt, -bi,  bm, -bx,  ci,  cc, -br,  bg, -bo,  bz, -ck, -ca,  bp, -bf,  bq, -cb, -cj,  by, -bn,  bh, -bs,  cd,  ch, -bw,  bl, -bj,  bu, -cf, -cf,  bu, -bj,  bl, -bw,  ch,  cd, -bs,  bh, -bn,  by, -cj, -cb,  bq, -bf,  bp, -ca, -ck,  bz, -bo,  bg, -br,  cc,  ci, -bx,  bm, -bi,  bt, -ce, -cg,  bv, -bk,  bk, -bv,  cg,  ce, -bt,  bi, -bm,  bx, -ci, -cc,  br, -bg,  bo, -bz,  ck,  ca, -bp,  bf, -bq,  cb,  cj, -by,  bn, -bh,  bs, -cd, -ch,  bw, -bl,  bj, -bu,  cf } ,\
  { em, -dr,  cw, -cu,  dp, -ek, -eo,  dt, -cy,  cs, -dn,  ei,  eq, -dv,  da, -cq,  dl, -eg, -es,  dx, -dc,  co, -dj,  ee,  eu, -dz,  de, -cm,  dh, -ec, -ew,  eb, -dg,  cl, -df,  ea, -ev, -ed,  di, -cn,  dd, -dy,  et,  ef, -dk,  cp, -db,  dw, -er, -eh,  dm, -cr,  cz, -du,  ep,  ej, -d_,  ct, -cx,  ds, -en, -el,  dq, -cv,  cv, -dq,  el,  en, -ds,  cx, -ct,  d_, -ej, -ep,  du, -cz,  cr, -dm,  eh,  er, -dw,  db, -cp,  dk, -ef, -et,  dy, -dd,  cn, -di,  ed,  ev, -ea,  df, -cl,  dg, -eb,  ew,  ec, -dh,  cm, -de,  dz, -eu, -ee,  dj, -co,  dc, -dx,  es,  eg, -dl,  cq, -da,  dv, -eq, -ei,  dn, -cs,  cy, -dt,  eo,  ek, -dp,  cu, -cw,  dr, -em } ,\
  { bc, -ax,  as, -aq,  av, -ba, -be,  az, -au,  ap, -at,  ay, -bd, -bb,  aw, -ar,  ar, -aw,  bb,  bd, -ay,  at, -ap,  au, -az,  be,  ba, -av,  aq, -as,  ax, -bc, -bc,  ax, -as,  aq, -av,  ba,  be, -az,  au, -ap,  at, -ay,  bd,  bb, -aw,  ar, -ar,  aw, -bb, -bd,  ay, -at,  ap, -au,  az, -be, -ba,  av, -aq,  as, -ax,  bc,  bc, -ax,  as, -aq,  av, -ba, -be,  az, -au,  ap, -at,  ay, -bd, -bb,  aw, -ar,  ar, -aw,  bb,  bd, -ay,  at, -ap,  au, -az,  be,  ba, -av,  aq, -as,  ax, -bc, -bc,  ax, -as,  aq, -av,  ba,  be, -az,  au, -ap,  at, -ay,  bd,  bb, -aw,  ar, -ar,  aw, -bb, -bd,  ay, -at,  ap, -au,  az, -be, -ba,  av, -aq,  as, -ax,  bc } ,\
  { en, -du,  db, -cn,  dg, -dz,  es,  ei, -dp,  cw, -cs,  dl, -ee, -ew,  ed, -dk,  cr, -cx,  dq, -ej, -er,  dy, -df,  cm, -dc,  dv, -eo, -em,  dt, -da,  co, -dh,  ea, -et, -eh,  d_, -cv,  ct, -dm,  ef,  ev, -ec,  dj, -cq,  cy, -dr,  ek,  eq, -dx,  de, -cl,  dd, -dw,  ep,  el, -ds,  cz, -cp,  di, -eb,  eu,  eg, -dn,  cu, -cu,  dn, -eg, -eu,  eb, -di,  cp, -cz,  ds, -el, -ep,  dw, -dd,  cl, -de,  dx, -eq, -ek,  dr, -cy,  cq, -dj,  ec, -ev, -ef,  dm, -ct,  cv, -d_,  eh,  et, -ea,  dh, -co,  da, -dt,  em,  eo, -dv,  dc, -cm,  df, -dy,  er,  ej, -dq,  cx, -cr,  dk, -ed,  ew,  ee, -dl,  cs, -cw,  dp, -ei, -es,  dz, -dg,  cn, -db,  du, -en } ,\
  { cg, -bx,  bo, -bf,  bn, -bw,  cf,  ch, -by,  bp, -bg,  bm, -bv,  ce,  ci, -bz,  bq, -bh,  bl, -bu,  cd,  cj, -ca,  br, -bi,  bk, -bt,  cc,  ck, -cb,  bs, -bj,  bj, -bs,  cb, -ck, -cc,  bt, -bk,  bi, -br,  ca, -cj, -cd,  bu, -bl,  bh, -bq,  bz, -ci, -ce,  bv, -bm,  bg, -bp,  by, -ch, -cf,  bw, -bn,  bf, -bo,  bx, -cg, -cg,  bx, -bo,  bf, -bn,  bw, -cf, -ch,  by, -bp,  bg, -bm,  bv, -ce, -ci,  bz, -bq,  bh, -bl,  bu, -cd, -cj,  ca, -br,  bi, -bk,  bt, -cc, -ck,  cb, -bs,  bj, -bj,  bs, -cb,  ck,  cc, -bt,  bk, -bi,  br, -ca,  cj,  cd, -bu,  bl, -bh,  bq, -bz,  ci,  ce, -bv,  bm, -bg,  bp, -by,  ch,  cf, -bw,  bn, -bf,  bo, -bx,  cg } ,\
  { eo, -dx,  dg, -cp,  cx, -d_,  ef, -ew, -eg,  dp, -cy,  co, -df,  dw, -en, -ep,  dy, -dh,  cq, -cw,  dn, -ee,  ev,  eh, -dq,  cz, -cn,  de, -dv,  em,  eq, -dz,  di, -cr,  cv, -dm,  ed, -eu, -ei,  dr, -da,  cm, -dd,  du, -el, -er,  ea, -dj,  cs, -cu,  dl, -ec,  et,  ej, -ds,  db, -cl,  dc, -dt,  ek,  es, -eb,  dk, -ct,  ct, -dk,  eb, -es, -ek,  dt, -dc,  cl, -db,  ds, -ej, -et,  ec, -dl,  cu, -cs,  dj, -ea,  er,  el, -du,  dd, -cm,  da, -dr,  ei,  eu, -ed,  dm, -cv,  cr, -di,  dz, -eq, -em,  dv, -de,  cn, -cz,  dq, -eh, -ev,  ee, -dn,  cw, -cq,  dh, -dy,  ep,  en, -dw,  df, -co,  cy, -dp,  eg,  ew, -ef,  d_, -cx,  cp, -dg,  dx, -eo } ,\
  { ag, -af,  ae, -ad,  ad, -ae,  af, -ag, -ag,  af, -ae,  ad, -ad,  ae, -af,  ag,  ag, -af,  ae, -ad,  ad, -ae,  af, -ag, -ag,  af, -ae,  ad, -ad,  ae, -af,  ag,  ag, -af,  ae, -ad,  ad, -ae,  af, -ag, -ag,  af, -ae,  ad, -ad,  ae, -af,  ag,  ag, -af,  ae, -ad,  ad, -ae,  af, -ag, -ag,  af, -ae,  ad, -ad,  ae, -af,  ag,  ag, -af,  ae, -ad,  ad, -ae,  af, -ag, -ag,  af, -ae,  ad, -ad,  ae, -af,  ag,  ag, -af,  ae, -ad,  ad, -ae,  af, -ag, -ag,  af, -ae,  ad, -ad,  ae, -af,  ag,  ag, -af,  ae, -ad,  ad, -ae,  af, -ag, -ag,  af, -ae,  ad, -ad,  ae, -af,  ag,  ag, -af,  ae, -ad,  ad, -ae,  af, -ag, -ag,  af, -ae,  ad, -ad,  ae, -af,  ag } ,\
  { ep, -ea,  dl, -cw,  co, -dd,  ds, -eh,  ew,  ei, -dt,  de, -cp,  cv, -dk,  dz, -eo, -eq,  eb, -dm,  cx, -cn,  dc, -dr,  eg, -ev, -ej,  du, -df,  cq, -cu,  dj, -dy,  en,  er, -ec,  dn, -cy,  cm, -db,  dq, -ef,  eu,  ek, -dv,  dg, -cr,  ct, -di,  dx, -em, -es,  ed, -d_,  cz, -cl,  da, -dp,  ee, -et, -el,  dw, -dh,  cs, -cs,  dh, -dw,  el,  et, -ee,  dp, -da,  cl, -cz,  d_, -ed,  es,  em, -dx,  di, -ct,  cr, -dg,  dv, -ek, -eu,  ef, -dq,  db, -cm,  cy, -dn,  ec, -er, -en,  dy, -dj,  cu, -cq,  df, -du,  ej,  ev, -eg,  dr, -dc,  cn, -cx,  dm, -eb,  eq,  eo, -dz,  dk, -cv,  cp, -de,  dt, -ei, -ew,  eh, -ds,  dd, -co,  cw, -dl,  ea, -ep } ,\
  { ch, -ca,  bt, -bm,  bf, -bl,  bs, -bz,  cg,  ci, -cb,  bu, -bn,  bg, -bk,  br, -by,  cf,  cj, -cc,  bv, -bo,  bh, -bj,  bq, -bx,  ce,  ck, -cd,  bw, -bp,  bi, -bi,  bp, -bw,  cd, -ck, -ce,  bx, -bq,  bj, -bh,  bo, -bv,  cc, -cj, -cf,  by, -br,  bk, -bg,  bn, -bu,  cb, -ci, -cg,  bz, -bs,  bl, -bf,  bm, -bt,  ca, -ch, -ch,  ca, -bt,  bm, -bf,  bl, -bs,  bz, -cg, -ci,  cb, -bu,  bn, -bg,  bk, -br,  by, -cf, -cj,  cc, -bv,  bo, -bh,  bj, -bq,  bx, -ce, -ck,  cd, -bw,  bp, -bi,  bi, -bp,  bw, -cd,  ck,  ce, -bx,  bq, -bj,  bh, -bo,  bv, -cc,  cj,  cf, -by,  br, -bk,  bg, -bn,  bu, -cb,  ci,  cg, -bz,  bs, -bl,  bf, -bm,  bt, -ca,  ch } ,\
  { eq, -ed,  dq, -dd,  cq, -cs,  df, -ds,  ef, -es, -eo,  eb, -d_,  db, -co,  cu, -dh,  du, -eh,  eu,  em, -dz,  dm, -cz,  cm, -cw,  dj, -dw,  ej, -ew, -ek,  dx, -dk,  cx, -cl,  cy, -dl,  dy, -el, -ev,  ei, -dv,  di, -cv,  cn, -da,  dn, -ea,  en,  et, -eg,  dt, -dg,  ct, -cp,  dc, -dp,  ec, -ep, -er,  ee, -dr,  de, -cr,  cr, -de,  dr, -ee,  er,  ep, -ec,  dp, -dc,  cp, -ct,  dg, -dt,  eg, -et, -en,  ea, -dn,  da, -cn,  cv, -di,  dv, -ei,  ev,  el, -dy,  dl, -cy,  cl, -cx,  dk, -dx,  ek,  ew, -ej,  dw, -dj,  cw, -cm,  cz, -dm,  dz, -em, -eu,  eh, -du,  dh, -cu,  co, -db,  d_, -eb,  eo,  es, -ef,  ds, -df,  cs, -cq,  dd, -dq,  ed, -eq } ,\
  { bd, -ba,  ax, -au,  ar, -ap,  as, -av,  ay, -bb,  be,  bc, -az,  aw, -at,  aq, -aq,  at, -aw,  az, -bc, -be,  bb, -ay,  av, -as,  ap, -ar,  au, -ax,  ba, -bd, -bd,  ba, -ax,  au, -ar,  ap, -as,  av, -ay,  bb, -be, -bc,  az, -aw,  at, -aq,  aq, -at,  aw, -az,  bc,  be, -bb,  ay, -av,  as, -ap,  ar, -au,  ax, -ba,  bd,  bd, -ba,  ax, -au,  ar, -ap,  as, -av,  ay, -bb,  be,  bc, -az,  aw, -at,  aq, -aq,  at, -aw,  az, -bc, -be,  bb, -ay,  av, -as,  ap, -ar,  au, -ax,  ba, -bd, -bd,  ba, -ax,  au, -ar,  ap, -as,  av, -ay,  bb, -be, -bc,  az, -aw,  at, -aq,  aq, -at,  aw, -az,  bc,  be, -bb,  ay, -av,  as, -ap,  ar, -au,  ax, -ba,  bd } ,\
  { er, -eg,  dv, -dk,  cz, -co,  cs, -dd,  d_, -dz,  ek, -ev, -en,  ec, -dr,  dg, -cv,  cl, -cw,  dh, -ds,  ed, -eo, -eu,  ej, -dy,  dn, -dc,  cr, -cp,  da, -dl,  dw, -eh,  es,  eq, -ef,  du, -dj,  cy, -cn,  ct, -de,  dp, -ea,  el, -ew, -em,  eb, -dq,  df, -cu,  cm, -cx,  di, -dt,  ee, -ep, -et,  ei, -dx,  dm, -db,  cq, -cq,  db, -dm,  dx, -ei,  et,  ep, -ee,  dt, -di,  cx, -cm,  cu, -df,  dq, -eb,  em,  ew, -el,  ea, -dp,  de, -ct,  cn, -cy,  dj, -du,  ef, -eq, -es,  eh, -dw,  dl, -da,  cp, -cr,  dc, -dn,  dy, -ej,  eu,  eo, -ed,  ds, -dh,  cw, -cl,  cv, -dg,  dr, -ec,  en,  ev, -ek,  dz, -d_,  dd, -cs,  co, -cz,  dk, -dv,  eg, -er } ,\
  { ci, -cd,  by, -bt,  bo, -bj,  bf, -bk,  bp, -bu,  bz, -ce,  cj,  ch, -cc,  bx, -bs,  bn, -bi,  bg, -bl,  bq, -bv,  ca, -cf,  ck,  cg, -cb,  bw, -br,  bm, -bh,  bh, -bm,  br, -bw,  cb, -cg, -ck,  cf, -ca,  bv, -bq,  bl, -bg,  bi, -bn,  bs, -bx,  cc, -ch, -cj,  ce, -bz,  bu, -bp,  bk, -bf,  bj, -bo,  bt, -by,  cd, -ci, -ci,  cd, -by,  bt, -bo,  bj, -bf,  bk, -bp,  bu, -bz,  ce, -cj, -ch,  cc, -bx,  bs, -bn,  bi, -bg,  bl, -bq,  bv, -ca,  cf, -ck, -cg,  cb, -bw,  br, -bm,  bh, -bh,  bm, -br,  bw, -cb,  cg,  ck, -cf,  ca, -bv,  bq, -bl,  bg, -bi,  bn, -bs,  bx, -cc,  ch,  cj, -ce,  bz, -bu,  bp, -bk,  bf, -bj,  bo, -bt,  by, -cd,  ci } ,\
  { es, -ej,  ea, -dr,  di, -cz,  cq, -co,  cx, -dg,  dp, -dy,  eh, -eq, -eu,  el, -ec,  dt, -dk,  db, -cs,  cm, -cv,  de, -dn,  dw, -ef,  eo,  ew, -en,  ee, -dv,  dm, -dd,  cu, -cl,  ct, -dc,  dl, -du,  ed, -em,  ev,  ep, -eg,  dx, -d_,  df, -cw,  cn, -cr,  da, -dj,  ds, -eb,  ek, -et, -er,  ei, -dz,  dq, -dh,  cy, -cp,  cp, -cy,  dh, -dq,  dz, -ei,  er,  et, -ek,  eb, -ds,  dj, -da,  cr, -cn,  cw, -df,  d_, -dx,  eg, -ep, -ev,  em, -ed,  du, -dl,  dc, -ct,  cl, -cu,  dd, -dm,  dv, -ee,  en, -ew, -eo,  ef, -dw,  dn, -de,  cv, -cm,  cs, -db,  dk, -dt,  ec, -el,  eu,  eq, -eh,  dy, -dp,  dg, -cx,  co, -cq,  cz, -di,  dr, -ea,  ej, -es } ,\
  { ao, -an,  am, -al,  ak, -aj,  ai, -ah,  ah, -ai,  aj, -ak,  al, -am,  an, -ao, -ao,  an, -am,  al, -ak,  aj, -ai,  ah, -ah,  ai, -aj,  ak, -al,  am, -an,  ao,  ao, -an,  am, -al,  ak, -aj,  ai, -ah,  ah, -ai,  aj, -ak,  al, -am,  an, -ao, -ao,  an, -am,  al, -ak,  aj, -ai,  ah, -ah,  ai, -aj,  ak, -al,  am, -an,  ao,  ao, -an,  am, -al,  ak, -aj,  ai, -ah,  ah, -ai,  aj, -ak,  al, -am,  an, -ao, -ao,  an, -am,  al, -ak,  aj, -ai,  ah, -ah,  ai, -aj,  ak, -al,  am, -an,  ao,  ao, -an,  am, -al,  ak, -aj,  ai, -ah,  ah, -ai,  aj, -ak,  al, -am,  an, -ao, -ao,  an, -am,  al, -ak,  aj, -ai,  ah, -ah,  ai, -aj,  ak, -al,  am, -an,  ao } ,\
  { et, -em,  ef, -dy,  dr, -dk,  dd, -cw,  cp, -cn,  cu, -db,  di, -dp,  dw, -ed,  ek, -er, -ev,  eo, -eh,  ea, -dt,  dm, -df,  cy, -cr,  cl, -cs,  cz, -dg,  dn, -du,  eb, -ei,  ep, -ew, -eq,  ej, -ec,  dv, -d_,  dh, -da,  ct, -cm,  cq, -cx,  de, -dl,  ds, -dz,  eg, -en,  eu,  es, -el,  ee, -dx,  dq, -dj,  dc, -cv,  co, -co,  cv, -dc,  dj, -dq,  dx, -ee,  el, -es, -eu,  en, -eg,  dz, -ds,  dl, -de,  cx, -cq,  cm, -ct,  da, -dh,  d_, -dv,  ec, -ej,  eq,  ew, -ep,  ei, -eb,  du, -dn,  dg, -cz,  cs, -cl,  cr, -cy,  df, -dm,  dt, -ea,  eh, -eo,  ev,  er, -ek,  ed, -dw,  dp, -di,  db, -cu,  cn, -cp,  cw, -dd,  dk, -dr,  dy, -ef,  em, -et } ,\
  { cj, -cg,  cd, -ca,  bx, -bu,  br, -bo,  bl, -bi,  bf, -bh,  bk, -bn,  bq, -bt,  bw, -bz,  cc, -cf,  ci,  ck, -ch,  ce, -cb,  by, -bv,  bs, -bp,  bm, -bj,  bg, -bg,  bj, -bm,  bp, -bs,  bv, -by,  cb, -ce,  ch, -ck, -ci,  cf, -cc,  bz, -bw,  bt, -bq,  bn, -bk,  bh, -bf,  bi, -bl,  bo, -br,  bu, -bx,  ca, -cd,  cg, -cj, -cj,  cg, -cd,  ca, -bx,  bu, -br,  bo, -bl,  bi, -bf,  bh, -bk,  bn, -bq,  bt, -bw,  bz, -cc,  cf, -ci, -ck,  ch, -ce,  cb, -by,  bv, -bs,  bp, -bm,  bj, -bg,  bg, -bj,  bm, -bp,  bs, -bv,  by, -cb,  ce, -ch,  ck,  ci, -cf,  cc, -bz,  bw, -bt,  bq, -bn,  bk, -bh,  bf, -bi,  bl, -bo,  br, -bu,  bx, -ca,  cd, -cg,  cj } ,\
  { eu, -ep,  ek, -ef,  ea, -dv,  dq, -dl,  dg, -db,  cw, -cr,  cm, -co,  ct, -cy,  dd, -di,  dn, -ds,  dx, -ec,  eh, -em,  er, -ew, -es,  en, -ei,  ed, -dy,  dt, -d_,  dj, -de,  cz, -cu,  cp, -cl,  cq, -cv,  da, -df,  dk, -dp,  du, -dz,  ee, -ej,  eo, -et, -ev,  eq, -el,  eg, -eb,  dw, -dr,  dm, -dh,  dc, -cx,  cs, -cn,  cn, -cs,  cx, -dc,  dh, -dm,  dr, -dw,  eb, -eg,  el, -eq,  ev,  et, -eo,  ej, -ee,  dz, -du,  dp, -dk,  df, -da,  cv, -cq,  cl, -cp,  cu, -cz,  de, -dj,  d_, -dt,  dy, -ed,  ei, -en,  es,  ew, -er,  em, -eh,  ec, -dx,  ds, -dn,  di, -dd,  cy, -ct,  co, -cm,  cr, -cw,  db, -dg,  dl, -dq,  dv, -ea,  ef, -ek,  ep, -eu } ,\
  { be, -bd,  bc, -bb,  ba, -az,  ay, -ax,  aw, -av,  au, -at,  as, -ar,  aq, -ap,  ap, -aq,  ar, -as,  at, -au,  av, -aw,  ax, -ay,  az, -ba,  bb, -bc,  bd, -be, -be,  bd, -bc,  bb, -ba,  az, -ay,  ax, -aw,  av, -au,  at, -as,  ar, -aq,  ap, -ap,  aq, -ar,  as, -at,  au, -av,  aw, -ax,  ay, -az,  ba, -bb,  bc, -bd,  be,  be, -bd,  bc, -bb,  ba, -az,  ay, -ax,  aw, -av,  au, -at,  as, -ar,  aq, -ap,  ap, -aq,  ar, -as,  at, -au,  av, -aw,  ax, -ay,  az, -ba,  bb, -bc,  bd, -be, -be,  bd, -bc,  bb, -ba,  az, -ay,  ax, -aw,  av, -au,  at, -as,  ar, -aq,  ap, -ap,  aq, -ar,  as, -at,  au, -av,  aw, -ax,  ay, -az,  ba, -bb,  bc, -bd,  be } ,\
  { ev, -es,  ep, -em,  ej, -eg,  ed, -ea,  dx, -du,  dr, -d_,  dl, -di,  df, -dc,  cz, -cw,  ct, -cq,  cn, -cl,  co, -cr,  cu, -cx,  da, -dd,  dg, -dj,  dm, -dp,  ds, -dv,  dy, -eb,  ee, -eh,  ek, -en,  eq, -et,  ew,  eu, -er,  eo, -el,  ei, -ef,  ec, -dz,  dw, -dt,  dq, -dn,  dk, -dh,  de, -db,  cy, -cv,  cs, -cp,  cm, -cm,  cp, -cs,  cv, -cy,  db, -de,  dh, -dk,  dn, -dq,  dt, -dw,  dz, -ec,  ef, -ei,  el, -eo,  er, -eu, -ew,  et, -eq,  en, -ek,  eh, -ee,  eb, -dy,  dv, -ds,  dp, -dm,  dj, -dg,  dd, -da,  cx, -cu,  cr, -co,  cl, -cn,  cq, -ct,  cw, -cz,  dc, -df,  di, -dl,  d_, -dr,  du, -dx,  ea, -ed,  eg, -ej,  em, -ep,  es, -ev } ,\
  { ck, -cj,  ci, -ch,  cg, -cf,  ce, -cd,  cc, -cb,  ca, -bz,  by, -bx,  bw, -bv,  bu, -bt,  bs, -br,  bq, -bp,  bo, -bn,  bm, -bl,  bk, -bj,  bi, -bh,  bg, -bf,  bf, -bg,  bh, -bi,  bj, -bk,  bl, -bm,  bn, -bo,  bp, -bq,  br, -bs,  bt, -bu,  bv, -bw,  bx, -by,  bz, -ca,  cb, -cc,  cd, -ce,  cf, -cg,  ch, -ci,  cj, -ck, -ck,  cj, -ci,  ch, -cg,  cf, -ce,  cd, -cc,  cb, -ca,  bz, -by,  bx, -bw,  bv, -bu,  bt, -bs,  br, -bq,  bp, -bo,  bn, -bm,  bl, -bk,  bj, -bi,  bh, -bg,  bf, -bf,  bg, -bh,  bi, -bj,  bk, -bl,  bm, -bn,  bo, -bp,  bq, -br,  bs, -bt,  bu, -bv,  bw, -bx,  by, -bz,  ca, -cb,  cc, -cd,  ce, -cf,  cg, -ch,  ci, -cj,  ck } ,\
  { ew, -ev,  eu, -et,  es, -er,  eq, -ep,  eo, -en,  em, -el,  ek, -ej,  ei, -eh,  eg, -ef,  ee, -ed,  ec, -eb,  ea, -dz,  dy, -dx,  dw, -dv,  du, -dt,  ds, -dr,  dq, -dp,  d_, -dn,  dm, -dl,  dk, -dj,  di, -dh,  dg, -df,  de, -dd,  dc, -db,  da, -cz,  cy, -cx,  cw, -cv,  cu, -ct,  cs, -cr,  cq, -cp,  co, -cn,  cm, -cl,  cl, -cm,  cn, -co,  cp, -cq,  cr, -cs,  ct, -cu,  cv, -cw,  cx, -cy,  cz, -da,  db, -dc,  dd, -de,  df, -dg,  dh, -di,  dj, -dk,  dl, -dm,  dn, -d_,  dp, -dq,  dr, -ds,  dt, -du,  dv, -dw,  dx, -dy,  dz, -ea,  eb, -ec,  ed, -ee,  ef, -eg,  eh, -ei,  ej, -ek,  el, -em,  en, -eo,  ep, -eq,  er, -es,  et, -eu,  ev, -ew } ,\
}





//--------------------------------------------------------------------------------------------------

//coefficients

#if RExt__HIGH_PRECISION_FORWARD_TRANSFORM
const TMatrixCoeff g_aiT2[TRANSFORM_NUMBER_OF_DIRECTIONS][2][2] =
{
  DEFINE_DCT2x2_MATRIX( 16384),
  DEFINE_DCT2x2_MATRIX(    64)
};

const TMatrixCoeff g_aiT4 [TRANSFORM_NUMBER_OF_DIRECTIONS][4][4]   =
{
  DEFINE_DCT4x4_MATRIX  (16384, 21266,  9224),
  DEFINE_DCT4x4_MATRIX  (   64,    83,    36)
};

const TMatrixCoeff g_aiT8 [TRANSFORM_NUMBER_OF_DIRECTIONS][8][8]   =
{
  DEFINE_DCT8x8_MATRIX  (16384, 21266,  9224, 22813, 19244, 12769,  4563),
  DEFINE_DCT8x8_MATRIX  (   64,    83,    36,    89,    75,    50,    18)
};

const TMatrixCoeff g_aiT16[TRANSFORM_NUMBER_OF_DIRECTIONS][16][16] =
{
  DEFINE_DCT16x16_MATRIX(16384, 21266,  9224, 22813, 19244, 12769,  4563, 23120, 22063, 20450, 17972, 14642, 11109,  6446,  2316),
  DEFINE_DCT16x16_MATRIX(   64,    83,    36,    89,    75,    50,    18,    90,    87,    80,    70,    57,    43,    25,     9)
};

const TMatrixCoeff g_aiT32[TRANSFORM_NUMBER_OF_DIRECTIONS][32][32] =
{
  DEFINE_DCT32x32_MATRIX(16384, 21266,  9224, 22813, 19244, 12769,  4563, 23120, 22063, 20450, 17972, 14642, 11109,  6446,  2316, 23106, 22852, 22445, 21848, 20995, 19810, 18601, 17143, 15718, 13853, 11749,  9846,  7908,  5573,  3281,   946),
  DEFINE_DCT32x32_MATRIX(   64,    83,    36,    89,    75,    50,    18,    90,    87,    80,    70,    57,    43,    25,     9,    90,    90,    88,    85,    82,    78,    73,    67,    61,    54,    46,    38,    31,    22,    13,     4)
};

const TMatrixCoeff g_aiT64[TRANSFORM_NUMBER_OF_DIRECTIONS][64][64] =
{
  DEFINE_DCT64x64_MATRIX( 65536, 85627, 35468, 90901, 77062, 51491, 18081, 92236, 88691, 81738, 71644, 58797, 43690, 26904, 9084, 92570, 91679, 89904, 87264, 83783, 79496, 74443, 68673, 62241, 55211, 47648, 39627, 31224, 22520, 13599, 4548, 92654, 92431, 91985, 91317, 90430, 89325, 88004, 86472, 84731, 82786, 80641, 78303, 75775, 73065, 70180, 67125, 63908, 60537, 57021, 53367, 49585, 45683, 41671, 37559, 33356, 29073, 24719, 20307, 15845, 11345, 6818, 2275 ),
  DEFINE_DCT64x64_MATRIX(   256,   334,   139,   355,   301,   201,    71,   360,   346,   319,   280,   230,   171,   105,   35,   362,   358,   351,   341,   327,   311,   291,   268,   243,   216,   186,   155,   122,    88,    53,   18,   362,   361,   359,   357,   353,   349,   344,   338,   331,   323,   315,   306,   296,   285,   274,   262,   250,   236,   223,   208,   194,   178,   163,   147,   130,   114,    97,    79,    62,    44,   27,    9 )
};

const TMatrixCoeff g_aiT128[TRANSFORM_NUMBER_OF_DIRECTIONS][128][128] =
{
  DEFINE_DCT128x128_MATRIX( 65536, 85627, 35468, 90901, 77062, 51491, 18081, 92236, 88691, 81738, 71644, 58797, 43690, 26904, 9084, 92570, 91679, 89904, 87264, 83783, 79496, 74443, 68673, 62241, 55211, 47648, 39627, 31224, 22520, 13599, 4548, 92654, 92431, 91985, 91317, 90430, 89325, 88004, 86472, 84731, 82786, 80641, 78303, 75775, 73065, 70180, 67125, 63908, 60537, 57021, 53367, 49585, 45683, 41671, 37559, 33356, 29073, 24719, 20307, 15845, 11345, 6818, 2275, 92675, 92619, 92507, 92340, 92117, 91839, 91505, 91116, 90672, 90174, 89621, 89015, 88354, 87641, 86874, 86056, 85185, 84263, 83291, 82268, 81196, 80075, 78905, 77688, 76425, 75115, 73760, 72360, 70917, 69431, 67904, 66335, 64727, 63079, 61394, 59672, 57913, 56120, 54293, 52433, 50542, 48620, 46669, 44690, 42684, 40652, 38595, 36516, 34414, 32292, 30150, 27990, 25814, 23621, 21415, 19195, 16964, 14723, 12473, 10216, 7952, 5683, 3411, 1137 ),
  DEFINE_DCT128x128_MATRIX(   256,   334,   139,   355,   301,   201,    71,   360,   346,   319,   280,   230,   171,   105,   35,   362,   358,   351,   341,   327,   311,   291,   268,   243,   216,   186,   155,   122,    88,    53,   18,   362,   361,   359,   357,   353,   349,   344,   338,   331,   323,   315,   306,   296,   285,   274,   262,   250,   236,   223,   208,   194,   178,   163,   147,   130,   114,    97,    79,    62,    44,   27,    9,   362,   362,   361,   361,   360,   359,   357,   356,   354,   352,   350,   348,   345,   342,   339,   336,   333,   329,   325,   321,   317,   313,   308,   303,   299,   293,   288,   283,   277,   271,   265,   259,   253,   246,   240,   233,   226,   219,   212,   205,   197,   190,   182,   175,   167,   159,   151,   143,   134,   126,   118,   109,   101,    92,    84,    75,    66,    58,    49,    40,   31,   22,   13,    4 )
};

const TMatrixCoeff g_as_DST_MAT_4[TRANSFORM_NUMBER_OF_DIRECTIONS][4][4] =
{
  DEFINE_DST4x4_MATRIX( 7424, 14081, 18893, 21505),
  DEFINE_DST4x4_MATRIX(   29,    55,    74,    84)
};

#else

const TMatrixCoeff g_aiT2 [TRANSFORM_NUMBER_OF_DIRECTIONS][2][2] =
{
  DEFINE_DCT2x2_MATRIX( 64),
  DEFINE_DCT2x2_MATRIX( 64)
};

const TMatrixCoeff g_aiT4 [TRANSFORM_NUMBER_OF_DIRECTIONS][4][4]   =
{
  DEFINE_DCT4x4_MATRIX  (   64,    83,    36),
  DEFINE_DCT4x4_MATRIX  (   64,    83,    36)
};

const TMatrixCoeff g_aiT8 [TRANSFORM_NUMBER_OF_DIRECTIONS][8][8]   =
{
  DEFINE_DCT8x8_MATRIX  (   64,    83,    36,    89,    75,    50,    18),
  DEFINE_DCT8x8_MATRIX  (   64,    83,    36,    89,    75,    50,    18)
};

const TMatrixCoeff g_aiT16[TRANSFORM_NUMBER_OF_DIRECTIONS][16][16] =
{
  DEFINE_DCT16x16_MATRIX(   64,    83,    36,    89,    75,    50,    18,    90,    87,    80,    70,    57,    43,    25,     9),
  DEFINE_DCT16x16_MATRIX(   64,    83,    36,    89,    75,    50,    18,    90,    87,    80,    70,    57,    43,    25,     9)
};

const TMatrixCoeff g_aiT32[TRANSFORM_NUMBER_OF_DIRECTIONS][32][32] =
{
  DEFINE_DCT32x32_MATRIX(   64,    83,    36,    89,    75,    50,    18,    90,    87,    80,    70,    57,    43,    25,     9,    90,    90,    88,    85,    82,    78,    73,    67,    61,    54,    46,    38,    31,    22,    13,     4),
  DEFINE_DCT32x32_MATRIX(   64,    83,    36,    89,    75,    50,    18,    90,    87,    80,    70,    57,    43,    25,     9,    90,    90,    88,    85,    82,    78,    73,    67,    61,    54,    46,    38,    31,    22,    13,     4)
};

const TMatrixCoeff g_aiT64[TRANSFORM_NUMBER_OF_DIRECTIONS][64][64] =
{
  DEFINE_DCT64x64_MATRIX(  256, 334, 139, 355, 301, 201, 71, 360, 346, 319, 280, 230, 171, 105, 35, 362, 358, 351, 341, 327, 311, 291, 268, 243, 216, 186, 155, 122, 88, 53, 18, 362, 361, 359, 357, 353, 349, 344, 338, 331, 323, 315, 306, 296, 285, 274, 262, 250, 236, 223, 208, 194, 178, 163, 147, 130, 114, 97, 79, 62, 44, 27, 9),
  DEFINE_DCT64x64_MATRIX(  256, 334, 139, 355, 301, 201, 71, 360, 346, 319, 280, 230, 171, 105, 35, 362, 358, 351, 341, 327, 311, 291, 268, 243, 216, 186, 155, 122, 88, 53, 18, 362, 361, 359, 357, 353, 349, 344, 338, 331, 323, 315, 306, 296, 285, 274, 262, 250, 236, 223, 208, 194, 178, 163, 147, 130, 114, 97, 79, 62, 44, 27, 9)
};
const TMatrixCoeff g_aiT128[TRANSFORM_NUMBER_OF_DIRECTIONS][128][128] =
{
  DEFINE_DCT128x128_MATRIX( 256, 334, 139, 355, 301, 201, 71, 360, 346, 319, 280, 230, 171, 105, 35, 362, 358, 351, 341, 327, 311, 291, 268, 243, 216, 186, 155, 122, 88, 53, 18, 362, 361, 359, 357, 353, 349, 344, 338, 331, 323, 315, 306, 296, 285, 274, 262, 250, 236, 223, 208, 194, 178, 163, 147, 130, 114, 97, 79, 62, 44, 27, 9, 362, 362, 361, 361, 360, 359, 357, 356, 354, 352, 350, 348, 345, 342, 339, 336, 333, 329, 325, 321, 317, 313, 308, 303, 299, 293, 288, 283, 277, 271, 265, 259, 253, 246, 240, 233, 226, 219, 212, 205, 197, 190, 182, 175, 167, 159, 151, 143, 134, 126, 118, 109, 101, 92, 84, 75, 66, 58, 49, 40, 31, 22, 13, 4 ),
  DEFINE_DCT128x128_MATRIX( 256, 334, 139, 355, 301, 201, 71, 360, 346, 319, 280, 230, 171, 105, 35, 362, 358, 351, 341, 327, 311, 291, 268, 243, 216, 186, 155, 122, 88, 53, 18, 362, 361, 359, 357, 353, 349, 344, 338, 331, 323, 315, 306, 296, 285, 274, 262, 250, 236, 223, 208, 194, 178, 163, 147, 130, 114, 97, 79, 62, 44, 27, 9, 362, 362, 361, 361, 360, 359, 357, 356, 354, 352, 350, 348, 345, 342, 339, 336, 333, 329, 325, 321, 317, 313, 308, 303, 299, 293, 288, 283, 277, 271, 265, 259, 253, 246, 240, 233, 226, 219, 212, 205, 197, 190, 182, 175, 167, 159, 151, 143, 134, 126, 118, 109, 101, 92, 84, 75, 66, 58, 49, 40, 31, 22, 13, 4 )
};

#if HEVC_USE_4x4_DSTVII
const TMatrixCoeff g_as_DST_MAT_4[TRANSFORM_NUMBER_OF_DIRECTIONS][4][4] =
{
  DEFINE_DST4x4_MATRIX(   29,    55,    74,    84),
  DEFINE_DST4x4_MATRIX(   29,    55,    74,    84)
};

#endif
#endif

#undef DEFINE_DST4x4_MATRIX
#undef DEFINE_DCT4x4_MATRIX
#undef DEFINE_DCT8x8_MATRIX
#undef DEFINE_DCT16x16_MATRIX
#undef DEFINE_DCT32x32_MATRIX
#undef DEFINE_DCT64x64_MATRIX
#undef DEFINE_DCT128x128_MATRIX

//--------------------------------------------------------------------------------------------------
