diff --git a/BioInf/ViennaRNA/Bindings/FFI/CoFold.chs b/BioInf/ViennaRNA/Bindings/FFI/CoFold.chs
--- a/BioInf/ViennaRNA/Bindings/FFI/CoFold.chs
+++ b/BioInf/ViennaRNA/Bindings/FFI/CoFold.chs
@@ -87,7 +87,7 @@
   let ar = A.accumArray (const id) 0 ((1,1),(n,n)) $ zip [ (ii,jj) | ii <- [n,n-1..1], jj <- [n,n-1..ii]] (drop 1 $ map unsafeCoerce xs)
   return (eF, s, ar)
 
-foreign import ccall "co_pf_fold_P" co_pf_fold_p :: CString -> CString -> IO CofoldFPtr
+foreign import ccall "co_pf_fold" co_pf_fold_p :: CString -> CString -> IO CofoldFPtr
 
 #c
 cofoldF * co_pf_fold_p (char * inp, char * str)
diff --git a/ViennaRNA-bindings.cabal b/ViennaRNA-bindings.cabal
--- a/ViennaRNA-bindings.cabal
+++ b/ViennaRNA-bindings.cabal
@@ -1,5 +1,5 @@
 name:                ViennaRNA-bindings
-version:             0.0.3.0
+version:             0.1.0.0
 synopsis:            ViennaRNA v2 bindings
 homepage:            http://www.tbi.univie.ac.at/~choener/
 license:             OtherLicense
@@ -17,19 +17,46 @@
   Only a partial set of bindings is provided. If you need additional functions,
   please open an issue on github.
   .
-  The ViennaRNA package needs to be installed. In addition, you should create a
-  shared object from libRNA.a:
-  .
-  @mkdir tmp; ar -x /usr/lib/libRNA.a; rm svm.o; gcc -shared *.o -o libRNA.so@
-  .
-  Then, copy the resulting .so file into your library path or set
-  @LD_LIBRARY_PATH@ appropriately. This is only necessary, if you want ghci
-  support.
+  The ViennaRNA bindings package now directly provide all necessary
+  functionality. Please note that this package uses the same license as the
+  ViennaRNA package.
   .
   If you use this software, please cite:
   R. Lorenz, S.H. Bernhart, C. Hoener zu Siederdissen, H. Tafer, C. Flamm, P.F. Stadler and I.L. Hofacker (2011),
   "ViennaRNA Package 2.0", Algorithms for Molecular Biology: 6:26
 
+extra-source-files:
+  cbits/circfold.inc
+  include/1.8.4_epars.h
+  include/1.8.4_intloops.h
+  include/aln_util.h
+  include/cofold.h
+  include/config.h
+  include/data_structures.h
+  include/energy_const.h
+  include/energy_par.h
+  include/fold.h
+  include/fold_vars.h
+  include/gquad.h
+  include/intl11dH.h
+  include/intl11.h
+  include/intl21dH.h
+  include/intl21.h
+  include/intl22dH.h
+  include/intl22.h
+  include/list.h
+  include/loop_energies.h
+  include/naview.h
+  include/pair_mat.h
+  include/params.h,
+  include/part_func_co.h
+  include/part_func.h
+  include/plot_layouts.h
+  include/PS_dot.h
+  include/subopt.h
+  include/utils.h
+
+
 library
   exposed-modules:
     -- public interfaces
@@ -46,6 +73,19 @@
   build-tools:
     c2hs
   extra-libraries:
-    RNA
-    gomp
+  c-sources:
+    cbits/fold.c
+    cbits/utils.c
+    cbits/fold_vars.c
+    cbits/energy_par.c
+    cbits/gquad.c
+    cbits/params.c
+    cbits/part_func.c
+    cbits/part_func_co.c
+    cbits/cofold.c
+  cc-options:
+  include-dirs: include
+  includes: config.h
+--    RNA
+--    gomp
 
diff --git a/cbits/circfold.inc b/cbits/circfold.inc
new file mode 100644
--- /dev/null
+++ b/cbits/circfold.inc
@@ -0,0 +1,211 @@
+/* -*-C-*- */
+/* this file contains code for folding circular RNAs */
+/* it's #include'd into fold.c */
+
+PRIVATE void fill_arrays_circ(const char *string, int *bt){
+  /* variant of fold() for circular RNAs */
+  /* auxiliarry arrays:
+     fM2 = multiloop region with exactly two stems, extending to 3' end
+     for stupid dangles=1 case we also need:
+     fM_d3 = multiloop region with >= 2 stems, starting at pos 2
+             (a pair (k,n) will form 3' dangle with pos 1)
+     fM_d5 = multiloop region with >= 2 stems, extending to pos n-1
+             (a pair (1,k) will form a 5' dangle with pos n)
+  */
+  int Hi, Hj, Ii, Ij, Ip, Iq, Mi;
+  int *fM_d3, *fM_d5, Md3i, Md5i, FcMd3, FcMd5;
+  int i,j, p,q,length, energy;
+  int dangle_model = P->model_details.dangles;
+
+  length = (int) strlen(string);
+
+  FcH = FcI= FcM = FcMd3= FcMd5= Fc = INF;
+  for (i=1; i<length; i++)
+    for (j=i+TURN+1; j <= length; j++) {
+      int ij, bonus=0, type, u, new_c, no_close;
+      u = length-j + i-1;
+      if (u<TURN) continue;
+
+      ij = indx[j]+i;
+      type = ptype[ij];
+
+      /* enforcing structure constraints */
+      if ((BP[i]==j)||(BP[i]==-1)||(BP[i]==-2)) bonus -= BONUS;
+      if ((BP[j]==-1)||(BP[j]==-3)) bonus -= BONUS;
+      if ((BP[i]==-4)||(BP[j]==-4)) type=0;
+
+      no_close = (((type==3)||(type==4))&&no_closingGU&&(bonus==0));
+
+      /* if (j-i-1 > max_separation) type = 0; */  /* forces locality degree */
+
+      type=rtype[type];
+      if (!type) continue;
+      if (no_close) new_c = FORBIDDEN;
+      else {
+        char loopseq[10];
+        /*int si1, sj1;*/
+        if (u<7) {
+          strcpy(loopseq , string+j-1);
+          strncat(loopseq, string, i);
+        }
+        new_c = E_Hairpin(u, type, S1[j+1], S1[i-1],  loopseq, P)+bonus+c[ij];
+      }
+      if (new_c<FcH) {
+        FcH = new_c; Hi=i; Hj=j;
+      }
+
+      for (p = j+1; p < length ; p++) {
+        int u1, qmin;
+        u1 = p-j-1;
+        if (u1+i-1>MAXLOOP) break;
+        qmin = u1+i-1+length-MAXLOOP;
+        if (qmin<p+TURN+1) qmin = p+TURN+1;
+        for (q = qmin; q <=length; q++) {
+          int u2, type_2/*, si1, sq1*/;
+          type_2 = rtype[ptype[indx[q]+p]];
+          if (type_2==0) continue;
+          u2 = i-1 + length-q;
+          if (u1+u2>MAXLOOP) continue;
+          energy = E_IntLoop(u1, u2, type, type_2, S1[j+1], S1[i-1], S1[p-1], S1[q+1], P);
+          new_c = c[ij] + c[indx[q]+p] + energy;
+          if (new_c<FcI) {
+            FcI = new_c; Ii=i; Ij=j; Ip=p; Iq=q;
+          }
+        }
+      }
+    }
+  Fc = MIN2(FcI, FcH);
+
+  /* compute the fM2 array (multi loops with exactly 2 helices) */
+  /* to get a unique ML decomposition, just use fM1 instead of fML
+     below. However, that will not work with dangle_model==1  */
+  for (i=1; i<length-TURN; i++) {
+    int u;
+    fM2[i] = INF;
+    for (u=i+TURN; u<length-TURN; u++)
+      fM2[i] = MIN2(fM2[i], fML[indx[u]+i] + fML[indx[length]+u+1]);
+  }
+
+  for (i=TURN+1; i<length-2*TURN; i++) {
+    int fm;
+    fm = fML[indx[i]+1]+fM2[i+1]+P->MLclosing;
+    if (fm<FcM) {
+      FcM=fm; Mi=i;
+    }
+  }
+  Fc = MIN2(Fc, FcM);
+
+  if (dangle_model==1) {
+    int u;
+    fM_d3 =  (int *) space(sizeof(int)*(length+2));
+    fM_d5 =  (int *) space(sizeof(int)*(length+2));
+    for (i=TURN+1; i<length-TURN; i++) {
+      fM_d3[i] = INF;
+      for (u=2+TURN; u<i-TURN; u++)
+        fM_d3[i] = MIN2(fM_d3[i], fML[indx[u]+2] + fML[indx[i]+u+1]);
+    }
+    for (i=2*TURN+1; i<length-TURN; i++) {
+      int fm, type;
+      type = ptype[indx[length]+i+1];
+      if (type==0) continue;
+      fm = fM_d3[i]+c[indx[length]+i+1]+E_MLstem(type, -1, S1[1], P) + P->MLclosing;
+      if (fm<FcMd3) {
+        FcMd3=fm; Md3i=i;
+      }
+      fm = fM_d3[i-1]+c[indx[length]+i+1]+E_MLstem(type, S1[i], S1[1], P) + P->MLclosing;
+      if (fm<FcMd3) {
+        FcMd3=fm; Md3i=-i;
+      }
+    }
+
+    for (i=TURN+1; i<length-TURN; i++) {
+      fM_d5[i] = INF;
+      for (u=i+TURN; u<length-TURN; u++)
+        fM_d5[i] = MIN2(fM_d5[i], fML[indx[u]+i] + fML[indx[length-1]+u+1]);
+    }
+    for (i=TURN+1; i<length-2*TURN; i++) {
+      int fm, type;
+      type = ptype[indx[i]+1];
+      if (type==0) continue;
+      fm = E_MLstem(type, S1[length], -1, P) + c[indx[i]+1] + fM_d5[i+1] + P->MLclosing;
+      if (fm<FcMd5) {
+        FcMd5=fm; Md5i=i;
+      }
+      fm = E_MLstem(type, S1[length], S1[i+1], P) + c[indx[i]+1] + fM_d5[i+2] + P->MLclosing;
+      if (fm<FcMd5) {
+        FcMd5=fm; Md5i=-i;
+      }
+    }
+    if (FcMd5<MIN2(Fc,FcMd3)) {
+      /* looks like we have to do this ... */
+      sector[++(*bt)].i = 1;
+      sector[(*bt)].j = (Md5i>0)?Md5i:-Md5i;
+      sector[(*bt)].ml = 2;
+      i = (Md5i>0)?Md5i+1 : -Md5i+2; /* let's backtrack fm_d5[Md5i+1] */
+      for (u=i+TURN; u<length-TURN; u++)
+        if (fM_d5[i] == fML[indx[u]+i] + fML[indx[length-1]+u+1]) {
+          sector[++(*bt)].i = i;
+          sector[(*bt)].j = u;
+          sector[(*bt)].ml = 1;
+          sector[++(*bt)].i =u+1;
+          sector[(*bt)].j = length-1;
+          sector[(*bt)].ml = 1;
+          break;
+        }
+      Fc = FcMd5;
+    } else if (FcMd3<Fc) {
+      /* here we go again... */
+      sector[++(*bt)].i = (Md3i>0)?Md3i+1:-Md3i+1;
+      sector[(*bt)].j = length;
+      sector[(*bt)].ml = 2;
+      i = (Md3i>0)? Md3i : -Md3i-1; /* let's backtrack fm_d3[Md3i] */
+      for (u=2+TURN; u<i-TURN; u++)
+        if (fM_d3[i] == fML[indx[u]+2] + fML[indx[i]+u+1]) {
+          sector[++(*bt)].i = 2;
+          sector[(*bt)].j = u;
+          sector[(*bt)].ml = 1;
+          sector[++(*bt)].i =u+1;
+          sector[(*bt)].j = i;
+          sector[(*bt)].ml = 1;
+          break;
+        }
+      Fc = FcMd3;
+    }
+    free(fM_d3);
+    free(fM_d5);
+  }
+  else if(Fc < INF){
+    if (FcH==Fc) {
+      sector[++(*bt)].i = Hi;
+      sector[(*bt)].j = Hj;
+      sector[(*bt)].ml = 2;
+    }
+    else if (FcI==Fc) {
+      sector[++(*bt)].i = Ii;
+      sector[(*bt)].j = Ij;
+      sector[(*bt)].ml = 2;
+      sector[++(*bt)].i = Ip;
+      sector[(*bt)].j = Iq;
+      sector[(*bt)].ml = 2;
+    }
+    else if (FcM==Fc) { /* grumpf we found a Multiloop */
+      int fm, u;
+      /* backtrack in fM2 */
+      fm = fM2[Mi+1];
+      for (u=Mi+TURN+1; u<length-TURN; u++)
+        if (fm == fML[indx[u]+Mi+1] + fML[indx[length]+u+1]) {
+                sector[++(*bt)].i=Mi+1;
+                sector[(*bt)].j=u;
+                sector[(*bt)].ml = 1;
+                sector[++(*bt)].i=u+1;
+                sector[(*bt)].j=length;
+                sector[(*bt)].ml = 1;
+                break;
+        }
+      sector[++(*bt)].i = 1;
+      sector[(*bt)].j = Mi;
+      sector[(*bt)].ml = 1;
+    }
+  }
+}
+
diff --git a/cbits/cofold.c b/cbits/cofold.c
new file mode 100644
--- /dev/null
+++ b/cbits/cofold.c
@@ -0,0 +1,1502 @@
+/* Last changed Time-stamp: <2008-12-03 17:44:38 ivo> */
+/*
+                  minimum free energy
+                  RNA secondary structure prediction
+
+                  c Ivo Hofacker, Chrisoph Flamm
+                  original implementation by
+                  Walter Fontana
+
+                  Vienna RNA package
+*/
+
+#include <config.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ctype.h>
+#include <string.h>
+#include <limits.h>
+
+#include "utils.h"
+#include "energy_par.h"
+#include "fold_vars.h"
+#include "pair_mat.h"
+#include "params.h"
+#include "subopt.h"
+#include "fold.h"
+#include "loop_energies.h"
+#include "gquad.h"
+#include "cofold.h"
+
+#ifdef _OPENMP
+#include <omp.h>
+#endif
+
+#define PAREN
+
+#define STACK_BULGE1      1       /* stacking energies for bulges of size 1 */
+#define NEW_NINIO         1       /* new asymetry penalty */
+#define MAXSECTORS        500     /* dimension for a backtrack array */
+#define LOCALITY          0.      /* locality parameter for base-pairs */
+#undef TURN
+#define TURN              0       /* reset minimal base pair span for intermolecular pairings */
+#define TURN2             3       /* used by zukersubopt */
+#define SAME_STRAND(I,J)  (((I)>=cut_point)||((J)<cut_point))
+
+/*
+#################################
+# GLOBAL VARIABLES              #
+#################################
+*/
+
+
+/*
+#################################
+# PRIVATE VARIABLES             #
+#################################
+*/
+
+PRIVATE float   mfe1, mfe2;       /* minimum free energies of the monomers */
+PRIVATE int     *indx   = NULL;   /* index for moving in the triangle matrices c[] and fMl[]*/
+PRIVATE int     *c      = NULL;   /* energy array, given that i-j pair */
+PRIVATE int     *cc     = NULL;   /* linear array for calculating canonical structures */
+PRIVATE int     *cc1    = NULL;   /*   "     "        */
+PRIVATE int     *f5     = NULL;   /* energy of 5' end */
+PRIVATE int     *fc     = NULL;   /* energy from i to cutpoint (and vice versa if i>cut) */
+PRIVATE int     *fML    = NULL;   /* multi-loop auxiliary energy array */
+PRIVATE int     *fM1    = NULL;   /* second ML array, only for subopt */
+PRIVATE int     *Fmi    = NULL;   /* holds row i of fML (avoids jumps in memory) */
+PRIVATE int     *DMLi   = NULL;   /* DMLi[j] holds MIN(fML[i,k]+fML[k+1,j])  */
+PRIVATE int     *DMLi1  = NULL;   /*             MIN(fML[i+1,k]+fML[k+1,j])  */
+PRIVATE int     *DMLi2  = NULL;   /*             MIN(fML[i+2,k]+fML[k+1,j])  */
+PRIVATE char    *ptype  = NULL;   /* precomputed array of pair types */
+PRIVATE short   *S = NULL, *S1 = NULL;
+PRIVATE paramT  *P          = NULL;
+PRIVATE int     init_length = -1;
+PRIVATE int     zuker       = 0; /* Do Zuker style suboptimals? */
+PRIVATE sect    sector[MAXSECTORS];   /* stack for backtracking */
+PRIVATE int     length;
+PRIVATE bondT   *base_pair2 = NULL;
+PRIVATE int     *BP; /* contains the structure constrainsts: BP[i]
+                        -1: | = base must be paired
+                        -2: < = base must be paired with j<i
+                        -3: > = base must be paired with j>i
+                        -4: x = base must not pair
+                        positive int: base is paired with int      */
+PRIVATE int     struct_constrained  = 0;
+PRIVATE int     with_gquad          = 0;
+
+PRIVATE int     *ggg = NULL;    /* minimum free energies of the gquadruplexes */
+
+#ifdef _OPENMP
+
+#pragma omp threadprivate(mfe1, mfe2, indx, c, cc, cc1, f5, fc, fML, fM1, Fmi, DMLi, DMLi1, DMLi2,\
+                          ptype, S, S1, P, zuker, sector, length, base_pair2, BP, struct_constrained,\
+                          ggg, with_gquad)
+
+#endif
+
+/*
+#################################
+# PRIVATE FUNCTION DECLARATIONS #
+#################################
+*/
+
+PRIVATE void  init_cofold(int length, paramT *parameters);
+PRIVATE void  get_arrays(unsigned int size);
+/* PRIVATE void  scale_parameters(void); */
+PRIVATE void  make_ptypes(const short *S, const char *structure);
+PRIVATE void  backtrack(const char *sequence);
+PRIVATE int   fill_arrays(const char *sequence);
+PRIVATE void  free_end(int *array, int i, int start);
+
+/*
+#################################
+# BEGIN OF FUNCTION DEFINITIONS #
+#################################
+*/
+
+/*--------------------------------------------------------------------------*/
+PRIVATE void init_cofold(int length, paramT *parameters){
+
+#ifdef _OPENMP
+/* Explicitly turn off dynamic threads */
+  omp_set_dynamic(0);
+#endif
+
+  if (length<1) nrerror("init_cofold: argument must be greater 0");
+  free_co_arrays();
+  get_arrays((unsigned) length);
+  init_length=length;
+
+  indx = get_indx((unsigned) length);
+
+  update_cofold_params_par(parameters);
+}
+
+/*--------------------------------------------------------------------------*/
+
+PRIVATE void get_arrays(unsigned int size){
+  if(size >= (unsigned int)sqrt((double)INT_MAX))
+    nrerror("get_arrays@cofold.c: sequence length exceeds addressable range");
+
+  c     = (int *) space(sizeof(int)*((size*(size+1))/2+2));
+  fML   = (int *) space(sizeof(int)*((size*(size+1))/2+2));
+  if (uniq_ML)
+    fM1    = (int *) space(sizeof(int)*((size*(size+1))/2+2));
+
+  ptype = (char *) space(sizeof(char)*((size*(size+1))/2+2));
+  f5    = (int *) space(sizeof(int)*(size+2));
+  fc    = (int *) space(sizeof(int)*(size+2));
+  cc    = (int *) space(sizeof(int)*(size+2));
+  cc1   = (int *) space(sizeof(int)*(size+2));
+  Fmi   = (int *) space(sizeof(int)*(size+1));
+  DMLi  = (int *) space(sizeof(int)*(size+1));
+  DMLi1 = (int *) space(sizeof(int)*(size+1));
+  DMLi2 = (int *) space(sizeof(int)*(size+1));
+
+  base_pair2 = (bondT *) space(sizeof(bondT)*(1+size/2));
+}
+
+/*--------------------------------------------------------------------------*/
+
+PUBLIC void free_co_arrays(void){
+  if(indx)        free(indx);
+  if(c)           free(c);
+  if(fML)         free(fML);
+  if(f5)          free(f5);
+  if(cc)          free(cc);
+  if(cc1)         free(cc1);
+  if(fc)          free(fc);
+  if(ptype)       free(ptype);
+  if(fM1)         free(fM1);
+  if(base_pair2)  free(base_pair2);
+  if(Fmi)         free(Fmi);
+  if(DMLi)        free(DMLi);
+  if(DMLi1)       free(DMLi1);
+  if(DMLi2)       free(DMLi2);
+  if(P)           free(P);
+  if(ggg)         free(ggg);
+
+  indx = c = fML = f5 = cc = cc1 = fc = fM1 = Fmi = DMLi = DMLi1 = DMLi2 = ggg = NULL;
+  ptype       = NULL;
+  base_pair2  = NULL;
+  P           = NULL;
+  init_length = 0;
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+PUBLIC void export_cofold_arrays_gq(  int **f5_p,
+                                      int **c_p,
+                                      int **fML_p,
+                                      int **fM1_p,
+                                      int **fc_p,
+                                      int **ggg_p,
+                                      int **indx_p,
+                                      char **ptype_p){
+
+  /* make the DP arrays available to routines such as subopt() */
+  *f5_p = f5; *c_p = c;
+  *fML_p = fML; *fM1_p = fM1;
+  *ggg_p = ggg;
+  *indx_p = indx; *ptype_p = ptype;
+  *fc_p =fc;
+}
+
+PUBLIC void export_cofold_arrays( int **f5_p,
+                                  int **c_p,
+                                  int **fML_p,
+                                  int **fM1_p,
+                                  int **fc_p,
+                                  int **indx_p,
+                                  char **ptype_p){
+
+  /* make the DP arrays available to routines such as subopt() */
+  *f5_p = f5; *c_p = c;
+  *fML_p = fML; *fM1_p = fM1;
+  *indx_p = indx; *ptype_p = ptype;
+  *fc_p =fc;
+}
+
+/*--------------------------------------------------------------------------*/
+
+PUBLIC float cofold(const char *string, char *structure) {
+  return cofold_par(string, structure, NULL, fold_constrained);
+}
+
+PUBLIC float cofold_par(const char *string,
+                        char *structure,
+                        paramT *parameters,
+                        int is_constrained){
+
+  int i, length, energy, bonus=0, bonus_cnt=0;
+
+  zuker = 0;
+
+  struct_constrained  = is_constrained;
+  length              = (int) strlen(string);
+
+#ifdef _OPENMP
+  /* always init everything since all global static variables are uninitialized when entering a thread */
+  init_cofold(length, parameters);
+#else
+  if(parameters) init_cofold(length, parameters);
+  else if (length>init_length) init_cofold(length, parameters);
+  else if (fabs(P->temperature - temperature)>1e-6) update_cofold_params_par(parameters);
+#endif
+
+  with_gquad  = P->model_details.gquad;
+  S           = encode_sequence(string, 0);
+  S1          = encode_sequence(string, 1);
+  S1[0]       = S[0]; /* store length at pos. 0 */
+
+  BP = (int *)space(sizeof(int)*(length+2));
+  if(with_gquad){ /* add a guess of how many G's may be involved in a G quadruplex */
+    if(base_pair2)
+      free(base_pair2);
+    base_pair2 = (bondT *) space(sizeof(bondT)*(4*(1+length/2)));
+  }
+
+  make_ptypes(S, structure);
+
+  energy = fill_arrays(string);
+
+  backtrack(string);
+
+#ifdef PAREN
+  parenthesis_structure(structure, base_pair2, length);
+#else
+  letter_structure(structure, base_pair2, length);
+#endif
+
+  /*
+  *  Backward compatibility:
+  *  This block may be removed if deprecated functions
+  *  relying on the global variable "base_pair" vanish from within the package!
+  */
+  base_pair = base_pair2;
+  /*
+  {
+    if(base_pair) free(base_pair);
+    base_pair = (bondT *)space(sizeof(bondT) * (1+length/2));
+    memcpy(base_pair, base_pair2, sizeof(bondT) * (1+length/2));
+  }
+  */
+
+  /* check constraints */
+  for(i=1;i<=length;i++) {
+    if((BP[i]<0)&&(BP[i]>-4)) {
+      bonus_cnt++;
+      if((BP[i]==-3)&&(structure[i-1]==')')) bonus++;
+      if((BP[i]==-2)&&(structure[i-1]=='(')) bonus++;
+      if((BP[i]==-1)&&(structure[i-1]!='.')) bonus++;
+    }
+
+    if(BP[i]>i) {
+      int l;
+      bonus_cnt++;
+      for(l=1; l<=base_pair2[0].i; l++)
+        if(base_pair2[l].i != base_pair2[l].j)
+          if((i==base_pair2[l].i)&&(BP[i]==base_pair2[l].j)) bonus++;
+    }
+  }
+
+  if (bonus_cnt>bonus) fprintf(stderr,"\ncould not enforce all constraints\n");
+  bonus*=BONUS;
+
+  free(S); free(S1); free(BP);
+
+  energy += bonus;      /*remove bonus energies from result */
+
+  if (backtrack_type=='C')
+    return (float) c[indx[length]+1]/100.;
+  else if (backtrack_type=='M')
+    return (float) fML[indx[length]+1]/100.;
+  else
+    return (float) energy/100.;
+}
+
+PRIVATE int fill_arrays(const char *string) {
+  /* fill "c", "fML" and "f5" arrays and return  optimal energy */
+
+  int   i, j, k, length, energy;
+  int   decomp, new_fML, max_separation;
+  int   no_close, type, type_2, tt, maxj;
+  int   bonus=0;
+  int   dangle_model  = P->model_details.dangles;
+  int   noGUclosure   = P->model_details.noGUclosure;
+  int   noLP          = P->model_details.noLP;
+
+  length = (int) strlen(string);
+
+  max_separation = (int) ((1.-LOCALITY)*(double)(length-2)); /* not in use */
+
+  if(with_gquad)
+    ggg = get_gquad_matrix(S, P);
+
+  for (j=1; j<=length; j++) {
+    Fmi[j]=DMLi[j]=DMLi1[j]=DMLi2[j]=INF;
+    fc[j]=0;
+  }
+
+  for (j = 1; j<=length; j++)
+    for (i=1; i<=j; i++) {
+      c[indx[j]+i] = fML[indx[j]+i] = INF;
+      if (uniq_ML) fM1[indx[j]+i] = INF;
+    }
+
+  for (i = length-TURN-1; i >= 1; i--) { /* i,j in [1..length] */
+
+    maxj=(zuker)? (MIN2(i+cut_point-1,length)):length;
+    for (j = i+TURN+1; j <= maxj; j++) {
+      int p, q, ij;
+      ij = indx[j]+i;
+      bonus = 0;
+      type = ptype[ij];
+
+      /* enforcing structure constraints */
+      if ((BP[i]==j)||(BP[i]==-1)||(BP[i]==-2)) bonus -= BONUS;
+      if ((BP[j]==-1)||(BP[j]==-3)) bonus -= BONUS;
+      if ((BP[i]==-4)||(BP[j]==-4)) type=0;
+
+      no_close = (((type==3)||(type==4))&&noGUclosure&&(bonus==0));
+
+      if (j-i-1 > max_separation) type = 0;  /* forces locality degree */
+
+      if (type) {   /* we have a pair */
+        int new_c=0, stackEnergy=INF;
+        short si, sj;
+        si  = SAME_STRAND(i, i+1) ? S1[i+1] : -1;
+        sj  = SAME_STRAND(j-1, j) ? S1[j-1] : -1;
+        /* hairpin ----------------------------------------------*/
+
+        if (SAME_STRAND(i,j)) {
+          if (no_close) new_c = FORBIDDEN;
+          else
+            new_c = E_Hairpin(j-i-1, type, si, sj, string+i-1, P);
+        }
+        else {
+          if (dangle_model)
+            new_c += E_ExtLoop(rtype[type], sj, si, P);
+          else
+            new_c += E_ExtLoop(rtype[type], -1, -1, P);
+        }
+        /*--------------------------------------------------------
+          check for elementary structures involving more than one
+          closing pair.
+          --------------------------------------------------------*/
+
+        for (p = i+1; p <= MIN2(j-2-TURN,i+MAXLOOP+1) ; p++) {
+          int minq = j-i+p-MAXLOOP-2;
+          if (minq<p+1+TURN) minq = p+1+TURN;
+          for (q = minq; q < j; q++) {
+            type_2 = ptype[indx[q]+p];
+
+            if (type_2==0) continue;
+            type_2 = rtype[type_2];
+
+            if (noGUclosure)
+              if (no_close||(type_2==3)||(type_2==4))
+                if ((p>i+1)||(q<j-1)) continue;  /* continue unless stack */
+
+            if (SAME_STRAND(i,p) && SAME_STRAND(q,j))
+              energy = E_IntLoop(p-i-1, j-q-1, type, type_2, si, sj, S1[p-1], S1[q+1], P);
+            else
+              energy = E_IntLoop_Co(rtype[type], rtype[type_2],
+                                    i, j, p, q,
+                                    cut_point,
+                                    si, sj,
+                                    S1[p-1], S1[q+1],
+                                    dangle_model,
+                                    P);
+
+            new_c = MIN2(energy+c[indx[q]+p], new_c);
+            if ((p==i+1)&&(j==q+1)) stackEnergy = energy; /* remember stack energy */
+
+          } /* end q-loop */
+        } /* end p-loop */
+
+        /* multi-loop decomposition ------------------------*/
+
+
+        if (!no_close) {
+          int MLenergy;
+
+          if((si >= 0) && (sj >= 0)){
+            decomp = DMLi1[j-1];
+            tt = rtype[type];
+            MLenergy = P->MLclosing;
+            switch(dangle_model){
+              case 0:   MLenergy += decomp + E_MLstem(tt, -1, -1, P);
+                        break;
+              case 2:   MLenergy += decomp + E_MLstem(tt, sj, si, P);
+                        break;
+              default:  decomp += E_MLstem(tt, -1, -1, P);
+                        decomp = MIN2(decomp, DMLi1[j-2] + E_MLstem(tt, sj, -1, P) + P->MLbase);
+                        decomp = MIN2(decomp, DMLi2[j-1] + E_MLstem(tt, -1, si, P) + P->MLbase);
+                        decomp = MIN2(decomp, DMLi2[j-2] + E_MLstem(tt, sj, si, P) + 2*P->MLbase);
+                        MLenergy += decomp;
+                        break;
+            }
+            new_c = MIN2(new_c, MLenergy);
+          }
+
+          if (!SAME_STRAND(i,j)) { /* cut is somewhere in the multiloop*/
+            decomp = fc[i+1] + fc[j-1];
+            tt = rtype[type];
+            switch(dangle_model){
+              case 0:   decomp += E_ExtLoop(tt, -1, -1, P);
+                        break;
+              case 2:   decomp += E_ExtLoop(tt, sj, si, P);
+                        break;
+              default:  decomp += E_ExtLoop(tt, -1, -1, P);
+                        decomp = MIN2(decomp, fc[i+2] + fc[j-2] + E_ExtLoop(tt, sj, si, P));
+                        decomp = MIN2(decomp, fc[i+2] + fc[j-1] + E_ExtLoop(tt, -1, si, P));
+                        decomp = MIN2(decomp, fc[i+1] + fc[j-2] + E_ExtLoop(tt, sj, -1, P));
+                        break;
+            }
+            new_c = MIN2(new_c, decomp);
+          }
+        } /* end >> if (!no_close) << */
+
+        /* coaxial stacking of (i.j) with (i+1.k) or (k+1.j-1) */
+
+        if (dangle_model==3) {
+          decomp = INF;
+          for (k = i+2+TURN; k < j-2-TURN; k++) {
+            type_2 = ptype[indx[k]+i+1]; type_2 = rtype[type_2];
+            if (type_2)
+              decomp = MIN2(decomp, c[indx[k]+i+1]+P->stack[type][type_2]+
+                            fML[indx[j-1]+k+1]);
+            type_2 = ptype[indx[j-1]+k+1]; type_2 = rtype[type_2];
+            if (type_2)
+              decomp = MIN2(decomp, c[indx[j-1]+k+1]+P->stack[type][type_2]+
+                            fML[indx[k]+i+1]);
+          }
+          /* no TermAU penalty if coax stack */
+          decomp += 2*P->MLintern[1] + P->MLclosing;
+          new_c = MIN2(new_c, decomp);
+        }
+
+        if(with_gquad){
+          /* include all cases where a g-quadruplex may be enclosed by base pair (i,j) */
+          if (!no_close && SAME_STRAND(i,j)) {
+            tt = rtype[type];
+            energy = E_GQuad_IntLoop(i, j, type, S1, ggg, indx, P);
+            new_c = MIN2(new_c, energy);
+          }
+        }
+
+        new_c = MIN2(new_c, cc1[j-1]+stackEnergy);
+        cc[j] = new_c + bonus;
+        if (noLP){
+          if (SAME_STRAND(i,i+1) && SAME_STRAND(j-1,j))
+            c[ij] = cc1[j-1]+stackEnergy+bonus;
+          else /* currently we don't allow stacking over the cut point */
+            c[ij] = FORBIDDEN;
+        }
+        else
+          c[ij] = cc[j];
+
+      } /* end >> if (pair) << */
+
+      else c[ij] = INF;
+
+
+      /* done with c[i,j], now compute fML[i,j] */
+      /* free ends ? -----------------------------------------*/
+      new_fML=INF;
+      if (SAME_STRAND(i-1,i)) {
+        if (SAME_STRAND(i,i+1)) new_fML = fML[ij+1]+P->MLbase;
+        if (SAME_STRAND(j-1,j)) new_fML = MIN2(fML[indx[j-1]+i]+P->MLbase, new_fML);
+        if (SAME_STRAND(j,j+1)) {
+          energy = c[ij];
+          if(dangle_model == 2)
+            energy += E_MLstem(type,(i>1) ? S1[i-1] : -1, (j<length) ? S1[j+1] : -1, P);
+          else
+            energy += E_MLstem(type, -1, -1, P);
+
+          new_fML = MIN2(new_fML, energy);
+
+          if(with_gquad){
+            int gggg = ggg[ij] + E_MLstem(0, -1, -1, P);
+            energy = MIN2(energy, gggg);
+            new_fML = MIN2(new_fML, energy);
+          }
+
+          if(uniq_ML){
+            fM1[ij] = energy;
+            if(SAME_STRAND(j-1,j))
+              fM1[ij] = MIN2(energy, fM1[indx[j-1]+i] + P->MLbase);
+          }
+        }
+        if (dangle_model%2==1) {  /* normal dangles */
+          if (SAME_STRAND(i,i+1)) {
+            tt = ptype[ij+1]; /* i+1,j */
+            new_fML = MIN2(new_fML, c[ij+1] + P->MLbase + E_MLstem(tt, S1[i], -1, P));
+          }
+          if (SAME_STRAND(j-1,j)) {
+            tt = ptype[indx[j-1]+i]; /* i,j-1 */
+            new_fML = MIN2(new_fML, c[indx[j-1]+i] + P->MLbase + E_MLstem(tt, -1, S1[j], P));
+          }
+          if ((SAME_STRAND(j-1,j))&&(SAME_STRAND(i,i+1))) {
+            tt = ptype[indx[j-1]+i+1]; /* i+1,j-1 */
+            new_fML = MIN2(new_fML, c[indx[j-1]+i+1] + 2*P->MLbase + E_MLstem(tt, S1[i], S1[j], P));
+          }
+        }
+      }
+
+      if(with_gquad){
+        if(SAME_STRAND(i, j))
+          new_fML = MIN2(new_fML, ggg[indx[j] + i] + E_MLstem(0, -1, -1, P));
+      }
+
+      /* modular decomposition -------------------------------*/
+
+      {
+        int stopp;     /*loop 1 up to cut, then loop 2*/
+        stopp=(cut_point>0)? (cut_point):(j-2-TURN);
+        for (decomp=INF, k = i+1+TURN; k<stopp; k++)
+          decomp = MIN2(decomp, Fmi[k]+fML[indx[j]+k+1]);
+        k++;
+        for (;k <= j-2-TURN;k++)
+          decomp = MIN2(decomp, Fmi[k]+fML[indx[j]+k+1]);
+      }
+      DMLi[j] = decomp;               /* store for use in ML decompositon */
+      new_fML = MIN2(new_fML,decomp);
+
+      /* coaxial stacking */
+      if (dangle_model==3) {
+        int stopp;
+        stopp=(cut_point>0)? (cut_point):(j-2-TURN);
+        /* additional ML decomposition as two coaxially stacked helices */
+        for (decomp = INF, k = i+1+TURN; k<stopp; k++) {
+          type = ptype[indx[k]+i]; type = rtype[type];
+          type_2 = ptype[indx[j]+k+1]; type_2 = rtype[type_2];
+          if (type && type_2)
+            decomp = MIN2(decomp,
+                          c[indx[k]+i]+c[indx[j]+k+1]+P->stack[type][type_2]);
+        }
+        k++;
+        for (;k <= j-2-TURN; k++) {
+          type = ptype[indx[k]+i]; type = rtype[type];
+          type_2 = ptype[indx[j]+k+1]; type_2 = rtype[type_2];
+          if (type && type_2)
+            decomp = MIN2(decomp,
+                          c[indx[k]+i]+c[indx[j]+k+1]+P->stack[type][type_2]);
+        }
+
+        decomp += 2*P->MLintern[1];
+
+#if 0
+        /* This is needed for Y shaped ML loops with coax stacking of
+           interior pairs, but backtracking will fail if activated */
+        DMLi[j] = MIN2(DMLi[j], decomp);
+        if (SAME_STRAND(j-1,j)) DMLi[j] = MIN2(DMLi[j], DMLi[j-1]+P->MLbase);
+        if (SAME_STRAND(i,i+1)) DMLi[j] = MIN2(DMLi[j], DMLi1[j]+P->MLbase);
+        new_fML = MIN2(new_fML, DMLi[j]);
+#endif
+        new_fML = MIN2(new_fML, decomp);
+      }
+
+      fML[ij] = Fmi[j] = new_fML;     /* substring energy */
+
+    }
+
+    if (i==cut_point)
+      for (j=i; j<=maxj; j++)
+        free_end(fc, j, cut_point);
+    if (i<cut_point)
+      free_end(fc,i,cut_point-1);
+
+
+    {
+      int *FF; /* rotate the auxilliary arrays */
+      FF = DMLi2; DMLi2 = DMLi1; DMLi1 = DMLi; DMLi = FF;
+      FF = cc1; cc1=cc; cc=FF;
+      for (j=1; j<=maxj; j++) {cc[j]=Fmi[j]=DMLi[j]=INF; }
+    }
+  }
+
+  /* calculate energies of 5' and 3' fragments */
+
+  for (i=1; i<=length; i++)
+    free_end(f5, i, 1);
+
+  if (cut_point>0) {
+    mfe1=f5[cut_point-1];
+    mfe2=fc[length];
+    /* add DuplexInit, check whether duplex*/
+    for (i=cut_point; i<=length; i++) {
+      f5[i]=MIN2(f5[i]+P->DuplexInit, fc[i]+fc[1]);
+    }
+  }
+
+  energy = f5[length];
+  if (cut_point<1) mfe1=mfe2=energy;
+  return energy;
+}
+
+PRIVATE void backtrack_co(const char *string, int s, int b /* b=0: start new structure, b \ne 0: add to existing structure */) {
+
+  /*------------------------------------------------------------------
+    trace back through the "c", "fc", "f5" and "fML" arrays to get the
+    base pairing list. No search for equivalent structures is done.
+    This is fast, since only few structure elements are recalculated.
+    ------------------------------------------------------------------*/
+
+  int   i, j, k, length, energy, new;
+  int   no_close, type, type_2, tt;
+  int   bonus;
+  int   dangle_model  = P->model_details.dangles;
+  int   noGUclosure   = P->model_details.noGUclosure;
+  int   noLP          = P->model_details.noLP;
+
+  /* int   b=0;*/
+
+  length = strlen(string);
+  if (s==0) {
+    sector[++s].i = 1;
+    sector[s].j   = length;
+    sector[s].ml  = (backtrack_type=='M') ? 1 : ((backtrack_type=='C')?2:0);
+  }
+  while (s>0) {
+    int ml, fij, fi, cij, traced, i1, j1, mm, p, q, jj=0, gq=0;
+    int canonical = 1;     /* (i,j) closes a canonical structure */
+    i  = sector[s].i;
+    j  = sector[s].j;
+    ml = sector[s--].ml;   /* ml is a flag indicating if backtracking is to
+                              occur in the fML- (1) or in the f-array (0) */
+    if (ml==2) {
+      base_pair2[++b].i = i;
+      base_pair2[b].j   = j;
+      goto repeat1;
+    }
+
+    if (j < i+TURN+1) continue; /* no more pairs in this interval */
+
+
+    if (ml==0) {fij = f5[j]; fi = f5[j-1];}
+    else if (ml==1) {fij = fML[indx[j]+i]; fi = fML[indx[j-1]+i]+P->MLbase;}
+    else /* 3 or 4 */ {
+      fij = fc[j];
+      fi = (ml==3) ? INF : fc[j-1];
+    }
+    if (fij == fi) {  /* 3' end is unpaired */
+      sector[++s].i = i;
+      sector[s].j   = j-1;
+      sector[s].ml  = ml;
+      continue;
+    }
+
+    if (ml==0 || ml==4) { /* backtrack in f5 or fc[i=cut,j>cut] */
+      int *ff;
+      ff = (ml==4) ? fc : f5;
+      switch(dangle_model){
+        case 0:   /* j or j-1 is paired. Find pairing partner */
+                  for (k=j-TURN-1,traced=0; k>=i; k--) {
+                    int cc;
+
+                    if(with_gquad){
+                      if(fij == ff[k-1] + ggg[indx[j]+k]){
+                        /* found the decomposition */
+                        traced = j; jj = k - 1; gq = 1;
+                        break;
+                      }
+                    }
+
+                    type = ptype[indx[j]+k];
+                    if(type){
+                      cc = c[indx[j]+k];
+                      if(!SAME_STRAND(k,j)) cc += P->DuplexInit;
+                      if(fij == ff[k-1] + cc + E_ExtLoop(type, -1, -1, P)){
+                        traced = j; jj = k-1;
+                      }
+                    }
+                    if(traced) break;
+                  }
+
+                  break;
+
+        case 2:   /* j or j-1 is paired. Find pairing partner */
+                  for (k=j-TURN-1,traced=0; k>=i; k--) {
+                    int cc;
+
+                    if(with_gquad){
+                      if(fij == ff[k-1] + ggg[indx[j]+k]){
+                        /* found the decomposition */
+                        traced = j; jj = k - 1; gq = 1;
+                        break;
+                      }
+                    }
+
+                    type = ptype[indx[j]+k];
+                    if(type){
+                      cc = c[indx[j]+k];
+                      if(!SAME_STRAND(k,j)) cc += P->DuplexInit;
+                      if(fij == ff[k-1] + cc + E_ExtLoop(type, (k>1) && SAME_STRAND(k-1,k) ? S1[k-1] : -1, (j<length) && SAME_STRAND(j,j+1) ? S1[j+1] : -1, P)){
+                        traced = j; jj = k-1;
+                      }
+                    }
+                    if(traced) break;
+                  }
+                  break;
+
+        default:  for(k=j-TURN-1,traced=0; k>=i; k--){
+                    int cc;
+                    type = ptype[indx[j]+k];
+
+                    if(with_gquad){
+                      if(fij == ff[k-1] + ggg[indx[j]+k]){
+                        /* found the decomposition */
+                        traced = j; jj = k - 1; gq = 1;
+                        break;
+                      }
+                    }
+
+                    if(type){
+                      cc = c[indx[j]+k];
+                      if(!SAME_STRAND(k,j)) cc += P->DuplexInit;
+                      if(fij == ff[k-1] + cc + E_ExtLoop(type, -1, -1, P)){
+                        traced = j; jj = k-1; break;
+                      }
+                      if((k>1) && SAME_STRAND(k-1,k))
+                        if(fij == ff[k-2] + cc + E_ExtLoop(type, S1[k-1], -1, P)){
+                              traced=j; jj=k-2; break;
+                        }
+                    }
+
+                    type = ptype[indx[j-1]+k];
+                    if(type && SAME_STRAND(j-1,j)){
+                      cc = c[indx[j-1]+k];
+                      if (!SAME_STRAND(k,j-1)) cc += P->DuplexInit; /*???*/
+                      if (fij == cc + ff[k-1] + E_ExtLoop(type, -1, S1[j], P)){
+                            traced=j-1; jj = k-1; break;
+                      }
+                      if(k>i){
+                        if (fij == ff[k-2] + cc + E_ExtLoop(type, SAME_STRAND(k-1,k) ? S1[k-1] : -1, S1[j], P)){
+                          traced=j-1; jj=k-2; break;
+                        }
+                      }
+                    }
+                  }
+
+                  break;
+      }
+      if (!traced) nrerror("backtrack failed in f5 (or fc)");
+      sector[++s].i = i;
+      sector[s].j   = jj;
+      sector[s].ml  = ml;
+
+      i=k; j=traced;
+
+      if(with_gquad && gq){
+        /* goto backtrace of gquadruplex */
+        goto repeat_gquad;
+      }
+
+      base_pair2[++b].i = i;
+      base_pair2[b].j   = j;
+      goto repeat1;
+    }
+    else if (ml==3) { /* backtrack in fc[i<cut,j=cut-1] */
+      if (fc[i] == fc[i+1]) { /* 5' end is unpaired */
+        sector[++s].i = i+1;
+        sector[s].j   = j;
+        sector[s].ml  = ml;
+        continue;
+      }
+      /* i or i+1 is paired. Find pairing partner */
+      switch(dangle_model){
+        case 0:   for (k=i+TURN+1, traced=0; k<=j; k++){
+                    jj=k+1;
+                    type = ptype[indx[k]+i];
+                    if (type) {
+                      if(fc[i] == fc[k+1] + c[indx[k]+i] + E_ExtLoop(type, -1, -1, P)){
+                        traced = i;
+                      }
+                    } else if (with_gquad){
+                      if(fc[i] == fc[k+1] + ggg[indx[k]+i]){
+                        traced = i; gq = 1;
+                        break;
+                      }
+                    }
+
+                    if (traced) break;
+                  }
+                  break;
+        case 2:   for (k=i+TURN+1, traced=0; k<=j; k++){
+                    jj=k+1;
+                    type = ptype[indx[k]+i];
+                    if(type){
+                      if(fc[i] == fc[k+1] + c[indx[k]+i] + E_ExtLoop(type,(i>1 && SAME_STRAND(i-1,i)) ? S1[i-1] : -1,  SAME_STRAND(k,k+1) ? S1[k+1] : -1, P)){
+                        traced = i;
+                      }
+                    } else if (with_gquad){
+                      if(fc[i] == fc[k+1] + ggg[indx[k]+i]){
+                        traced = i; gq = 1;
+                        break;
+                      }
+                    }
+                    if (traced) break;
+                  }
+                  break;
+        default:  for(k=i+TURN+1, traced=0; k<=j; k++){
+                    jj=k+1;
+                    type = ptype[indx[k]+i];
+                    if(type){
+                      if(fc[i] == fc[k+1] + c[indx[k]+i] + E_ExtLoop(type, -1, -1, P)){
+                        traced = i; break;
+                      }
+                      else if(fc[i] == fc[k+2] + c[indx[k]+i] + E_ExtLoop(type, -1, SAME_STRAND(k,k+1) ? S1[k+1] : -1, P)){
+                        traced = i; jj=k+2; break;
+                      }
+                    } else if (with_gquad){
+                      if(fc[i] == fc[k+1] + ggg[indx[k]+i]){
+                        traced = i; gq = 1;
+                        break;
+                      }
+                    }
+
+                    type = ptype[indx[k]+i+1];
+                    if(type){
+                      if(fc[i] == fc[k+1] + c[indx[k]+i+1] + E_ExtLoop(type, SAME_STRAND(i, i+1) ? S1[i] : -1, -1, P)){
+                        traced = i+1; break;
+                      }
+                      if(k<j){
+                        if(fc[i] == fc[k+2] + c[indx[k]+i+1] + E_ExtLoop(type, SAME_STRAND(i, i+1) ? S1[i] : -1, SAME_STRAND(k, k+1) ? S1[k+1] : -1, P)){
+                          traced = i+1; jj=k+2; break;
+                        }
+                      }
+                    }
+                  }
+                  break;
+      }
+
+      if (!traced) nrerror("backtrack failed in fc[] 5' of cut");
+
+      sector[++s].i = jj;
+      sector[s].j   = j;
+      sector[s].ml  = ml;
+
+      j=k; i=traced;
+      if(with_gquad && gq){
+        /* goto backtrace of gquadruplex */
+        goto repeat_gquad;
+      }
+
+
+      base_pair2[++b].i = i;
+      base_pair2[b].j   = j;
+      goto repeat1;
+    }
+
+    else { /* true multi-loop backtrack in fML */
+      if (fML[indx[j]+i+1]+P->MLbase == fij) { /* 5' end is unpaired */
+        sector[++s].i = i+1;
+        sector[s].j   = j;
+        sector[s].ml  = ml;
+        continue;
+      }
+
+      if(with_gquad){
+        if(fij == ggg[indx[j]+i] + E_MLstem(0, -1, -1, P)){
+          /* go to backtracing of quadruplex */
+          goto repeat_gquad;
+        }
+      }
+
+      tt  = ptype[indx[j]+i];
+      cij = c[indx[j]+i];
+      switch(dangle_model){
+        case 0:   if(fij == cij + E_MLstem(tt, -1, -1, P)){
+                    base_pair2[++b].i  = i;
+                    base_pair2[b].j    = j;
+                    goto repeat1;
+                  }
+                  break;
+        case 2:   if(fij == cij + E_MLstem(tt, (i>1) ? S1[i-1] : -1, (j<length) ? S1[j+1] : -1, P)){
+                    base_pair2[++b].i  = i;
+                    base_pair2[b].j    = j;
+                    goto repeat1;
+                  }
+                  break;
+        default:  if(fij == cij + E_MLstem(tt, -1, -1, P)){
+                    base_pair2[++b].i  = i;
+                    base_pair2[b].j    = j;
+                    goto repeat1;
+                  }
+                  tt = ptype[indx[j]+i+1];
+                  if(fij == c[indx[j]+i+1] + P->MLbase + E_MLstem(tt, S1[i], -1, P)){
+                    i++;
+                    base_pair2[++b].i  = i;
+                    base_pair2[b].j    = j;
+                    goto repeat1;
+                  }
+                  tt = ptype[indx[j-1]+i];
+                  if(fij == c[indx[j-1]+i] + P->MLbase + E_MLstem(tt, -1, S1[j], P)){
+                    j--;
+                    base_pair2[++b].i  = i;
+                    base_pair2[b].j    = j;
+                    goto repeat1;
+                  }
+                  tt = ptype[indx[j-1]+i+1];
+                  if(fij == c[indx[j-1]+i+1] + 2*P->MLbase + E_MLstem(tt, S1[i], S1[j], P)){
+                    i++; j--;
+                    base_pair2[++b].i  = i;
+                    base_pair2[b].j    = j;
+                    goto repeat1;
+                  }
+                  break;
+      }
+
+      /* find next component of multiloop */
+      for (k = i+1+TURN; k <= j-2-TURN; k++)
+        if (fij == (fML[indx[k]+i]+fML[indx[j]+k+1]))
+          break;
+
+      if ((dangle_model==3)&&(k>j-2-TURN)) { /* must be coax stack */
+        ml = 2;
+        for (k = i+1+TURN; k <= j-2-TURN; k++) {
+          type = ptype[indx[k]+i];  type= rtype[type];
+          type_2 = ptype[indx[j]+k+1]; type_2= rtype[type_2];
+          if (type && type_2)
+            if (fij == c[indx[k]+i]+c[indx[j]+k+1]+P->stack[type][type_2]+
+                2*P->MLintern[1])
+              break;
+        }
+      }
+
+      sector[++s].i = i;
+      sector[s].j   = k;
+      sector[s].ml  = ml;
+      sector[++s].i = k+1;
+      sector[s].j   = j;
+      sector[s].ml  = ml;
+
+      if (k>j-2-TURN) nrerror("backtrack failed in fML");
+      continue;
+    }
+
+  repeat1:
+
+    /*----- begin of "repeat:" -----*/
+    if (canonical)  cij = c[indx[j]+i];
+    type = ptype[indx[j]+i];
+
+    bonus = 0;
+
+    if ((BP[i]==j)||(BP[i]==-1)||(BP[i]==-2)) bonus -= BONUS;
+    if ((BP[j]==-1)||(BP[j]==-3)) bonus -= BONUS;
+
+    if (noLP)
+      if (cij == c[indx[j]+i]) {
+        /* (i.j) closes canonical structures, thus
+           (i+1.j-1) must be a pair                */
+        type_2 = ptype[indx[j-1]+i+1]; type_2 = rtype[type_2];
+        cij -= P->stack[type][type_2] + bonus;
+        base_pair2[++b].i = i+1;
+        base_pair2[b].j   = j-1;
+        i++; j--;
+        canonical=0;
+        goto repeat1;
+      }
+    canonical = 1;
+
+
+    no_close = (((type==3)||(type==4))&&noGUclosure&&(bonus==0));
+    if (SAME_STRAND(i,j)) {
+      if (no_close) {
+        if (cij == FORBIDDEN) continue;
+      } else
+        if (cij == E_Hairpin(j-i-1, type, S1[i+1], S1[j-1],string+i-1, P)+bonus)
+          continue;
+    }
+    else {
+      if(dangle_model){
+        if(cij == E_ExtLoop(rtype[type], SAME_STRAND(j-1,j) ? S1[j-1] : -1, SAME_STRAND(i,i+1) ? S1[i+1] : -1, P)) continue;
+      }
+      else if(cij == E_ExtLoop(rtype[type], -1, -1, P)) continue;
+    }
+
+    for (p = i+1; p <= MIN2(j-2-TURN,i+MAXLOOP+1); p++) {
+      int minq;
+      minq = j-i+p-MAXLOOP-2;
+      if (minq<p+1+TURN) minq = p+1+TURN;
+      for (q = j-1; q >= minq; q--) {
+
+        type_2 = ptype[indx[q]+p];
+        if (type_2==0) continue;
+        type_2 = rtype[type_2];
+        if (noGUclosure)
+          if (no_close||(type_2==3)||(type_2==4))
+            if ((p>i+1)||(q<j-1)) continue;  /* continue unless stack */
+
+        /* energy = oldLoopEnergy(i, j, p, q, type, type_2); */
+        if (SAME_STRAND(i,p) && SAME_STRAND(q,j))
+          energy = E_IntLoop(p-i-1, j-q-1, type, type_2,
+                              S1[i+1], S1[j-1], S1[p-1], S1[q+1], P);
+        else {
+          energy = E_IntLoop_Co(rtype[type], rtype[type_2], i, j, p, q, cut_point, S1[i+1], S1[j-1], S1[p-1], S1[q+1], dangle_model, P);
+        }
+
+        new = energy+c[indx[q]+p]+bonus;
+        traced = (cij == new);
+        if (traced) {
+          base_pair2[++b].i = p;
+          base_pair2[b].j   = q;
+          i = p, j = q;
+          goto repeat1;
+        }
+      }
+    }
+
+    /* end of repeat: --------------------------------------------------*/
+
+    /* (i.j) must close a fake or true multi-loop */
+    tt = rtype[type];
+    i1 = i+1;
+    j1 = j-1;
+
+    if(with_gquad){
+      /*
+        The case that is handled here actually resembles something like
+        an interior loop where the enclosing base pair is of regular
+        kind and the enclosed pair is not a canonical one but a g-quadruplex
+        that should then be decomposed further...
+      */
+      if(SAME_STRAND(i,j)){
+        if(backtrack_GQuad_IntLoop(cij - bonus, i, j, type, S, ggg, indx, &p, &q, P)){
+          i = p; j = q;
+          goto repeat_gquad;
+        }
+      }
+    }
+
+    /* fake multi-loop */
+    if(!SAME_STRAND(i,j)){
+      int ii, jj, decomp;
+      ii = jj = 0;
+      decomp = fc[i1] + fc[j1];
+      switch(dangle_model){
+        case 0:   if(cij == decomp + E_ExtLoop(tt, -1, -1, P)){
+                    ii=i1, jj=j1;
+                  }
+                  break;
+        case 2:   if(cij == decomp + E_ExtLoop(tt, SAME_STRAND(j-1,j) ? S1[j-1] : -1, SAME_STRAND(i,i+1) ? S1[i+1] : -1, P)){
+                    ii=i1, jj=j1;
+                  }
+
+                  break;
+        default:  if(cij == decomp + E_ExtLoop(tt, -1, -1, P)){
+                    ii=i1, jj=j1;
+                  }
+                  else if(cij == fc[i+2] + fc[j-1] + E_ExtLoop(tt, -1, SAME_STRAND(i,i+1) ? S1[i+1] : -1, P)){
+                    ii = i+2; jj = j1;
+                  }
+                  else if(cij == fc[i+1] + fc[j-2] + E_ExtLoop(tt, SAME_STRAND(j-1,j) ? S1[j-1] : -1, -1, P)){
+                    ii = i1; jj = j-2;
+                  }
+                  else if(cij == fc[i+2] + fc[j-2] + E_ExtLoop(tt, SAME_STRAND(j-1,j) ? S1[j-1] : -1, SAME_STRAND(i,i+1) ? S1[i+1] : -1, P)){
+                    ii = i+2; jj = j-2;
+                  }
+                  break;
+      }
+      if(ii){
+        sector[++s].i = ii;
+        sector[s].j   = cut_point-1;
+        sector[s].ml  = 3;
+        sector[++s].i = cut_point;
+        sector[s].j   = jj;
+        sector[s].ml  = 4;
+        continue;
+      }
+    }
+
+    /* true multi-loop */
+    mm = bonus + P->MLclosing;
+    sector[s+1].ml  = sector[s+2].ml = 1;
+    int ml0   = E_MLstem(tt, -1, -1, P);
+    int ml5   = E_MLstem(tt, SAME_STRAND(j-1,j) ? S1[j-1] : -1, -1, P);
+    int ml3   = E_MLstem(tt, -1, SAME_STRAND(i,i+1) ? S1[i+1] : -1, P);
+    int ml53  = E_MLstem(tt, SAME_STRAND(j-1,j) ? S1[j-1] : -1, SAME_STRAND(i,i+1) ? S1[i+1] : -1, P);
+    for (traced = 0, k = i+2+TURN; k < j-2-TURN; k++) {
+      switch(dangle_model){
+        case 0:   /* no dangles */
+                  if(cij == mm + fML[indx[k]+i+1] + fML[indx[j-1]+k+1] + ml0)
+                    traced = i+1;
+                  break;
+        case 2:   /*double dangles */
+                  if(cij == mm + fML[indx[k]+i+1] + fML[indx[j-1]+k+1] + ml53)
+                    traced = i+1;
+                  break;
+        default:  /* normal dangles */
+                  if(cij == mm + fML[indx[k]+i+1] + fML[indx[j-1]+k+1] + ml0){
+                    traced = i+1;
+                    break;
+                  }
+                  else if (cij == fML[indx[k]+i+2] + fML[indx[j-1]+k+1] + ml3 + mm + P->MLbase){
+                    traced = i1 = i+2;
+                    break;
+                  }
+                  else if (cij == fML[indx[k]+i+1] + fML[indx[j-2]+k+1] + ml5 + mm + P->MLbase){
+                    traced = i1 = i+1; j1 = j-2;
+                    break;
+                  }
+                  else if (cij == fML[indx[k]+i+2] + fML[indx[j-2]+k+1] + ml53 + mm + 2*P->MLbase){
+                    traced = i1 = i+2; j1 = j-2;
+                    break;
+                  }
+                  break;
+      }
+      if(traced) break;
+      /* coaxial stacking of (i.j) with (i+1.k) or (k.j-1) */
+      /* use MLintern[1] since coax stacked pairs don't get TerminalAU */
+      if (dangle_model==3) {
+        int en;
+        type_2 = ptype[indx[k]+i+1]; type_2 = rtype[type_2];
+        if (type_2) {
+          en = c[indx[k]+i+1]+P->stack[type][type_2]+fML[indx[j-1]+k+1];
+          if (cij == en+2*P->MLintern[1]+P->MLclosing) {
+            ml = 2;
+            sector[s+1].ml  = 2;
+            break;
+          }
+        }
+        type_2 = ptype[indx[j-1]+k+1]; type_2 = rtype[type_2];
+        if (type_2) {
+          en = c[indx[j-1]+k+1]+P->stack[type][type_2]+fML[indx[k]+i+1];
+          if (cij == en+2*P->MLintern[1]+P->MLclosing) {
+            sector[s+2].ml = 2;
+            break;
+          }
+        }
+      }
+    }
+    if (k<=j-3-TURN) { /* found the decomposition */
+      sector[++s].i = i1;
+      sector[s].j   = k;
+      sector[++s].i = k+1;
+      sector[s].j   = j1;
+    } else {
+#if 0
+      /* Y shaped ML loops don't work yet */
+      if (dangle_model==3) {
+        /* (i,j) must close a Y shaped ML loop with coax stacking */
+        if (cij == fML[indx[j-2]+i+2] + mm + d3 + d5 + P->MLbase + P->MLbase) {
+          i1 = i+2;
+          j1 = j-2;
+        } else if (cij ==  fML[indx[j-2]+i+1] + mm + d5 + P->MLbase)
+          j1 = j-2;
+        else if (cij ==  fML[indx[j-1]+i+2] + mm + d3 + P->MLbase)
+          i1 = i+2;
+        else /* last chance */
+          if (cij != fML[indx[j-1]+i+1] + mm + P->MLbase)
+            fprintf(stderr,  "backtracking failed in repeat");
+        /* if we arrive here we can express cij via fML[i1,j1]+dangles */
+        sector[++s].i = i1;
+        sector[s].j   = j1;
+      }
+      else
+#endif
+        nrerror("backtracking failed in repeat");
+    }
+
+    continue; /* this is a workarround to not accidentally proceed in the following block */
+
+  repeat_gquad:
+    /*
+      now we do some fancy stuff to backtrace the stacksize and linker lengths
+      of the g-quadruplex that should reside within position i,j
+    */
+    {
+      int l[3], L, a;
+      L = -1;
+      
+      get_gquad_pattern_mfe(S, i, j, P, &L, l);
+      if(L != -1){
+        /* fill the G's of the quadruplex into base_pair2 */
+        for(a=0;a<L;a++){
+          base_pair2[++b].i = i+a;
+          base_pair2[b].j   = i+a;
+          base_pair2[++b].i = i+L+l[0]+a;
+          base_pair2[b].j   = i+L+l[0]+a;
+          base_pair2[++b].i = i+L+l[0]+L+l[1]+a;
+          base_pair2[b].j   = i+L+l[0]+L+l[1]+a;
+          base_pair2[++b].i = i+L+l[0]+L+l[1]+L+l[2]+a;
+          base_pair2[b].j   = i+L+l[0]+L+l[1]+L+l[2]+a;
+        }
+        goto repeat_gquad_exit;
+      }
+      nrerror("backtracking failed in repeat_gquad");
+    }
+  repeat_gquad_exit:
+    asm("nop");
+
+  } /* end >> while (s>0) << */
+
+  base_pair2[0].i = b;    /* save the total number of base pairs */
+}
+
+PRIVATE void free_end(int *array, int i, int start) {
+  int inc, type, energy, length, j, left, right;
+  int dangle_model = P->model_details.dangles;
+
+  inc = (i>start)? 1:-1;
+  length = S[0];
+
+  if (i==start) array[i]=0;
+  else array[i] = array[i-inc];
+  if (inc>0) {
+    left = start; right=i;
+  } else {
+    left = i; right = start;
+  }
+
+  for (j=start; inc*(i-j)>TURN; j+=inc) {
+    int ii, jj;
+    short si, sj;
+    if (i>j) { ii = j; jj = i;} /* inc>0 */
+    else     { ii = i; jj = j;} /* inc<0 */
+    type = ptype[indx[jj]+ii];
+    if (type) {  /* i is paired with j */
+      si = (ii>1)       && SAME_STRAND(ii-1,ii) ? S1[ii-1] : -1;
+      sj = (jj<length)  && SAME_STRAND(jj,jj+1) ? S1[jj+1] : -1;
+      energy = c[indx[jj]+ii];
+      switch(dangle_model){
+        case 0:   
+                  array[i] = MIN2(array[i], array[j-inc] + energy + E_ExtLoop(type, -1, -1, P));
+                  break;
+        case 2:   
+                  array[i] = MIN2(array[i], array[j-inc] + energy + E_ExtLoop(type, si, sj, P));
+                  break;
+        default:     
+                  array[i] = MIN2(array[i], array[j-inc] + energy + E_ExtLoop(type, -1, -1, P));
+                  if(inc > 0){
+                    if(j > left)
+                    array[i] = MIN2(array[i], array[j-2] + energy + E_ExtLoop(type, si, -1, P));
+                  }
+                  else if(j < right)
+                    array[i] = MIN2(array[i], array[j+2] + energy + E_ExtLoop(type, -1, sj, P));
+                  break;
+      }
+    }
+
+    if(with_gquad){
+      if(SAME_STRAND(ii, jj))
+        array[i] = MIN2(array[i], array[j-inc] + ggg[indx[jj]+ii]);
+    }
+
+    if (dangle_model%2==1) {
+      /* interval ends in a dangle (i.e. i-inc is paired) */
+      if (i>j) { ii = j; jj = i-1;} /* inc>0 */
+      else     { ii = i+1; jj = j;} /* inc<0 */
+      type = ptype[indx[jj]+ii];
+      if (!type) continue;
+
+      si = (ii > left)  && SAME_STRAND(ii-1,ii) ? S1[ii-1] : -1;
+      sj = (jj < right) && SAME_STRAND(jj,jj+1) ? S1[jj+1] : -1;
+      energy = c[indx[jj]+ii];
+      if(inc>0)
+        array[i] = MIN2(array[i], array[j - inc] + energy + E_ExtLoop(type, -1, sj, P));
+      else
+        array[i] = MIN2(array[i], array[j - inc] + energy + E_ExtLoop(type, si, -1, P));
+      if(j!= start){ /* dangle_model on both sides */
+        array[i] = MIN2(array[i], array[j-2*inc] + energy + E_ExtLoop(type, si, sj, P));
+      }
+    }
+  }
+}
+
+PUBLIC void update_cofold_params(void){
+  update_cofold_params_par(NULL);
+}
+
+PUBLIC void update_cofold_params_par(paramT *parameters){
+  if(P) free(P);
+
+  if(parameters){
+    P = get_parameter_copy(parameters);
+  } else {
+    model_detailsT md;
+    set_model_details(&md);
+    P = get_scaled_parameters(temperature, md);
+  }
+  make_pair_matrix();
+  if (init_length < 0) init_length=0;
+}
+
+/*---------------------------------------------------------------------------*/
+
+PRIVATE void make_ptypes(const short *S, const char *structure) {
+  int n,i,j,k,l;
+  int noLP = P->model_details.noLP;
+
+  n=S[0];
+  for (k=1; k<n-TURN; k++)
+    for (l=1; l<=2; l++) {
+      int type,ntype=0,otype=0;
+      i=k; j = i+TURN+l; if (j>n) continue;
+      type = pair[S[i]][S[j]];
+      while ((i>=1)&&(j<=n)) {
+        if ((i>1)&&(j<n)) ntype = pair[S[i-1]][S[j+1]];
+        if (noLP && (!otype) && (!ntype))
+          type = 0; /* i.j can only form isolated pairs */
+        ptype[indx[j]+i] = (char) type;
+        otype =  type;
+        type  = ntype;
+        i--; j++;
+      }
+    }
+
+  if (struct_constrained && (structure != NULL))
+    constrain_ptypes(structure, (unsigned int)n, ptype, BP, TURN, 0);
+}
+
+PUBLIC void get_monomere_mfes(float *e1, float *e2) {
+  /*exports monomere free energies*/
+  *e1 = mfe1;
+  *e2 = mfe2;
+}
+
+PRIVATE void backtrack(const char *sequence) {
+  /*routine to call backtrack_co from 1 to n, backtrack type??*/
+  backtrack_co(sequence, 0,0);
+}
+
+PRIVATE int comp_pair(const void *A, const void *B) {
+  bondT *x,*y;
+  int ex, ey;
+  x = (bondT *) A;
+  y = (bondT *) B;
+  ex = c[indx[x->j]+x->i]+c[indx[x->i+length]+x->j];
+  ey = c[indx[y->j]+y->i]+c[indx[y->i+length]+y->j];
+  if (ex>ey) return 1;
+  if (ex<ey) return -1;
+  return (indx[x->j]+x->i - indx[y->j]+y->i);
+}
+
+PUBLIC SOLUTION *zukersubopt(const char *string) {
+  return zukersubopt_par(string, NULL);
+}
+
+PUBLIC SOLUTION *zukersubopt_par(const char *string, paramT *parameters){
+
+/* Compute zuker suboptimal. Here, we're abusing the cofold() code
+   "double" sequence, compute dimerarray entries, track back every base pair.
+   This is slightly wasteful compared to the normal solution */
+
+  char      *doubleseq, *structure, *mfestructure, **todo;
+  int       i, j, counter, num_pairs, psize, p;
+  float     energy;
+  SOLUTION  *zukresults;
+  bondT     *pairlist;
+
+  num_pairs       = counter = 0;
+  zuker           = 1;
+  length          = (int)strlen(string);
+  doubleseq       = (char *)space((2*length+1)*sizeof(char));
+  mfestructure    = (char *) space((unsigned) 2*length+1);
+  structure       = (char *) space((unsigned) 2*length+1);
+  zukresults      = (SOLUTION *)space(((length*(length-1))/2)*sizeof(SOLUTION));
+  mfestructure[0] = '\0';
+  BP              = (int *)space(sizeof(int)*(2*length+2));
+
+  /* double the sequence */
+  strcpy(doubleseq,string);
+  strcat(doubleseq,string);
+  cut_point = length + 1;
+
+  /* get mfe and do forward recursion */
+#ifdef _OPENMP
+  /* always init everything since all global static variables are uninitialized when entering a thread */
+  init_cofold(2 * length, parameters);
+#else
+  if(parameters) init_cofold(2 * length, parameters);
+  else if ((2 * length) > init_length) init_cofold(2 * length, parameters);
+  else if (fabs(P->temperature - temperature)>1e-6) update_cofold_params_par(parameters);
+#endif
+
+
+  S     = encode_sequence(doubleseq, 0);
+  S1    = encode_sequence(doubleseq, 1);
+  S1[0] = S[0]; /* store length at pos. 0 */
+  make_ptypes(S, NULL); /* no constraint folding possible (yet?) with zukersubopt */
+
+  (void)fill_arrays(doubleseq);
+
+  psize     = length;
+  pairlist  = (bondT *) space(sizeof(bondT)*(psize+1));
+  todo      = (char **) space(sizeof(char *)*(length+1));
+  for (i=1; i<length; i++) {
+    todo[i] = (char *) space(sizeof(char)*(length+1));
+  }
+
+  /* Make a list of all base pairs */
+  for (i=1; i<length; i++) {
+    for (j=i+TURN2+1/*??*/; j<=length; j++) {
+      if (ptype[indx[j]+i]==0) continue;
+      if (num_pairs>=psize) {
+        psize = 1.2*psize + 32;
+        pairlist = xrealloc(pairlist, sizeof(bondT)*(psize+1));
+      }
+      pairlist[num_pairs].i   = i;
+      pairlist[num_pairs++].j = j;
+      todo[i][j]=1;
+    }
+  }
+  qsort(pairlist, num_pairs, sizeof(bondT), comp_pair);
+
+  for (p=0; p<num_pairs; p++) {
+    i=pairlist[p].i;
+    j=pairlist[p].j;
+    if (todo[i][j]) {
+      int k;
+      sector[1].i   = i;
+      sector[1].j   = j;
+      sector[1].ml  = 2;
+      backtrack_co(doubleseq, 1,0);
+      sector[1].i   = j;
+      sector[1].j   = i + length;
+      sector[1].ml  = 2;
+      backtrack_co(doubleseq, 1,base_pair2[0].i);
+      energy = c[indx[j]+i]+c[indx[i+length]+j];
+      parenthesis_zuker(structure, base_pair2, length);
+      zukresults[counter].energy      = energy;
+      zukresults[counter++].structure = strdup(structure);
+      for (k = 1; k <= base_pair2[0].i; k++) { /* mark all pairs in structure as done */
+        int x,y;
+        x=base_pair2[k].i;
+        y=base_pair2[k].j;
+        if (x>length) x-=length;
+        if (y>length) y-=length;
+        if (x>y) {
+          int temp;
+          temp=x; x=y; y=temp;
+        }
+        todo[x][y] = 0;
+      }
+    }
+  }
+  /*free zeugs*/
+  free(pairlist);
+  for (i=1; i<length; i++)
+    free(todo[i]);
+  free(todo);
+  free(structure);
+  free(mfestructure);
+  free(doubleseq);
+  zuker=0;
+  free(S); free(S1); free(BP);
+  return zukresults;
+}
+
+
+/*###########################################*/
+/*# deprecated functions below              #*/
+/*###########################################*/
+
+PUBLIC void initialize_cofold(int length){ /* DO NOTHING */ }
diff --git a/cbits/energy_par.c b/cbits/energy_par.c
new file mode 100644
--- /dev/null
+++ b/cbits/energy_par.c
@@ -0,0 +1,791 @@
+
+
+/*
+    Automatically generated using the TurnerParser
+    TurnerParser (c) 2008,2009,2010
+      Christian Hoener zu Siederdissen, TBI Vienna
+      choener (at) tbi.univie.ac.at
+
+    The library enabling this can be found at:
+    http://hackage.haskell.org/package/BiobaseVienna
+    the program can be found at:
+    (sorry, not yet)
+    install using cabal: cabal install (sorry, not yet)
+*/
+
+/*
+     Current free energy parameters are summarized in:
+
+     D.H.Mathews, J. Sabina, M. ZUker, D.H. Turner
+     "Expanded sequence dependence of thermodynamic parameters improves
+     prediction of RNA secondary structure"
+     JMB, 288, pp 911-940, 1999
+
+     Enthalpies taken from:
+
+     A. Walter, D Turner, J Kim, M Lyttle, P M"uller, D Mathews, M Zuker
+     "Coaxial stacking of helices enhances binding of oligoribonucleotides.."
+     PNAS, 91, pp 9218-9222, 1994
+
+     D.H. Turner, N. Sugimoto, and S.M. Freier.
+     "RNA Structure Prediction",
+     Ann. Rev. Biophys. Biophys. Chem. 17, 167-192, 1988.
+
+     John A.Jaeger, Douglas H.Turner, and Michael Zuker.
+     "Improved predictions of secondary structures for RNA",
+     PNAS, 86, 7706-7710, October 1989.
+
+     L. He, R. Kierzek, J. SantaLucia, A.E. Walter, D.H. Turner
+     "Nearest-Neighbor Parameters for GU Mismatches...."
+     Biochemistry 1991, 30 11124-11132
+
+     A.E. Peritz, R. Kierzek, N, Sugimoto, D.H. Turner
+     "Thermodynamic Study of Internal Loops in Oligoribonucleotides..."
+     Biochemistry 1991, 30, 6428--6435
+*/
+
+
+
+#include "energy_const.h"
+/*@unused@*/
+static char rcsid[] = "$Id: energy_par.c,v 1.6 2004/08/12 12:11:57 ivo Exp $";
+
+#define NST 0     /* Energy for nonstandard stacked pairs */
+#define DEF -50   /* Default terminal mismatch, used for I */
+                  /* and any non_pairing bases */
+#define NSM 0     /* terminal mismatch for non standard pairs */
+
+#define PUBLIC
+
+PUBLIC double Tmeasure = 37+K0;  /* temperature of param measurements */
+
+
+/* PUBLIC double lxc37=107.9; */
+PUBLIC double lxc37=107.856;
+PUBLIC int ML_intern37=-90;
+PUBLIC int ML_interndH=-220;
+PUBLIC int ML_closing37=930;
+PUBLIC int ML_closingdH=3000;
+PUBLIC int ML_BASE37=0;
+PUBLIC int ML_BASEdH=0;
+PUBLIC int MAX_NINIO=300;
+PUBLIC int ninio37=60;
+PUBLIC int niniodH=320;
+PUBLIC int TerminalAU37=50;
+PUBLIC int TerminalAUdH=370;
+PUBLIC int DuplexInit37=410;
+PUBLIC int DuplexInitdH=360;
+PUBLIC int TripleC37=100;
+PUBLIC int TripleCdH=1860;
+PUBLIC int MultipleCA37=30;
+PUBLIC int MultipleCAdH=340;
+PUBLIC int MultipleCB37=160;
+PUBLIC int MultipleCBdH=760;
+
+PUBLIC int GQuadAlpha37 = -1800;
+PUBLIC int GQuadAlphadH = -11934;
+PUBLIC int GQuadBeta37 = 1200;
+PUBLIC int GQuadBetadH = 0;
+
+PUBLIC int stack37[NBPAIRS+1][NBPAIRS+1] =
+{{   INF,   INF,   INF,   INF,   INF,   INF,   INF,   INF}
+,{   INF,  -240,  -330,  -210,  -140,  -210,  -210,  -140}
+,{   INF,  -330,  -340,  -250,  -150,  -220,  -240,  -150}
+,{   INF,  -210,  -250,   130,   -50,  -140,  -130,   130}
+,{   INF,  -140,  -150,   -50,    30,   -60,  -100,    30}
+,{   INF,  -210,  -220,  -140,   -60,  -110,   -90,   -60}
+,{   INF,  -210,  -240,  -130,  -100,   -90,  -130,   -90}
+,{   INF,  -140,  -150,   130,    30,   -60,   -90,   130}};
+PUBLIC int stackdH[NBPAIRS+1][NBPAIRS+1] =
+{{   INF,   INF,   INF,   INF,   INF,   INF,   INF,   INF}
+,{   INF, -1060, -1340, -1210,  -560, -1050, -1040,  -560}
+,{   INF, -1340, -1490, -1260,  -830, -1140, -1240,  -830}
+,{   INF, -1210, -1260, -1460, -1350,  -880, -1280,  -880}
+,{   INF,  -560,  -830, -1350,  -930,  -320,  -700,  -320}
+,{   INF, -1050, -1140,  -880,  -320,  -940,  -680,  -320}
+,{   INF, -1040, -1240, -1280,  -700,  -680,  -770,  -680}
+,{   INF,  -560,  -830,  -880,  -320,  -320,  -680,  -320}};
+
+PUBLIC int hairpin37[31] = {   INF,   INF,   INF,   540,   560,   570,   540,   600,   550,   640,   650,   660,   670,   680,   690,   690,   700,   710,   710,   720,   720,   730,   730,   740,   740,   750,   750,   750,   760,   760,   770};
+PUBLIC int hairpindH[31] = {   INF,   INF,   INF,   130,   480,   360,  -290,   130,  -290,   500,   500,   500,   500,   500,   500,   500,   500,   500,   500,   500,   500,   500,   500,   500,   500,   500,   500,   500,   500,   500,   500};
+PUBLIC int bulge37[31] = {   INF,   380,   280,   320,   360,   400,   440,   460,   470,   480,   490,   500,   510,   520,   530,   540,   540,   550,   550,   560,   570,   570,   580,   580,   580,   590,   590,   600,   600,   600,   610};
+PUBLIC int bulgedH[31] = {   INF,  1060,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710,   710};
+PUBLIC int internal_loop37[31] = {   INF,   INF,   100,   100,   110,   200,   200,   210,   230,   240,   250,   260,   270,   280,   290,   290,   300,   310,   310,   320,   330,   330,   340,   340,   350,   350,   350,   360,   360,   370,   370};
+PUBLIC int internal_loopdH[31] = {   INF,   INF,   -720,   -720,  -720,  -680,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130};
+
+PUBLIC int mismatchI37[NBPAIRS+1][5][5] =
+{{{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ }
+,{{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,   -80,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,  -100,     0,  -100,     0}
+ ,{     0,     0,     0,     0,   -60}
+ }
+,{{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,   -80,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,  -100,     0,  -100,     0}
+ ,{     0,     0,     0,     0,   -60}
+ }
+,{{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,   -10,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,   -30,    70,   -30,    70}
+ ,{    70,    70,    70,    70,    10}
+ }
+,{{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,   -10,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,   -30,    70,   -30,    70}
+ ,{    70,    70,    70,    70,    10}
+ }
+,{{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,   -10,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,   -30,    70,   -30,    70}
+ ,{    70,    70,    70,    70,    10}
+ }
+,{{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,   -10,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,   -30,    70,   -30,    70}
+ ,{    70,    70,    70,    70,    10}
+ }
+,{{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,   -10,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,   -30,    70,   -30,    70}
+ ,{    70,    70,    70,    70,    10}
+ }};
+PUBLIC int mismatchIdH[NBPAIRS+1][5][5] =
+{{{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ }
+,{{   280,     0,     0,   280,     0}
+ ,{     0,     0,     0,  -340,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{   280,  -760,     0,   280,     0}
+ ,{     0,     0,     0,     0,  -580}
+ }
+,{{   280,     0,     0,   280,     0}
+ ,{     0,     0,     0,  -340,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{   280,  -760,     0,   280,     0}
+ ,{     0,     0,     0,     0,  -580}
+ }
+,{{   790,   500,   500,   790,   500}
+ ,{   500,   500,   500,   170,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   790,  -260,   500,   790,   500}
+ ,{   500,   500,   500,   500,   -80}
+ }
+,{{   790,   500,   500,   790,   500}
+ ,{   500,   500,   500,   170,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   790,  -260,   500,   790,   500}
+ ,{   500,   500,   500,   500,   -80}
+ }
+,{{   790,   500,   500,   790,   500}
+ ,{   500,   500,   500,   170,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   790,  -260,   500,   790,   500}
+ ,{   500,   500,   500,   500,   -80}
+ }
+,{{   790,   500,   500,   790,   500}
+ ,{   500,   500,   500,   170,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   790,  -260,   500,   790,   500}
+ ,{   500,   500,   500,   500,   -80}
+ }
+,{{   790,   500,   500,   790,   500}
+ ,{   500,   500,   500,   170,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   790,  -260,   500,   790,   500}
+ ,{   500,   500,   500,   500,   -80}
+ }};
+
+PUBLIC int mismatchH37[NBPAIRS+1][5][5] =
+{{{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ }
+,{{   -80,  -100,  -110,  -100,   -80}
+ ,{  -140,  -150,  -150,  -140,  -150}
+ ,{   -80,  -100,  -110,  -100,   -80}
+ ,{  -150,  -230,  -150,  -240,  -150}
+ ,{  -100,  -100,  -140,  -100,  -210}
+ }
+,{{   -50,  -110,   -70,  -110,   -50}
+ ,{  -110,  -110,  -150,  -130,  -150}
+ ,{   -50,  -110,   -70,  -110,   -50}
+ ,{  -150,  -250,  -150,  -220,  -150}
+ ,{  -100,  -110,  -100,  -110,  -160}
+ }
+,{{    20,    20,   -20,   -10,   -20}
+ ,{    20,    20,   -50,   -30,   -50}
+ ,{   -10,   -10,   -20,   -10,   -20}
+ ,{   -50,  -100,   -50,  -110,   -50}
+ ,{   -10,   -10,   -30,   -10,  -100}
+ }
+,{{     0,   -20,   -10,   -20,     0}
+ ,{   -30,   -50,   -30,   -60,   -30}
+ ,{     0,   -20,   -10,   -20,     0}
+ ,{   -30,   -90,   -30,  -110,   -30}
+ ,{   -10,   -20,   -10,   -20,   -90}
+ }
+,{{   -10,   -10,   -20,   -10,   -20}
+ ,{   -30,   -30,   -50,   -30,   -50}
+ ,{   -10,   -10,   -20,   -10,   -20}
+ ,{   -50,  -120,   -50,  -110,   -50}
+ ,{   -10,   -10,   -30,   -10,  -120}
+ }
+,{{     0,   -20,   -10,   -20,     0}
+ ,{   -30,   -50,   -30,   -50,   -30}
+ ,{     0,   -20,   -10,   -20,     0}
+ ,{   -30,  -150,   -30,  -150,   -30}
+ ,{   -10,   -20,   -10,   -20,   -90}
+ }
+,{{    20,    20,   -10,   -10,     0}
+ ,{    20,    20,   -30,   -30,   -30}
+ ,{     0,   -10,   -10,   -10,     0}
+ ,{   -30,   -90,   -30,  -110,   -30}
+ ,{   -10,   -10,   -10,   -10,   -90}
+ }};
+PUBLIC int mismatchHdH[NBPAIRS+1][5][5] =
+{{{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ }
+,{{   560,  -570,   560,  -560,  -270}
+ ,{  -560,  -910,  -560,  -560,  -560}
+ ,{  -270,  -570,  -340,  -570,  -270}
+ ,{   560, -1400,   560,  -920,  -560}
+ ,{  -530,  -570,  -530,  -570, -1440}
+ }
+,{{    50,  -520,    50,  -560,  -400}
+ ,{  -400,  -520,  -400,  -560,  -400}
+ ,{    50,  -720,    50,  -720,  -420}
+ ,{  -400, -1290,  -400,  -620,  -400}
+ ,{   -30,  -720,   -30,  -720, -1080}
+ }
+,{{   970,   140,   970,   140,   570}
+ ,{   570,    30,   570,    20,   570}
+ ,{   970,   140,   970,   140,   340}
+ ,{   570,  -270,   570,    20,   570}
+ ,{   830,   140,   830,   140,   -50}
+ }
+,{{   230,   100,   230,   220,   190}
+ ,{  -110,  -110,  -260,  -520,  -260}
+ ,{   190,   -60,  -140,   -60,   190}
+ ,{   220,   100,  -260,   220,  -260}
+ ,{   230,   -60,   230,   -60,   -70}
+ }
+,{{   970,   140,   970,   140,   570}
+ ,{   570,   -20,   570,    20,   570}
+ ,{   970,   140,   970,   140,   340}
+ ,{   570,  -520,   570,    20,   570}
+ ,{   830,   140,   830,   140,  -380}
+ }
+,{{   230,   -30,   230,   -60,   190}
+ ,{   -30,   -30,  -260,  -520,  -260}
+ ,{   190,   -60,  -140,   -60,   190}
+ ,{  -260,  -590,  -260,  -520,  -260}
+ ,{   230,   -60,   230,   -60,   -70}
+ }
+,{{   970,   140,   970,   220,   570}
+ ,{   570,    30,   570,    20,   570}
+ ,{   970,   140,   970,   140,   340}
+ ,{   570,   100,   570,   220,   570}
+ ,{   830,   140,   830,   140,   -50}
+ }};
+
+PUBLIC int mismatchM37[NBPAIRS+1][5][5] =
+{{{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ }
+,{{   -80,  -100,  -110,  -100,   -80}
+ ,{  -140,  -150,  -150,  -140,  -150}
+ ,{   -80,  -100,  -110,  -100,   -80}
+ ,{  -140,  -140,  -150,  -160,  -150}
+ ,{  -100,  -100,  -140,  -100,  -120}
+ }
+,{{   -50,  -110,   -70,  -110,   -50}
+ ,{  -110,  -110,  -150,  -130,  -150}
+ ,{   -50,  -110,   -70,  -110,   -50}
+ ,{  -140,  -160,  -150,  -140,  -150}
+ ,{   -70,  -110,  -100,  -110,   -70}
+ }
+,{{   -30,   -30,   -70,   -60,   -60}
+ ,{   -30,   -30,  -100,   -80,  -100}
+ ,{   -60,   -60,   -70,   -60,   -70}
+ ,{   -60,   -60,  -100,   -80,  -100}
+ ,{   -60,   -60,   -80,   -60,   -60}
+ }
+,{{   -50,   -50,   -60,   -70,   -50}
+ ,{   -80,  -100,   -80,  -110,   -80}
+ ,{   -50,   -70,   -60,   -70,   -50}
+ ,{   -50,   -50,   -80,   -80,   -80}
+ ,{   -50,   -70,   -60,   -70,   -50}
+ }
+,{{   -60,   -60,   -70,   -60,   -70}
+ ,{   -80,   -80,  -100,   -80,  -100}
+ ,{   -60,   -60,   -70,   -60,   -70}
+ ,{   -80,   -80,  -100,   -80,  -100}
+ ,{   -60,   -60,   -80,   -60,   -80}
+ }
+,{{   -50,   -70,   -60,   -70,   -50}
+ ,{   -80,  -100,   -80,  -110,   -80}
+ ,{   -50,   -70,   -60,   -70,   -50}
+ ,{   -80,  -110,   -80,  -120,   -80}
+ ,{   -50,   -70,   -60,   -70,   -50}
+ }
+,{{   -30,   -30,   -60,   -60,   -50}
+ ,{   -30,   -30,   -80,   -80,   -80}
+ ,{   -50,   -60,   -60,   -60,   -50}
+ ,{   -50,   -50,   -80,   -80,   -80}
+ ,{   -50,   -60,   -60,   -60,   -50}
+ }};
+PUBLIC int mismatchMdH[NBPAIRS+1][5][5] =
+{{{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ }
+,{{  -270,  -570,  -340,  -560,  -270}
+ ,{  -560,  -910,  -560,  -560,  -560}
+ ,{  -270,  -570,  -340,  -570,  -270}
+ ,{  -560,  -820,  -560,  -920,  -560}
+ ,{  -530,  -570,  -530,  -570,  -860}
+ }
+,{{    50,  -520,    50,  -560,  -400}
+ ,{  -400,  -520,  -400,  -560,  -400}
+ ,{    50,  -720,    50,  -720,  -420}
+ ,{  -400,  -710,  -400,  -620,  -400}
+ ,{   -30,  -720,   -30,  -720,  -500}
+ }
+,{{   600,   -60,   600,  -230,   200}
+ ,{   200,  -340,   200,  -350,   200}
+ ,{   600,  -230,   600,  -230,   -30}
+ ,{   200,   -60,   200,  -350,   200}
+ ,{   460,  -230,   460,  -230,   160}
+ }
+,{{   310,   310,  -140,  -150,   140}
+ ,{  -480,  -480,  -630,  -890,  -630}
+ ,{  -180,  -430,  -510,  -430,  -180}
+ ,{   310,   310,  -630,  -150,  -630}
+ ,{   140,  -430,  -140,  -430,   140}
+ }
+,{{   600,  -230,   600,  -230,   200}
+ ,{   200,  -390,   200,  -350,   200}
+ ,{   600,  -230,   600,  -230,   -30}
+ ,{   200,  -310,   200,  -350,   200}
+ ,{   460,  -230,   460,  -230,  -170}
+ }
+,{{   140,  -380,  -140,  -430,   140}
+ ,{  -400,  -400,  -630,  -890,  -630}
+ ,{  -180,  -430,  -510,  -430,  -180}
+ ,{  -380,  -380,  -630,  -890,  -630}
+ ,{   140,  -430,  -140,  -430,   140}
+ }
+,{{   600,   310,   600,  -150,   200}
+ ,{   200,  -340,   200,  -350,   200}
+ ,{   600,  -230,   600,  -230,   -30}
+ ,{   310,   310,   200,  -150,   200}
+ ,{   460,  -230,   460,  -230,   160}
+ }};
+
+PUBLIC int mismatch1nI37[NBPAIRS+1][5][5] =
+{{{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ }
+,{{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ }
+,{{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ }
+,{{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ }
+,{{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ }
+,{{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ }
+,{{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ }
+,{{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ }};
+PUBLIC int mismatch1nIdH[NBPAIRS+1][5][5] =
+{{{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ }
+,{{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ }
+,{{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ }
+,{{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ }
+,{{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ }
+,{{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ }
+,{{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ }
+,{{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ }};
+
+PUBLIC int mismatch23I37[NBPAIRS+1][5][5] =
+{{{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ }
+,{{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,   -50,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,  -110,     0,   -70,     0}
+ ,{     0,     0,     0,     0,   -30}
+ }
+,{{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,  -120,     0,   -70,     0}
+ ,{     0,     0,     0,     0,   -30}
+ }
+,{{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,   -40,    70,     0,    70}
+ ,{    70,    70,    70,    70,    40}
+ }
+,{{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    20,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,   -40,    70,     0,    70}
+ ,{    70,    70,    70,    70,    40}
+ }
+,{{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,   -40,    70,     0,    70}
+ ,{    70,    70,    70,    70,    40}
+ }
+,{{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    20,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,   -40,    70,     0,    70}
+ ,{    70,    70,    70,    70,    40}
+ }
+,{{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,    70,    70,    70,    70}
+ ,{    70,   -40,    70,     0,    70}
+ ,{    70,    70,    70,    70,    40}
+ }};
+PUBLIC int mismatch23IdH[NBPAIRS+1][5][5] =
+{{{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ }
+,{{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,  -570,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,  -860,     0,  -900,     0}
+ ,{     0,     0,     0,     0,  -640}
+ }
+,{{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0,     0,     0,     0,     0}
+ ,{     0, -1090,     0,  -900,     0}
+ ,{     0,     0,     0,     0,  -640}
+ }
+,{{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,  -580,   500,  -400,   500}
+ ,{   500,   500,   500,   500,  -140}
+ }
+,{{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   -60,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,  -360,   500,  -400,   500}
+ ,{   500,   500,   500,   500,  -140}
+ }
+,{{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,  -580,   500,  -400,   500}
+ ,{   500,   500,   500,   500,  -140}
+ }
+,{{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   -60,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,  -360,   500,  -400,   500}
+ ,{   500,   500,   500,   500,  -140}
+ }
+,{{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,   500,   500,   500,   500}
+ ,{   500,  -360,   500,  -400,   500}
+ ,{   500,   500,   500,   500,  -140}
+ }};
+
+PUBLIC int mismatchExt37[NBPAIRS+1][5][5] =
+{{{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ }
+,{{   -80,  -100,  -110,  -100,   -80}
+ ,{  -140,  -150,  -150,  -140,  -150}
+ ,{   -80,  -100,  -110,  -100,   -80}
+ ,{  -140,  -140,  -150,  -160,  -150}
+ ,{  -100,  -100,  -140,  -100,  -120}
+ }
+,{{   -50,  -110,   -70,  -110,   -50}
+ ,{  -110,  -110,  -150,  -130,  -150}
+ ,{   -50,  -110,   -70,  -110,   -50}
+ ,{  -140,  -160,  -150,  -140,  -150}
+ ,{   -70,  -110,  -100,  -110,   -70}
+ }
+,{{   -30,   -30,   -70,   -60,   -60}
+ ,{   -30,   -30,  -100,   -80,  -100}
+ ,{   -60,   -60,   -70,   -60,   -70}
+ ,{   -60,   -60,  -100,   -80,  -100}
+ ,{   -60,   -60,   -80,   -60,   -60}
+ }
+,{{   -50,   -50,   -60,   -70,   -50}
+ ,{   -80,  -100,   -80,  -110,   -80}
+ ,{   -50,   -70,   -60,   -70,   -50}
+ ,{   -50,   -50,   -80,   -80,   -80}
+ ,{   -50,   -70,   -60,   -70,   -50}
+ }
+,{{   -60,   -60,   -70,   -60,   -70}
+ ,{   -80,   -80,  -100,   -80,  -100}
+ ,{   -60,   -60,   -70,   -60,   -70}
+ ,{   -80,   -80,  -100,   -80,  -100}
+ ,{   -60,   -60,   -80,   -60,   -80}
+ }
+,{{   -50,   -70,   -60,   -70,   -50}
+ ,{   -80,  -100,   -80,  -110,   -80}
+ ,{   -50,   -70,   -60,   -70,   -50}
+ ,{   -80,  -110,   -80,  -120,   -80}
+ ,{   -50,   -70,   -60,   -70,   -50}
+ }
+,{{   -30,   -30,   -60,   -60,   -50}
+ ,{   -30,   -30,   -80,   -80,   -80}
+ ,{   -50,   -60,   -60,   -60,   -50}
+ ,{   -50,   -50,   -80,   -80,   -80}
+ ,{   -50,   -60,   -60,   -60,   -50}
+ }};
+PUBLIC int mismatchExtdH[NBPAIRS+1][5][5] =
+{{{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ ,{   INF,   INF,   INF,   INF,   INF}
+ }
+,{{  -270,  -570,  -340,  -560,  -270}
+ ,{  -560,  -910,  -560,  -560,  -560}
+ ,{  -270,  -570,  -340,  -570,  -270}
+ ,{  -560,  -820,  -560,  -920,  -560}
+ ,{  -530,  -570,  -530,  -570,  -860}
+ }
+,{{    50,  -520,    50,  -560,  -400}
+ ,{  -400,  -520,  -400,  -560,  -400}
+ ,{    50,  -720,    50,  -720,  -420}
+ ,{  -400,  -710,  -400,  -620,  -400}
+ ,{   -30,  -720,   -30,  -720,  -500}
+ }
+,{{   600,   -60,   600,  -230,   200}
+ ,{   200,  -340,   200,  -350,   200}
+ ,{   600,  -230,   600,  -230,   -30}
+ ,{   200,   -60,   200,  -350,   200}
+ ,{   460,  -230,   460,  -230,   160}
+ }
+,{{   310,   310,  -140,  -150,   140}
+ ,{  -480,  -480,  -630,  -890,  -630}
+ ,{  -180,  -430,  -510,  -430,  -180}
+ ,{   310,   310,  -630,  -150,  -630}
+ ,{   140,  -430,  -140,  -430,   140}
+ }
+,{{   600,  -230,   600,  -230,   200}
+ ,{   200,  -390,   200,  -350,   200}
+ ,{   600,  -230,   600,  -230,   -30}
+ ,{   200,  -310,   200,  -350,   200}
+ ,{   460,  -230,   460,  -230,  -170}
+ }
+,{{   140,  -380,  -140,  -430,   140}
+ ,{  -400,  -400,  -630,  -890,  -630}
+ ,{  -180,  -430,  -510,  -430,  -180}
+ ,{  -380,  -380,  -630,  -890,  -630}
+ ,{   140,  -430,  -140,  -430,   140}
+ }
+,{{   600,   310,   600,  -150,   200}
+ ,{   200,  -340,   200,  -350,   200}
+ ,{   600,  -230,   600,  -230,   -30}
+ ,{   310,   310,   200,  -150,   200}
+ ,{   460,  -230,   460,  -230,   160}
+ }};
+
+
+PUBLIC int dangle3_37[NBPAIRS+1][5] =
+{{   INF,   INF,   INF,   INF,   INF}
+,{   -80,  -170,   -80,  -170,  -120}
+,{   -40,  -110,   -40,  -130,   -60}
+,{   -50,   -80,   -50,   -80,   -60}
+,{   -10,   -70,   -10,   -70,   -10}
+,{   -50,   -80,   -50,   -80,   -60}
+,{   -10,   -70,   -10,   -70,   -10}
+,{   -10,   -70,   -10,   -70,   -10}};
+PUBLIC int dangle3_dH[NBPAIRS+1][5] =
+{{   INF,   INF,   INF,   INF,   INF}
+,{  -410,  -900,  -410,  -860,  -750}
+,{  -280,  -740,  -280,  -640,  -360}
+,{   -90,  -490,   -90,  -550,  -230}
+,{   -70,  -570,   -70,  -580,  -220}
+,{   -90,  -490,   -90,  -550,  -230}
+,{   -70,  -570,   -70,  -580,  -220}
+,{   -70,  -490,   -70,  -550,  -220}};
+PUBLIC int dangle5_37[NBPAIRS+1][5] =
+{{   INF,   INF,   INF,   INF,   INF}
+,{     0,   -20,   -30,     0,     0}
+,{   -10,   -50,   -30,   -20,   -10}
+,{   -10,   -30,   -10,   -20,   -20}
+,{   -20,   -30,   -30,   -40,   -20}
+,{   -10,   -30,   -10,   -20,   -20}
+,{   -20,   -30,   -30,   -40,   -20}
+,{     0,   -20,   -10,     0,     0}};
+PUBLIC int dangle5_dH[NBPAIRS+1][5] =
+{{   INF,   INF,   INF,   INF,   INF}
+,{    70,  -160,    70,  -460,   -40}
+,{   330,  -240,   330,    80,  -140}
+,{   690,   -50,   690,    60,    60}
+,{   310,   160,   220,    70,   310}
+,{   690,   -50,   690,    60,    60}
+,{   310,   160,   220,    70,   310}
+,{   690,   160,   690,    80,   310}};
+
+PUBLIC char Triloops[241] =
+  "CAACG "
+  "GUUAC "
+;
+PUBLIC int Triloop37[40] = {   680,   690};
+PUBLIC int TriloopdH[40] = {  2370,  1080};
+
+PUBLIC char Tetraloops[281] =
+  "CAACGG "
+  "CCAAGG "
+  "CCACGG "
+  "CCCAGG "
+  "CCGAGG "
+  "CCGCGG "
+  "CCUAGG "
+  "CCUCGG "
+  "CUAAGG "
+  "CUACGG "
+  "CUCAGG "
+  "CUCCGG "
+  "CUGCGG "
+  "CUUAGG "
+  "CUUCGG "
+  "CUUUGG "
+;
+PUBLIC int Tetraloop37[40] = {   550,   330,   370,   340,   350,   360,   370,   250,   360,   280,   370,   270,   280,   350,   370,   370};
+PUBLIC int TetraloopdH[40] = {   690, -1030,  -330,  -890,  -660,  -750,  -350, -1390,  -760, -1070,  -660, -1290, -1070,  -620, -1530,  -680};
+
+PUBLIC char Hexaloops[361] =
+  "ACAGUACU "
+  "ACAGUGAU "
+  "ACAGUGCU "
+  "ACAGUGUU "
+;
+PUBLIC int Hexaloop37[40] = {   280,   360,   290,   180};
+PUBLIC int HexaloopdH[40] = { -1680, -1140, -1280, -1540};
+
+#include "intl11.h"
+#include "intl11dH.h"
+#include "intl21.h"
+#include "intl21dH.h"
+#include "intl22.h"
+#include "intl22dH.h"
+
diff --git a/cbits/fold.c b/cbits/fold.c
new file mode 100644
--- /dev/null
+++ b/cbits/fold.c
@@ -0,0 +1,2765 @@
+/** \file **/
+
+/*
+                  minimum free energy
+                  RNA secondary structure prediction
+
+                  c Ivo Hofacker, Chrisoph Flamm
+                  original implementation by
+                  Walter Fontana
+                  g-quadruplex support and threadsafety
+                  by Ronny Lorenz
+
+                  Vienna RNA package
+*/
+
+#include <config.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ctype.h>
+#include <string.h>
+#include <limits.h>
+
+#include "utils.h"
+#include "energy_par.h"
+#include "fold_vars.h"
+#include "pair_mat.h"
+#include "params.h"
+#include "loop_energies.h"
+#include "data_structures.h"
+#include "gquad.h"
+#include "fold.h"
+
+#ifdef _OPENMP
+#include <omp.h>
+#endif
+
+
+#define PAREN
+#define STACK_BULGE1      1       /* stacking energies for bulges of size 1 */
+#define NEW_NINIO         1       /* new asymetry penalty */
+#define MAXSECTORS        500     /* dimension for a backtrack array */
+#define LOCALITY          0.      /* locality parameter for base-pairs */
+
+#define SAME_STRAND(I,J)  (((I)>=cut_point)||((J)<cut_point))
+
+/*
+#################################
+# GLOBAL VARIABLES              #
+#################################
+*/
+PUBLIC  int logML     = 0;  /* if nonzero use logarithmic ML energy in energy_of_struct */
+PUBLIC  int uniq_ML   = 0;  /* do ML decomposition uniquely (for subopt) */
+PUBLIC  int cut_point = -1; /* set to first pos of second seq for cofolding */
+PUBLIC  int eos_debug = 0;  /* verbose info from energy_of_struct */
+
+/*
+#################################
+# PRIVATE VARIABLES             #
+#################################
+*/
+PRIVATE int     *indx     = NULL; /* index for moving in the triangle matrices c[] and fMl[]*/
+PRIVATE int     *c        = NULL; /* energy array, given that i-j pair */
+PRIVATE int     *cc       = NULL; /* linear array for calculating canonical structures */
+PRIVATE int     *cc1      = NULL; /*   "     "        */
+PRIVATE int     *f5       = NULL; /* energy of 5' end */
+PRIVATE int     *f53      = NULL; /* energy of 5' end with 3' nucleotide not available for mismatches */
+PRIVATE int     *fML      = NULL; /* multi-loop auxiliary energy array */
+PRIVATE int     *fM1      = NULL; /* second ML array, only for subopt */
+PRIVATE int     *fM2      = NULL; /* fM2 = multiloop region with exactly two stems, extending to 3' end        */
+PRIVATE int     *Fmi      = NULL; /* holds row i of fML (avoids jumps in memory) */
+PRIVATE int     *DMLi     = NULL; /* DMLi[j] holds MIN(fML[i,k]+fML[k+1,j])  */
+PRIVATE int     *DMLi1    = NULL; /*             MIN(fML[i+1,k]+fML[k+1,j])  */
+PRIVATE int     *DMLi2    = NULL; /*             MIN(fML[i+2,k]+fML[k+1,j])  */
+PRIVATE int     *DMLi_a   = NULL; /* DMLi_a[j] holds min energy for at least two multiloop stems in [i,j], where j is available for dangling onto a surrounding stem */
+PRIVATE int     *DMLi_o   = NULL; /* DMLi_o[j] holds min energy for at least two multiloop stems in [i,j], where j is unavailable for dangling onto a surrounding stem */
+PRIVATE int     *DMLi1_a  = NULL;
+PRIVATE int     *DMLi1_o  = NULL;
+PRIVATE int     *DMLi2_a  = NULL;
+PRIVATE int     *DMLi2_o  = NULL;
+PRIVATE int     Fc, FcH, FcI, FcM;  /* parts of the exterior loop energies */
+PRIVATE sect    sector[MAXSECTORS]; /* stack of partial structures for backtracking */
+PRIVATE char    *ptype = NULL;      /* precomputed array of pair types */
+PRIVATE short   *S = NULL, *S1 = NULL;
+PRIVATE paramT  *P          = NULL;
+PRIVATE int     init_length = -1;
+PRIVATE int     *BP = NULL; /* contains the structure constrainsts: BP[i]
+                        -1: | = base must be paired
+                        -2: < = base must be paired with j<i
+                        -3: > = base must be paired with j>i
+                        -4: x = base must not pair
+                        positive int: base is paired with int      */
+PRIVATE short   *pair_table         = NULL; /* needed by energy of struct */
+PRIVATE bondT   *base_pair2         = NULL; /* this replaces base_pair from fold_vars.c */
+PRIVATE int     circular            = 0;
+PRIVATE int     struct_constrained  = 0;
+PRIVATE int     with_gquad          = 0;
+
+PRIVATE int     *ggg = NULL;    /* minimum free energies of the gquadruplexes */
+
+#ifdef _OPENMP
+
+#pragma omp threadprivate(indx, c, cc, cc1, f5, f53, fML, fM1, fM2, Fmi,\
+                          DMLi, DMLi1, DMLi2, DMLi_a, DMLi_o, DMLi1_a, DMLi1_o, DMLi2_a, DMLi2_o,\
+                          Fc, FcH, FcI, FcM,\
+                          sector, ptype, S, S1, P, init_length, BP, pair_table, base_pair2, circular, struct_constrained,\
+                          ggg, with_gquad)
+
+#endif
+
+/*
+#################################
+# PRIVATE FUNCTION DECLARATIONS #
+#################################
+*/
+PRIVATE void  get_arrays(unsigned int size);
+PRIVATE int   stack_energy(int i, const char *string, int verbostiy_level);
+PRIVATE int   energy_of_extLoop_pt(int i, short *pair_table);
+PRIVATE int   energy_of_ml_pt(int i, short *pt);
+PRIVATE int   ML_Energy(int i, int is_extloop);
+PRIVATE void  make_ptypes(const short *S, const char *structure);
+PRIVATE void  backtrack(const char *sequence, int s);
+PRIVATE int   fill_arrays(const char *sequence);
+PRIVATE void  fill_arrays_circ(const char *string, int *bt);
+PRIVATE void  init_fold(int length, paramT *parameters);
+/* needed by cofold/eval */
+PRIVATE int   cut_in_loop(int i);
+
+/* deprecated functions */
+/*@unused@*/
+int oldLoopEnergy(int i, int j, int p, int q, int type, int type_2);
+int LoopEnergy(int n1, int n2, int type, int type_2, int si1, int sj1, int sp1, int sq1);
+int HairpinE(int size, int type, int si1, int sj1, const char *string);
+
+
+/*
+#################################
+# BEGIN OF FUNCTION DEFINITIONS #
+#################################
+*/
+
+/* allocate memory for folding process */
+PRIVATE void init_fold(int length, paramT *parameters){
+
+#ifdef _OPENMP
+/* Explicitly turn off dynamic threads */
+  omp_set_dynamic(0);
+#endif
+
+  if (length<1) nrerror("initialize_fold: argument must be greater 0");
+  free_arrays();
+  get_arrays((unsigned) length);
+  init_length=length;
+
+  indx = get_indx((unsigned)length);
+
+  update_fold_params_par(parameters);
+}
+
+/*--------------------------------------------------------------------------*/
+
+PRIVATE void get_arrays(unsigned int size){
+  if(size >= (unsigned int)sqrt((double)INT_MAX))
+    nrerror("get_arrays@fold.c: sequence length exceeds addressable range");
+
+  c     = (int *) space(sizeof(int)*((size*(size+1))/2+2));
+  fML   = (int *) space(sizeof(int)*((size*(size+1))/2+2));
+  if (uniq_ML)
+    fM1 = (int *) space(sizeof(int)*((size*(size+1))/2+2));
+
+  ptype = (char *)space(sizeof(char)*((size*(size+1))/2+2));
+  f5    = (int *) space(sizeof(int)*(size+2));
+  f53   = (int *) space(sizeof(int)*(size+2));
+  cc    = (int *) space(sizeof(int)*(size+2));
+  cc1   = (int *) space(sizeof(int)*(size+2));
+  Fmi   = (int *) space(sizeof(int)*(size+1));
+  DMLi  = (int *) space(sizeof(int)*(size+1));
+  DMLi1 = (int *) space(sizeof(int)*(size+1));
+  DMLi2 = (int *) space(sizeof(int)*(size+1));
+
+  DMLi_a  = (int *) space(sizeof(int)*(size+1));
+  DMLi_o  = (int *) space(sizeof(int)*(size+1));
+  DMLi1_a = (int *) space(sizeof(int)*(size+1));
+  DMLi1_o = (int *) space(sizeof(int)*(size+1));
+  DMLi2_a = (int *) space(sizeof(int)*(size+1));
+  DMLi2_o = (int *) space(sizeof(int)*(size+1));
+
+  base_pair2 = (bondT *) space(sizeof(bondT)*(1+size/2));
+
+  /* extra array(s) for circfold() */
+  if(circular) fM2 =  (int *) space(sizeof(int)*(size+2));
+}
+
+/*--------------------------------------------------------------------------*/
+
+PUBLIC void free_arrays(void){
+  if(indx)      free(indx);
+  if(c)         free(c);
+  if(fML)       free(fML);
+  if(f5)        free(f5);
+  if(f53)       free(f53);
+  if(cc)        free(cc);
+  if(cc1)       free(cc1);
+  if(ptype)     free(ptype);
+  if(fM1)       free(fM1);
+  if(fM2)       free(fM2);
+  if(base_pair2) free(base_pair2);
+  if(Fmi)       free(Fmi);
+  if(DMLi)      free(DMLi);
+  if(DMLi1)     free(DMLi1);
+  if(DMLi2)     free(DMLi2);
+  if(DMLi_a)    free(DMLi_a);
+  if(DMLi_o)    free(DMLi_o);
+  if(DMLi1_a)   free(DMLi1_a);
+  if(DMLi1_o)   free(DMLi1_o);
+  if(DMLi2_a)   free(DMLi2_a);
+  if(DMLi2_o)   free(DMLi2_o);
+  if(P)         free(P);
+  if(ggg)       free(ggg);
+
+  indx = c = fML = f5 = f53 = cc = cc1 = fM1 = fM2 = Fmi = DMLi = DMLi1 = DMLi2 = ggg = NULL;
+  DMLi_a = DMLi_o = DMLi1_a = DMLi1_o = DMLi2_a = DMLi2_o = NULL;
+  ptype       = NULL;
+  base_pair   = NULL;
+  base_pair2  = NULL;
+  P           = NULL;
+  init_length = 0;
+}
+
+/*--------------------------------------------------------------------------*/
+
+PUBLIC void export_fold_arrays( int **f5_p,
+                                int **c_p,
+                                int **fML_p,
+                                int **fM1_p,
+                                int **indx_p,
+                                char **ptype_p){
+  /* make the DP arrays available to routines such as subopt() */
+  *f5_p     = f5;
+  *c_p      = c;
+  *fML_p    = fML;
+  *fM1_p    = fM1;
+  *indx_p   = indx;
+  *ptype_p  = ptype;
+}
+
+PUBLIC void export_fold_arrays_par( int **f5_p,
+                                    int **c_p,
+                                    int **fML_p,
+                                    int **fM1_p,
+                                    int **indx_p,
+                                    char **ptype_p,
+                                    paramT **P_p){
+  export_fold_arrays(f5_p, c_p, fML_p, fM1_p, indx_p,ptype_p);
+  *P_p = P;
+}
+
+PUBLIC void export_circfold_arrays( int *Fc_p,
+                                    int *FcH_p,
+                                    int *FcI_p,
+                                    int *FcM_p,
+                                    int **fM2_p,
+                                    int **f5_p,
+                                    int **c_p,
+                                    int **fML_p,
+                                    int **fM1_p,
+                                    int **indx_p,
+                                    char **ptype_p){
+  /* make the DP arrays available to routines such as subopt() */
+  *f5_p     = f5;
+  *c_p      = c;
+  *fML_p    = fML;
+  *fM1_p    = fM1;
+  *fM2_p    = fM2;
+  *Fc_p     = Fc;
+  *FcH_p    = FcH;
+  *FcI_p    = FcI;
+  *FcM_p    = FcM;
+  *indx_p   = indx;
+  *ptype_p  = ptype;
+}
+
+PUBLIC void export_circfold_arrays_par( int *Fc_p,
+                                    int *FcH_p,
+                                    int *FcI_p,
+                                    int *FcM_p,
+                                    int **fM2_p,
+                                    int **f5_p,
+                                    int **c_p,
+                                    int **fML_p,
+                                    int **fM1_p,
+                                    int **indx_p,
+                                    char **ptype_p,
+                                    paramT **P_p){
+  export_circfold_arrays(Fc_p, FcH_p, FcI_p, FcM_p, fM2_p, f5_p, c_p, fML_p, fM1_p, indx_p, ptype_p);
+  *P_p = P;
+}
+/*--------------------------------------------------------------------------*/
+
+
+PUBLIC float fold(const char *string, char *structure){
+  return fold_par(string, structure, NULL, fold_constrained, 0);
+}
+
+PUBLIC float circfold(const char *string, char *structure){
+  return fold_par(string, structure, NULL, fold_constrained, 1);
+}
+
+PUBLIC float fold_par(const char *string,
+                      char *structure,
+                      paramT *parameters,
+                      int is_constrained,
+                      int is_circular){
+
+  int i, length, energy, bonus, bonus_cnt, s;
+
+  bonus               = 0;
+  bonus_cnt           = 0;
+  s                   = 0;
+  circular            = is_circular;
+  struct_constrained  = is_constrained;
+  length              = (int) strlen(string);
+
+#ifdef _OPENMP
+  init_fold(length, parameters);
+#else
+  if (parameters) init_fold(length, parameters);
+  else if (length>init_length) init_fold(length, parameters);
+  else if (fabs(P->temperature - temperature)>1e-6) update_fold_params();
+#endif
+
+  with_gquad  = P->model_details.gquad;
+  S           = encode_sequence(string, 0);
+  S1          = encode_sequence(string, 1);
+  BP          = (int *)space(sizeof(int)*(length+2));
+  if(with_gquad){ /* add a guess of how many G's may be involved in a G quadruplex */
+    if(base_pair2)
+      free(base_pair2);
+    base_pair2 = (bondT *) space(sizeof(bondT)*(4*(1+length/2)));
+  }
+
+  make_ptypes(S, structure);
+
+  energy = fill_arrays(string);
+
+  if(circular){
+    fill_arrays_circ(string, &s);
+    energy = Fc;
+  }
+  backtrack(string, s);
+
+#ifdef PAREN
+  parenthesis_structure(structure, base_pair2, length);
+#else
+  letter_structure(structure, base_pair2, length);
+#endif
+
+  /*
+  *  Backward compatibility:
+  *  This block may be removed if deprecated functions
+  *  relying on the global variable "base_pair" vanishs from within the package!
+  */
+  base_pair = base_pair2;
+  /*
+  {
+    if(base_pair) free(base_pair);
+    base_pair = (bondT *)space(sizeof(bondT) * (1+length/2));
+    memcpy(base_pair, base_pair2, sizeof(bondT) * (1+length/2));
+  }
+  */
+
+  /* check constraints */
+  for(i=1;i<=length;i++) {
+    if((BP[i]<0)&&(BP[i]>-4)) {
+      bonus_cnt++;
+      if((BP[i]==-3)&&(structure[i-1]==')')) bonus++;
+      if((BP[i]==-2)&&(structure[i-1]=='(')) bonus++;
+      if((BP[i]==-1)&&(structure[i-1]!='.')) bonus++;
+    }
+
+    if(BP[i]>i) {
+      int l;
+      bonus_cnt++;
+      for(l=1; l<=base_pair2[0].i; l++)
+        if(base_pair2[l].i != base_pair2[l].j)
+          if((i==base_pair2[l].i)&&(BP[i]==base_pair2[l].j)) bonus++;
+    }
+  }
+
+  if (bonus_cnt>bonus) fprintf(stderr,"\ncould not enforce all constraints\n");
+  bonus*=BONUS;
+
+  free(S); free(S1); free(BP);
+
+  energy += bonus;      /*remove bonus energies from result */
+
+  if (backtrack_type=='C')
+    return (float) c[indx[length]+1]/100.;
+  else if (backtrack_type=='M')
+    return (float) fML[indx[length]+1]/100.;
+  else
+    return (float) energy/100.;
+}
+
+/**
+*** fill "c", "fML" and "f5" arrays and return  optimal energy
+**/
+PRIVATE int fill_arrays(const char *string) {
+
+  int   i, j, k, length, energy, en, mm5, mm3;
+  int   decomp, new_fML, max_separation;
+  int   no_close, type, type_2, tt;
+  int   bonus=0;
+  
+  int   dangle_model, noGUclosure, with_gquads;
+
+  dangle_model  = P->model_details.dangles;
+  noGUclosure   = P->model_details.noGUclosure;
+
+  length = (int) strlen(string);
+
+  max_separation = (int) ((1.-LOCALITY)*(double)(length-2)); /* not in use */
+
+  if(with_gquad)
+    ggg = get_gquad_matrix(S, P);
+
+
+  for (j=1; j<=length; j++) {
+    Fmi[j]=DMLi[j]=DMLi1[j]=DMLi2[j]=INF;
+  }
+
+  for (j = 1; j<=length; j++)
+    for (i=(j>TURN?(j-TURN):1); i<j; i++) {
+      c[indx[j]+i] = fML[indx[j]+i] = INF;
+      if (uniq_ML) fM1[indx[j]+i] = INF;
+    }
+
+  if (length <= TURN) return 0;
+
+  for (i = length-TURN-1; i >= 1; i--) { /* i,j in [1..length] */
+
+    for (j = i+TURN+1; j <= length; j++) {
+      int p, q, ij, jj, ee;
+      int minq, maxq, l1, up, c0, c1, c2, c3;
+      int MLenergy;
+      ij = indx[j]+i;
+      bonus = 0;
+      type = ptype[ij];
+      energy = INF;
+      /* enforcing structure constraints */
+      if ((BP[i]==j)||(BP[i]==-1)||(BP[i]==-2)) bonus -= BONUS;
+      if ((BP[j]==-1)||(BP[j]==-3)) bonus -= BONUS;
+      if ((BP[i]==-4)||(BP[j]==-4)) type=0;
+
+      no_close = (((type==3)||(type==4))&&noGUclosure&&(bonus==0));
+
+      if (j-i-1 > max_separation) type = 0;  /* forces locality degree */
+
+      if (type) {   /* we have a pair */
+        int new_c=0, stackEnergy=INF;
+        /* hairpin ----------------------------------------------*/
+
+        new_c = (no_close) ? FORBIDDEN : E_Hairpin(j-i-1, type, S1[i+1], S1[j-1], string+i-1, P);
+
+        /*--------------------------------------------------------
+          check for elementary structures involving more than one
+          closing pair.
+          --------------------------------------------------------*/
+
+        for (p = i+1; p <= MIN2(j-2-TURN,i+MAXLOOP+1) ; p++) {
+          minq = j-i+p-MAXLOOP-2;
+          if (minq<p+1+TURN) minq = p+1+TURN;
+          for (q = minq; q < j; q++) {
+            type_2 = ptype[indx[q]+p];
+
+            if (type_2==0) continue;
+            type_2 = rtype[type_2];
+
+            if (noGUclosure)
+              if (no_close||(type_2==3)||(type_2==4))
+                if ((p>i+1)||(q<j-1)) continue;  /* continue unless stack */
+
+            energy = E_IntLoop(p-i-1, j-q-1, type, type_2,
+                                S1[i+1], S1[j-1], S1[p-1], S1[q+1], P);
+
+            ee = energy+c[indx[q]+p];
+            new_c = MIN2(new_c, ee);
+            if ((p==i+1)&&(j==q+1)) stackEnergy = energy; /* remember stack energy */
+
+          } /* end q-loop */
+        } /* end p-loop */
+        /* multi-loop decomposition ------------------------*/
+
+
+        if (!no_close) {
+          decomp = DMLi1[j-1];
+          tt = rtype[type];
+          switch(dangle_model){
+            /* no dangles */
+            case 0:   decomp += E_MLstem(tt, -1, -1, P);
+                      break;
+
+            /* double dangles */
+            case 2:   decomp += E_MLstem(tt, S1[j-1], S1[i+1], P);
+                      break;
+
+            /* normal dangles, aka dangles = 1 || 3 */
+            default:  decomp += E_MLstem(tt, -1, -1, P);
+                      decomp = MIN2(decomp, DMLi2[j-1] + E_MLstem(tt, -1, S1[i+1], P) + P->MLbase);
+                      decomp = MIN2(decomp, DMLi2[j-2] + E_MLstem(tt, S1[j-1], S1[i+1], P) + 2*P->MLbase);
+                      decomp = MIN2(decomp, DMLi1[j-2] + E_MLstem(tt, S1[j-1], -1, P) + P->MLbase);
+                      break;
+          }
+          MLenergy = decomp + P->MLclosing;
+          new_c = MIN2(new_c, MLenergy);
+        }
+
+        /* coaxial stacking of (i.j) with (i+1.k) or (k+1.j-1) */
+
+        if (dangle_model==3) {
+          decomp = INF;
+          for (k = i+2+TURN; k < j-2-TURN; k++) {
+            type_2 = rtype[ptype[indx[k]+i+1]];
+            if (type_2)
+              decomp = MIN2(decomp, c[indx[k]+i+1]+P->stack[type][type_2]+fML[indx[j-1]+k+1]);
+            type_2 = rtype[ptype[indx[j-1]+k+1]];
+            if (type_2)
+              decomp = MIN2(decomp, c[indx[j-1]+k+1]+P->stack[type][type_2]+fML[indx[k]+i+1]);
+          }
+          /* no TermAU penalty if coax stack */
+          decomp += 2*P->MLintern[1] + P->MLclosing;
+          new_c = MIN2(new_c, decomp);
+        }
+
+        if(with_gquad){
+          /* include all cases where a g-quadruplex may be enclosed by base pair (i,j) */
+          if (!no_close) {
+            tt = rtype[type];
+            energy = E_GQuad_IntLoop(i, j, type, S1, ggg, indx, P);
+            new_c = MIN2(new_c, energy);
+          }
+        }
+
+        new_c = MIN2(new_c, cc1[j-1]+stackEnergy);
+        cc[j] = new_c + bonus;
+        if (noLonelyPairs)
+          c[ij] = cc1[j-1]+stackEnergy+bonus;
+        else
+          c[ij] = cc[j];
+
+      } /* end >> if (pair) << */
+
+      else c[ij] = INF;
+
+      /* done with c[i,j], now compute fML[i,j] and fM1[i,j] */
+
+      /* (i,j) + MLstem ? */
+      new_fML = INF;
+      if(type){
+        new_fML = c[ij];
+        switch(dangle_model){
+          case 2:   new_fML += E_MLstem(type, (i==1) ? S1[length] : S1[i-1], S1[j+1], P);
+                    break;
+          default:  new_fML += E_MLstem(type, -1, -1, P);
+                    break;
+        }
+      }
+
+      if(with_gquad){
+        new_fML = MIN2(new_fML, ggg[indx[j] + i] + E_MLstem(0, -1, -1, P));
+      }
+
+      if (uniq_ML){
+        fM1[ij] = MIN2(fM1[indx[j-1]+i] + P->MLbase, new_fML);
+      }
+
+      /* free ends ? -----------------------------------------*/
+      /*  we must not just extend 3'/5' end by unpaired nucleotides if
+      *   dangle_model == 1, this could lead to d5+d3 contributions were
+      *   mismatch must be taken!
+      */
+      switch(dangle_model){
+        /* no dangles */
+        case 0:   new_fML = MIN2(new_fML, fML[ij+1]+P->MLbase);
+                  new_fML = MIN2(fML[indx[j-1]+i]+P->MLbase, new_fML);
+                  break;
+
+        /* double dangles */
+        case 2:   new_fML = MIN2(new_fML, fML[ij+1]+P->MLbase);
+                  new_fML = MIN2(fML[indx[j-1]+i]+P->MLbase, new_fML);
+                  break;
+
+        /* normal dangles, aka dangle_model = 1 || 3 */
+        default:  mm5 = ((i>1) || circular) ? S1[i] : -1;
+                  mm3 = ((j<length) || circular) ? S1[j] : -1;
+                  new_fML = MIN2(new_fML, fML[ij+1] + P->MLbase);
+                  new_fML = MIN2(new_fML, fML[indx[j-1]+i] + P->MLbase);
+                  tt = ptype[ij+1];
+                  if(tt) new_fML = MIN2(new_fML, c[ij+1] + E_MLstem(tt, mm5, -1, P) + P->MLbase);
+                  tt = ptype[indx[j-1]+i];
+                  if(tt) new_fML = MIN2(new_fML, c[indx[j-1]+i] + E_MLstem(tt, -1, mm3, P) + P->MLbase);
+                  tt = ptype[indx[j-1]+i+1];
+                  if(tt) new_fML = MIN2(new_fML, c[indx[j-1]+i+1] + E_MLstem(tt, mm5, mm3, P) + 2*P->MLbase);
+                  break;
+      }
+
+      /* modular decomposition -------------------------------*/
+      for (decomp = INF, k = i + 1 + TURN; k <= j - 2 - TURN; k++)
+        decomp = MIN2(decomp, Fmi[k]+fML[indx[j]+k+1]);
+      DMLi[j] = decomp;               /* store for use in ML decompositon */
+      new_fML = MIN2(new_fML,decomp);
+
+      /* coaxial stacking */
+      if (dangle_model==3) {
+        /* additional ML decomposition as two coaxially stacked helices */
+        for (decomp = INF, k = i+1+TURN; k <= j-2-TURN; k++) {
+          type = ptype[indx[k]+i]; type = rtype[type];
+          type_2 = ptype[indx[j]+k+1]; type_2 = rtype[type_2];
+          if (type && type_2)
+            decomp = MIN2(decomp,
+                          c[indx[k]+i]+c[indx[j]+k+1]+P->stack[type][type_2]);
+        }
+
+        decomp += 2*P->MLintern[1];        /* no TermAU penalty if coax stack */
+#if 0
+        /* This is needed for Y shaped ML loops with coax stacking of
+           interior pairts, but backtracking will fail if activated */
+        DMLi[j] = MIN2(DMLi[j], decomp);
+        DMLi[j] = MIN2(DMLi[j], DMLi[j-1]+P->MLbase);
+        DMLi[j] = MIN2(DMLi[j], DMLi1[j]+P->MLbase);
+        new_fML = MIN2(new_fML, DMLi[j]);
+#endif
+        new_fML = MIN2(new_fML, decomp);
+      }
+      fML[ij] = Fmi[j] = new_fML;     /* substring energy */
+
+    }
+
+    {
+      int *FF; /* rotate the auxilliary arrays */
+      FF = DMLi2; DMLi2 = DMLi1; DMLi1 = DMLi; DMLi = FF;
+      FF = cc1; cc1=cc; cc=FF;
+      for (j=1; j<=length; j++) {cc[j]=Fmi[j]=DMLi[j]=INF; }
+    }
+  }
+
+  /* calculate energies of 5' and 3' fragments */
+
+  f5[TURN+1]= 0;
+  /* duplicated code may be faster than conditions inside loop ;) */
+  switch(dangle_model){
+    /* dont use dangling end and mismatch contributions at all */
+    case 0:   for(j=TURN+2; j<=length; j++){
+                f5[j] = f5[j-1];
+                for (i=j-TURN-1; i>1; i--){
+
+                  if(with_gquad){
+                    f5[j] = MIN2(f5[j], f5[i-1] + ggg[indx[j]+i]);
+                  }
+
+                  type = ptype[indx[j]+i];
+                  if(!type) continue;
+                  en = c[indx[j]+i];
+                  f5[j] = MIN2(f5[j], f5[i-1] + en + E_ExtLoop(type, -1, -1, P));
+                }
+
+                if(with_gquad){
+                  f5[j] = MIN2(f5[j], ggg[indx[j]+1]);
+                }
+
+                type=ptype[indx[j]+1];
+                if(!type) continue;
+                en = c[indx[j]+1];
+                f5[j] = MIN2(f5[j], en + E_ExtLoop(type, -1, -1, P));
+              }
+              break;
+
+    /* always use dangles on both sides */
+    case 2:   for(j=TURN+2; j<length; j++){
+                f5[j] = f5[j-1];
+                for (i=j-TURN-1; i>1; i--){
+
+                  if(with_gquad){
+                    f5[j] = MIN2(f5[j], f5[i-1] + ggg[indx[j]+i]);
+                  }
+
+                  type = ptype[indx[j]+i];
+                  if(!type) continue;
+                  en = c[indx[j]+i];
+                  f5[j] = MIN2(f5[j], f5[i-1] + en + E_ExtLoop(type, S1[i-1], S1[j+1], P));
+                }
+
+                if(with_gquad){
+                  f5[j] = MIN2(f5[j], ggg[indx[j]+1]);
+                }
+
+                type=ptype[indx[j]+1];
+                if(!type) continue;
+                en = c[indx[j]+1];
+                f5[j] = MIN2(f5[j], en + E_ExtLoop(type, -1, S1[j+1], P));
+              }
+              f5[length] = f5[length-1];
+              for (i=length-TURN-1; i>1; i--){
+
+                if(with_gquad){
+                  f5[length] = MIN2(f5[length], f5[i-1] + ggg[indx[length]+i]);
+                }
+
+                type = ptype[indx[length]+i];
+                if(!type) continue;
+                en = c[indx[length]+i];
+                f5[length] = MIN2(f5[length], f5[i-1] + en + E_ExtLoop(type, S1[i-1], -1, P));
+              }
+
+              if(with_gquad){
+                f5[length] = MIN2(f5[length], ggg[indx[length]+1]);
+              }
+
+              type=ptype[indx[length]+1];
+              if(!type) break;
+              en = c[indx[length]+1];
+              f5[length] = MIN2(f5[length], en + E_ExtLoop(type, -1, -1, P));
+
+
+              break;
+
+    /* normal dangles, aka dangle_model = 1 || 3 */
+    default:  for(j=TURN+2; j<=length; j++){
+                f5[j] = f5[j-1];
+                for (i=j-TURN-1; i>1; i--){
+
+                  if(with_gquad){
+                    f5[j] = MIN2(f5[j], f5[i-1] + ggg[indx[j]+i]);
+                  }
+
+                  type = ptype[indx[j]+i];
+                  if(type){
+                    en = c[indx[j]+i];
+                    f5[j] = MIN2(f5[j], f5[i-1] + en + E_ExtLoop(type, -1, -1, P));
+                    f5[j] = MIN2(f5[j], f5[i-2] + en + E_ExtLoop(type, S1[i-1], -1, P));
+                  }
+                  type = ptype[indx[j-1]+i];
+                  if(type){
+                    en = c[indx[j-1]+i];
+                    f5[j] = MIN2(f5[j], f5[i-1] + en + E_ExtLoop(type, -1, S1[j], P));
+                    f5[j] = MIN2(f5[j], f5[i-2] + en + E_ExtLoop(type, S1[i-1], S1[j], P));
+                  }
+                }
+
+                if(with_gquad){
+                  f5[j] = MIN2(f5[j], ggg[indx[j]+1]);
+                }
+
+                type = ptype[indx[j]+1];
+                if(type) f5[j] = MIN2(f5[j], c[indx[j]+1] + E_ExtLoop(type, -1, -1, P));
+                type = ptype[indx[j-1]+1];
+                if(type) f5[j] = MIN2(f5[j], c[indx[j-1]+1] + E_ExtLoop(type, -1, S1[j], P));
+              }
+  }
+  return f5[length];
+}
+
+#include "circfold.inc"
+
+/**
+*** trace back through the "c", "f5" and "fML" arrays to get the
+*** base pairing list. No search for equivalent structures is done.
+*** This is fast, since only few structure elements are recalculated.
+***
+*** normally s=0.
+*** If s>0 then s items have been already pushed onto the sector stack
+**/
+PRIVATE void backtrack(const char *string, int s) {
+  int   i, j, ij, k, l1, mm5, mm3, length, energy, en, new;
+  int   no_close, type, type_2, tt, minq, maxq, c0, c1, c2, c3;
+  int   bonus;
+  int   b=0;
+  int   dangle_model = P->model_details.dangles;
+
+  length = strlen(string);
+  if (s==0) {
+    sector[++s].i = 1;
+    sector[s].j = length;
+    sector[s].ml = (backtrack_type=='M') ? 1 : ((backtrack_type=='C')? 2: 0);
+  }
+  while (s>0) {
+    int ml, fij, fi, cij, traced, i1, j1, p, q, jj=0, gq=0;
+    int canonical = 1;     /* (i,j) closes a canonical structure */
+    i  = sector[s].i;
+    j  = sector[s].j;
+    ml = sector[s--].ml;   /* ml is a flag indicating if backtracking is to
+                              occur in the fML- (1) or in the f-array (0) */
+    if (ml==2) {
+      base_pair2[++b].i = i;
+      base_pair2[b].j   = j;
+      goto repeat1;
+    }
+
+    else if(ml==7) { /* indicates that i,j are enclosing a gquadruplex */
+      /* actually, do something here */
+    }
+
+    if (j < i+TURN+1) continue; /* no more pairs in this interval */
+
+    fij = (ml == 1)? fML[indx[j]+i] : f5[j];
+    fi  = (ml == 1)?(fML[indx[j-1]+i]+P->MLbase): f5[j-1];
+
+    if (fij == fi) {  /* 3' end is unpaired */
+      sector[++s].i = i;
+      sector[s].j   = j-1;
+      sector[s].ml  = ml;
+      continue;
+    }
+
+    if (ml == 0) { /* backtrack in f5 */
+      switch(dangle_model){
+        case 0:   /* j is paired. Find pairing partner */
+                  for(k=j-TURN-1,traced=0; k>=1; k--){
+
+                    if(with_gquad){
+                      if(fij == f5[k-1] + ggg[indx[j]+k]){
+                        /* found the decomposition */
+                        traced = j; jj = k - 1; gq = 1;
+                        break;
+                      }
+                    }
+
+                    type = ptype[indx[j]+k];
+                    if(type)
+                      if(fij == E_ExtLoop(type, -1, -1, P) + c[indx[j]+k] + f5[k-1]){
+                        traced=j; jj = k-1;
+                        break;
+                      }
+                  }
+                  break;
+
+        case 2:   mm3 = (j<length) ? S1[j+1] : -1;
+                  for(k=j-TURN-1,traced=0; k>=1; k--){
+
+                    if(with_gquad){
+                      if(fij == f5[k-1] + ggg[indx[j]+k]){
+                        /* found the decomposition */
+                        traced = j; jj = k - 1; gq = 1;
+                        break;
+                      }
+                    }
+
+                    type = ptype[indx[j]+k];
+                    if(type)
+                      if(fij == E_ExtLoop(type, (k>1) ? S1[k-1] : -1, mm3, P) + c[indx[j]+k] + f5[k-1]){
+                        traced=j; jj = k-1;
+                        break;
+                      }
+                  }
+                  break;
+
+        default:  for(traced = 0, k=j-TURN-1; k>1; k--){
+
+                    if(with_gquad){
+                      if(fij == f5[k-1] + ggg[indx[j]+k]){
+                        /* found the decomposition */
+                        traced = j; jj = k - 1; gq = 1;
+                        break;
+                      }
+                    }
+
+                    type = ptype[indx[j] + k];
+                    if(type){
+                      en = c[indx[j] + k];
+                      if(fij == f5[k-1] + en + E_ExtLoop(type, -1, -1, P)){
+                        traced = j;
+                        jj = k-1;
+                        break;
+                      }
+                      if(fij == f5[k-2] + en + E_ExtLoop(type, S1[k-1], -1, P)){
+                        traced = j;
+                        jj = k-2;
+                        break;
+                      }
+                    }
+                    type = ptype[indx[j-1] + k];
+                    if(type){
+                      en = c[indx[j-1] + k];
+                      if(fij == f5[k-1] + en + E_ExtLoop(type, -1, S1[j], P)){
+                        traced = j-1;
+                        jj = k-1;
+                        break;
+                      }
+                      if(fij == f5[k-2] + en + E_ExtLoop(type, S1[k-1], S1[j], P)){
+                        traced = j-1;
+                        jj = k-2;
+                        break;
+                      }
+                    }
+                  }
+                  if(!traced){
+
+                    if(with_gquad){
+                      if(fij == ggg[indx[j]+1]){
+                        /* found the decomposition */
+                        traced = j; jj = 0; gq = 1;
+                        break;
+                      }
+                    }
+
+                    type = ptype[indx[j]+1];
+                    if(type){
+                      if(fij == c[indx[j]+1] + E_ExtLoop(type, -1, -1, P)){
+                        traced = j;
+                        jj = 0;
+                        break;
+                      }
+                    }
+                    type = ptype[indx[j-1]+1];
+                    if(type){
+                      if(fij == c[indx[j-1]+1] + E_ExtLoop(type, -1, S1[j], P)){
+                        traced = j-1;
+                        jj = 0;
+                        break;
+                      }
+                    }
+                  }
+                  break;
+      }
+
+      if (!traced){
+        fprintf(stderr, "%s\n", string);
+        nrerror("backtrack failed in f5");
+      }
+      /* push back the remaining f5 portion */
+      sector[++s].i = 1;
+      sector[s].j   = jj;
+      sector[s].ml  = ml;
+
+      /* trace back the base pair found */
+      i=k; j=traced;
+
+      if(with_gquad && gq){
+        /* goto backtrace of gquadruplex */
+        goto repeat_gquad;
+      }
+
+      base_pair2[++b].i = i;
+      base_pair2[b].j   = j;
+      goto repeat1;
+    }
+    else { /* trace back in fML array */
+      if (fML[indx[j]+i+1]+P->MLbase == fij) { /* 5' end is unpaired */
+        sector[++s].i = i+1;
+        sector[s].j   = j;
+        sector[s].ml  = ml;
+        continue;
+      }
+
+      ij  = indx[j]+i;
+
+      if(with_gquad){
+        if(fij == ggg[ij] + E_MLstem(0, -1, -1, P)){
+          /* go to backtracing of quadruplex */
+          goto repeat_gquad;
+        }
+      }
+
+      tt  = ptype[ij];
+      en  = c[ij];
+      switch(dangle_model){
+        case 0:   if(fij == en + E_MLstem(tt, -1, -1, P)){
+                    base_pair2[++b].i = i;
+                    base_pair2[b].j   = j;
+                    goto repeat1;
+                  }
+                  break;
+
+        case 2:   if(fij == en + E_MLstem(tt, S1[i-1], S1[j+1], P)){
+                    base_pair2[++b].i = i;
+                    base_pair2[b].j   = j;
+                    goto repeat1;
+                  }
+                  break;
+
+        default:  if(fij == en + E_MLstem(tt, -1, -1, P)){
+                    base_pair2[++b].i = i;
+                    base_pair2[b].j   = j;
+                    goto repeat1;
+                  }
+                  tt = ptype[ij+1];
+                  if(fij == c[ij+1] + E_MLstem(tt, S1[i], -1, P) + P->MLbase){
+                    base_pair2[++b].i = ++i;
+                    base_pair2[b].j   = j;
+                    goto repeat1;
+                  }
+                  tt = ptype[indx[j-1]+i];
+                  if(fij == c[indx[j-1]+i] + E_MLstem(tt, -1, S1[j], P) + P->MLbase){
+                    base_pair2[++b].i = i;
+                    base_pair2[b].j   = --j;
+                    goto repeat1;
+                  }
+                  tt = ptype[indx[j-1]+i+1];
+                  if(fij == c[indx[j-1]+i+1] + E_MLstem(tt, S1[i], S1[j], P) + 2*P->MLbase){
+                    base_pair2[++b].i = ++i;
+                    base_pair2[b].j   = --j;
+                    goto repeat1;
+                  }
+                  break;
+      }
+
+      for(k = i + 1 + TURN; k <= j - 2 - TURN; k++)
+        if(fij == (fML[indx[k]+i]+fML[indx[j]+k+1]))
+          break;
+
+      if ((dangle_model==3)&&(k > j - 2 - TURN)) { /* must be coax stack */
+        ml = 2;
+        for (k = i+1+TURN; k <= j - 2 - TURN; k++) {
+          type    = rtype[ptype[indx[k]+i]];
+          type_2  = rtype[ptype[indx[j]+k+1]];
+          if (type && type_2)
+            if (fij == c[indx[k]+i]+c[indx[j]+k+1]+P->stack[type][type_2]+
+                       2*P->MLintern[1])
+              break;
+        }
+      }
+      sector[++s].i = i;
+      sector[s].j   = k;
+      sector[s].ml  = ml;
+      sector[++s].i = k+1;
+      sector[s].j   = j;
+      sector[s].ml  = ml;
+
+      if (k>j-2-TURN) nrerror("backtrack failed in fML");
+      continue;
+    }
+
+  repeat1:
+
+    /*----- begin of "repeat:" -----*/
+    ij = indx[j]+i;
+    if (canonical)  cij = c[ij];
+
+    type = ptype[ij];
+
+    bonus = 0;
+    if (struct_constrained) {
+      if ((BP[i]==j)||(BP[i]==-1)||(BP[i]==-2)) bonus -= BONUS;
+      if ((BP[j]==-1)||(BP[j]==-3)) bonus -= BONUS;
+    }
+    if (noLonelyPairs)
+      if (cij == c[ij]){
+        /* (i.j) closes canonical structures, thus
+           (i+1.j-1) must be a pair                */
+        type_2 = ptype[indx[j-1]+i+1]; type_2 = rtype[type_2];
+        cij -= P->stack[type][type_2] + bonus;
+        base_pair2[++b].i = i+1;
+        base_pair2[b].j   = j-1;
+        i++; j--;
+        canonical=0;
+        goto repeat1;
+      }
+    canonical = 1;
+
+
+    no_close = (((type==3)||(type==4))&&no_closingGU&&(bonus==0));
+    if (no_close) {
+      if (cij == FORBIDDEN) continue;
+    } else
+      if (cij == E_Hairpin(j-i-1, type, S1[i+1], S1[j-1],string+i-1, P)+bonus)
+        continue;
+
+    for (p = i+1; p <= MIN2(j-2-TURN,i+MAXLOOP+1); p++) {
+      minq = j-i+p-MAXLOOP-2;
+      if (minq<p+1+TURN) minq = p+1+TURN;
+      for (q = j-1; q >= minq; q--) {
+
+        type_2 = ptype[indx[q]+p];
+        if (type_2==0) continue;
+        type_2 = rtype[type_2];
+        if (no_closingGU)
+          if (no_close||(type_2==3)||(type_2==4))
+            if ((p>i+1)||(q<j-1)) continue;  /* continue unless stack */
+
+        /* energy = oldLoopEnergy(i, j, p, q, type, type_2); */
+        energy = E_IntLoop(p-i-1, j-q-1, type, type_2,
+                            S1[i+1], S1[j-1], S1[p-1], S1[q+1], P);
+
+        new = energy+c[indx[q]+p]+bonus;
+        traced = (cij == new);
+        if (traced) {
+          base_pair2[++b].i = p;
+          base_pair2[b].j   = q;
+          i = p, j = q;
+          goto repeat1;
+        }
+      }
+    }
+
+    /* end of repeat: --------------------------------------------------*/
+
+    /* (i.j) must close a multi-loop */
+    tt = rtype[type];
+    i1 = i+1; j1 = j-1;
+
+    if(with_gquad){
+      /*
+        The case that is handled here actually resembles something like
+        an interior loop where the enclosing base pair is of regular
+        kind and the enclosed pair is not a canonical one but a g-quadruplex
+        that should then be decomposed further...
+      */
+      if(backtrack_GQuad_IntLoop(cij - bonus, i, j, type, S, ggg, indx, &p, &q, P)){
+        i = p; j = q;
+        goto repeat_gquad;
+      }
+    }
+
+    sector[s+1].ml  = sector[s+2].ml = 1;
+
+    switch(dangle_model){
+      case 0:   en = cij - E_MLstem(tt, -1, -1, P) - P->MLclosing - bonus;
+                for(k = i+2+TURN; k < j-2-TURN; k++){
+                  if(en == fML[indx[k]+i+1] + fML[indx[j-1]+k+1])
+                    break;
+                }
+                break;
+
+      case 2:   en = cij - E_MLstem(tt, S1[j-1], S1[i+1], P) - P->MLclosing - bonus;
+                for(k = i+2+TURN; k < j-2-TURN; k++){
+                    if(en == fML[indx[k]+i+1] + fML[indx[j-1]+k+1])
+                      break;
+                }
+                break;
+
+      default:  for(k = i+2+TURN; k < j-2-TURN; k++){
+                  en = cij - P->MLclosing - bonus;
+                  if(en == fML[indx[k]+i+1] + fML[indx[j-1]+k+1] + E_MLstem(tt, -1, -1, P)){
+                    break;
+                  }
+                  else if(en == fML[indx[k]+i+2] + fML[indx[j-1]+k+1] + E_MLstem(tt, -1, S1[i+1], P) + P->MLbase){
+                    i1 = i+2;
+                    break;
+                  }
+                  else if(en == fML[indx[k]+i+1] + fML[indx[j-2]+k+1] + E_MLstem(tt, S1[j-1], -1, P) + P->MLbase){
+                    j1 = j-2;
+                    break;
+                  }
+                  else if(en == fML[indx[k]+i+2] + fML[indx[j-2]+k+1] + E_MLstem(tt, S1[j-1], S1[i+1], P) + 2*P->MLbase){
+                    i1 = i+2;
+                    j1 = j-2;
+                    break;
+                  }
+                  /* coaxial stacking of (i.j) with (i+1.k) or (k.j-1) */
+                  /* use MLintern[1] since coax stacked pairs don't get TerminalAU */
+                  if(dangle_model == 3){
+                    type_2 = rtype[ptype[indx[k]+i+1]];
+                    if (type_2) {
+                      en = c[indx[k]+i+1]+P->stack[type][type_2]+fML[indx[j-1]+k+1];
+                      if (cij == en+2*P->MLintern[1]+P->MLclosing) {
+                        ml = 2;
+                        sector[s+1].ml  = 2;
+                        traced = 1;
+                        break;
+                      }
+                    }
+                    type_2 = rtype[ptype[indx[j-1]+k+1]];
+                    if (type_2) {
+                      en = c[indx[j-1]+k+1]+P->stack[type][type_2]+fML[indx[k]+i+1];
+                      if (cij == en+2*P->MLintern[1]+P->MLclosing) {
+                        sector[s+2].ml = 2;
+                        traced = 1;
+                        break;
+                      }
+                    }
+                  }
+                }
+                break;
+    }
+
+    if (k<=j-3-TURN) { /* found the decomposition */
+      sector[++s].i = i1;
+      sector[s].j   = k;
+      sector[++s].i = k+1;
+      sector[s].j   = j1;
+    } else {
+#if 0
+      /* Y shaped ML loops fon't work yet */
+      if (dangle_model==3) {
+        d5 = P->dangle5[tt][S1[j-1]];
+        d3 = P->dangle3[tt][S1[i+1]];
+        /* (i,j) must close a Y shaped ML loop with coax stacking */
+        if (cij ==  fML[indx[j-2]+i+2] + mm + d3 + d5 + P->MLbase + P->MLbase) {
+          i1 = i+2;
+          j1 = j-2;
+        } else if (cij ==  fML[indx[j-2]+i+1] + mm + d5 + P->MLbase)
+          j1 = j-2;
+        else if (cij ==  fML[indx[j-1]+i+2] + mm + d3 + P->MLbase)
+          i1 = i+2;
+        else /* last chance */
+          if (cij != fML[indx[j-1]+i+1] + mm + P->MLbase)
+            fprintf(stderr,  "backtracking failed in repeat");
+        /* if we arrive here we can express cij via fML[i1,j1]+dangles */
+        sector[++s].i = i1;
+        sector[s].j   = j1;
+      }
+      else
+#endif
+        nrerror("backtracking failed in repeat");
+    }
+
+    continue; /* this is a workarround to not accidentally proceed in the following block */
+
+  repeat_gquad:
+    /*
+      now we do some fancy stuff to backtrace the stacksize and linker lengths
+      of the g-quadruplex that should reside within position i,j
+    */
+    {
+      int l[3], L, a;
+      L = -1;
+      
+      get_gquad_pattern_mfe(S, i, j, P, &L, l);
+      if(L != -1){
+        /* fill the G's of the quadruplex into base_pair2 */
+        for(a=0;a<L;a++){
+          base_pair2[++b].i = i+a;
+          base_pair2[b].j   = i+a;
+          base_pair2[++b].i = i+L+l[0]+a;
+          base_pair2[b].j   = i+L+l[0]+a;
+          base_pair2[++b].i = i+L+l[0]+L+l[1]+a;
+          base_pair2[b].j   = i+L+l[0]+L+l[1]+a;
+          base_pair2[++b].i = i+L+l[0]+L+l[1]+L+l[2]+a;
+          base_pair2[b].j   = i+L+l[0]+L+l[1]+L+l[2]+a;
+        }
+        goto repeat_gquad_exit;
+      }
+      nrerror("backtracking failed in repeat_gquad");
+    }
+  repeat_gquad_exit:
+    asm("nop");
+
+  } /* end of infinite while loop */
+
+  base_pair2[0].i = b;    /* save the total number of base pairs */
+}
+
+PUBLIC char *backtrack_fold_from_pair(char *sequence, int i, int j) {
+  char *structure;
+  sector[1].i  = i;
+  sector[1].j  = j;
+  sector[1].ml = 2;
+  base_pair2[0].i=0;
+  S   = encode_sequence(sequence, 0);
+  S1  = encode_sequence(sequence, 1);
+  backtrack(sequence, 1);
+  structure = (char *) space((strlen(sequence)+1)*sizeof(char));
+  parenthesis_structure(structure, base_pair2, strlen(sequence));
+  free(S);free(S1);
+  return structure;
+}
+
+/*---------------------------------------------------------------------------*/
+
+PUBLIC void letter_structure(char *structure, bondT *bp, int length){
+  int   n, k, x, y;
+  char  alpha[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+
+  for (n = 0; n < length; structure[n++] = ' ');
+  structure[length] = '\0';
+
+  for (n = 0, k = 1; k <= bp[0].i; k++) {
+    y = bp[k].j;
+    x = bp[k].i;
+    if (x-1 > 0 && y+1 <= length) {
+      if (structure[x-2] != ' ' && structure[y] == structure[x-2]) {
+        structure[x-1] = structure[x-2];
+        structure[y-1] = structure[x-1];
+        continue;
+      }
+    }
+    if (structure[x] != ' ' && structure[y-2] == structure[x]) {
+      structure[x-1] = structure[x];
+      structure[y-1] = structure[x-1];
+      continue;
+    }
+    n++;
+    structure[x-1] = alpha[n-1];
+    structure[y-1] = alpha[n-1];
+  }
+}
+
+/*---------------------------------------------------------------------------*/
+
+PUBLIC void parenthesis_structure(char *structure, bondT *bp, int length){
+  int n, k;
+
+  for (n = 0; n < length; structure[n++] = '.');
+  structure[length] = '\0';
+
+  for (k = 1; k <= bp[0].i; k++){
+
+    if(bp[k].i == bp[k].j){ /* Gquad bonds are marked as bp[i].i == bp[i].j */
+      structure[bp[k].i-1] = '+';
+    } else { /* the following ones are regular base pairs */
+      structure[bp[k].i-1] = '(';
+      structure[bp[k].j-1] = ')';
+    }
+  }
+}
+
+PUBLIC void parenthesis_zuker(char *structure, bondT *bp, int length){
+  int k, i, j, temp;
+
+  for (k = 0; k < length; structure[k++] = '.');
+  structure[length] = '\0';
+
+  for (k = 1; k <= bp[0].i; k++) {
+    i=bp[k].i;
+    j=bp[k].j;
+    if (i>length) i-=length;
+    if (j>length) j-=length;
+    if (i>j) {
+      temp=i; i=j; j=temp;
+    }
+    if(i == j){ /* Gquad bonds are marked as bp[i].i == bp[i].j */
+      structure[i-1] = '+';
+    } else { /* the following ones are regular base pairs */
+      structure[i-1] = '(';
+      structure[j-1] = ')';
+    }
+  }
+}
+
+
+/*---------------------------------------------------------------------------*/
+
+PUBLIC void update_fold_params(void){
+  update_fold_params_par(NULL);
+}
+
+PUBLIC void update_fold_params_par(paramT *parameters){
+  if(P) free(P);
+  if(parameters){
+    P = get_parameter_copy(parameters);
+  } else {
+    model_detailsT md;
+    set_model_details(&md);
+    P = get_scaled_parameters(temperature, md);
+  }
+  make_pair_matrix();
+  if (init_length < 0) init_length=0;
+}
+
+/*---------------------------------------------------------------------------*/
+PUBLIC float energy_of_structure(const char *string, const char *structure, int verbosity_level){
+  return energy_of_struct_par(string, structure, NULL, verbosity_level);
+}
+
+PUBLIC float energy_of_struct_par(const char *string,
+                                  const char *structure,
+                                  paramT *parameters,
+                                  int verbosity_level){
+  int   energy;
+  short *ss, *ss1;
+
+  update_fold_params_par(parameters);
+
+  if (strlen(structure)!=strlen(string))
+    nrerror("energy_of_struct: string and structure have unequal length");
+
+  /* save the S and S1 pointers in case they were already in use */
+  ss = S; ss1 = S1;
+  S   = encode_sequence(string, 0);
+  S1  = encode_sequence(string, 1);
+
+  pair_table = make_pair_table(structure);
+
+  energy = energy_of_structure_pt(string, pair_table, S, S1, verbosity_level);
+
+  free(pair_table);
+  free(S); free(S1);
+  S=ss; S1=ss1;
+  return  (float) energy/100.;
+}
+
+/*  returns a correction term that may be added to the energy retrieved
+    from energy_of_struct_par() to correct misinterpreted loops. This
+    correction is necessary since energy_of_struct_par() will forget 
+    about the existance of gquadruplexes and just treat them as unpaired
+    regions.
+
+    recursive variant
+*/
+PRIVATE int en_corr_of_loop_gquad(int i,
+                                  int j,
+                                  const char *string,
+                                  const char *structure,
+                                  short *pt,
+                                  int *loop_idx,
+                                  const short *s1){
+
+  int pos, energy, p, q, r, s, u, type, type2;
+  int L, l[3];
+
+  energy = 0;
+  q = i;
+  while((pos = parse_gquad(structure + q-1, &L, l)) > 0){
+    q += pos-1;
+    p = q - 4*L - l[0] - l[1] - l[2] + 1;
+    if(q > j) break;
+    /* we've found the first g-quadruplex at position [p,q] */
+    energy += E_gquad(L, l, P);
+    /* check if it's enclosed in a base pair */
+    if(loop_idx[p] == 0){ q++; continue; /* g-quad in exterior loop */}
+    else{
+      energy += E_MLstem(0, -1, -1, P); /*  do not forget to remove this energy if
+                                            the gquad is the only one surrounded by
+                                            the enclosing pair
+                                        */
+
+      /*  find its enclosing pair */
+      int num_elem, num_g, elem_i, elem_j, up_mis;
+      num_elem  = 0;
+      num_g     = 1;
+      r         = p - 1;
+      up_mis    = q - p + 1;
+
+      /* seek for first pairing base located 5' of the g-quad */
+      for(r = p - 1; !pt[r] && (r >= i); r--);
+      if(r < i) nrerror("this should not happen");
+
+      if(r < pt[r]){ /* found the enclosing pair */
+        s = pt[r];
+      } else {
+        num_elem++;
+        elem_i = pt[r];
+        elem_j = r;
+        r = pt[r]-1 ;
+        /* seek for next pairing base 5' of r */
+        for(; !pt[r] && (r >= i); r--);
+        if(r < i) nrerror("so nich");
+        if(r < pt[r]){ /* found the enclosing pair */
+          s = pt[r];
+        } else {
+          /* hop over stems and unpaired nucleotides */
+          while((r > pt[r]) && (r >= i)){
+            if(pt[r]){ r = pt[r]; num_elem++;}
+            r--;
+          }
+          if(r < i) nrerror("so nich");
+          s = pt[r]; /* found the enclosing pair */
+        }
+      }
+      /* now we have the enclosing pair (r,s) */
+
+      u = q+1;
+      /* we know everything about the 5' part of this loop so check the 3' part */
+      while(u<s){
+        if(structure[u-1] == '.') u++;
+        else if (structure[u-1] == '+'){ /* found another gquad */
+          pos = parse_gquad(structure + u - 1, &L, l);
+          if(pos > 0){
+            energy += E_gquad(L, l, P) + E_MLstem(0, -1, -1, P);
+            up_mis += pos;
+            u += pos;
+            num_g++;
+          }
+        } else { /* we must have found a stem */
+          if(!(u < pt[u])) nrerror("wtf!");
+          num_elem++; elem_i = u; elem_j = pt[u];
+          energy += en_corr_of_loop_gquad(u, pt[u], string, structure, pt, loop_idx, s1);
+          u = pt[u] + 1;
+        }
+      }
+      if(u!=s) nrerror("what the hell");
+      else{ /* we are done since we've found no other 3' structure element */
+        switch(num_elem){
+          /* g-quad was misinterpreted as hairpin closed by (r,s) */
+          case 0:   /* if(num_g == 1)
+                      if((p-r-1 == 0) || (s-q-1 == 0))
+                        nrerror("too few unpaired bases");
+                    */
+                    type = pair[s1[r]][s1[s]];
+                    if(dangles == 2)
+                      energy += P->mismatchI[type][s1[r+1]][s1[s-1]];
+                    if(type > 2)
+                      energy += P->TerminalAU;
+                    energy += P->internal_loop[s - r - 1 - up_mis];
+                    energy -= E_MLstem(0, -1, -1, P);
+                    energy -= E_Hairpin(s - r - 1,
+                                        type,
+                                        s1[r + 1],
+                                        s1[s - 1],
+                                        string + r - 1,
+                                        P);
+                    break;
+          /* g-quad was misinterpreted as interior loop closed by (r,s) with enclosed pair (elem_i, elem_j) */
+          case 1:   type = pair[s1[r]][s1[s]];
+                    type2 = pair[s1[elem_i]][s1[elem_j]];
+                    energy += P->MLclosing
+                              + E_MLstem(rtype[type], s1[s-1], s1[r+1], P)
+                              + (elem_i - r - 1 + s - elem_j - 1 - up_mis) * P->MLbase
+                              + E_MLstem(type2, s1[elem_i-1], s1[elem_j+1], P);
+                    energy -= E_IntLoop(elem_i - r - 1,
+                                        s - elem_j - 1,
+                                        type,
+                                        rtype[type2],
+                                        s1[r + 1],
+                                        s1[s - 1],
+                                        s1[elem_i - 1],
+                                        s1[elem_j + 1],
+                                        P);
+                    break;
+          /* gquad was misinterpreted as unpaired nucleotides in a multiloop */
+          default:  energy -= (up_mis) * P->MLbase;
+                    break;
+        }
+      }
+      q = s+1;
+    }
+  }
+  return energy;
+}
+
+PUBLIC float
+energy_of_gquad_structure(const char *string,
+                          const char *structure,
+                          int verbosity_level){
+
+  return energy_of_gquad_struct_par(string, structure, NULL, verbosity_level);
+}
+
+PUBLIC float
+energy_of_gquad_struct_par( const char *string,
+                            const char *structure,
+                            paramT *parameters,
+                            int verbosity_level){
+
+  int   energy, gge, *loop_idx;
+  short *ss, *ss1;
+
+  update_fold_params_par(parameters);
+
+  if (strlen(structure)!=strlen(string))
+    nrerror("energy_of_struct: string and structure have unequal length");
+
+  /* save the S and S1 pointers in case they were already in use */
+  ss = S; ss1 = S1;
+  S   = encode_sequence(string, 0);
+  S1  = encode_sequence(string, 1);
+
+  /* the pair_table looses every information about the gquad position
+     thus we have to find add the energy contributions for each loop
+     that contains a gquad by ourself, substract all miscalculated
+     contributions, i.e. loops that actually contain a gquad, from
+     energy_of_structure_pt()
+  */
+  pair_table  = make_pair_table(structure);
+  energy      = energy_of_structure_pt(string, pair_table, S, S1, verbosity_level);
+
+  loop_idx    = make_loop_index_pt(pair_table);
+  gge         = en_corr_of_loop_gquad(1, S[0], string, structure, pair_table, loop_idx, S1);
+  energy     += gge;
+
+  free(pair_table);
+  free(loop_idx);
+  free(S); free(S1);
+  S=ss; S1=ss1;
+  return  (float) energy/100.;
+}
+
+PUBLIC int energy_of_structure_pt(const char *string,
+                                  short *ptable,
+                                  short *s,
+                                  short *s1,
+                                  int verbosity_level){
+  return energy_of_struct_pt_par(string, ptable, s, s1, NULL, verbosity_level);
+}
+
+PUBLIC int energy_of_struct_pt_par( const char *string,
+                                    short *ptable,
+                                    short *s,
+                                    short *s1,
+                                    paramT *parameters,
+                                    int verbosity_level){
+  /* auxiliary function for kinfold,
+     for most purposes call energy_of_struct instead */
+
+  int   i, length, energy;
+  short *ss, *ss1;
+
+  update_fold_params_par(parameters);
+
+  pair_table = ptable;
+  ss  = S;
+  ss1 = S1;
+  S = s;
+  S1 = s1;
+
+  length = S[0];
+/*   energy =  backtrack_type=='M' ? ML_Energy(0, 0) : ML_Energy(0, 1); */
+    energy =  backtrack_type=='M' ? energy_of_ml_pt(0, ptable) : energy_of_extLoop_pt(0, ptable);
+  if (verbosity_level>0)
+    printf("External loop                           : %5d\n", energy);
+  for (i=1; i<=length; i++) {
+    if (pair_table[i]==0) continue;
+    energy += stack_energy(i, string, verbosity_level);
+    i=pair_table[i];
+  }
+  for (i=1; !SAME_STRAND(i,length); i++) {
+    if (!SAME_STRAND(i,pair_table[i])) {
+      energy+=P->DuplexInit;
+      break;
+    }
+  }
+  S   = ss;
+  S1  = ss1;
+  return energy;
+}
+
+PUBLIC float energy_of_circ_structure(const char *string,
+                                      const char *structure,
+                                      int verbosity_level){
+  return energy_of_circ_struct_par(string, structure, NULL, verbosity_level);
+}
+
+PUBLIC float energy_of_circ_struct_par( const char *string,
+                                        const char *structure,
+                                        paramT *parameters,
+                                        int verbosity_level){
+
+  int   i, j, length, energy=0, en0, degree=0, type;
+  short *ss, *ss1;
+
+  update_fold_params_par(parameters);
+
+  int dangle_model = P->model_details.dangles;
+
+  if (strlen(structure)!=strlen(string))
+    nrerror("energy_of_struct: string and structure have unequal length");
+
+  /* save the S and S1 pointers in case they were already in use */
+  ss = S; ss1 = S1;
+  S   = encode_sequence(string, 0);
+  S1  = encode_sequence(string, 1);
+
+  pair_table = make_pair_table(structure);
+
+  length = S[0];
+
+  for (i=1; i<=length; i++) {
+    if (pair_table[i]==0) continue;
+    degree++;
+    energy += stack_energy(i, string, verbosity_level);
+    i=pair_table[i];
+  }
+
+  if (degree==0) return 0.;
+  for (i=1; pair_table[i]==0; i++);
+  j = pair_table[i];
+  type=pair[S[j]][S[i]];
+  if (type==0) type=7;
+  if (degree==1) {
+    char loopseq[10];
+    int u, si1, sj1;
+    for (i=1; pair_table[i]==0; i++);
+    u = length-j + i-1;
+    if (u<7) {
+      strcpy(loopseq , string+j-1);
+      strncat(loopseq, string, i);
+    }
+    si1 = (i==1)?S1[length] : S1[i-1];
+    sj1 = (j==length)?S1[1] : S1[j+1];
+    en0 = E_Hairpin(u, type, sj1, si1, loopseq, P);
+  } else
+    if (degree==2) {
+      int p,q, u1,u2, si1, sq1, type_2;
+      for (p=j+1; pair_table[p]==0; p++);
+      q=pair_table[p];
+      u1 = p-j-1;
+      u2 = i-1 + length-q;
+      type_2 = pair[S[q]][S[p]];
+      if (type_2==0) type_2=7;
+      si1 = (i==1)? S1[length] : S1[i-1];
+      sq1 = (q==length)? S1[1] : S1[q+1];
+      en0 = E_IntLoop(u1, u2, type, type_2,
+                       S1[j+1], si1, S1[p-1], sq1,P);
+    } else { /* degree > 2 */
+      en0 = ML_Energy(0, 0) - P->MLintern[0];
+      if (dangle_model) {
+        int d5, d3;
+        if (pair_table[1]) {
+          j = pair_table[1];
+          type = pair[S[1]][S[j]];
+          if (dangle_model==2)
+            en0 += P->dangle5[type][S1[length]];
+          else { /* dangle_model==1 */
+            if (pair_table[length]==0) {
+              d5 = P->dangle5[type][S1[length]];
+              if (pair_table[length-1]!=0) {
+                int tt;
+                tt = pair[S[pair_table[length-1]]][S[length-1]];
+                d3 = P->dangle3[tt][S1[length]];
+                if (d3<d5) d5 = 0;
+                else d5 -= d3;
+              }
+              en0 += d5;
+            }
+          }
+        }
+        if (pair_table[length]) {
+          i = pair_table[length];
+          type = pair[S[i]][S[length]];
+          if (dangle_model==2)
+            en0 += P->dangle3[type][S1[1]];
+          else { /* dangle_model==1 */
+            if (pair_table[1]==0) {
+              d3 = P->dangle3[type][S1[1]];
+              if (pair_table[2]) {
+                int tt;
+                tt = pair[S[2]][S[pair_table[2]]];
+                d5 = P->dangle5[tt][1];
+                if (d5<d3) d3=0;
+                else d3 -= d5;
+              }
+              en0 += d3;
+            }
+          }
+        }
+      }
+    }
+
+  if (verbosity_level>0)
+    printf("External loop                           : %5d\n", en0);
+  energy += en0;
+  /* fprintf(stderr, "ext loop degree %d tot %d\n", degree, energy); */
+  free(S); free(S1);
+  S=ss; S1=ss1;
+  return  (float) energy/100.0;
+}
+
+/*---------------------------------------------------------------------------*/
+PRIVATE int stack_energy(int i, const char *string, int verbosity_level)
+{
+  /* calculate energy of substructure enclosed by (i,j) */
+  int ee, energy = 0;
+  int j, p, q, type;
+
+  j=pair_table[i];
+  type = pair[S[i]][S[j]];
+  if (type==0) {
+    type=7;
+    if (verbosity_level>=0)
+      fprintf(stderr,"WARNING: bases %d and %d (%c%c) can't pair!\n", i, j,
+              string[i-1],string[j-1]);
+  }
+
+  p=i; q=j;
+  while (p<q) { /* process all stacks and interior loops */
+    int type_2;
+    while (pair_table[++p]==0);
+    while (pair_table[--q]==0);
+    if ((pair_table[q]!=(short)p)||(p>q)) break;
+    type_2 = pair[S[q]][S[p]];
+    if (type_2==0) {
+      type_2=7;
+      if (verbosity_level>=0)
+        fprintf(stderr,"WARNING: bases %d and %d (%c%c) can't pair!\n", p, q,
+                string[p-1],string[q-1]);
+    }
+    /* energy += LoopEnergy(i, j, p, q, type, type_2); */
+    if ( SAME_STRAND(i,p) && SAME_STRAND(q,j) )
+      ee = E_IntLoop(p-i-1, j-q-1, type, type_2, S1[i+1], S1[j-1], S1[p-1], S1[q+1],P);
+    else
+      ee = energy_of_extLoop_pt(cut_in_loop(i), pair_table);
+    if (verbosity_level>0)
+      printf("Interior loop (%3d,%3d) %c%c; (%3d,%3d) %c%c: %5d\n",
+             i,j,string[i-1],string[j-1],p,q,string[p-1],string[q-1], ee);
+    energy += ee;
+    i=p; j=q; type = rtype[type_2];
+  } /* end while */
+
+  /* p,q don't pair must have found hairpin or multiloop */
+
+  if (p>q) {                       /* hair pin */
+    if (SAME_STRAND(i,j))
+      ee = E_Hairpin(j-i-1, type, S1[i+1], S1[j-1], string+i-1, P);
+    else
+      ee = energy_of_extLoop_pt(cut_in_loop(i), pair_table);
+    energy += ee;
+    if (verbosity_level>0)
+      printf("Hairpin  loop (%3d,%3d) %c%c              : %5d\n",
+             i, j, string[i-1],string[j-1], ee);
+
+    return energy;
+  }
+
+  /* (i,j) is exterior pair of multiloop */
+  while (p<j) {
+    /* add up the contributions of the substructures of the ML */
+    energy += stack_energy(p, string, verbosity_level);
+    p = pair_table[p];
+    /* search for next base pair in multiloop */
+    while (pair_table[++p]==0);
+  }
+  {
+    int ii;
+    ii = cut_in_loop(i);
+    ee = (ii==0) ? energy_of_ml_pt(i, pair_table) : energy_of_extLoop_pt(ii, pair_table);
+  }
+  energy += ee;
+  if (verbosity_level>0)
+    printf("Multi    loop (%3d,%3d) %c%c              : %5d\n",
+           i,j,string[i-1],string[j-1],ee);
+
+  return energy;
+}
+
+/*---------------------------------------------------------------------------*/
+
+
+
+/**
+*** Calculate the energy contribution of
+*** stabilizing dangling-ends/mismatches
+*** for all stems branching off the exterior
+*** loop
+**/
+PRIVATE int energy_of_extLoop_pt(int i, short *pair_table) {
+  int energy, mm5, mm3;
+  int p, q, q_prev;
+  int length = (int)pair_table[0];
+
+  /* helper variables for dangles == 1 case */
+  int E3_available;  /* energy of 5' part where 5' mismatch is available for current stem */
+  int E3_occupied;   /* energy of 5' part where 5' mismatch is unavailable for current stem */
+
+  int dangle_model = P->model_details.dangles;
+
+  /* initialize vars */
+  energy      = 0;
+  p           = (i==0) ? 1 : i;
+  q_prev      = -1;
+
+  if(dangle_model%2 == 1){
+    E3_available = INF;
+    E3_occupied  = 0;
+  }
+
+  /* seek to opening base of first stem */
+  while(p <= length && !pair_table[p]) p++;
+
+  while(p < length){
+    int tt;
+    /* p must have a pairing partner */
+    q  = (int)pair_table[p];
+    /* get type of base pair (p,q) */
+    tt = pair[S[p]][S[q]];
+    if(tt==0) tt=7;
+
+    switch(dangle_model){
+      /* no dangles */
+      case 0:   energy += E_ExtLoop(tt, -1, -1, P);
+                break;
+      /* the beloved double dangles */
+      case 2:   mm5 = ((SAME_STRAND(p-1,p)) && (p>1))       ? S1[p-1] : -1;
+                mm3 = ((SAME_STRAND(q,q+1)) && (q<length))  ? S1[q+1] : -1;
+                energy += E_ExtLoop(tt, mm5, mm3, P);
+                break;
+
+      default:  {
+                  int tmp;
+                  if(q_prev + 2 < p){
+                    E3_available = MIN2(E3_available, E3_occupied);
+                    E3_occupied  = E3_available;
+                  }
+                  mm5 = ((SAME_STRAND(p-1,p)) && (p>1) && !pair_table[p-1])       ? S1[p-1] : -1;
+                  mm3 = ((SAME_STRAND(q,q+1)) && (q<length) && !pair_table[q+1])  ? S1[q+1] : -1;
+                  tmp = MIN2(
+                                                E3_occupied  + E_ExtLoop(tt, -1, mm3, P),
+                                                E3_available + E_ExtLoop(tt, mm5, mm3, P)
+                                              );
+                  E3_available =       MIN2(
+                                                E3_occupied  + E_ExtLoop(tt, -1, -1, P),
+                                                E3_available + E_ExtLoop(tt, mm5, -1, P)
+                                              );
+                  E3_occupied = tmp;
+                }
+                break;
+
+    } /* end switch dangle_model */
+    /* seek to the next stem */
+    p = q + 1;
+    q_prev = q;
+    while (p <= length && !pair_table[p]) p++;
+    if(p==i) break; /* cut was in loop */
+  }
+
+  if(dangle_model%2 == 1)
+    energy = MIN2(E3_occupied, E3_available);
+
+  return energy;
+}
+
+/**
+*** i is the 5'-base of the closing pair
+***
+*** since each helix can coaxially stack with at most one of its
+*** neighbors we need an auxiliarry variable  cx_energy
+*** which contains the best energy given that the last two pairs stack.
+*** energy  holds the best energy given the previous two pairs do not
+*** stack (i.e. the two current helices may stack)
+*** We don't allow the last helix to stack with the first, thus we have to
+*** walk around the Loop twice with two starting points and take the minimum
+***/
+PRIVATE int energy_of_ml_pt(int i, short *pt){
+
+  int energy, cx_energy, tmp, tmp2, best_energy=INF;
+  int i1, j, p, q, q_prev, q_prev2, u, x, type, count, mm5, mm3, tt, ld5, new_cx, dang5, dang3, dang;
+  int mlintern[NBPAIRS+1];
+
+  /* helper variables for dangles == 1|5 case */
+  int E_mm5_available;  /* energy of 5' part where 5' mismatch of current stem is available */
+  int E_mm5_occupied;   /* energy of 5' part where 5' mismatch of current stem is unavailable */
+  int E2_mm5_available; /* energy of 5' part where 5' mismatch of current stem is available with possible 3' dangle for enclosing pair (i,j) */
+  int E2_mm5_occupied;  /* energy of 5' part where 5' mismatch of current stem is unavailable with possible 3' dangle for enclosing pair (i,j) */
+  int dangle_model = P->model_details.dangles;
+
+  if(i >= pt[i])
+    nrerror("energy_of_ml_pt: i is not 5' base of a closing pair!");
+
+  j = (int)pt[i];
+
+  /* init the variables */
+  energy      = 0;
+  p           = i+1;
+  q_prev      = i-1;
+  q_prev2     = i;
+
+  for (x = 0; x <= NBPAIRS; x++) mlintern[x] = P->MLintern[x];
+
+  /* seek to opening base of first stem */
+  while(p <= j && !pair_table[p]) p++;
+  u = p - i - 1;
+
+  switch(dangle_model){
+    case 0:   while(p < j){
+                /* p must have a pairing partner */
+                q  = (int)pair_table[p];
+                /* get type of base pair (p,q) */
+                tt = pair[S[p]][S[q]];
+                if(tt==0) tt=7;
+                energy += E_MLstem(tt, -1, -1, P);
+                /* seek to the next stem */
+                p = q + 1;
+                q_prev = q_prev2 = q;
+                while (p <= j && !pair_table[p]) p++;
+                u += p - q - 1; /* add unpaired nucleotides */
+              }
+              /* now lets get the energy of the enclosing stem */
+              type = pair[S[j]][S[i]]; if (type==0) type=7;
+              energy += E_MLstem(type, -1, -1, P);
+              break;
+
+    case 2:   while(p < j){
+                /* p must have a pairing partner */
+                q  = (int)pair_table[p];
+                /* get type of base pair (p,q) */
+                tt = pair[S[p]][S[q]];
+                if(tt==0) tt=7;
+                mm5 = (SAME_STRAND(p-1,p))  ? S1[p-1] : -1;
+                mm3 = (SAME_STRAND(q,q+1))  ? S1[q+1] : -1;
+                energy += E_MLstem(tt, mm5, mm3, P);
+                /* seek to the next stem */
+                p = q + 1;
+                q_prev = q_prev2 = q;
+                while (p <= j && !pair_table[p]) p++;
+                u += p - q - 1; /* add unpaired nucleotides */
+              }
+              type = pair[S[j]][S[i]]; if (type==0) type=7;
+              mm5 = ((SAME_STRAND(j-1,j)) && !pair_table[j-1])  ? S1[j-1] : -1;
+              mm3 = ((SAME_STRAND(i,i+1)) && !pair_table[i+1])  ? S1[i+1] : -1;
+              energy += E_MLstem(type, S1[j-1], S1[i+1], P);
+              break;
+
+    case 3:   /* we treat helix stacking different */
+              for (count=0; count<2; count++) { /* do it twice */
+                ld5 = 0; /* 5' dangle energy on prev pair (type) */
+                if ( i==0 ) {
+                  j = (unsigned int)pair_table[0]+1;
+                  type = 0;  /* no pair */
+                }
+                else {
+                  j = (unsigned int)pair_table[i];
+                  type = pair[S[j]][S[i]]; if (type==0) type=7;
+                  /* prime the ld5 variable */
+                  if (SAME_STRAND(j-1,j)) {
+                    ld5 = P->dangle5[type][S1[j-1]];
+                    if ((p=(unsigned int)pair_table[j-2]) && SAME_STRAND(j-2, j-1))
+                    if (P->dangle3[pair[S[p]][S[j-2]]][S1[j-1]]<ld5) ld5 = 0;
+                  }
+                }
+                i1=i; p = i+1; u=0;
+                energy = 0; cx_energy=INF;
+                do { /* walk around the multi-loop */
+                  new_cx = INF;
+
+                  /* hop over unpaired positions */
+                  while (p <= (unsigned int)pair_table[0] && pair_table[p]==0) p++;
+
+                  /* memorize number of unpaired positions */
+                  u += p-i1-1;
+                  /* get position of pairing partner */
+                  if ( p == (unsigned int)pair_table[0]+1 ){
+                    q = 0;tt = 0; /* virtual root pair */
+                  } else {
+                    q  = (unsigned int)pair_table[p];
+                    /* get type of base pair P->q */
+                    tt = pair[S[p]][S[q]]; if (tt==0) tt=7;
+                  }
+
+                  energy += mlintern[tt];
+                  cx_energy += mlintern[tt];
+
+                  dang5=dang3=0;
+                  if ((SAME_STRAND(p-1,p))&&(p>1))
+                    dang5=P->dangle5[tt][S1[p-1]];      /* 5'dangle of pq pair */
+                  if ((SAME_STRAND(i1,i1+1))&&(i1<(unsigned int)S[0]))
+                    dang3 = P->dangle3[type][S1[i1+1]]; /* 3'dangle of previous pair */
+
+                  switch (p-i1-1) {
+                    case 0:   /* adjacent helices */
+                              if (i1!=0){
+                                if (SAME_STRAND(i1,p)) {
+                                  new_cx = energy + P->stack[rtype[type]][rtype[tt]];
+                                  /* subtract 5'dangle and TerminalAU penalty */
+                                  new_cx += -ld5 - mlintern[tt]-mlintern[type]+2*mlintern[1];
+                                }
+                                ld5=0;
+                                energy = MIN2(energy, cx_energy);
+                              }
+                              break;
+                    case 1:   /* 1 unpaired base between helices */
+                              dang = MIN2(dang3, dang5);
+                              energy = energy +dang; ld5 = dang - dang3;
+                              /* may be problem here: Suppose
+                                cx_energy>energy, cx_energy+dang5<energy
+                                and the following helices are also stacked (i.e.
+                                we'll subtract the dang5 again */
+                              if (cx_energy+dang5 < energy) {
+                                energy = cx_energy+dang5;
+                                ld5 = dang5;
+                              }
+                              new_cx = INF;  /* no coax stacking with mismatch for now */
+                              break;
+                    default:  /* many unpaired base between helices */
+                              energy += dang5 +dang3;
+                              energy = MIN2(energy, cx_energy + dang5);
+                              new_cx = INF;  /* no coax stacking possible */
+                              ld5 = dang5;
+                              break;
+                  }
+                  type = tt;
+                  cx_energy = new_cx;
+                  i1 = q; p=q+1;
+                } while (q!=i);
+                best_energy = MIN2(energy, best_energy); /* don't use cx_energy here */
+                /* fprintf(stderr, "%6.2d\t", energy); */
+                /* skip a helix and start again */
+                while (pair_table[p]==0) p++;
+                if (i == (unsigned int)pair_table[p]) break;
+                i = (unsigned int)pair_table[p];
+              } /* end doing it twice */
+              energy = best_energy;
+              break;
+
+    default:  E_mm5_available = E2_mm5_available  = INF;
+              E_mm5_occupied  = E2_mm5_occupied   = 0;
+              while(p < j){
+                /* p must have a pairing partner */
+                q  = (int)pair_table[p];
+                /* get type of base pair (p,q) */
+                tt = pair[S[p]][S[q]];
+                if(tt==0) tt=7;
+                if(q_prev + 2 < p){
+                  E_mm5_available = MIN2(E_mm5_available, E_mm5_occupied);
+                  E_mm5_occupied  = E_mm5_available;
+                }
+                if(q_prev2 + 2 < p){
+                  E2_mm5_available  = MIN2(E2_mm5_available, E2_mm5_occupied);
+                  E2_mm5_occupied   = E2_mm5_available;
+                }
+                mm5 = ((SAME_STRAND(p-1,p)) && !pair_table[p-1])  ? S1[p-1] : -1;
+                mm3 = ((SAME_STRAND(q,q+1)) && !pair_table[q+1])  ? S1[q+1] : -1;
+                tmp =                   MIN2(
+                                              E_mm5_occupied  + E_MLstem(tt, -1, mm3, P),
+                                              E_mm5_available + E_MLstem(tt, mm5, mm3, P)
+                                            );
+                tmp   =                 MIN2(tmp, E_mm5_available + E_MLstem(tt, -1, mm3, P));
+                tmp2  =                 MIN2(
+                                              E_mm5_occupied  + E_MLstem(tt, -1, -1, P),
+                                              E_mm5_available + E_MLstem(tt, mm5, -1, P)
+                                            );
+                E_mm5_available =       MIN2(tmp2, E_mm5_available  + E_MLstem(tt, -1, -1, P));
+                E_mm5_occupied  = tmp;
+
+                tmp =                  MIN2(
+                                              E2_mm5_occupied  + E_MLstem(tt, -1, mm3, P),
+                                              E2_mm5_available + E_MLstem(tt, mm5, mm3, P)
+                                            );
+                tmp =                   MIN2(tmp, E2_mm5_available + E_MLstem(tt, -1, mm3, P));
+                tmp2 =                  MIN2(
+                                              E2_mm5_occupied  + E_MLstem(tt, -1, -1, P),
+                                              E2_mm5_available + E_MLstem(tt, mm5, -1, P)
+                                            );
+                E2_mm5_available =      MIN2(tmp2, E2_mm5_available + E_MLstem(tt, -1, -1, P));
+                E2_mm5_occupied = tmp;
+                /* printf("(%d,%d): \n E_o = %d, E_a = %d, E2_o = %d, E2_a = %d\n", p, q, E_mm5_occupied,E_mm5_available,E2_mm5_occupied,E2_mm5_available); */
+                /* seek to the next stem */
+                p = q + 1;
+                q_prev = q_prev2 = q;
+                while (p <= j && !pair_table[p]) p++;
+                u += p - q - 1; /* add unpaired nucleotides */
+              }
+              /* now lets see how we get the minimum including the enclosing stem */
+              type = pair[S[j]][S[i]]; if (type==0) type=7;
+              mm5 = ((SAME_STRAND(j-1,j)) && !pair_table[j-1])  ? S1[j-1] : -1;
+              mm3 = ((SAME_STRAND(i,i+1)) && !pair_table[i+1])  ? S1[i+1] : -1;
+              if(q_prev + 2 < p){
+                E_mm5_available = MIN2(E_mm5_available, E_mm5_occupied);
+                E_mm5_occupied  = E_mm5_available;
+              }
+              if(q_prev2 + 2 < p){
+                E2_mm5_available  = MIN2(E2_mm5_available, E2_mm5_occupied);
+                E2_mm5_occupied   = E2_mm5_available;
+              }
+              energy = MIN2(E_mm5_occupied  + E_MLstem(type, -1, -1, P),
+                            E_mm5_available + E_MLstem(type, mm5, -1, P)
+                          );
+              energy = MIN2(energy, E_mm5_available   + E_MLstem(type, -1, -1, P));
+              energy = MIN2(energy, E2_mm5_occupied   + E_MLstem(type, -1, mm3, P));
+              energy = MIN2(energy, E2_mm5_occupied   + E_MLstem(type, -1, -1, P));
+              energy = MIN2(energy, E2_mm5_available  + E_MLstem(type, mm5, mm3, P));
+              energy = MIN2(energy, E2_mm5_available  + E_MLstem(type, -1, mm3, P));
+              energy = MIN2(energy, E2_mm5_available  + E_MLstem(type, mm5, -1, P));
+              energy = MIN2(energy, E2_mm5_available  + E_MLstem(type, -1, -1, P));
+              break;
+  }/* end switch dangle_model */
+
+  energy += P->MLclosing;
+  /* logarithmic ML loop energy if logML */
+  if(logML && (u>6))
+    energy += 6*P->MLbase+(int)(P->lxc*log((double)u/6.));
+  else
+    energy += (u*P->MLbase);
+
+  return energy;
+}
+
+/*---------------------------------------------------------------------------*/
+
+PUBLIC int loop_energy(short * ptable, short *s, short *s1, int i) {
+  /* compute energy of a single loop closed by base pair (i,j) */
+  int j, type, p,q, energy;
+  short *Sold, *S1old, *ptold;
+
+  ptold=pair_table;   Sold = S;   S1old = S1;
+  pair_table = ptable;   S = s;   S1 = s1;
+
+  if (i==0) { /* evaluate exterior loop */
+    energy = energy_of_extLoop_pt(0,pair_table);
+    pair_table=ptold; S=Sold; S1=S1old;
+    return energy;
+  }
+  j = pair_table[i];
+  if (j<i) nrerror("i is unpaired in loop_energy()");
+  type = pair[S[i]][S[j]];
+  if (type==0) {
+    type=7;
+    if (eos_debug>=0)
+      fprintf(stderr,"WARNING: bases %d and %d (%c%c) can't pair!\n", i, j,
+              Law_and_Order[S[i]],Law_and_Order[S[j]]);
+  }
+  p=i; q=j;
+
+
+  while (pair_table[++p]==0);
+  while (pair_table[--q]==0);
+  if (p>q) { /* Hairpin */
+    char loopseq[8] = "";
+    if (SAME_STRAND(i,j)) {
+      if (j-i-1<7) {
+        int u;
+        for (u=0; i+u<=j; u++) loopseq[u] = Law_and_Order[S[i+u]];
+        loopseq[u] = '\0';
+      }
+      energy = E_Hairpin(j-i-1, type, S1[i+1], S1[j-1], loopseq, P);
+    } else {
+      energy = energy_of_extLoop_pt(cut_in_loop(i), pair_table);
+    }
+  }
+  else if (pair_table[q]!=(short)p) { /* multi-loop */
+    int ii;
+    ii = cut_in_loop(i);
+    energy = (ii==0) ? energy_of_ml_pt(i, pair_table) : energy_of_extLoop_pt(ii, pair_table);
+  }
+  else { /* found interior loop */
+    int type_2;
+    type_2 = pair[S[q]][S[p]];
+    if (type_2==0) {
+      type_2=7;
+      if (eos_debug>=0)
+        fprintf(stderr,"WARNING: bases %d and %d (%c%c) can't pair!\n", p, q,
+                Law_and_Order[S[p]],Law_and_Order[S[q]]);
+    }
+    /* energy += LoopEnergy(i, j, p, q, type, type_2); */
+    if ( SAME_STRAND(i,p) && SAME_STRAND(q,j) )
+      energy = E_IntLoop(p-i-1, j-q-1, type, type_2,
+                          S1[i+1], S1[j-1], S1[p-1], S1[q+1], P);
+    else
+      energy = energy_of_extLoop_pt(cut_in_loop(i), pair_table);
+  }
+
+  pair_table=ptold; S=Sold; S1=S1old;
+  return energy;
+}
+
+/*---------------------------------------------------------------------------*/
+
+
+PUBLIC float energy_of_move(const char *string, const char *structure, int m1, int m2) {
+  int   energy;
+  short *ss, *ss1;
+
+#ifdef _OPENMP
+  if(P == NULL) update_fold_params();
+#else
+  if((init_length<0)||(P==NULL)) update_fold_params();
+#endif
+
+  if (fabs(P->temperature - temperature)>1e-6) update_fold_params();
+
+  if (strlen(structure)!=strlen(string))
+    nrerror("energy_of_struct: string and structure have unequal length");
+
+  /* save the S and S1 pointers in case they were already in use */
+  ss = S; ss1 = S1;
+  S   = encode_sequence(string, 0);
+  S1  = encode_sequence(string, 1);
+
+  pair_table = make_pair_table(structure);
+
+  energy = energy_of_move_pt(pair_table, S, S1, m1, m2);
+
+  free(pair_table);
+  free(S); free(S1);
+  S=ss; S1=ss1;
+  return  (float) energy/100.;
+}
+
+/*---------------------------------------------------------------------------*/
+
+PUBLIC int energy_of_move_pt(short *pt, short *s, short *s1, int m1, int m2) {
+  /*compute change in energy given by move (m1,m2)*/
+  int en_post, en_pre, i,j,k,l, len;
+
+  len = pt[0];
+  k = (m1>0)?m1:-m1;
+  l = (m2>0)?m2:-m2;
+  /* first find the enclosing pair i<k<l<j */
+  for (j=l+1; j<=len; j++) {
+    if (pt[j]<=0) continue; /* unpaired */
+    if (pt[j]<k) break;   /* found it */
+    if (pt[j]>j) j=pt[j]; /* skip substructure */
+    else {
+      fprintf(stderr, "%d %d %d %d ", m1, m2, j, pt[j]);
+      nrerror("illegal move or broken pair table in energy_of_move()");
+    }
+  }
+  i = (j<=len) ? pt[j] : 0;
+  en_pre = loop_energy(pt, s, s1, i);
+  en_post = 0;
+  if (m1<0) { /*it's a delete move */
+    en_pre += loop_energy(pt, s, s1, k);
+    pt[k]=0;
+    pt[l]=0;
+  } else { /* insert move */
+    pt[k]=l;
+    pt[l]=k;
+    en_post += loop_energy(pt, s, s1, k);
+  }
+  en_post += loop_energy(pt, s, s1, i);
+  /*  restore pair table */
+  if (m1<0) {
+    pt[k]=l;
+    pt[l]=k;
+  } else {
+    pt[k]=0;
+    pt[l]=0;
+  }
+  return (en_post - en_pre);
+}
+
+
+
+PRIVATE int cut_in_loop(int i) {
+  /* walk around the loop;  return j pos of pair after cut if
+     cut_point in loop else 0 */
+  int  p, j;
+  p = j = pair_table[i];
+  do {
+    i  = pair_table[p];  p = i+1;
+    while ( pair_table[p]==0 ) p++;
+  } while (p!=j && SAME_STRAND(i,p));
+  return SAME_STRAND(i,p) ? 0 : j;
+}
+
+/*---------------------------------------------------------------------------*/
+
+PRIVATE void make_ptypes(const short *S, const char *structure) {
+  int n,i,j,k,l;
+
+  n=S[0];
+  for (k=1; k<n-TURN; k++)
+    for (l=1; l<=2; l++) {
+      int type,ntype=0,otype=0;
+      i=k; j = i+TURN+l; if (j>n) continue;
+      type = pair[S[i]][S[j]];
+      while ((i>=1)&&(j<=n)) {
+        if ((i>1)&&(j<n)) ntype = pair[S[i-1]][S[j+1]];
+        if (noLonelyPairs && (!otype) && (!ntype))
+          type = 0; /* i.j can only form isolated pairs */
+        ptype[indx[j]+i] = (char) type;
+        otype =  type;
+        type  = ntype;
+        i--; j++;
+      }
+    }
+
+  if (struct_constrained && (structure != NULL))
+    constrain_ptypes(structure, (unsigned int)n, ptype, BP, TURN, 0);
+}
+
+PUBLIC void assign_plist_from_db(plist **pl, const char *struc, float pr){
+  /* convert bracket string to plist */
+  short *pt;
+  int i, k = 0, size, n;
+  plist *gpl, *ptr;
+
+  size  = strlen(struc);
+  n     = 2;
+
+  pt  = make_pair_table(struc);
+  *pl = (plist *)space(n*size*sizeof(plist));
+  for(i = 1; i < size; i++){
+    if(pt[i]>i){
+      (*pl)[k].i      = i;
+      (*pl)[k].j      = pt[i];
+      (*pl)[k].p      = pr;
+      (*pl)[k++].type = 0;
+    }
+  }
+
+  gpl = get_plist_gquad_from_db(struc, pr);
+  for(ptr = gpl; ptr->i != 0; ptr++){
+    if (k == n * size - 1){
+      n *= 2;
+      *pl = (plist *)xrealloc(*pl, n * size * sizeof(plist));
+    }
+    (*pl)[k].i      = ptr->i;
+    (*pl)[k].j      = ptr->j;
+    (*pl)[k].p       = ptr->p;
+    (*pl)[k++].type = ptr->type;
+  }
+  free(gpl);
+
+  (*pl)[k].i      = 0;
+  (*pl)[k].j      = 0;
+  (*pl)[k].p      = 0.;
+  (*pl)[k++].type = 0.;
+  free(pt);
+  *pl = (plist *)xrealloc(*pl, k * sizeof(plist));
+}
+
+
+/*###########################################*/
+/*# deprecated functions below              #*/
+/*###########################################*/
+
+PUBLIC int HairpinE(int size, int type, int si1, int sj1, const char *string) {
+  int energy;
+
+  energy = (size <= 30) ? P->hairpin[size] :
+    P->hairpin[30]+(int)(P->lxc*log((size)/30.));
+
+  if (tetra_loop){
+    if (size == 4) { /* check for tetraloop bonus */
+      char tl[7]={0}, *ts;
+      strncpy(tl, string, 6);
+      if ((ts=strstr(P->Tetraloops, tl)))
+        return (P->Tetraloop_E[(ts - P->Tetraloops)/7]);
+    }
+    if (size == 6) {
+      char tl[9]={0}, *ts;
+      strncpy(tl, string, 8);
+      if ((ts=strstr(P->Hexaloops, tl)))
+        return (energy = P->Hexaloop_E[(ts - P->Hexaloops)/9]);
+    }
+    if (size == 3) {
+      char tl[6]={0,0,0,0,0,0}, *ts;
+      strncpy(tl, string, 5);
+      if ((ts=strstr(P->Triloops, tl))) {
+        return (P->Triloop_E[(ts - P->Triloops)/6]);
+      }
+      if (type>2)  /* neither CG nor GC */
+        energy += P->TerminalAU; /* penalty for closing AU GU pair IVOO??
+                                    sind dass jetzt beaunuesse oder mahlnuesse (vorzeichen?)*/
+      return energy;
+    }
+   }
+   energy += P->mismatchH[type][si1][sj1];
+
+  return energy;
+}
+
+/*---------------------------------------------------------------------------*/
+
+PUBLIC int oldLoopEnergy(int i, int j, int p, int q, int type, int type_2) {
+  /* compute energy of degree 2 loop (stack bulge or interior) */
+  int n1, n2, m, energy;
+  n1 = p-i-1;
+  n2 = j-q-1;
+
+  if (n1>n2) { m=n1; n1=n2; n2=m; } /* so that n2>=n1 */
+
+  if (n2 == 0)
+    energy = P->stack[type][type_2];   /* stack */
+
+  else if (n1==0) {                  /* bulge */
+    energy = (n2<=MAXLOOP)?P->bulge[n2]:
+      (P->bulge[30]+(int)(P->lxc*log(n2/30.)));
+
+#if STACK_BULGE1
+    if (n2==1) energy+=P->stack[type][type_2];
+#endif
+  } else {                           /* interior loop */
+
+    if ((n1+n2==2)&&(james_rule))
+      /* special case for loop size 2 */
+      energy = P->int11[type][type_2][S1[i+1]][S1[j-1]];
+    else {
+      energy = (n1+n2<=MAXLOOP)?(P->internal_loop[n1+n2]):
+        (P->internal_loop[30]+(int)(P->lxc*log((n1+n2)/30.)));
+
+#if NEW_NINIO
+      energy += MIN2(MAX_NINIO, (n2-n1)*P->ninio[2]);
+#else
+      m       = MIN2(4, n1);
+      energy += MIN2(MAX_NINIO,((n2-n1)*P->ninio[m]));
+#endif
+      energy += P->mismatchI[type][S1[i+1]][S1[j-1]]+
+        P->mismatchI[type_2][S1[q+1]][S1[p-1]];
+    }
+  }
+  return energy;
+}
+
+/*--------------------------------------------------------------------------*/
+
+PUBLIC int LoopEnergy(int n1, int n2, int type, int type_2,
+                      int si1, int sj1, int sp1, int sq1) {
+  /* compute energy of degree 2 loop (stack bulge or interior) */
+  int nl, ns, energy;
+
+  if (n1>n2) { nl=n1; ns=n2;}
+  else {nl=n2; ns=n1;}
+
+  if (nl == 0)
+    return P->stack[type][type_2];    /* stack */
+
+  if (ns==0) {                       /* bulge */
+    energy = (nl<=MAXLOOP)?P->bulge[nl]:
+      (P->bulge[30]+(int)(P->lxc*log(nl/30.)));
+    if (nl==1) energy += P->stack[type][type_2];
+    else {
+      if (type>2) energy += P->TerminalAU;
+      if (type_2>2) energy += P->TerminalAU;
+    }
+    return energy;
+  }
+  else {                             /* interior loop */
+    if (ns==1) {
+      if (nl==1)                     /* 1x1 loop */
+        return P->int11[type][type_2][si1][sj1];
+      if (nl==2) {                   /* 2x1 loop */
+        if (n1==1)
+          energy = P->int21[type][type_2][si1][sq1][sj1];
+        else
+          energy = P->int21[type_2][type][sq1][si1][sp1];
+        return energy;
+      }
+        else {  /* 1xn loop */
+        energy = (nl+1<=MAXLOOP)?(P->internal_loop[nl+1]):
+        (P->internal_loop[30]+(int)(P->lxc*log((nl+1)/30.)));
+        energy += MIN2(MAX_NINIO, (nl-ns)*P->ninio[2]);
+        energy += P->mismatch1nI[type][si1][sj1]+
+        P->mismatch1nI[type_2][sq1][sp1];
+        return energy;
+        }
+    }
+    else if (ns==2) {
+      if(nl==2)      {   /* 2x2 loop */
+        return P->int22[type][type_2][si1][sp1][sq1][sj1];}
+      else if (nl==3)  { /* 2x3 loop */
+        energy = P->internal_loop[5]+P->ninio[2];
+        energy += P->mismatch23I[type][si1][sj1]+
+          P->mismatch23I[type_2][sq1][sp1];
+        return energy;
+      }
+
+    }
+    { /* generic interior loop (no else here!)*/
+      energy = (n1+n2<=MAXLOOP)?(P->internal_loop[n1+n2]):
+        (P->internal_loop[30]+(int)(P->lxc*log((n1+n2)/30.)));
+
+      energy += MIN2(MAX_NINIO, (nl-ns)*P->ninio[2]);
+
+      energy += P->mismatchI[type][si1][sj1]+
+        P->mismatchI[type_2][sq1][sp1];
+    }
+  }
+  return energy;
+}
+
+PRIVATE int ML_Energy(int i, int is_extloop) {
+  /* i is the 5'-base of the closing pair (or 0 for exterior loop)
+     loop is scored as ML if extloop==0 else as exterior loop
+
+     since each helix can coaxially stack with at most one of its
+     neighbors we need an auxiliarry variable  cx_energy
+     which contains the best energy given that the last two pairs stack.
+     energy  holds the best energy given the previous two pairs do not
+     stack (i.e. the two current helices may stack)
+     We don't allow the last helix to stack with the first, thus we have to
+     walk around the Loop twice with two starting points and take the minimum
+  */
+
+  int energy, cx_energy, best_energy=INF;
+  int i1, j, p, q, u, x, type, count;
+  int mlintern[NBPAIRS+1], mlclosing, mlbase;
+  int dangle_model = P->model_details.dangles;
+
+  if (is_extloop) {
+    for (x = 0; x <= NBPAIRS; x++)
+      mlintern[x] = P->MLintern[x]-P->MLintern[1]; /* 0 or TerminalAU */
+    mlclosing = mlbase = 0;
+  } else {
+    for (x = 0; x <= NBPAIRS; x++) mlintern[x] = P->MLintern[x];
+    mlclosing = P->MLclosing; mlbase = P->MLbase;
+  }
+
+  /*  as we do not only have dangling end but also mismatch contributions,
+  **  we do this a bit different to previous implementations
+  */
+  if(is_extloop){
+    energy = 0;
+    i1  = i;
+    p   = i+1;
+
+    int E_mm5_available, E_mm5_occupied;
+    /* find out if we may have 5' mismatch for the next stem */
+    while (p <= (int)pair_table[0] && pair_table[p]==0) p++;
+    /* get position of pairing partner */
+    if(p < (int)pair_table[0]){
+        E_mm5_occupied  = (p - i - 1 > 0) ? INF : 0;
+        E_mm5_available = (p - i - 1 > 0) ? 0 : INF;
+    }
+
+    if(p < (int)pair_table[0])
+      do{
+        int tt;
+        /* p must have a pairing partner */
+        q  = (int)pair_table[p];
+        /* get type of base pair (p,q) */
+        tt = pair[S[p]][S[q]];
+        if(tt==0) tt=7;
+
+        int mm5 = ((SAME_STRAND(p-1,p)) && (p>1)) ? S1[p-1]: -1;
+        int mm3 = ((SAME_STRAND(q,q+1)) && (q<(unsigned int)pair_table[0])) ? S1[q+1]: -1;
+
+        switch(dangle_model){
+          /* dangle_model == 0 */
+          case 0: energy += E_ExtLoop(tt, -1, -1, P);
+                  break;
+          /* dangle_model == 1 */
+          case 1: {
+                    /* check for unpaired nucleotide 3' to the current stem */
+                    int u3 = ((q < pair_table[0]) && (pair_table[q+1] == 0)) ? 1 : 0;
+                    if(pair_table[p-1] != 0) mm5 = -1;
+
+                    if(!u3){
+                      mm3 = -1;
+                      E_mm5_occupied  = MIN2(
+                                              E_mm5_occupied  + E_ExtLoop(tt, -1, -1, P),
+                                              E_mm5_available + E_ExtLoop(tt, mm5, -1, P)
+                                            );
+                      E_mm5_available = E_mm5_occupied;
+                    }
+                    else{
+                      E_mm5_occupied  = MIN2(
+                                              E_mm5_occupied  + E_ExtLoop(tt, -1, mm3, P),
+                                              E_mm5_available + E_ExtLoop(tt, mm5, mm3, P)
+                                            );
+                      E_mm5_available = MIN2(
+                                              E_mm5_occupied  + E_ExtLoop(tt, -1, -1, P),
+                                              E_mm5_available + E_ExtLoop(tt, mm5, -1, P)
+                                            );
+                    }
+                  }
+                  break;
+
+          /* the beloved case dangle_model == 2 */
+          case 2: energy += E_ExtLoop(tt, mm5, mm3, P);
+                  break;
+
+          /* dangle_model == 3 a.k.a. helix stacking */
+          case 3: break;
+
+        } /* end switch dangle_model */
+
+        /* seek to the next stem */
+        p = q + 1;
+        while (p <= (int)pair_table[0] && pair_table[p]==0) p++;
+        if(p == (int)pair_table[0] + 1){
+          if(dangle_model == 1)
+            energy = (p > q + 1) ? E_mm5_occupied : E_mm5_available;
+          q = 0;
+          break;
+        }
+      } while(q != i);
+  }
+  /* not exterior loop */
+  else{
+    for (count=0; count<2; count++) { /* do it twice */
+      int ld5 = 0; /* 5' dangle energy on prev pair (type) */
+      if ( i==0 ) {
+        j = (unsigned int)pair_table[0]+1;
+        type = 0;  /* no pair */
+      }
+      else {
+        j = (unsigned int)pair_table[i];
+        type = pair[S[j]][S[i]]; if (type==0) type=7;
+
+        if (dangle_model==3) { /* prime the ld5 variable */
+          if (SAME_STRAND(j-1,j)) {
+            ld5 = P->dangle5[type][S1[j-1]];
+            if ((p=(unsigned int)pair_table[j-2]) && SAME_STRAND(j-2, j-1))
+                if (P->dangle3[pair[S[p]][S[j-2]]][S1[j-1]]<ld5) ld5 = 0;
+          }
+        }
+      }
+      i1=i; p = i+1; u=0;
+      energy = 0; cx_energy=INF;
+      do { /* walk around the multi-loop */
+        int tt, new_cx = INF;
+
+        /* hop over unpaired positions */
+        while (p <= (unsigned int)pair_table[0] && pair_table[p]==0) p++;
+
+        /* memorize number of unpaired positions */
+        u += p-i1-1;
+        /* get position of pairing partner */
+        if ( p == (unsigned int)pair_table[0]+1 ){
+          q = 0;tt = 0; /* virtual root pair */
+        } else {
+        q  = (unsigned int)pair_table[p];
+          /* get type of base pair P->q */
+        tt = pair[S[p]][S[q]]; if (tt==0) tt=7;
+        }
+
+        energy += mlintern[tt];
+        cx_energy += mlintern[tt];
+
+        if (dangle_model) {
+          int dang5=0, dang3=0, dang;
+          if ((SAME_STRAND(p-1,p))&&(p>1))
+            dang5=P->dangle5[tt][S1[p-1]];      /* 5'dangle of pq pair */
+          if ((SAME_STRAND(i1,i1+1))&&(i1<(unsigned int)S[0]))
+            dang3 = P->dangle3[type][S1[i1+1]]; /* 3'dangle of previous pair */
+
+          switch (p-i1-1) {
+          case 0: /* adjacent helices */
+            if (dangle_model==2)
+              energy += dang3+dang5;
+            else if (dangle_model==3 && i1!=0) {
+              if (SAME_STRAND(i1,p)) {
+                new_cx = energy + P->stack[rtype[type]][rtype[tt]];
+                /* subtract 5'dangle and TerminalAU penalty */
+                new_cx += -ld5 - mlintern[tt]-mlintern[type]+2*mlintern[1];
+              }
+              ld5=0;
+              energy = MIN2(energy, cx_energy);
+            }
+            break;
+          case 1: /* 1 unpaired base between helices */
+            dang = (dangle_model==2)?(dang3+dang5):MIN2(dang3, dang5);
+            if (dangle_model==3) {
+              energy = energy +dang; ld5 = dang - dang3;
+              /* may be problem here: Suppose
+                 cx_energy>energy, cx_energy+dang5<energy
+                 and the following helices are also stacked (i.e.
+                 we'll subtract the dang5 again */
+              if (cx_energy+dang5 < energy) {
+                energy = cx_energy+dang5;
+                ld5 = dang5;
+              }
+              new_cx = INF;  /* no coax stacking with mismatch for now */
+            } else
+              energy += dang;
+            break;
+          default: /* many unpaired base between helices */
+            energy += dang5 +dang3;
+            if (dangle_model==3) {
+              energy = MIN2(energy, cx_energy + dang5);
+              new_cx = INF;  /* no coax stacking possible */
+              ld5 = dang5;
+            }
+          }
+          type = tt;
+        }
+        if (dangle_model==3) cx_energy = new_cx;
+        i1 = q; p=q+1;
+      } while (q!=i);
+      best_energy = MIN2(energy, best_energy); /* don't use cx_energy here */
+      /* fprintf(stderr, "%6.2d\t", energy); */
+      if (dangle_model!=3 || is_extloop) break;  /* may break cofold with co-ax */
+      /* skip a helix and start again */
+      while (pair_table[p]==0) p++;
+      if (i == (unsigned int)pair_table[p]) break;
+      i = (unsigned int)pair_table[p];
+    }
+    energy = best_energy;
+    energy += mlclosing;
+    /* logarithmic ML loop energy if logML */
+    if ( (!is_extloop) && logML && (u>6) )
+      energy += 6*mlbase+(int)(P->lxc*log((double)u/6.));
+    else
+      energy += mlbase*u;
+    /* fprintf(stderr, "\n"); */
+  }
+  return energy;
+}
+
+PUBLIC void initialize_fold(int length){
+  /* DO NOTHING */
+}
+
+PUBLIC float energy_of_struct(const char *string, const char *structure){
+  return energy_of_structure(string, structure, eos_debug);
+}
+
+PUBLIC int energy_of_struct_pt(const char *string, short * ptable, short *s, short *s1){
+  return energy_of_structure_pt(string, ptable, s, s1, eos_debug);
+}
+
+PUBLIC float energy_of_circ_struct(const char *string, const char *structure){
+  return energy_of_circ_structure(string, structure, eos_debug);
+}
+
diff --git a/cbits/fold_vars.c b/cbits/fold_vars.c
new file mode 100644
--- /dev/null
+++ b/cbits/fold_vars.c
@@ -0,0 +1,88 @@
+/* Last changed Time-stamp: <2008-06-27 17:21:42 ivo> */
+
+/**
+*** \file fold_vars.c
+*** global variables to change behaviour of folding routines<BR>
+*** Also there are some functions that make the live easier when
+*** using functions of the Vienna RNA package
+**/
+#include <string.h>
+#include <stdio.h>
+#include "fold_vars.h"
+
+int         circ = 0;
+
+int         noGU = 0;             /* GU not allowed at all */
+
+int         no_closingGU = 0;     /* GU allowed only inside stacks */
+
+int         tetra_loop = 1;       /* Fold with specially stable 4-loops */
+
+int         energy_set = 0;       /* 0 = BP; 1=any with GC; 2=any with AU parameters */
+
+int         dangles = 2;          /* use dangling end energies */
+
+char        *nonstandards = (char *)0;  /* contains allowed non standard bases */
+
+double      temperature = 37.0;
+
+int         james_rule = 1;       /* interior loops of size 2 get energy 0.8Kcal and
+                                    no mismatches (no longer used) */
+
+int         oldAliEn = 0;         /* use old alifold-energies (without removing gaps) */
+
+int         ribo = 0;             /* use ribosum instead of classic covariance term */
+
+char        *RibosumFile = NULL;  /* TODO: compile ribosums into program
+                                    Warning: this variable will vanish */
+
+int         csv = 0;              /*generate comma seperated output*/
+
+bondT       *base_pair = NULL;
+
+FLT_OR_DBL  *pr = NULL;           /* base pairing prob. matrix */
+
+int         *iindx = NULL;        /* pr[i,j] -> pr[iindx[i]-j] */
+
+double      pf_scale = -1;        /* scaling factor to avoid floating point overflows */
+
+int         fold_constrained = 0; /* fold with constraints */
+
+int         do_backtrack = 1;     /* calculate pair prob matrix in part_func() */
+
+int         noLonelyPairs = 0;    /* avoid helices of length 1 */
+
+char        backtrack_type = 'F'; /* 'C' require (1,N) to be bonded;
+                                    'M' seq is part of s multi loop */
+
+int         *cut_points;
+
+int         *strand;
+
+int         gquad = 0;            /* consider g-qudruplexes in the calculations */
+
+PUBLIC char * option_string(void){
+  static char options[100];
+  *options = '\0';
+  if (noGU) strcat(options, "-noGU ");
+  if (no_closingGU) strcat(options, "-noCloseGU ");
+  if (!tetra_loop) strcat(options, "-4 ");
+  if (noLonelyPairs) strcat(options, "-noLP ");
+  if (fold_constrained) strcat(options, "-C ");
+  if (dangles!=1) sprintf(options+strlen(options), "-d%d ", dangles);
+  if (temperature!=37.0)
+    sprintf(options+strlen(options), "-T %f ", temperature);
+  return options;
+}
+
+PUBLIC void set_model_details(model_detailsT *md){
+  if(md){
+    md->dangles     = dangles;
+    md->special_hp  = tetra_loop;
+    md->noLP        = noLonelyPairs;
+    md->noGU        = noGU;
+    md->noGUclosure = no_closingGU;
+    md->logML       = logML;
+    md->gquad       = gquad;
+  }
+}
diff --git a/cbits/gquad.c b/cbits/gquad.c
new file mode 100644
--- /dev/null
+++ b/cbits/gquad.c
@@ -0,0 +1,1043 @@
+/*
+  gquad.c
+
+  Ronny Lorenz 2012
+
+  Vienna RNA package
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+
+#include "config.h" // chzs
+#include "fold_vars.h"
+#include "data_structures.h"
+#include "energy_const.h"
+#include "utils.h"
+#include "aln_util.h"
+#include "gquad.h"
+
+#ifndef INLINE
+#ifdef __GNUC__
+# define INLINE inline
+#else
+# define INLINE
+#endif
+#endif
+
+/**
+ *  Use this macro to loop over each G-quadruplex
+ *  delimited by a and b within the subsequence [c,d]
+ */
+#define FOR_EACH_GQUAD(a, b, c, d)  \
+          for((a) = (d) - VRNA_GQUAD_MIN_BOX_SIZE + 1; (a) >= (c); (a)--)\
+            for((b) = (a) + VRNA_GQUAD_MIN_BOX_SIZE - 1;\
+                (b) <= MIN2((d), (a) + VRNA_GQUAD_MAX_BOX_SIZE - 1);\
+                (b)++)
+
+/**
+ *  This macro does almost the same as FOR_EACH_GQUAD() but keeps
+ *  the 5' delimiter fixed. 'b' is the 3' delimiter of the gquad,
+ *  for gquads within subsequence [a,c] that have 5' delimiter 'a'
+ */
+#define FOR_EACH_GQUAD_AT(a, b, c)  \
+          for((b) = (a) + VRNA_GQUAD_MIN_BOX_SIZE - 1;\
+              (b) <= MIN2((c), (a) + VRNA_GQUAD_MAX_BOX_SIZE - 1);\
+              (b)++)
+
+
+/*
+#################################
+# PRIVATE FUNCTION DECLARATIONS #
+#################################
+*/
+
+PRIVATE INLINE
+int *
+get_g_islands(short *S);
+
+PRIVATE INLINE
+int *
+get_g_islands_sub(short *S, int i, int j);
+
+/**
+ *  IMPORTANT:
+ *  If you don't know how to use this function, DONT'T USE IT!
+ *
+ *  The function pointer this function takes as argument is
+ *  used for individual calculations with each g-quadruplex
+ *  delimited by [i,j].
+ *  The function it points to always receives as first 3 arguments
+ *  position i, the stack size L and an array l[3] containing the
+ *  individual linker sizes.
+ *  The remaining 4 (void *) pointers of the callback function receive
+ *  the parameters 'data', 'P', 'aux1' and 'aux2' and thus may be
+ *  used to pass whatever data you like to.
+ *  As the names of those parameters suggest the convention is that
+ *  'data' should be used as a pointer where data is stored into,
+ *  e.g the MFE or PF and the 'P' parameter should actually be a
+ *  'paramT *' or 'pf_paramT *' type.
+ *  However, what you actually pass obviously depends on the
+ *  function the pointer is pointing to.
+ *
+ *  Although all of this may look like an overkill, it is found
+ *  to be almost as fast as implementing g-quadruplex enumeration
+ *  in each individual scenario, i.e. code duplication.
+ *  Using this function, however, ensures that all g-quadruplex
+ *  enumerations are absolutely identical.
+ */
+PRIVATE
+void
+process_gquad_enumeration(int *gg,
+                          int i,
+                          int j,
+                          void (*f)(int, int, int *,
+                                    void *, void *, void *, void *),
+                          void *data,
+                          void *P,
+                          void *aux1,
+                          void *aux2);
+
+/**
+ *  MFE callback for process_gquad_enumeration()
+ */
+PRIVATE
+void
+gquad_mfe(int i,
+          int L,
+          int *l,
+          void *data,
+          void *P,
+          void *NA,
+          void *NA2);
+
+PRIVATE
+void
+gquad_mfe_pos(int i,
+              int L,
+              int *l,
+              void *data,
+              void *P,
+              void *Lmfe,
+              void *lmfe);
+
+PRIVATE
+void
+gquad_pos_exhaustive( int i,
+                      int L,
+                      int *l,
+                      void *data,
+                      void *P,
+                      void *Lex,
+                      void *lex);
+
+/**
+ * Partition function callback for process_gquad_enumeration()
+ */
+PRIVATE
+void
+gquad_pf( int i,
+          int L,
+          int *l,
+          void *data,
+          void *P,
+          void *NA,
+          void *NA2);
+
+/**
+ * Partition function callback for process_gquad_enumeration()
+ * in contrast to gquad_pf() it stores the stack size L and
+ * the linker lengths l[3] of the g-quadruplex that dominates
+ * the interval [i,j]
+ * (FLT_OR_DBL *)data must be 0. on entry
+ */
+PRIVATE
+void
+gquad_pf_pos( int i,
+              int L,
+              int *l,
+              void *data,
+              void *pf,
+              void *Lmax,
+              void *lmax);
+
+/**
+ * MFE (alifold) callback for process_gquad_enumeration()
+ */
+PRIVATE
+void
+gquad_mfe_ali(int i,
+              int L,
+              int *l,
+              void *data,
+              void *P,
+              void *S,
+              void *n_seq);
+
+/**
+ * MFE (alifold) callback for process_gquad_enumeration()
+ * with seperation of free energy and penalty contribution
+ */
+PRIVATE
+void
+gquad_mfe_ali_en( int i,
+                  int L,
+                  int *l,
+                  void *data,
+                  void *P,
+                  void *S,
+                  void *n_seq);
+
+PRIVATE
+void
+gquad_interact( int i,
+                int L,
+                int *l,
+                void *data,
+                void *pf,
+                void *index,
+                void *NA2);
+
+PRIVATE
+void
+gquad_count(int i,
+            int L,
+            int *l,
+            void *data,
+            void *NA,
+            void *NA2,
+            void *NA3);
+
+PRIVATE
+void
+gquad_count_layers( int i,
+                    int L,
+                    int *l,
+                    void *data,
+                    void *NA,
+                    void *NA2,
+                    void *NA3);
+
+/* other useful static functions */
+
+PRIVATE
+int
+gquad_ali_penalty(int i,
+                  int L,
+                  int l[3],
+                  const short **S,
+                  paramT *P);
+
+/*
+#########################################
+# BEGIN OF PUBLIC FUNCTION DEFINITIONS  #
+#      (all available in RNAlib)        #
+#########################################
+*/
+
+/********************************
+  Here are the G-quadruplex energy
+  contribution functions
+*********************************/
+
+PUBLIC int E_gquad( int L,
+                    int l[3],
+                    paramT *P){
+
+  int i, c = INF;
+
+  for(i=0;i<3;i++){
+    if(l[i] > VRNA_GQUAD_MAX_LINKER_LENGTH) return c;
+    if(l[i] < VRNA_GQUAD_MIN_LINKER_LENGTH) return c;
+  }
+  if(L > VRNA_GQUAD_MAX_STACK_SIZE) return c;
+  if(L < VRNA_GQUAD_MIN_STACK_SIZE) return c;
+  
+  gquad_mfe(0, L, l,
+            (void *)(&c),
+            (void *)P,
+            NULL,
+            NULL);
+  return c;
+}
+
+PUBLIC FLT_OR_DBL exp_E_gquad(int L,
+                              int l[3],
+                              pf_paramT *pf){
+
+  int i;
+  FLT_OR_DBL q = 0.;
+
+  for(i=0;i<3;i++){
+    if(l[i] > VRNA_GQUAD_MAX_LINKER_LENGTH) return q;
+    if(l[i] < VRNA_GQUAD_MIN_LINKER_LENGTH) return q;
+  }
+  if(L > VRNA_GQUAD_MAX_STACK_SIZE) return q;
+  if(L < VRNA_GQUAD_MIN_STACK_SIZE) return q;
+
+  gquad_pf( 0, L, l,
+            (void *)(&q),
+            (void *)pf,
+            NULL,
+            NULL);
+  return q;
+}
+
+PUBLIC int E_gquad_ali( int i,
+                        int L,
+                        int l[3],
+                        const short **S,
+                        int n_seq,
+                        paramT *P){
+
+  int en[2];
+  E_gquad_ali_en(i, L, l, S, n_seq, en, P);
+  return en[0] + en[1];
+}
+
+
+PUBLIC void E_gquad_ali_en( int i,
+                            int L,
+                            int l[3],
+                            const short **S,
+                            int n_seq,
+                            int en[2],
+                            paramT *P){
+
+  int j;
+  en[0] = en[1] = INF;
+
+  for(j=0;j<3;j++){
+    if(l[j] > VRNA_GQUAD_MAX_LINKER_LENGTH) return;
+    if(l[j] < VRNA_GQUAD_MIN_LINKER_LENGTH) return;
+  }
+  if(L > VRNA_GQUAD_MAX_STACK_SIZE) return;
+  if(L < VRNA_GQUAD_MIN_STACK_SIZE) return;
+
+  gquad_mfe_ali_en( i, L, l,
+                    (void *)(&(en[0])),
+                    (void *)P,
+                    (void *)S,
+                    (void *)(&n_seq));
+}
+
+/********************************
+  Now, the triangular matrix
+  generators for the G-quadruplex
+  contributions are following
+*********************************/
+
+PUBLIC int *get_gquad_matrix(short *S, paramT *P){
+
+  int n, size, i, j, *gg, *my_index, *data;
+
+  n         = S[0];
+  my_index  = get_indx(n);
+  gg        = get_g_islands(S);
+  size      = (n * (n+1))/2 + 2;
+  data      = (int *)space(sizeof(int) * size);
+
+  /* prefill the upper triangular matrix with INF */
+  for(i = 0; i < size; i++) data[i] = INF;
+
+  FOR_EACH_GQUAD(i, j, 1, n){
+    process_gquad_enumeration(gg, i, j,
+                              &gquad_mfe,
+                              (void *)(&(data[my_index[j]+i])),
+                              (void *)P,
+                              NULL,
+                              NULL);
+  }
+
+  free(my_index);
+  free(gg);
+  return data;
+}
+
+PUBLIC FLT_OR_DBL *get_gquad_pf_matrix( short *S,
+                                        FLT_OR_DBL *scale,
+                                        pf_paramT *pf){
+
+  int n, size, *gg, i, j, *my_index;
+  FLT_OR_DBL *data;
+
+
+  n         = S[0];
+  size      = (n * (n+1))/2 + 2;
+  data      = (FLT_OR_DBL *)space(sizeof(FLT_OR_DBL) * size);
+  gg        = get_g_islands(S);
+  my_index  = get_iindx(n);
+
+  FOR_EACH_GQUAD(i, j, 1, n){
+    process_gquad_enumeration(gg, i, j,
+                              &gquad_pf,
+                              (void *)(&(data[my_index[i]-j])),
+                              (void *)pf,
+                              NULL,
+                              NULL);
+    data[my_index[i]-j] *= scale[j-i+1];
+  }
+
+  free(my_index);
+  free(gg);
+  return data;
+}
+
+PUBLIC int *get_gquad_ali_matrix( short *S_cons,
+                                  short **S,
+                                  int n_seq,
+                                  paramT *P){
+
+  int n, size, *data, *gg;
+  int i, j, *my_index;
+
+
+  n         = S[0][0];
+  size      = (n * (n+1))/2 + 2;
+  data      = (int *)space(sizeof(int) * size);
+  gg        = get_g_islands(S_cons);
+  my_index  = get_indx(n);
+
+  /* prefill the upper triangular matrix with INF */
+  for(i=0;i<size;i++) data[i] = INF;
+
+  FOR_EACH_GQUAD(i, j, 1, n){
+    process_gquad_enumeration(gg, i, j,
+                              &gquad_mfe_ali,
+                              (void *)(&(data[my_index[j]+i])),
+                              (void *)P,
+                              (void *)S,
+                              (void *)(&n_seq));
+  }
+
+  free(my_index);
+  free(gg);
+  return data;
+}
+
+PUBLIC int **get_gquad_L_matrix(short *S,
+                                int start,
+                                int maxdist,
+                                int **g,
+                                paramT *P){
+
+  int **data;
+  int n, i, j, k, l, *gg;
+  
+  n   = S[0];
+  gg  = get_g_islands_sub(S, start, MIN2(n, start + maxdist + 4));
+
+  if(g){ /* we just update the gquadruplex contribution for the current
+            start and rotate the rest */
+    data = g;
+    /* we re-use the memory allocated previously */
+    data[start] = data[start + maxdist + 5];
+    data[start + maxdist + 5] = NULL;
+
+    /* prefill with INF */
+    for(i = 0; i < maxdist + 5; i++)
+      data[start][i] = INF;
+
+    /*  now we compute contributions for all gquads with 5' delimiter at
+        position 'start'
+    */
+    FOR_EACH_GQUAD_AT(start, j, start + maxdist + 4){
+      process_gquad_enumeration(gg, start, j,
+                                &gquad_mfe,
+                                (void *)(&(data[start][j-start])),
+                                (void *)P,
+                                NULL,
+                                NULL);
+    }
+
+  } else { /* create a new matrix from scratch since this is the first
+              call to this function */
+
+    /* allocate memory and prefill with INF */
+    data = (int **) space(sizeof(int *) * (n+1));
+    for(k = n; (k>n-maxdist-5) && (k>=0); k--){
+      data[k] = (int *) space(sizeof(int)*(maxdist+5));
+      for(i = 0; i < maxdist+5; i++) data[k][i] = INF;
+    }
+    
+    /* compute all contributions for the gquads in this interval */
+    FOR_EACH_GQUAD(i, j, n - maxdist - 4, n){
+      process_gquad_enumeration(gg, i, j,
+                                &gquad_mfe,
+                                (void *)(&(data[i][j-i])),
+                                (void *)P,
+                                NULL,
+                                NULL);
+    }
+  }
+
+  gg += start - 1;
+  free(gg);
+  return data;
+}
+
+PUBLIC plist *get_plist_gquad_from_db(const char *structure, float pr){
+  int x, size, actual_size, L, n, ge, ee, gb, l[3];
+  plist *pl;
+
+  actual_size = 0;
+  ge          = 0;
+  n           = 2;
+  size        = strlen(structure);
+  pl          = (plist *)space(n*size*sizeof(plist));
+
+  while((ee = parse_gquad(structure + ge, &L, l)) > 0){
+    ge += ee;
+    gb = ge - L*4 - l[0] - l[1] - l[2] + 1;
+    /* add pseudo-base pair encloding gquad */
+    for(x = 0; x < L; x++){
+      if (actual_size >= n * size - 5){
+        n *= 2;
+        pl = (plist *)xrealloc(pl, n * size * sizeof(plist));
+      }
+      pl[actual_size].i = gb + x;
+      pl[actual_size].j = ge + x - L + 1;
+      pl[actual_size].p = pr;
+      pl[actual_size++].type = 0;
+
+      pl[actual_size].i = gb + x;
+      pl[actual_size].j = gb + x + l[0] + L;
+      pl[actual_size].p = pr;
+      pl[actual_size++].type = 0;
+
+      pl[actual_size].i = gb + x + l[0] + L;
+      pl[actual_size].j = ge + x - 2*L - l[2] + 1;
+      pl[actual_size].p = pr;
+      pl[actual_size++].type = 0;
+
+      pl[actual_size].i = ge + x - 2*L - l[2] + 1;
+      pl[actual_size].j = ge + x - L + 1;
+      pl[actual_size].p = pr;
+      pl[actual_size++].type = 0;
+    }
+  } 
+
+  pl[actual_size].i = pl[actual_size].j = 0;
+  pl[actual_size++].p = 0;
+  pl = (plist *)xrealloc(pl, actual_size * sizeof(plist));
+  return pl;
+}
+
+PUBLIC void get_gquad_pattern_mfe(short *S,
+                                  int i,
+                                  int j,
+                                  paramT *P,
+                                  int *L,
+                                  int l[3]){
+
+  int *gg = get_g_islands_sub(S, i, j);
+  int c = INF;
+
+  process_gquad_enumeration(gg, i, j,
+                            &gquad_mfe_pos,
+                            (void *)(&c),
+                            (void *)P,
+                            (void *)L,
+                            (void *)l);
+
+  gg += i - 1;
+  free(gg);
+}
+
+PUBLIC void
+get_gquad_pattern_exhaustive( short *S,
+                              int i,
+                              int j,
+                              paramT *P,
+                              int *L,
+                              int *l,
+                              int threshold){
+
+  int *gg = get_g_islands_sub(S, i, j);
+
+  process_gquad_enumeration(gg, i, j,
+                            &gquad_pos_exhaustive,
+                            (void *)(&threshold),
+                            (void *)P,
+                            (void *)L,
+                            (void *)l);
+
+  gg += i - 1;
+  free(gg);
+}
+
+PUBLIC void get_gquad_pattern_pf( short *S,
+                                  int i,
+                                  int j,
+                                  pf_paramT *pf,
+                                  int *L,
+                                  int l[3]){
+
+  int *gg = get_g_islands_sub(S, i, j);
+  FLT_OR_DBL q = 0.;
+
+  process_gquad_enumeration(gg, i, j,
+                            &gquad_pf_pos,
+                            (void *)(&q),
+                            (void *)pf,
+                            (void *)L,
+                            (void *)l);
+
+  gg += i - 1;
+  free(gg);
+}
+
+PUBLIC plist *get_plist_gquad_from_pr(short *S,
+                                      int gi,
+                                      int gj,
+                                      FLT_OR_DBL *G,
+                                      FLT_OR_DBL *probs,
+                                      FLT_OR_DBL *scale,
+                                      pf_paramT *pf){
+
+  int L, l[3];
+  return  get_plist_gquad_from_pr_max(S, gi, gj, G, probs, scale, &L, l, pf);
+}
+
+
+PUBLIC plist *get_plist_gquad_from_pr_max(short *S,
+                                      int gi,
+                                      int gj,
+                                      FLT_OR_DBL *G,
+                                      FLT_OR_DBL *probs,
+                                      FLT_OR_DBL *scale,
+                                      int *Lmax,
+                                      int lmax[3],
+                                      pf_paramT *pf){ 
+
+  int n, size, *gg, counter, i, j, *my_index;
+  FLT_OR_DBL pp, *tempprobs;
+  plist *pl;
+  
+  n         = S[0];
+  size      = (n * (n + 1))/2 + 2;
+  tempprobs = (FLT_OR_DBL *)space(sizeof(FLT_OR_DBL) * size);
+  pl        = (plist *)space((S[0]*S[0])*sizeof(plist));
+  gg        = get_g_islands_sub(S, gi, gj);
+  counter   = 0;
+  my_index  = get_iindx(n);
+
+  process_gquad_enumeration(gg, gi, gj,
+                            &gquad_interact,
+                            (void *)tempprobs,
+                            (void *)pf,
+                            (void *)my_index,
+                            NULL);
+
+  pp = 0.;
+  process_gquad_enumeration(gg, gi, gj,
+                            &gquad_pf_pos,
+                            (void *)(&pp),
+                            (void *)pf,
+                            (void *)Lmax,
+                            (void *)lmax);
+
+  pp = probs[my_index[gi]-gj] * scale[gj-gi+1] / G[my_index[gi]-gj];
+  for (i=gi;i<gj; i++) {
+    for (j=i; j<=gj; j++) {
+      if (tempprobs[my_index[i]-j]>0.) {
+        pl[counter].i=i;
+        pl[counter].j=j;
+        pl[counter++].p = pp * tempprobs[my_index[i]-j];
+      }
+    }
+  }
+  pl[counter].i = pl[counter].j = 0;
+  pl[counter++].p = 0.;
+  /* shrink memory to actual size needed */
+  pl = (plist *) xrealloc(pl, counter * sizeof(plist));
+
+  gg += gi - 1; free(gg);
+  free(my_index);
+  free (tempprobs);
+  return pl;
+}
+
+PUBLIC int
+get_gquad_count(short *S,
+                int i,
+                int j){
+
+  int *gg     = get_g_islands_sub(S, i, j);
+  int p,q,counter = 0;
+
+  FOR_EACH_GQUAD(p, q, i, j)
+    process_gquad_enumeration(gg, p, q,
+                              &gquad_count,
+                              (void *)(&counter),
+                              NULL,
+                              NULL,
+                              NULL);
+
+  gg += i - 1;
+  free(gg);
+  return counter;
+}
+
+PUBLIC int
+get_gquad_layer_count(short *S,
+                      int i,
+                      int j){
+
+  int *gg     = get_g_islands_sub(S, i, j);
+  int p,q,counter = 0;
+
+  FOR_EACH_GQUAD(p, q, i, j)
+    process_gquad_enumeration(gg, p, q,
+                              &gquad_count_layers,
+                              (void *)(&counter),
+                              NULL,
+                              NULL,
+                              NULL);
+
+  gg += i - 1;
+  free(gg);
+  return counter;
+}
+
+PUBLIC int parse_gquad(const char *struc, int *L, int l[3]) {
+  int i, il, start, end, len;
+
+  for (i=0; struc[i] && struc[i]!='+'; i++);
+  if (struc[i] == '+') { /* start of gquad */
+    for (il=0; il<=3; il++) {
+      start=i; /* pos of first '+' */
+      while (struc[++i] == '+'){
+        if((il) && (i-start == *L))
+          break;
+      }
+      end=i; len=end-start; 
+      if (il==0) *L=len;
+      else if (len!=*L)
+        nrerror("unequal stack lengths in gquad");
+      if (il==3) break;
+      while (struc[++i] == '.'); /* linker */
+      l[il] = i-end;
+      if (struc[i] != '+')
+        nrerror("illegal character in gquad linker region");
+    }
+  }
+  else return 0;
+  /* printf("gquad at %d %d %d %d %d\n", end, *L, l[0], l[1], l[2]); */
+  return end;
+}
+
+
+
+/*
+#########################################
+# BEGIN OF PRIVATE FUNCTION DEFINITIONS #
+#          (internal use only)          #
+#########################################
+*/
+
+PRIVATE int gquad_ali_penalty(int i,
+                              int L,
+                              int l[3],
+                              const short **S,
+                              paramT *P){
+
+  int s, cnt;
+  int penalty     = 0;
+  int gg_mismatch = 0;
+
+  /* check for compatibility in the alignment */
+  for(s = 0; S[s]; s++){
+    unsigned int  ld  = 0; /* !=0 if layer destruction was detected */
+    int           pen = 0;
+
+    /* check bottom layer */
+    if(S[s][i] != 3)                            ld |= 1U;
+    if(S[s][i + L + l[0]] != 3)                 ld |= 2U;
+    if(S[s][i + 2*L + l[0] + l[1]] != 3)        ld |= 4U;
+    if(S[s][i + 3*L + l[0] + l[1] + l[2]] != 3) ld |= 8U;
+     /* add 1x penalty for missing bottom layer */
+    if(ld) pen += VRNA_GQUAD_MISMATCH_PENALTY;
+
+    /* check top layer */
+    ld = 0;
+    if(S[s][i + L - 1] != 3)                        ld |= 1U;
+    if(S[s][i + 2*L + l[0] - 1] != 3)               ld |= 2U;
+    if(S[s][i + 3*L + l[0] + l[1] - 1] != 3)        ld |= 4U;
+    if(S[s][i + 4*L + l[0] + l[1] + l[2] - 1] != 3) ld |= 8U;
+     /* add 1x penalty for missing top layer */
+    if(ld) pen += VRNA_GQUAD_MISMATCH_PENALTY;
+
+    /* check inner layers */
+    for(cnt=1;cnt<L-1;cnt++){
+      if(S[s][i + cnt] != 3)                            ld |= 1U;
+      if(S[s][i + L + l[0] + cnt] != 3)                 ld |= 2U;
+      if(S[s][i + 2*L + l[0] + l[1] + cnt] != 3)        ld |= 4U;
+      if(S[s][i + 3*L + l[0] + l[1] + l[2] + cnt] != 3) ld |= 8U;
+      /* add 2x penalty for missing inner layer */
+      if(ld) pen += 2*VRNA_GQUAD_MISMATCH_PENALTY;
+    }
+
+    /* if all layers are missing, we have a complete gg mismatch */
+    if(pen >= (2*VRNA_GQUAD_MISMATCH_PENALTY * (L-1)))
+      gg_mismatch++;
+
+    /* add the penalty to the score */
+    penalty += pen;
+  }
+  /* if gg_mismatch exceeds maximum allowed, this g-quadruplex is forbidden */
+  if(gg_mismatch > VRNA_GQUAD_MISMATCH_NUM_ALI) return INF;
+  else return penalty;
+}
+
+
+PRIVATE void gquad_mfe( int i,
+                        int L,
+                        int *l,
+                        void *data,
+                        void *P,
+                        void *NA,
+                        void *NA2){
+
+  int cc = ((paramT *)P)->gquad[L][l[0] + l[1] + l[2]];
+  if(cc < *((int *)data))
+    *((int *)data) = cc;
+}
+
+PRIVATE void gquad_mfe_pos( int i,
+                            int L,
+                            int *l,
+                            void *data,
+                            void *P,
+                            void *Lmfe,
+                            void *lmfe){
+
+  int cc = ((paramT *)P)->gquad[L][l[0] + l[1] + l[2]];
+  if(cc < *((int *)data)){
+    *((int *)data)        = cc;
+    *((int *)Lmfe)        = L;
+    *((int *)lmfe)        = l[0];
+    *(((int *)lmfe) + 1)  = l[1];
+    *(((int *)lmfe) + 2)  = l[2];
+  }
+}
+
+PRIVATE
+void
+gquad_pos_exhaustive( int i,
+                      int L,
+                      int *l,
+                      void *data,
+                      void *P,
+                      void *Lex,
+                      void *lex){
+
+  int cnt;
+  int cc = ((paramT *)P)->gquad[L][l[0] + l[1] + l[2]];
+  if(cc <= *((int *)data)){
+    /*  since Lex is an array of L values and lex an
+        array of l triples we need to find out where
+        the current gquad position is to be stored...
+		the below implementation might be slow but we
+		still use it for now
+    */
+    for(cnt = 0; ((int *)Lex)[cnt] != -1; cnt++);
+
+    *((int *)Lex + cnt)           = L;
+    *((int *)Lex + cnt + 1)       = -1;
+    *(((int *)lex) + (3*cnt) + 0) = l[0];
+    *(((int *)lex) + (3*cnt) + 1) = l[1];
+    *(((int *)lex) + (3*cnt) + 2) = l[2];
+  }
+}
+
+PRIVATE
+void
+gquad_count(int i,
+            int L,
+            int *l,
+            void *data,
+            void *NA,
+            void *NA2,
+            void *NA3){
+
+  *((int *)data) += 1;
+}
+
+PRIVATE
+void
+gquad_count_layers( int i,
+                    int L,
+                    int *l,
+                    void *data,
+                    void *NA,
+                    void *NA2,
+                    void *NA3){
+
+  *((int *)data) += L;
+}
+
+
+PRIVATE void gquad_pf(int i,
+                      int L,
+                      int *l,
+                      void *data,
+                      void *pf,
+                      void *NA,
+                      void *NA2){
+
+  *((FLT_OR_DBL *)data) += ((pf_paramT *)pf)->expgquad[L][l[0] + l[1] + l[2]];
+}
+
+PRIVATE void gquad_pf_pos(int i,
+                          int L,
+                          int *l,
+                          void *data,
+                          void *pf,
+                          void *Lmax,
+                          void *lmax){
+
+  FLT_OR_DBL gq = ((pf_paramT *)pf)->expgquad[L][l[0] + l[1] + l[2]];
+  if(gq > *((FLT_OR_DBL *)data)){
+    *((FLT_OR_DBL *)data) = gq;
+    *((int *)Lmax)        = L;
+    *((int *)lmax)        = l[0];
+    *(((int *)lmax) + 1)  = l[1];
+    *(((int *)lmax) + 2)  = l[2];
+  }
+}
+
+PRIVATE void gquad_mfe_ali( int i,
+                            int L,
+                            int *l,
+                            void *data,
+                            void *P,
+                            void *S,
+                            void *n_seq){
+
+  int en[2], cc;
+  en[0] = en[1] = INF;
+  gquad_mfe_ali_en(i, L, l, (void *)(&(en[0])), P, S, n_seq);
+  if(en[1] != INF){
+    cc  = en[0] + en[1];
+    if(cc < *((int *)data)) *((int *)data) = cc;
+  }
+}
+
+PRIVATE void gquad_mfe_ali_en(int i,
+                              int L,
+                              int *l,
+                              void *data,
+                              void *P,
+                              void *S,
+                              void *n_seq){
+
+  int en[2], cc, dd;
+  en[0] = ((paramT *)P)->gquad[L][l[0] + l[1] + l[2]] * (*(int *)n_seq);
+  en[1] = gquad_ali_penalty(i, L, l, (const short **)S, (paramT *)P);
+  if(en[1] != INF){
+    cc = en[0] + en[1];
+    dd = ((int *)data)[0] + ((int *)data)[1];
+    if(cc < dd){
+      ((int *)data)[0] = en[0];
+      ((int *)data)[1] = en[1];
+    }
+  }
+}
+
+PRIVATE void gquad_interact(int i,
+                      int L,
+                      int *l,
+                      void *data,
+                      void *pf,
+                      void *index,
+                      void *NA2){
+
+  int x, *idx;
+  FLT_OR_DBL gq, *pp;
+
+  idx = (int *)index;
+  pp  = (FLT_OR_DBL *)data;
+  gq  = exp_E_gquad(L, l, (pf_paramT *)pf);
+
+  for(x = 0; x < L; x++){
+    pp[idx[i + x] - (i + x + 3*L + l[0] + l[1] + l[2])] += gq;
+    pp[idx[i + x] - (i + x + L + l[0])] += gq;
+    pp[idx[i + x + L + l[0]] - (i + x + 2*L + l[0] + l[1])] += gq;
+    pp[idx[i + x + 2*L + l[0] + l[1]] - (i + x + 3*L + l[0] + l[1] + l[2])] += gq;
+  }
+  
+}
+
+PRIVATE INLINE int *get_g_islands(short *S){
+  return get_g_islands_sub(S, 1, S[0]);
+}
+
+PRIVATE INLINE int *get_g_islands_sub(short *S, int i, int j){
+  int x, *gg;
+
+  gg = (int *)space(sizeof(int)*(j-i+2));
+  gg -= i - 1;
+
+  if(S[j]==3) gg[j] = 1;
+  for(x = j - 1; x >= i; x--)
+    if(S[x] == 3)
+      gg[x] = gg[x+1]+1;
+
+  return gg;
+}
+
+/**
+ *  We could've also created a macro that loops over all G-quadruplexes
+ *  delimited by i and j. However, for the fun of it we use this function
+ *  that receives a pointer to a callback function which in turn does the
+ *  actual computation for each quadruplex found.
+ */
+PRIVATE
+void
+process_gquad_enumeration(int *gg,
+                          int i,
+                          int j,
+                          void (*f)(int, int, int *,
+                                    void *, void *, void *, void *),
+                          void *data,
+                          void *P,
+                          void *aux1,
+                          void *aux2){
+
+  int L, l[3], n, max_linker, maxl0, maxl1;
+
+  n = j - i + 1;
+
+  if((n >= VRNA_GQUAD_MIN_BOX_SIZE) && (n <= VRNA_GQUAD_MAX_BOX_SIZE))
+    for(L = MIN2(gg[i], VRNA_GQUAD_MAX_STACK_SIZE);
+        L >= VRNA_GQUAD_MIN_STACK_SIZE;
+        L--)
+      if(gg[j-L+1] >= L){
+        max_linker = n-4*L;
+        if(     (max_linker >= 3*VRNA_GQUAD_MIN_LINKER_LENGTH)
+            &&  (max_linker <= 3*VRNA_GQUAD_MAX_LINKER_LENGTH)){
+          maxl0 = MIN2( VRNA_GQUAD_MAX_LINKER_LENGTH,
+                        max_linker - 2*VRNA_GQUAD_MIN_LINKER_LENGTH
+                      );
+          for(l[0] = VRNA_GQUAD_MIN_LINKER_LENGTH;
+              l[0] <= maxl0;
+              l[0]++)
+            if(gg[i+L+l[0]] >= L){
+              maxl1 = MIN2( VRNA_GQUAD_MAX_LINKER_LENGTH,
+                            max_linker - l[0] - VRNA_GQUAD_MIN_LINKER_LENGTH
+                          );
+              for(l[1] = VRNA_GQUAD_MIN_LINKER_LENGTH;
+                  l[1] <= maxl1;
+                  l[1]++)
+                if(gg[i + 2*L + l[0] + l[1]] >= L){
+                  l[2] = max_linker - l[0] - l[1];
+                  f(i, L, &(l[0]), data, P, aux1, aux2);
+                }
+            }
+        }
+      }
+}
+
diff --git a/cbits/params.c b/cbits/params.c
new file mode 100644
--- /dev/null
+++ b/cbits/params.c
@@ -0,0 +1,751 @@
+/*
+
+                  c Ivo Hofacker
+
+                  Vienna RNA package
+*/
+#include <config.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+#include "energy_par.h"
+#include "fold_vars.h"
+#include "utils.h"
+#include "params.h"
+/**
+*** \file params.c
+*** <P>
+*** This file provides functions that return temperature scaled energy parameters and
+*** Boltzmann weights packed in datastructures
+*** </P>
+***/
+
+/*@unused@*/
+static char rcsid[] UNUSED = "$Id: params.c,v 1.9 2008/07/04 14:29:14 ivo Exp $";
+
+PRIVATE paramT p;
+PRIVATE int id=-1;
+/* variables for partition function */
+PRIVATE pf_paramT pf;
+PRIVATE int pf_id=-1;
+
+#ifdef _OPENMP
+#pragma omp threadprivate(id, pf_id)
+#endif
+
+PUBLIC paramT *scale_parameters(void){
+  model_detailsT  md;
+  set_model_details(&md);
+  return get_scaled_parameters(temperature, md);
+}
+
+PUBLIC paramT *get_scaled_parameters( double temp,
+                                      model_detailsT md){
+
+  unsigned int i,j,k,l;
+  double tempf;
+  paramT *params;
+
+  params  = (paramT *)space(sizeof(paramT));
+
+  /* store the model details */
+  params->model_details = md;
+  params->temperature   = temp;
+  tempf                 = ((params->temperature+K0)/Tmeasure);
+
+  for(i = VRNA_GQUAD_MIN_STACK_SIZE; i <= VRNA_GQUAD_MAX_STACK_SIZE; i++)
+    for(j = 3*VRNA_GQUAD_MIN_LINKER_LENGTH; j <= 3*VRNA_GQUAD_MAX_LINKER_LENGTH; j++){
+      double GQuadAlpha_T = (double)GQuadAlphadH - (double)(GQuadAlphadH - GQuadAlpha37) * tempf;
+      double GQuadBeta_T = (double)GQuadBetadH - (double)(GQuadBetadH - GQuadBeta37) * tempf;
+      params->gquad[i][j] = (int)GQuadAlpha_T*(i-1) + (int)(((double)GQuadBeta_T)*log(j - 2));
+    }
+
+  for (i=0; i<31; i++)
+    params->hairpin[i]  = hairpindH[i] - (hairpindH[i] - hairpin37[i])*tempf;
+  for (i=0; i<=MIN2(30,MAXLOOP); i++) {
+    params->bulge[i]          = bulgedH[i] - (bulgedH[i] - bulge37[i]) * tempf;
+    params->internal_loop[i]  = internal_loopdH[i] - (internal_loopdH[i] - internal_loop37[i]) * tempf;
+  }
+  params->lxc = lxc37*tempf;
+  for (; i<=MAXLOOP; i++) {
+    params->bulge[i] = params->bulge[30]+(int)(params->lxc*log((double)(i)/30.));
+    params->internal_loop[i] = params->internal_loop[30]+(int)(params->lxc*log((double)(i)/30.));
+  }
+
+  params->ninio[2] = niniodH - (niniodH - ninio37) * tempf;
+
+  params->TripleC = TripleCdH - (TripleCdH - TripleC37) * tempf;
+  params->MultipleCA = MultipleCAdH - (MultipleCAdH - MultipleCA37) * tempf;
+  params->MultipleCB = MultipleCBdH - (MultipleCBdH - MultipleCB37) * tempf;
+
+  for (i=0; (i*7)<strlen(Tetraloops); i++)
+    params->Tetraloop_E[i] = TetraloopdH[i] - (TetraloopdH[i]-Tetraloop37[i])*tempf;
+  for (i=0; (i*5)<strlen(Triloops); i++)
+    params->Triloop_E[i] =  TriloopdH[i] - (TriloopdH[i]-Triloop37[i])*tempf;
+  for (i=0; (i*9)<strlen(Hexaloops); i++)
+    params->Hexaloop_E[i] =  HexaloopdH[i] - (HexaloopdH[i]-Hexaloop37[i])*tempf;
+
+  params->TerminalAU = TerminalAUdH - (TerminalAUdH - TerminalAU37) * tempf;
+
+  params->DuplexInit = DuplexInitdH - (DuplexInitdH - DuplexInit37) *tempf;
+
+  params->MLbase = ML_BASEdH - (ML_BASEdH - ML_BASE37) * tempf;
+
+  for (i=0; i<=NBPAIRS; i++)
+    params->MLintern[i] = ML_interndH - (ML_interndH - ML_intern37) * tempf;
+
+  params->MLclosing = ML_closingdH - (ML_closingdH - ML_closing37) * tempf;
+
+
+  /* stacks    G(T) = H - [H - G(T0)]*T/T0 */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=NBPAIRS; j++)
+      params->stack[i][j] = stackdH[i][j] - (stackdH[i][j] - stack37[i][j])*tempf;
+
+  /* mismatches */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<5; j++)
+      for (k=0; k<5; k++) {
+        int mm;
+        params->mismatchI[i][j][k]    = mismatchIdH[i][j][k] - (mismatchIdH[i][j][k] - mismatchI37[i][j][k])*tempf;
+        params->mismatchH[i][j][k]    = mismatchHdH[i][j][k] - (mismatchHdH[i][j][k] - mismatchH37[i][j][k])*tempf;
+        params->mismatch1nI[i][j][k]  = mismatch1nIdH[i][j][k]-(mismatch1nIdH[i][j][k]-mismatch1nI37[i][j][k])*tempf;/* interior nx1 loops */
+        params->mismatch23I[i][j][k]  = mismatch23IdH[i][j][k]-(mismatch23IdH[i][j][k]-mismatch23I37[i][j][k])*tempf;/* interior 2x3 loops */
+        if(md.dangles){
+          mm                      = mismatchMdH[i][j][k] - (mismatchMdH[i][j][k] - mismatchM37[i][j][k])*tempf;
+          params->mismatchM[i][j][k]    = (mm > 0) ? 0 : mm;
+          mm                      = mismatchExtdH[i][j][k] - (mismatchExtdH[i][j][k] - mismatchExt37[i][j][k])*tempf;
+          params->mismatchExt[i][j][k]  = (mm > 0) ? 0 : mm;
+        }
+        else{
+          params->mismatchM[i][j][k] = params->mismatchExt[i][j][k] = 0;
+        }
+      }
+
+  /* dangles */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<5; j++) {
+      int dd;
+      dd = dangle5_dH[i][j] - (dangle5_dH[i][j] - dangle5_37[i][j])*tempf;
+      params->dangle5[i][j] = (dd>0) ? 0 : dd;  /* must be <= 0 */
+      dd = dangle3_dH[i][j] - (dangle3_dH[i][j] - dangle3_37[i][j])*tempf;
+      params->dangle3[i][j] = (dd>0) ? 0 : dd;  /* must be <= 0 */
+    }
+  /* interior 1x1 loops */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=NBPAIRS; j++)
+      for (k=0; k<5; k++)
+        for (l=0; l<5; l++)
+          params->int11[i][j][k][l] = int11_dH[i][j][k][l] - (int11_dH[i][j][k][l] - int11_37[i][j][k][l])*tempf;
+
+  /* interior 2x1 loops */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=NBPAIRS; j++)
+      for (k=0; k<5; k++)
+        for (l=0; l<5; l++) {
+          int m;
+          for (m=0; m<5; m++)
+            params->int21[i][j][k][l][m] = int21_dH[i][j][k][l][m] - (int21_dH[i][j][k][l][m] - int21_37[i][j][k][l][m])*tempf;
+        }
+  /* interior 2x2 loops */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=NBPAIRS; j++)
+      for (k=0; k<5; k++)
+        for (l=0; l<5; l++) {
+          int m,n;
+          for (m=0; m<5; m++)
+            for (n=0; n<5; n++)
+              params->int22[i][j][k][l][m][n] = int22_dH[i][j][k][l][m][n] - (int22_dH[i][j][k][l][m][n]-int22_37[i][j][k][l][m][n])*tempf;
+        }
+
+  strncpy(params->Tetraloops, Tetraloops, 281);
+  strncpy(params->Triloops, Triloops, 241);
+  strncpy(params->Hexaloops, Hexaloops, 361);
+
+  params->id = ++id;
+  return params;
+}
+
+
+/*------------------------------------------------------------------------*/
+#define SCALE 10
+/**
+*** dangling ends should never be destabilizing, i.e. expdangle>=1<BR>
+*** specific heat needs smooth function (2nd derivative)<BR>
+*** we use a*(sin(x+b)+1)^2, with a=2/(3*sqrt(3)), b=Pi/6-sqrt(3)/2,
+*** in the interval b<x<sqrt(3)/2
+*/
+#define SMOOTH(X) ((X)/SCALE<-1.2283697)?0:(((X)/SCALE>0.8660254)?(X):\
+          SCALE*0.38490018*(sin((X)/SCALE-0.34242663)+1)*(sin((X)/SCALE-0.34242663)+1))
+
+/* #define SMOOTH(X) ((X)<0 ? 0 : (X)) */
+
+
+PUBLIC pf_paramT *get_scaled_pf_parameters(void){
+  model_detailsT  md;
+  set_model_details(&md);
+  return get_boltzmann_factors(temperature, 1.0, md, pf_scale);
+}
+
+PUBLIC pf_paramT *get_boltzmann_factors(double temp,
+                                        double betaScale,
+                                        model_detailsT md,
+                                        double pf_scale){
+
+  unsigned  int i, j, k, l;
+  double        kT, TT;
+  double        GT;
+  pf_paramT     *pf;
+
+  pf                = (pf_paramT *)space(sizeof(pf_paramT));
+  pf->model_details = md;
+  pf->temperature   = temp;
+  pf->alpha         = betaScale;
+  pf->kT = kT       = betaScale*(temp+K0)*GASCONST;   /* kT in cal/mol  */
+  pf->pf_scale      = pf_scale;
+  TT                = (temp+K0)/(Tmeasure);
+
+  for(i = VRNA_GQUAD_MIN_STACK_SIZE; i <= VRNA_GQUAD_MAX_STACK_SIZE; i++)
+    for(j = 3*VRNA_GQUAD_MIN_LINKER_LENGTH; j <= 3*VRNA_GQUAD_MAX_LINKER_LENGTH; j++){
+      double GQuadAlpha_T = (double)GQuadAlphadH - (double)(GQuadAlphadH - GQuadAlpha37) * TT;
+      double GQuadBeta_T = (double)GQuadBetadH - (double)(GQuadBetadH - GQuadBeta37) * TT;
+      GT = ((double)GQuadAlpha_T)*((double)(i-1)) + ((double)GQuadBeta_T)*log(((double)j) - 2.);
+      pf->expgquad[i][j] = exp( -GT*10./kT);
+    }
+
+  /* loop energies: hairpins, bulges, interior, mulit-loops */
+  for (i=0; i<31; i++){
+    GT  = hairpindH[i] - (hairpindH[i] - hairpin37[i])*TT;
+    pf->exphairpin[i] = exp( -GT*10./kT);
+  }
+
+  for (i=0; i<=MIN2(30, MAXLOOP); i++) {
+    GT =  bulgedH[i]- (bulgedH[i] - bulge37[i])*TT;
+    pf->expbulge[i] = exp( -GT*10./kT);
+    GT =  internal_loopdH[i] - (internal_loopdH[i] - internal_loop37[i])*TT;
+    pf->expinternal[i] = exp( -GT*10./kT);
+  }
+  /* special case of size 2 interior loops (single mismatch) */
+  if (james_rule) pf->expinternal[2] = exp ( -80*10./kT);
+
+  pf->lxc = lxc37*TT;
+
+  GT =  DuplexInitdH - (DuplexInitdH - DuplexInit37)*TT;
+  pf->expDuplexInit = exp( -GT*10./kT);
+
+  for (i=31; i<=MAXLOOP; i++) {
+    GT = bulge37[30]*TT + (pf->lxc*log( i/30.));
+    pf->expbulge[i] = exp( -GT*10./kT);
+    GT = internal_loop37[30]*TT + (pf->lxc*log( i/30.));
+    pf->expinternal[i] = exp( -GT*10./kT);
+  }
+
+  GT = niniodH - (niniodH - ninio37)*TT;
+  for (j=0; j<=MAXLOOP; j++)
+      pf->expninio[2][j]=exp(-MIN2(MAX_NINIO,j*GT)*10./kT);
+
+  for (i=0; (i*7)<strlen(Tetraloops); i++) {
+    GT = TetraloopdH[i] - (TetraloopdH[i]-Tetraloop37[i])*TT;
+    pf->exptetra[i] = exp( -GT*10./kT);
+  }
+  for (i=0; (i*5)<strlen(Triloops); i++) {
+    GT = TriloopdH[i] - (TriloopdH[i]-Triloop37[i])*TT;
+    pf->exptri[i] = exp( -GT*10./kT);
+  }
+  for (i=0; (i*9)<strlen(Hexaloops); i++) {
+    GT = HexaloopdH[i] - (HexaloopdH[i]-Hexaloop37[i])*TT;
+    pf->exphex[i] = exp( -GT*10./kT);
+  }
+  GT =  ML_closingdH - (ML_closingdH - ML_closing37)*TT;
+  pf->expMLclosing = exp( -GT*10./kT);
+
+  for (i=0; i<=NBPAIRS; i++) {
+    GT =  ML_interndH - (ML_interndH - ML_intern37)*TT;
+    /* if (i>2) GT += TerminalAU; */
+    pf->expMLintern[i] = exp( -GT*10./kT);
+  }
+  GT = TerminalAUdH - (TerminalAUdH - TerminalAU37)*TT;
+  pf->expTermAU = exp(-GT*10./kT);
+
+  GT = ML_BASEdH - (ML_BASEdH - ML_BASE37)*TT;
+
+  pf->expMLbase=exp(-10.*GT/kT);
+
+
+  /* if dangles==0 just set their energy to 0,
+     don't let dangle energies become > 0 (at large temps),
+     but make sure go smoothly to 0                        */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=4; j++) {
+      if (md.dangles) {
+        GT = dangle5_dH[i][j] - (dangle5_dH[i][j] - dangle5_37[i][j])*TT;
+        pf->expdangle5[i][j] = exp(SMOOTH(-GT)*10./kT);
+        GT = dangle3_dH[i][j] - (dangle3_dH[i][j] - dangle3_37[i][j])*TT;
+        pf->expdangle3[i][j] =  exp(SMOOTH(-GT)*10./kT);
+      } else
+        pf->expdangle3[i][j] = pf->expdangle5[i][j] = 1;
+    }
+
+  /* stacking energies */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=NBPAIRS; j++) {
+      GT =  stackdH[i][j] - (stackdH[i][j] - stack37[i][j])*TT;
+      pf->expstack[i][j] = exp( -GT*10./kT);
+    }
+
+  /* mismatch energies */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<5; j++)
+      for (k=0; k<5; k++) {
+        GT =  mismatchIdH[i][j][k] - ( mismatchIdH[i][j][k] - mismatchI37[i][j][k])*TT;
+        pf->expmismatchI[i][j][k] = exp(-GT*10.0/kT);
+        GT = mismatch1nIdH[i][j][k] - (mismatch1nIdH[i][j][k] - mismatch1nI37[i][j][k])*TT;
+        pf->expmismatch1nI[i][j][k] = exp(-GT*10.0/kT);
+        GT = mismatchHdH[i][j][k] - (mismatchHdH[i][j][k] - mismatchH37[i][j][k])*TT;
+        pf->expmismatchH[i][j][k] = exp(-GT*10.0/kT);
+        if (md.dangles) {
+          GT = mismatchMdH[i][j][k] - (mismatchMdH[i][j][k] - mismatchM37[i][j][k])*TT;
+          pf->expmismatchM[i][j][k] = exp(SMOOTH(-GT)*10.0/kT);
+          GT = mismatchExtdH[i][j][k] - (mismatchExtdH[i][j][k] - mismatchExt37[i][j][k])*TT;
+          pf->expmismatchExt[i][j][k] = exp(SMOOTH(-GT)*10.0/kT);
+        }
+        else{
+          pf->expmismatchM[i][j][k] = pf->expmismatchExt[i][j][k] = 1.;
+        }
+        GT = mismatch23IdH[i][j][k] - (mismatch23IdH[i][j][k] - mismatch23I37[i][j][k])*TT;
+        pf->expmismatch23I[i][j][k] = exp(-GT*10.0/kT);
+      }
+
+  /* interior lops of length 2 */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=NBPAIRS; j++)
+      for (k=0; k<5; k++)
+        for (l=0; l<5; l++) {
+          GT = int11_dH[i][j][k][l] -
+            (int11_dH[i][j][k][l] - int11_37[i][j][k][l])*TT;
+          pf->expint11[i][j][k][l] = exp(-GT*10./kT);
+        }
+  /* interior 2x1 loops */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=NBPAIRS; j++)
+      for (k=0; k<5; k++)
+        for (l=0; l<5; l++) {
+          int m;
+          for (m=0; m<5; m++) {
+            GT = int21_dH[i][j][k][l][m] -
+              (int21_dH[i][j][k][l][m] - int21_37[i][j][k][l][m])*TT;
+            pf->expint21[i][j][k][l][m] = exp(-GT*10./kT);
+          }
+        }
+
+  /* interior 2x2 loops */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=NBPAIRS; j++)
+      for (k=0; k<5; k++)
+        for (l=0; l<5; l++) {
+          int m,n;
+          for (m=0; m<5; m++)
+            for (n=0; n<5; n++) {
+              GT = int22_dH[i][j][k][l][m][n] -
+                (int22_dH[i][j][k][l][m][n]-int22_37[i][j][k][l][m][n])*TT;
+              pf->expint22[i][j][k][l][m][n] = exp(-GT*10./kT);
+            }
+        }
+
+  strncpy(pf->Tetraloops, Tetraloops, 281);
+  strncpy(pf->Triloops, Triloops, 241);
+  strncpy(pf->Hexaloops, Hexaloops, 361);
+
+  return pf;
+}
+
+PUBLIC pf_paramT *get_scaled_alipf_parameters(unsigned int n_seq){
+  model_detailsT  md;
+  set_model_details(&md);
+  return get_boltzmann_factors_ali(n_seq, temperature, 1.0, md, pf_scale);
+}
+
+PUBLIC pf_paramT *get_boltzmann_factors_ali(unsigned int n_seq,
+                                            double temperature,
+                                            double betaScale,
+                                            model_detailsT md,
+                                            double pf_scale){
+
+  /* scale energy parameters and pre-calculate Boltzmann weights */
+  unsigned int  i, j, k, l;
+  double        kTn, TT;
+  double        GT;
+  pf_paramT     *pf;
+
+  pf                = (pf_paramT *)space(sizeof(pf_paramT));
+  pf->model_details = md;
+  pf->alpha         = betaScale;
+  pf->temperature   = temperature;
+  pf->pf_scale      = pf_scale;
+  pf->kT = kTn      = ((double)n_seq)*betaScale*(temperature+K0)*GASCONST;   /* kT in cal/mol  */
+  TT                = (temperature+K0)/(Tmeasure);
+
+
+   /* loop energies: hairpins, bulges, interior, mulit-loops */
+  for (i=0; i<31; i++) {
+    GT =  hairpindH[i] - (hairpindH[i] - hairpin37[i])*TT;
+    pf->exphairpin[i] = exp( -GT*10./kTn);
+  }
+  /*add penalty for too short hairpins*/
+  for (i=0; i<3; i++) {
+    GT= 600/*Penalty*/*TT;
+    pf->exphairpin[i] = exp( -GT*10./kTn);
+  }
+
+  for (i=0; i<=MIN2(30, MAXLOOP); i++) {
+    GT =  bulgedH[i]- (bulgedH[i] - bulge37[i])*TT;
+    pf->expbulge[i] = exp( -GT*10./kTn);
+    GT =  internal_loopdH[i] - (internal_loopdH[i] - internal_loop37[i])*TT;
+    pf->expinternal[i] = exp( -GT*10./kTn);
+  }
+  /* special case of size 2 interior loops (single mismatch) */
+  if (james_rule) pf->expinternal[2] = exp ( -80*10./kTn);
+
+  pf->lxc = lxc37*TT;
+
+  GT =  DuplexInitdH - (DuplexInitdH - DuplexInit37)*TT;
+  pf->expDuplexInit = exp( -GT*10./kTn);
+
+  for (i=31; i<=MAXLOOP; i++) {
+    GT = bulge37[30]*TT + (pf->lxc*log( i/30.));
+    pf->expbulge[i] = exp( -GT*10./kTn);
+    GT = internal_loop37[30]*TT + (pf->lxc*log( i/30.));
+    pf->expinternal[i] = exp( -GT*10./kTn);
+  }
+
+  GT = niniodH - (niniodH - ninio37)*TT;
+  for (j=0; j<=MAXLOOP; j++)
+    pf->expninio[2][j]=exp(-MIN2(MAX_NINIO,j*GT)*10./kTn);
+
+  for (i=0; (i*7)<strlen(Tetraloops); i++) {
+    GT = TetraloopdH[i] - (TetraloopdH[i]-Tetraloop37[i])*TT;
+    pf->exptetra[i] = exp( -GT*10./kTn);
+  }
+  for (i=0; (i*5)<strlen(Triloops); i++) {
+    GT = TriloopdH[i] - (TriloopdH[i]-Triloop37[i])*TT;
+    pf->exptri[i] = exp( -GT*10./kTn);
+  }
+  for (i=0; (i*9)<strlen(Hexaloops); i++) {
+    GT = HexaloopdH[i] - (HexaloopdH[i]-Hexaloop37[i])*TT;
+    pf->exphex[i] = exp( -GT*10./kTn);
+  }
+  GT =  ML_closingdH - (ML_closingdH - ML_closing37)*TT;
+  pf->expMLclosing = exp( -GT*10./kTn);
+
+  for (i=0; i<=NBPAIRS; i++) { /* includes AU penalty */
+    GT =  ML_interndH - (ML_interndH - ML_intern37)*TT;
+    /* if (i>2) GT += TerminalAU; */
+    pf->expMLintern[i] = exp( -GT*10./kTn);
+  }
+  GT = TerminalAUdH - (TerminalAUdH - TerminalAU37)*TT;
+  pf->expTermAU = exp(-GT*10./kTn);
+
+  GT = ML_BASEdH - (ML_BASEdH - ML_BASE37)*TT;
+  pf->expMLbase=exp(-10.*GT/(kTn/n_seq));
+
+
+  /* if dangle_model==0 just set their energy to 0,
+     don't let dangle energies become > 0 (at large temps),
+     but make sure go smoothly to 0                        */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=4; j++) {
+      if (md.dangles) {
+        GT = dangle5_dH[i][j] - (dangle5_dH[i][j] - dangle5_37[i][j])*TT;
+        pf->expdangle5[i][j] = exp(SMOOTH(-GT)*10./kTn);
+        GT = dangle3_dH[i][j] - (dangle3_dH[i][j] - dangle3_37[i][j])*TT;
+        pf->expdangle3[i][j] =  exp(SMOOTH(-GT)*10./kTn);
+      } else
+        pf->expdangle3[i][j] = pf->expdangle5[i][j] = 1;
+    }
+
+  /* stacking energies */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=NBPAIRS; j++) {
+      GT =  stackdH[i][j] - (stackdH[i][j] - stack37[i][j])*TT;
+      pf->expstack[i][j] = exp( -GT*10./kTn);
+    }
+
+  /* mismatch energies */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<5; j++)
+      for (k=0; k<5; k++) {
+        GT =  mismatchIdH[i][j][k] - ( mismatchIdH[i][j][k] - mismatchI37[i][j][k])*TT;
+        pf->expmismatchI[i][j][k] = exp(-GT*10.0/kTn);
+        GT = mismatch1nIdH[i][j][k] - (mismatch1nIdH[i][j][k] - mismatch1nI37[i][j][k])*TT;
+        pf->expmismatch1nI[i][j][k] = exp(-GT*10.0/kTn);
+        GT = mismatchHdH[i][j][k] - (mismatchHdH[i][j][k] - mismatchH37[i][j][k])*TT;
+        pf->expmismatchH[i][j][k] = exp(-GT*10.0/kTn);
+        if (md.dangles) {
+          GT = mismatchMdH[i][j][k] - (mismatchMdH[i][j][k] - mismatchM37[i][j][k])*TT;
+          pf->expmismatchM[i][j][k] = exp(SMOOTH(-GT)*10.0/kTn);
+          GT = mismatchExtdH[i][j][k] - (mismatchExtdH[i][j][k] - mismatchExt37[i][j][k])*TT;
+          pf->expmismatchExt[i][j][k] = exp(SMOOTH(-GT)*10.0/kTn);
+        }
+        else{
+          pf->expmismatchM[i][j][k] = pf->expmismatchExt[i][j][k] = 1.;
+        }
+        GT = mismatch23IdH[i][j][k] - (mismatch23IdH[i][j][k] - mismatch23I37[i][j][k])*TT;
+        pf->expmismatch23I[i][j][k] = exp(-GT*10.0/kTn);
+      }
+
+
+  /* interior lops of length 2 */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=NBPAIRS; j++)
+      for (k=0; k<5; k++)
+        for (l=0; l<5; l++) {
+          GT = int11_dH[i][j][k][l] -
+            (int11_dH[i][j][k][l] - int11_37[i][j][k][l])*TT;
+          pf->expint11[i][j][k][l] = exp(-GT*10./kTn);
+        }
+  /* interior 2x1 loops */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=NBPAIRS; j++)
+      for (k=0; k<5; k++)
+        for (l=0; l<5; l++) {
+          int m;
+          for (m=0; m<5; m++) {
+            GT = int21_dH[i][j][k][l][m] -
+              (int21_dH[i][j][k][l][m] - int21_37[i][j][k][l][m])*TT;
+            pf->expint21[i][j][k][l][m] = exp(-GT*10./kTn);
+          }
+        }
+
+  /* interior 2x2 loops */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=NBPAIRS; j++)
+      for (k=0; k<5; k++)
+        for (l=0; l<5; l++) {
+          int m,n;
+          for (m=0; m<5; m++)
+            for (n=0; n<5; n++) {
+              GT = int22_dH[i][j][k][l][m][n] -
+                (int22_dH[i][j][k][l][m][n]-int22_37[i][j][k][l][m][n])*TT;
+              pf->expint22[i][j][k][l][m][n] = exp(-GT*10./kTn);
+            }
+        }
+
+  strncpy(pf->Tetraloops, Tetraloops, 281);
+  strncpy(pf->Triloops, Triloops, 241);
+  strncpy(pf->Hexaloops, Hexaloops, 361);
+
+  return pf;
+}
+
+PUBLIC pf_paramT *get_boltzmann_factor_copy(pf_paramT *par){
+  pf_paramT *copy = NULL;
+  if(par){
+    copy = (pf_paramT *) space(sizeof(pf_paramT));
+    memcpy(copy, par, sizeof(pf_paramT));
+  }
+  return copy;
+}
+
+PUBLIC paramT *get_parameter_copy(paramT *par){
+  paramT *copy = NULL;
+  if(par){
+    copy = (paramT *) space(sizeof(paramT));
+    memcpy(copy, par, sizeof(paramT));
+  }
+  return copy;
+}
+
+/*###########################################*/
+/*# deprecated functions below              #*/
+/*###########################################*/
+
+PUBLIC paramT *copy_parameters(void){
+  paramT *copy;
+  if (p.id != id) scale_parameters();
+  copy = (paramT *) space(sizeof(paramT));
+  memcpy(copy, &p, sizeof(paramT));
+  return copy;
+}
+
+PUBLIC paramT *set_parameters(paramT *dest){
+  memcpy(&p, dest, sizeof(paramT));
+  return &p;
+}
+
+PUBLIC pf_paramT *copy_pf_param(void){
+  pf_paramT *copy;
+  if (pf.id != pf_id) scale_pf_parameters();
+  copy = (pf_paramT *) space(sizeof(pf_paramT));
+  memcpy(copy, &pf, sizeof(pf_paramT));
+  return copy;
+}
+
+PUBLIC pf_paramT *set_pf_param(paramT *dest){
+  memcpy(&pf, dest, sizeof(pf_paramT));
+  return &pf;
+}
+
+PUBLIC pf_paramT *scale_pf_parameters(void){
+  return get_scaled_pf_parameters();
+#if 0
+  /* scale energy parameters and pre-calculate Boltzmann weights */
+  unsigned int i, j, k, l;
+  double  kT, TT;
+  double  GT;
+
+  /* scale pf_params() in partfunc.c is only a wrapper, that calls
+     this functions !! */
+
+  pf.temperature = temperature;
+  kT = (pf.temperature+K0)*GASCONST;   /* kT in cal/mol  */
+  TT = (pf.temperature+K0)/(Tmeasure);
+
+   /* loop energies: hairpins, bulges, interior, mulit-loops */
+  for (i=0; i<31; i++) {
+    GT =  hairpin37[i]*TT;
+    pf.exphairpin[i] = exp( -GT*10./kT);
+  }
+  for (i=0; i<=MIN2(30, MAXLOOP); i++) {
+    GT =  bulge37[i]*TT;
+    pf.expbulge[i] = exp( -GT*10./kT);
+    GT =  internal_loop37[i]*TT;
+    pf.expinternal[i] = exp( -GT*10./kT);
+  }
+  /* special case of size 2 interior loops (single mismatch) */
+  if (james_rule) pf.expinternal[2] = exp ( -80*10./kT);
+
+  pf.lxc = lxc37*TT;
+
+  GT =  DuplexInitdH - (DuplexInitdH - DuplexInit37)*TT;
+  pf.expDuplexInit = exp( -GT*10./kT);
+
+  for (i=31; i<=MAXLOOP; i++) {
+    GT = bulge37[30]*TT + (pf.lxc*log( i/30.));
+    pf.expbulge[i] = exp( -GT*10./kT);
+    GT = internal_loop37[30]*TT + (pf.lxc*log( i/30.));
+    pf.expinternal[i] = exp( -GT*10./kT);
+  }
+
+  GT = niniodH - (niniodH - ninio37)*TT;
+  for (j=0; j<=MAXLOOP; j++)
+      pf.expninio[2][j]=exp(-MIN2(MAX_NINIO,j*GT)*10./kT);
+
+  for (i=0; (i*7)<strlen(Tetraloops); i++) {
+    GT = TetraloopdH[i] - (TetraloopdH[i]-Tetraloop37[i])*TT;
+    pf.exptetra[i] = exp( -GT*10./kT);
+  }
+  for (i=0; (i*5)<strlen(Triloops); i++) {
+    GT = TriloopdH[i] - (TriloopdH[i]-Triloop37[i])*TT;
+    pf.exptri[i] = exp( -GT*10./kT);
+  }
+  for (i=0; (i*9)<strlen(Hexaloops); i++) {
+    GT = HexaloopdH[i] - (HexaloopdH[i]-Hexaloop37[i])*TT;
+    pf.exphex[i] = exp( -GT*10./kT);
+  }
+  GT =  ML_closing37*TT;
+  pf.expMLclosing = exp( -GT*10./kT);
+
+  for (i=0; i<=NBPAIRS; i++) { /* includes AU penalty */
+    GT =  ML_intern37*TT;
+    /* if (i>2) GT += TerminalAU; */
+    pf.expMLintern[i] = exp( -GT*10./kT);
+  }
+  GT = TerminalAUdH - (TerminalAUdH - TerminalAU37)*TT;
+  pf.expTermAU = exp(-GT*10./kT);
+
+  GT = ML_BASE37*TT;
+  pf.expMLbase=exp(-10.*GT/kT);
+
+
+  /* if dangle_model==0 just set their energy to 0,
+     don't let dangle energies become > 0 (at large temps),
+     but make sure go smoothly to 0                        */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=4; j++) {
+      if (dangles) {
+        GT = dangle5_dH[i][j] - (dangle5_dH[i][j] - dangle5_37[i][j])*TT;
+        pf.expdangle5[i][j] = exp(SMOOTH(-GT)*10./kT);
+        GT = dangle3_dH[i][j] - (dangle3_dH[i][j] - dangle3_37[i][j])*TT;
+        pf.expdangle3[i][j] =  exp(SMOOTH(-GT)*10./kT);
+      } else
+        pf.expdangle3[i][j] = pf.expdangle5[i][j] = 1;
+      if (i>2) /* add TermAU penalty into dangle3 */
+        pf.expdangle3[i][j] *= pf.expTermAU;
+    }
+
+  /* stacking energies */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=NBPAIRS; j++) {
+      GT =  stackdH[i][j] - (stackdH[i][j] - stack37[i][j])*TT;
+      pf.expstack[i][j] = exp( -GT*10./kT);
+    }
+
+  /* mismatch energies */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<5; j++)
+      for (k=0; k<5; k++) {
+        GT =  mismatchIdH[i][j][k] - ( mismatchIdH[i][j][k] - mismatchI37[i][j][k])*TT;
+        pf.expmismatchI[i][j][k] = exp(-GT*10./kT);
+        GT = mismatch1nIdH[i][j][k] - (mismatch1nIdH[i][j][k] - mismatch1nI37[i][j][k])*TT;
+        pf.expmismatch1nI[i][j][k] = exp(-GT*10./kT);
+        GT = mismatchHdH[i][j][k] - (mismatchHdH[i][j][k] - mismatchH37[i][j][k])*TT;
+        pf.expmismatchH[i][j][k] = exp(-GT*10./kT);
+        GT = mismatch23IdH[i][j][k] - (mismatch23IdH[i][j][k] - mismatch23I37[i][j][k])*TT;
+        pf.expmismatch23I[i][j][k] = exp(-GT*10./kT);
+        if (dangles) {
+          GT = mismatchMdH[i][j][k] - (mismatchMdH[i][j][k] - mismatchM37[i][j][k])*TT;
+          pf.expmismatchM[i][j][k] = exp(-GT*10./kT);
+          GT =  mismatchExtdH[i][j][k] - ( mismatchExtdH[i][j][k] - mismatchExt37[i][j][k])*TT;
+          pf.expmismatchExt[i][j][k] = exp(-GT*10./kT);
+        }
+        else{
+          pf.expmismatchM[i][j][k] = pf.expmismatchExt[i][j][k] = 1.;
+        }
+      }
+
+
+  /* interior lops of length 2 */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=NBPAIRS; j++)
+      for (k=0; k<5; k++)
+        for (l=0; l<5; l++) {
+          GT = int11_dH[i][j][k][l] -
+            (int11_dH[i][j][k][l] - int11_37[i][j][k][l])*TT;
+          pf.expint11[i][j][k][l] = exp(-GT*10./kT);
+        }
+  /* interior 2x1 loops */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=NBPAIRS; j++)
+      for (k=0; k<5; k++)
+        for (l=0; l<5; l++) {
+          int m;
+          for (m=0; m<5; m++) {
+            GT = int21_dH[i][j][k][l][m] -
+              (int21_dH[i][j][k][l][m] - int21_37[i][j][k][l][m])*TT;
+            pf.expint21[i][j][k][l][m] = exp(-GT*10./kT);
+          }
+        }
+
+  /* interior 2x2 loops */
+  for (i=0; i<=NBPAIRS; i++)
+    for (j=0; j<=NBPAIRS; j++)
+      for (k=0; k<5; k++)
+        for (l=0; l<5; l++) {
+          int m,n;
+          for (m=0; m<5; m++)
+            for (n=0; n<5; n++) {
+              GT = int22_dH[i][j][k][l][m][n] -
+                (int22_dH[i][j][k][l][m][n]-int22_37[i][j][k][l][m][n])*TT;
+              pf.expint22[i][j][k][l][m][n] = exp(-GT*10./kT);
+            }
+        }
+
+  strncpy(pf.Tetraloops, Tetraloops, 281);
+  strncpy(pf.Triloops, Triloops, 241);
+  strncpy(pf.Hexaloops, Hexaloops, 361);
+
+  pf.id = ++pf_id;
+  return &pf;
+#endif
+}
diff --git a/cbits/part_func.c b/cbits/part_func.c
new file mode 100644
--- /dev/null
+++ b/cbits/part_func.c
@@ -0,0 +1,1714 @@
+/*
+                  partiton function for RNA secondary structures
+
+                  Ivo L Hofacker
+                  Vienna RNA package
+*/
+/*
+  $Log: part_func.c,v $
+  Revision 1.29  2008/02/23 10:10:49  ivo
+  list returned from StackProb was sometimes not terminated correctly
+
+  Revision 1.28  2008/01/08 15:08:10  ivo
+  circular fold would fail for open chain
+
+  Revision 1.27  2007/12/05 13:04:04  ivo
+  add various circfold variants from Ronny
+
+  Revision 1.26  2007/09/19 12:41:56  ivo
+  add computation of centroid() structure for RNAfold -p
+
+  Revision 1.25  2007/04/30 15:12:00  ivo
+  merge RNAup into package
+
+  Revision 1.24  2007/03/03 17:57:44  ivo
+  make sure entries in scale[] decrease to 0
+
+  Revision 1.23  2006/12/01 12:40:23  ivo
+  undo Ulli's accidental commit
+
+  Revision 1.21  2006/08/04 15:39:06  ivo
+  new function stackProb returns probability for stacks
+  p[(i,j)(i+1,j-1)]
+
+  Revision 1.20  2004/08/12 12:14:46  ivo
+  update
+
+  Revision 1.19  2004/05/14 16:28:05  ivo
+  fix the bug in make_ptype here too (fixed in 1.27 of fold.c)
+
+  Revision 1.18  2004/02/17 10:46:52  ivo
+  make sure init_pf_fold is called before scale_parameters
+
+  Revision 1.17  2004/02/09 18:37:59  ivo
+  new mean_bp_dist() function to compute ensemble diversity
+
+  Revision 1.16  2003/08/04 09:14:09  ivo
+  finish up stochastic backtracking
+
+  Revision 1.15  2002/03/19 16:51:12  ivo
+  more on stochastic backtracking (still incomplete)
+
+  Revision 1.14  2002/02/08 17:37:23  ivo
+  set freed S,S1 pointers to NULL
+
+  Revision 1.13  2001/11/16 17:30:04  ivo
+  add stochastic backtracking (still incomplete)
+*/
+#include <config.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <float.h>    /* #defines FLT_MAX ... */
+#include <limits.h>
+
+#include "utils.h"
+#include "energy_par.h"
+#include "fold_vars.h"
+#include "pair_mat.h"
+#include "params.h"
+#include "loop_energies.h"
+#include "gquad.h"
+#include "part_func.h"
+
+#ifdef _OPENMP
+#include <omp.h>
+#endif
+
+#define ISOLATED  256.0
+
+/*
+#################################
+# GLOBAL VARIABLES              #
+#################################
+*/
+PUBLIC  int         st_back = 0;
+
+/*
+#################################
+# PRIVATE VARIABLES             #
+#################################
+*/
+PRIVATE FLT_OR_DBL  *q = NULL, *qb=NULL, *qm = NULL, *qm1 = NULL, *qqm = NULL, *qqm1 = NULL, *qq = NULL, *qq1 = NULL;
+PRIVATE FLT_OR_DBL  *probs=NULL, *prml=NULL, *prm_l=NULL, *prm_l1=NULL, *q1k=NULL, *qln=NULL;
+PRIVATE FLT_OR_DBL  *scale=NULL;
+PRIVATE FLT_OR_DBL  *expMLbase=NULL;
+PRIVATE FLT_OR_DBL  qo=0., qho=0., qio=0., qmo=0., *qm2=NULL;
+PRIVATE int         *jindx=NULL;
+PRIVATE int         *my_iindx=NULL;
+PRIVATE int         init_length = -1;   /* length in last call to init_pf_fold() */
+PRIVATE int         circular=0;
+PRIVATE int         do_bppm = 1;             /* do backtracking per default */
+PRIVATE int         struct_constrained = 0;
+PRIVATE char        *pstruc=NULL;
+PRIVATE char        *sequence=NULL;
+PRIVATE char        *ptype=NULL;        /* precomputed array of pair types */
+PRIVATE pf_paramT   *pf_params=NULL;    /* the precomputed Boltzmann weights */
+PRIVATE short       *S=NULL, *S1=NULL;
+PRIVATE int         with_gquad = 0;
+
+PRIVATE FLT_OR_DBL  *G = NULL, *Gj = NULL, *Gj1 = NULL;
+
+#ifdef _OPENMP
+
+#pragma omp threadprivate(q, qb, qm, qm1, qqm, qqm1, qq, qq1, prml, prm_l, prm_l1, q1k, qln,\
+                          probs, scale, expMLbase, qo, qho, qio, qmo, qm2, jindx, my_iindx, init_length,\
+                          circular, pstruc, sequence, ptype, pf_params, S, S1, do_bppm, struct_constrained,\
+                          G, Gj, Gj1, with_gquad)
+
+#endif
+
+/*
+#################################
+# PRIVATE FUNCTION DECLARATIONS #
+#################################
+*/
+PRIVATE void  init_partfunc(int length, pf_paramT *parameters);
+PRIVATE void  scale_pf_params(unsigned int length, pf_paramT *parameters);
+PRIVATE void  get_arrays(unsigned int length);
+PRIVATE void  make_ptypes(const short *S, const char *structure);
+PRIVATE void  pf_circ(const char *sequence, char *structure);
+PRIVATE void  pf_linear(const char *sequence, char *structure);
+PRIVATE void  pf_create_bppm(const char *sequence, char *structure);
+PRIVATE void  backtrack(int i, int j);
+PRIVATE void  backtrack_qm(int i, int j);
+PRIVATE void  backtrack_qm1(int i,int j);
+PRIVATE void  backtrack_qm2(int u, int n);
+
+/*
+#################################
+# BEGIN OF FUNCTION DEFINITIONS #
+#################################
+*/
+
+PRIVATE void init_partfunc(int length, pf_paramT *parameters){
+  if (length<1) nrerror("init_pf_fold: length must be greater 0");
+
+#ifdef _OPENMP
+/* Explicitly turn off dynamic threads */
+  omp_set_dynamic(0);
+  free_pf_arrays(); /* free previous allocation */
+#else
+  if (init_length>0) free_pf_arrays(); /* free previous allocation */
+#endif
+
+#ifdef SUN4
+  nonstandard_arithmetic();
+#else
+#ifdef HP9
+  fpsetfastmode(1);
+#endif
+#endif
+  make_pair_matrix();
+  get_arrays((unsigned) length);
+  scale_pf_params((unsigned) length, parameters);
+
+  init_length = length;
+}
+
+PRIVATE void get_arrays(unsigned int length){
+  unsigned int size;
+
+  if((length +1) >= (unsigned int)sqrt((double)INT_MAX))
+    nrerror("get_arrays@part_func.c: sequence length exceeds addressable range");
+
+  size  = sizeof(FLT_OR_DBL) * ((length+1)*(length+2)/2);
+
+  q     = (FLT_OR_DBL *) space(size);
+  qb    = (FLT_OR_DBL *) space(size);
+  qm    = (FLT_OR_DBL *) space(size);
+  qm1   = (st_back || circular) ? (FLT_OR_DBL *) space(size) : NULL;
+  qm2   = (circular) ? (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2)) : NULL;
+  probs = (do_bppm) ? (FLT_OR_DBL *) space(size) : NULL;
+
+  ptype     = (char *) space(sizeof(char)*((length+1)*(length+2)/2));
+  q1k       = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+1));
+  qln       = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2));
+  qq        = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2));
+  qq1       = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2));
+  qqm       = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2));
+  qqm1      = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2));
+  prm_l     = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2));
+  prm_l1    = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2));
+  prml      = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2));
+  expMLbase = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+1));
+  scale     = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+1));
+
+  Gj        = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2));
+  Gj1       = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2));
+
+  my_iindx  = get_iindx(length);
+  iindx     = get_iindx(length); /* for backward compatibility and Perl wrapper */
+  jindx     = get_indx(length);
+}
+
+/**
+*** Allocate memory for all matrices and other stuff
+**/
+PUBLIC void free_pf_arrays(void){
+  if(q)         free(q);
+  if(qb)        free(qb);
+  if(qm)        free(qm);
+  if(qm1)       free(qm1);
+  if(qm2)       free(qm2);
+  if(ptype)     free(ptype);
+  if(qq)        free(qq);
+  if(qq1)       free(qq1);
+  if(qqm)       free(qqm);
+  if(qqm1)      free(qqm1);
+  if(q1k)       free(q1k);
+  if(qln)       free(qln);
+  if(probs)     free(probs);
+  if(prm_l)     free(prm_l);
+  if(prm_l1)    free(prm_l1);
+  if(prml)      free(prml);
+  if(expMLbase) free(expMLbase);
+  if(scale)     free(scale);
+  if(my_iindx)  free(my_iindx);
+  if(iindx)     free(iindx); /* for backward compatibility and Perl wrapper */
+  if(jindx)     free(jindx);
+  if(S)         free(S);
+  if(S1)        free(S1);
+  if(G)         free(G);
+  if(Gj)        free(Gj);
+  if(Gj1)       free(Gj1);
+
+  S = S1 = NULL;
+  q = pr = probs = qb = qm = qm1 = qm2 = qq = qq1 = qqm = qqm1 = q1k = qln = prm_l = prm_l1 = prml = expMLbase = scale = G = Gj = Gj1 = NULL;
+  my_iindx = jindx = iindx = NULL;
+
+  ptype = NULL;
+
+#ifdef SUN4
+  standard_arithmetic();
+#else
+#ifdef HP9
+  fpsetfastmode(0);
+#endif
+#endif
+
+  init_length = 0;
+}
+
+/*-----------------------------------------------------------------*/
+PUBLIC float pf_fold(const char *sequence, char *structure){
+  return pf_fold_par(sequence, structure, NULL, do_backtrack, fold_constrained, 0);
+}
+
+PUBLIC float pf_circ_fold(const char *sequence, char *structure){
+  return pf_fold_par(sequence, structure, NULL, do_backtrack, fold_constrained, 1);
+}
+
+PUBLIC float pf_fold_par( const char *sequence,
+                          char *structure,
+                          pf_paramT *parameters,
+                          int calculate_bppm,
+                          int is_constrained,
+                          int is_circular){
+
+  FLT_OR_DBL  Q;
+  double      free_energy;
+  int         n = (int) strlen(sequence);
+
+  circular            = is_circular;
+  do_bppm             = calculate_bppm;
+  struct_constrained  = is_constrained;
+
+#ifdef _OPENMP
+  init_partfunc(n, parameters);
+#else
+  if(parameters) init_partfunc(n, parameters);
+  else if (n > init_length) init_partfunc(n, parameters);
+  else if (fabs(pf_params->temperature - temperature)>1e-6) update_pf_params_par(n, parameters);
+#endif
+
+  with_gquad  = pf_params->model_details.gquad;
+  S           = encode_sequence(sequence, 0);
+  S1          = encode_sequence(sequence, 1);
+
+  make_ptypes(S, structure);
+
+  /* do the linear pf fold and fill all matrices  */
+  pf_linear(sequence, structure);
+
+  if(circular)
+    pf_circ(sequence, structure); /* do post processing step for circular RNAs */
+
+  if (backtrack_type=='C')      Q = qb[my_iindx[1]-n];
+  else if (backtrack_type=='M') Q = qm[my_iindx[1]-n];
+  else Q = (circular) ? qo : q[my_iindx[1]-n];
+
+  /* ensemble free energy in Kcal/mol              */
+  if (Q<=FLT_MIN) fprintf(stderr, "pf_scale too large\n");
+  free_energy = (-log(Q)-n*log(pf_params->pf_scale))*pf_params->kT/1000.0;
+  /* in case we abort because of floating point errors */
+  if (n>1600) fprintf(stderr, "free energy = %8.2f\n", free_energy);
+
+  /* calculate base pairing probability matrix (bppm)  */
+  if(do_bppm){
+    pf_create_bppm(sequence, structure);
+    /*
+    *  Backward compatibility:
+    *  This block may be removed if deprecated functions
+    *  relying on the global variable "pr" vanish from within the package!
+    */
+    pr = probs;
+    /*
+     {
+      if(pr) free(pr);
+      pr = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL) * ((n+1)*(n+2)/2));
+      memcpy(pr, probs, sizeof(FLT_OR_DBL) * ((n+1)*(n+2)/2));
+    }
+    */
+  }
+  return free_energy;
+}
+
+PRIVATE void pf_linear(const char *sequence, char *structure){
+
+  int n, i,j,k,l, ij, u,u1,d,ii, type, type_2, tt, minl, maxl;
+
+  int noGUclosure;
+  FLT_OR_DBL expMLstem = 0.;
+
+  FLT_OR_DBL temp, Qmax=0;
+  FLT_OR_DBL qbt1, *tmp;
+
+  FLT_OR_DBL  expMLclosing = pf_params->expMLclosing;
+  double      max_real;
+
+  max_real = (sizeof(FLT_OR_DBL) == sizeof(float)) ? FLT_MAX : DBL_MAX;
+
+  n = (int) strlen(sequence);
+
+
+  noGUclosure = pf_params->model_details.noGUclosure;
+
+  /*array initialization ; qb,qm,q
+    qb,qm,q (i,j) are stored as ((n+1-i)*(n-i) div 2 + n+1-j */
+
+  if(with_gquad){
+    expMLstem = exp_E_MLstem(0, -1, -1, pf_params);
+    G         = get_gquad_pf_matrix(S, scale, pf_params);
+  }
+
+  for (d=0; d<=TURN; d++)
+    for (i=1; i<=n-d; i++) {
+      j=i+d;
+      ij = my_iindx[i]-j;
+      q[ij]=1.0*scale[d+1];
+      qb[ij]=qm[ij]=0.0;
+    }
+ 
+  for (i=1; i<=n; i++)
+    qq[i]=qq1[i]=qqm[i]=qqm1[i]=0;
+
+  for (j=TURN+2;j<=n; j++) {
+    for (i=j-TURN-1; i>=1; i--) {
+      /* construction of partition function of segment i,j*/
+      /*firstly that given i binds j : qb(i,j) */
+      u = j-i-1; ij = my_iindx[i]-j;
+      type = ptype[ij];
+      if (type!=0) {
+        /*hairpin contribution*/
+        if (((type==3)||(type==4))&&noGUclosure) qbt1 = 0;
+        else
+          qbt1 = exp_E_Hairpin(u, type, S1[i+1], S1[j-1], sequence+i-1, pf_params) * scale[u+2];
+        /* interior loops with interior pair k,l */
+        for (k=i+1; k<=MIN2(i+MAXLOOP+1,j-TURN-2); k++) {
+          u1 = k-i-1;
+          for (l=MAX2(k+TURN+1,j-1-MAXLOOP+u1); l<j; l++) {
+            type_2 = ptype[my_iindx[k]-l];
+            if (type_2) {
+              type_2 = rtype[type_2];
+              qbt1 += qb[my_iindx[k]-l] * (scale[u1+j-l+1] *
+                                        exp_E_IntLoop(u1, j-l-1, type, type_2,
+                                        S1[i+1], S1[j-1], S1[k-1], S1[l+1], pf_params));
+            }
+          }
+        }
+        /*multiple stem loop contribution*/
+        ii = my_iindx[i+1]; /* ii-k=[i+1,k-1] */
+        temp = 0.0;
+        for (k=i+2; k<=j-1; k++) temp += qm[ii-(k-1)]*qqm1[k];
+        tt = rtype[type];
+        qbt1 += temp * expMLclosing * exp_E_MLstem(tt, S1[j-1], S1[i+1], pf_params) * scale[2];
+
+        if(with_gquad){
+          qbt1 += exp_E_GQuad_IntLoop(i, j, type, S1, G, my_iindx, pf_params) * scale[2];
+        }
+
+        qb[ij] = qbt1;
+      }
+      /* end if (type!=0) */
+      else
+        qb[ij] = 0.0;
+
+      /* construction of qqm matrix containing final stem
+         contributions to multiple loop partition function
+         from segment i,j */
+      qqm[i] = qqm1[i]*expMLbase[1];
+      if (type) {
+        qbt1 = qb[ij] * exp_E_MLstem(type, ((i>1) || circular) ? S1[i-1] : -1, ((j<n) || circular) ? S1[j+1] : -1, pf_params);
+        qqm[i] += qbt1;
+      }
+
+      if(with_gquad){
+        /*include gquads into qqm*/
+        qqm[i] += G[my_iindx[i]-j] * expMLstem;
+      }
+
+      if (qm1) qm1[jindx[j]+i] = qqm[i]; /* for stochastic backtracking and circfold */
+
+      /*construction of qm matrix containing multiple loop
+        partition function contributions from segment i,j */
+      temp = 0.0;
+      ii = my_iindx[i];  /* ii-k=[i,k-1] */
+      for (k=j; k>i; k--) temp += (qm[ii-(k-1)] + expMLbase[k-i])*qqm[k];
+      qm[ij] = (temp + qqm[i]);
+
+      /*auxiliary matrix qq for cubic order q calculation below */
+      qbt1=0.0;
+      if (type){
+        qbt1 += qb[ij];
+        qbt1 *= exp_E_ExtLoop(type, ((i>1) || circular) ? S1[i-1] : -1, ((j<n) || circular) ? S1[j+1] : -1, pf_params);
+      }
+
+      if(with_gquad){
+        qbt1 += G[ij];
+      }
+
+      qq[i] = qq1[i]*scale[1] + qbt1;
+
+      /*construction of partition function for segment i,j */
+      temp = 1.0*scale[1+j-i] + qq[i];
+      for (k=i; k<=j-1; k++) temp += q[ii-k]*qq[k+1];
+      q[ij] = temp;
+      if (temp>Qmax) {
+        Qmax = temp;
+        if (Qmax>max_real/10.)
+          fprintf(stderr, "Q close to overflow: %d %d %g\n", i,j,temp);
+      }
+      if (temp>=max_real) {
+        PRIVATE char msg[128];
+        sprintf(msg, "overflow in pf_fold while calculating q[%d,%d]\n"
+                     "use larger pf_scale", i,j);
+        nrerror(msg);
+      }
+    }
+    tmp = qq1;  qq1 =qq;  qq =tmp;
+    tmp = qqm1; qqm1=qqm; qqm=tmp;
+
+    if(with_gquad){ /* rotate the auxilary g-quadruplex matrices */
+      tmp = Gj1; Gj1=Gj; Gj=tmp;
+    }
+  }
+}
+
+/* calculate partition function for circular case */
+/* NOTE: this is the postprocessing step ONLY     */
+/* You have to call pf_linear first to calculate  */
+/* complete circular case!!!                      */
+PRIVATE void pf_circ(const char *sequence, char *structure){
+
+  int u, p, q, k, l;
+  int noGUclosure;
+  int n = (int) strlen(sequence);
+
+  FLT_OR_DBL  qot;
+  FLT_OR_DBL  expMLclosing  = pf_params->expMLclosing;
+
+  noGUclosure = pf_params->model_details.noGUclosure;
+  qo = qho = qio = qmo = 0.;
+
+  /* construct qm2 matrix from qm1 entries  */
+  for(k=1; k<n-TURN-1; k++){
+    qot = 0.;
+    for (u=k+TURN+1; u<n-TURN-1; u++)
+      qot += qm1[jindx[u]+k]*qm1[jindx[n]+(u+1)];
+    qm2[k] = qot;
+   }
+
+  for(p = 1; p < n; p++){
+    for(q = p + TURN + 1; q <= n; q++){
+      int type;
+      /* 1. get exterior hairpin contribution  */
+      u = n-q + p-1;
+      if (u<TURN) continue;
+      type = ptype[my_iindx[p]-q];
+      if (!type) continue;
+       /* cause we want to calc the exterior loops, we need the reversed pair type from now on  */
+      type=rtype[type];
+
+      char loopseq[10];
+      if (u<7){
+        strcpy(loopseq , sequence+q-1);
+        strncat(loopseq, sequence, p);
+      }
+      qho += (((type==3)||(type==4))&&noGUclosure) ? 0. : qb[my_iindx[p]-q] * exp_E_Hairpin(u, type, S1[q+1], S1[p-1],  loopseq, pf_params) * scale[u];
+
+      /* 2. exterior interior loops, i "define" the (k,l) pair as "outer pair"  */
+      /* so "outer type" is rtype[type[k,l]] and inner type is type[p,q]        */
+      qot = 0.;
+      for(k=q+1; k < n; k++){
+        int ln1, lstart;
+        ln1 = k - q - 1;
+        if(ln1+p-1>MAXLOOP) break;
+        lstart = ln1+p-1+n-MAXLOOP;
+        if(lstart<k+TURN+1) lstart = k + TURN + 1;
+        for(l=lstart;l <= n; l++){
+          int ln2, type2;
+          ln2 = (p - 1) + (n - l);
+
+          if((ln1+ln2) > MAXLOOP) continue;
+
+          type2 = ptype[my_iindx[k]-l];
+          if(!type2) continue;
+          qio += qb[my_iindx[p]-q] * qb[my_iindx[k]-l] * exp_E_IntLoop(ln2, ln1, rtype[type2], type, S1[l+1], S1[k-1], S1[p-1], S1[q+1], pf_params) * scale[ln1+ln2];
+        }
+      } /* end of kl double loop */
+    }
+  } /* end of pq double loop */
+
+  /* 3. Multiloops  */
+  for(k=TURN+2; k<n-2*TURN-3; k++)
+    qmo += qm[my_iindx[1]-k] * qm2[k+1] * expMLclosing;
+
+  /* add an additional pf of 1.0 to take the open chain into account too           */
+  qo = qho + qio + qmo + 1.0*scale[n];
+}
+
+/* calculate base pairing probs */
+PUBLIC void pf_create_bppm(const char *sequence, char *structure){
+  int n, i,j,k,l, ij, kl, ii, i1, ll, type, type_2, tt, u1, ov=0;
+  FLT_OR_DBL  temp, Qmax=0, prm_MLb;
+  FLT_OR_DBL  prmt,prmt1;
+  FLT_OR_DBL  *tmp;
+  FLT_OR_DBL  tmp2;
+  FLT_OR_DBL  expMLclosing = pf_params->expMLclosing;
+  double      max_real;
+
+  FLT_OR_DBL  expMLstem = (with_gquad) ? exp_E_MLstem(0, -1, -1, pf_params) : 0;
+
+  max_real = (sizeof(FLT_OR_DBL) == sizeof(float)) ? FLT_MAX : DBL_MAX;
+
+  if((S != NULL) && (S1 != NULL)){
+    n = S[0];
+    Qmax=0;
+
+    for (k=1; k<=n; k++) {
+      q1k[k] = q[my_iindx[1] - k];
+      qln[k] = q[my_iindx[k] -n];
+    }
+    q1k[0] = 1.0;
+    qln[n+1] = 1.0;
+
+/*  pr = q; */     /* recycling */
+
+
+    /* 1. exterior pair i,j and initialization of pr array */
+    if(circular){
+      for (i=1; i<=n; i++) {
+        for (j=i; j<=MIN2(i+TURN,n); j++)
+          probs[my_iindx[i]-j] = 0;
+        for (j=i+TURN+1; j<=n; j++) {
+          ij = my_iindx[i]-j;
+          type = ptype[ij];
+          if (type&&(qb[ij]>0.)) {
+            probs[ij] = 1./qo;
+            int rt = rtype[type];
+
+            /* 1.1. Exterior Hairpin Contribution */
+            int u = i + n - j -1;
+            /* get the loop sequence */
+            char loopseq[10];
+            if (u<7){
+              strcpy(loopseq , sequence+j-1);
+              strncat(loopseq, sequence, i);
+            }
+            tmp2 = exp_E_Hairpin(u, rt, S1[j+1], S1[i-1], loopseq, pf_params) * scale[u];
+
+            /* 1.2. Exterior Interior Loop Contribution                    */
+            /* 1.2.1. i,j  delimtis the "left" part of the interior loop    */
+            /* (j,i) is "outer pair"                                                */
+            for(k=1; k < i-TURN-1; k++){
+              int ln1, lstart;
+              ln1 = k + n - j - 1;
+              if(ln1>MAXLOOP) break;
+              lstart = ln1+i-1-MAXLOOP;
+              if(lstart<k+TURN+1) lstart = k + TURN + 1;
+              for(l=lstart; l < i; l++){
+                int ln2, type_2;
+                type_2 = ptype[my_iindx[k]-l];
+                if (type_2==0) continue;
+                ln2 = i - l - 1;
+                if(ln1+ln2>MAXLOOP) continue;
+                tmp2 += qb[my_iindx[k] - l]
+                        * exp_E_IntLoop(ln1,
+                                        ln2,
+                                        rt,
+                                        rtype[type_2],
+                                        S1[j+1],
+                                        S1[i-1],
+                                        S1[k-1],
+                                        S1[l+1],
+                                        pf_params)
+                        * scale[ln1 + ln2];
+              }
+            }
+            /* 1.2.2. i,j  delimtis the "right" part of the interior loop  */
+            for(k=j+1; k < n-TURN; k++){
+              int ln1, lstart;
+              ln1 = k - j - 1;
+              if((ln1 + i - 1)>MAXLOOP) break;
+              lstart = ln1+i-1+n-MAXLOOP;
+              if(lstart<k+TURN+1) lstart = k + TURN + 1;
+              for(l=lstart; l <= n; l++){
+                int ln2, type_2;
+                type_2 = ptype[my_iindx[k]-l];
+                if (type_2==0) continue;
+                ln2 = i - 1 + n - l;
+                if(ln1+ln2>MAXLOOP) continue;
+                tmp2 += qb[my_iindx[k] - l]
+                        * exp_E_IntLoop(ln2,
+                                        ln1,
+                                        rtype[type_2],
+                                        rt,
+                                        S1[l+1],
+                                        S1[k-1],
+                                        S1[i-1],
+                                        S1[j+1],
+                                        pf_params)
+                        * scale[ln1 + ln2];
+              }
+            }
+            /* 1.3 Exterior multiloop decomposition */
+            /* 1.3.1 Middle part                    */
+            if((i>TURN+2) && (j<n-TURN-1))
+              tmp2 += qm[my_iindx[1]-i+1]
+                      * qm[my_iindx[j+1]-n]
+                      * expMLclosing
+                      * exp_E_MLstem(type, S1[i-1], S1[j+1], pf_params);
+
+            /* 1.3.2 Left part                      */
+            for(k=TURN+2; k < i-TURN-2; k++)
+              tmp2 += qm[my_iindx[1]-k]
+                      * qm1[jindx[i-1]+k+1]
+                      * expMLbase[n-j]
+                      * expMLclosing
+                      * exp_E_MLstem(type, S1[i-1], S1[j+1], pf_params);
+
+            /* 1.3.3 Right part                      */
+            for(k=j+TURN+2; k < n-TURN-1;k++)
+              tmp2 += qm[my_iindx[j+1]-k]
+                      * qm1[jindx[n]+k+1]
+                      * expMLbase[i-1]
+                      * expMLclosing
+                      * exp_E_MLstem(type, S1[i-1], S1[j+1], pf_params);
+
+            /* all exterior loop decompositions for pair i,j done  */
+            probs[ij] *= tmp2;
+
+          }
+          else probs[ij] = 0;
+        }
+      }
+    } /* end if(circular)  */
+    else {
+      for (i=1; i<=n; i++) {
+        for (j=i; j<=MIN2(i+TURN,n); j++) probs[my_iindx[i]-j] = 0;
+        for (j=i+TURN+1; j<=n; j++) {
+          ij = my_iindx[i]-j;
+          type = ptype[ij];
+          if (type&&(qb[ij]>0.)) {
+            probs[ij] = q1k[i-1]*qln[j+1]/q1k[n];
+            probs[ij] *= exp_E_ExtLoop(type, (i>1) ? S1[i-1] : -1, (j<n) ? S1[j+1] : -1, pf_params);
+          }
+          else
+            probs[ij] = 0.;
+        }
+      }
+    } /* end if(!circular)  */
+
+    for (l=n; l>TURN+1; l--) {
+
+      /* 2. bonding k,l as substem of 2:loop enclosed by i,j */
+      for (k=1; k<l-TURN; k++) {
+        kl = my_iindx[k]-l;
+        type_2 = ptype[kl]; 
+        if (type_2==0) continue;
+        type_2 = rtype[type_2];
+        if (qb[kl]==0.) continue;
+
+        tmp2 = 0.;
+        for (i=MAX2(1,k-MAXLOOP-1); i<=k-1; i++)
+          for (j=l+1; j<=MIN2(l+ MAXLOOP -k+i+2,n); j++) {
+            ij = my_iindx[i] - j;
+            type = ptype[ij];
+            if (type && (probs[ij]>0.)) {
+              /* add *scale[u1+u2+2] */
+              tmp2 +=  probs[ij]
+                       * (scale[k-i+j-l]
+                       * exp_E_IntLoop(k - i - 1,
+                                       j - l - 1,
+                                       type,
+                                       type_2,
+                                       S1[i + 1],
+                                       S1[j - 1],
+                                       S1[k - 1],
+                                       S1[l + 1],
+                                       pf_params));
+            }
+          }
+        probs[kl] += tmp2;
+      }
+
+      if(with_gquad){
+        /* 2.5. bonding k,l as gquad enclosed by i,j */
+        FLT_OR_DBL *expintern = &(pf_params->expinternal[0]);
+        FLT_OR_DBL qe;
+
+        if(l < n - 3){
+          for(k = 2; k <= l - VRNA_GQUAD_MIN_BOX_SIZE; k++){
+            kl = my_iindx[k]-l;
+            if (G[kl]==0.) continue;
+            tmp2 = 0.;
+            i = k - 1;
+            for(j = MIN2(l + MAXLOOP + 1, n); j > l + 3; j--){
+              ij = my_iindx[i] - j;
+              type = ptype[ij];
+              if(!type) continue;
+              qe = (type > 2) ? pf_params->expTermAU : 1.;
+              tmp2 += probs[ij] * qe * expintern[j-l-1] * pf_params->expmismatchI[type][S1[i+1]][S1[j-1]] * scale[2];
+            }
+            probs[kl] += tmp2 * G[kl];
+          }
+        }
+
+        if (l < n - 1){
+          for (k=3; k<=l-VRNA_GQUAD_MIN_BOX_SIZE; k++) {
+            kl = my_iindx[k]-l;
+            if (G[kl]==0.) continue;
+            tmp2 = 0.;
+            for (i=MAX2(1,k-MAXLOOP-1); i<=k-2; i++){
+              u1 = k - i - 1;
+              for (j=l+2; j<=MIN2(l + MAXLOOP - u1 + 1,n); j++) {
+                ij = my_iindx[i] - j;
+                type = ptype[ij];
+                if(!type) continue;
+                qe = (type > 2) ? pf_params->expTermAU : 1.;
+                tmp2 += probs[ij] * qe * expintern[u1+j-l-1] * pf_params->expmismatchI[type][S1[i+1]][S1[j-1]] * scale[2];
+              }
+            }
+            probs[kl] += tmp2 * G[kl];
+          }
+        }
+
+        if(l < n){
+          for(k = 4; k <= l - VRNA_GQUAD_MIN_BOX_SIZE; k++){
+            kl = my_iindx[k]-l;
+            if (G[kl]==0.) continue;
+            tmp2 = 0.;
+            j = l + 1;
+            for (i=MAX2(1,k-MAXLOOP-1); i < k - 3; i++){
+              ij = my_iindx[i] - j;
+              type = ptype[ij];
+              if(!type) continue;
+              qe = (type > 2) ? pf_params->expTermAU : 1.;
+              tmp2 += probs[ij] * qe * expintern[k - i - 1] * pf_params->expmismatchI[type][S1[i+1]][S1[j-1]] * scale[2];
+            }
+            probs[kl] += tmp2 * G[kl];
+          }
+        }
+      }
+
+      /* 3. bonding k,l as substem of multi-loop enclosed by i,j */
+      prm_MLb = 0.;
+      if (l<n) for (k=2; k<l-TURN; k++) {
+        i = k-1;
+        prmt = prmt1 = 0.0;
+
+        ii = my_iindx[i];     /* ii-j=[i,j]     */
+        ll = my_iindx[l+1];   /* ll-j=[l+1,j-1] */
+        tt = ptype[ii-(l+1)]; tt=rtype[tt];
+        /* (i, l+1) closes the ML with substem (k,l) */
+        if(tt)
+          prmt1 = probs[ii-(l+1)] * expMLclosing * exp_E_MLstem(tt, S1[l], S1[i+1], pf_params);
+
+        /* (i,j) with j>l+1 closes the ML with substem (k,l) */
+        for (j=l+2; j<=n; j++) {
+          tt = ptype[ii-j]; tt = rtype[tt];
+          if(tt)
+            prmt += probs[ii-j] * exp_E_MLstem(tt, S1[j-1], S1[i+1], pf_params) * qm[ll-(j-1)];
+        }
+        kl = my_iindx[k]-l;
+        tt = ptype[kl];
+        prmt *= expMLclosing;
+        prml[ i] = prmt;
+        prm_l[i] = prm_l1[i]*expMLbase[1]+prmt1;
+
+        prm_MLb = prm_MLb*expMLbase[1] + prml[i];
+        /* same as:    prm_MLb = 0;
+           for (i=1; i<=k-1; i++) prm_MLb += prml[i]*expMLbase[k-i-1]; */
+
+        prml[i] = prml[ i] + prm_l[i];
+
+        if(with_gquad){
+          if ((!tt) && (G[kl] == 0.)) continue;
+        } else {
+          if (qb[kl] == 0.) continue;
+        }
+
+        temp = prm_MLb;
+
+        for (i=1;i<=k-2; i++)
+          temp += prml[i]*qm[my_iindx[i+1] - (k-1)];
+
+        if(with_gquad){
+          if(tt)
+            temp    *= exp_E_MLstem(tt, (k>1) ? S1[k-1] : -1, (l<n) ? S1[l+1] : -1, pf_params) * scale[2];
+          else
+            temp    *= G[kl] * expMLstem * scale[2];
+        } else {
+          temp    *= exp_E_MLstem(tt, (k>1) ? S1[k-1] : -1, (l<n) ? S1[l+1] : -1, pf_params) * scale[2];
+        }
+
+        probs[kl]  += temp;
+
+        if (probs[kl]>Qmax) {
+          Qmax = probs[kl];
+          if (Qmax>max_real/10.)
+            fprintf(stderr, "P close to overflow: %d %d %g %g\n",
+              i, j, probs[kl], qb[kl]);
+        }
+        if (probs[kl]>=max_real) {
+          ov++;
+          probs[kl]=FLT_MAX;
+        }
+
+      } /* end for (k=..) */
+      tmp = prm_l1; prm_l1=prm_l; prm_l=tmp;
+
+    }  /* end for (l=..)   */
+
+    for (i=1; i<=n; i++)
+      for (j=i+TURN+1; j<=n; j++) {
+        ij = my_iindx[i]-j;
+
+        if(with_gquad){
+          if (qb[ij] > 0.)
+            probs[ij] *= qb[ij];
+          if (G[ij] > 0.){
+            probs[ij] += q1k[i-1] * G[ij] * qln[j+1]/q1k[n];
+          }
+        } else {
+          if (qb[ij] > 0.)
+            probs[ij] *= qb[ij];
+        }
+      }
+
+    if (structure!=NULL)
+      bppm_to_structure(structure, probs, n);
+    if (ov>0) fprintf(stderr, "%d overflows occurred while backtracking;\n"
+        "you might try a smaller pf_scale than %g\n",
+        ov, pf_params->pf_scale);
+  } /* end if((S != NULL) && (S1 != NULL))  */
+  else
+    nrerror("bppm calculations have to be done after calling forward recursion\n");
+  return;
+}
+
+PRIVATE void scale_pf_params(unsigned int length, pf_paramT *parameters){
+  unsigned int  i;
+  double        scaling_factor;
+
+  if(pf_params) free(pf_params);
+
+  if(parameters){
+    pf_params = get_boltzmann_factor_copy(parameters);
+  } else {
+    model_detailsT md;
+    set_model_details(&md);
+    pf_params = get_boltzmann_factors(temperature, 1.0, md, pf_scale);
+  }
+
+  scaling_factor = pf_params->pf_scale;
+
+  /* scaling factors (to avoid overflows) */
+  if (scaling_factor == -1) { /* mean energy for random sequences: 184.3*length cal */
+    scaling_factor = exp(-(-185+(pf_params->temperature-37.)*7.27)/pf_params->kT);
+    if (scaling_factor<1) scaling_factor=1;
+    pf_params->pf_scale = scaling_factor;
+    pf_scale = pf_params->pf_scale; /* compatibility with RNAup, may be removed sometime */
+  }
+  scale[0] = 1.;
+  scale[1] = 1./scaling_factor;
+  expMLbase[0] = 1;
+  expMLbase[1] = pf_params->expMLbase/scaling_factor;
+  for (i=2; i<=length; i++) {
+    scale[i] = scale[i/2]*scale[i-(i/2)];
+    expMLbase[i] = pow(pf_params->expMLbase, (double)i) * scale[i];
+  }
+}
+
+/*---------------------------------------------------------------------------*/
+
+PUBLIC void update_pf_params(int length){
+  update_pf_params_par(length, NULL);
+}
+
+PUBLIC void update_pf_params_par(int length, pf_paramT *parameters){
+#ifdef _OPENMP
+  make_pair_matrix(); /* is this really necessary? */
+  scale_pf_params((unsigned) length, parameters);
+#else
+  if(parameters) init_partfunc(length, parameters);
+  else if (length>init_length) init_partfunc(length, parameters);  /* init not update */
+  else {
+    make_pair_matrix();
+    scale_pf_params((unsigned) length, parameters);
+  }
+#endif
+}
+
+/*---------------------------------------------------------------------------*/
+
+PUBLIC char bppm_symbol(const float *x){
+/*  if( ((x[1]-x[2])*(x[1]-x[2]))<0.1&&x[0]<=0.677) return '|'; */
+  if( x[0] > 0.667 )  return '.';
+  if( x[1] > 0.667 )  return '(';
+  if( x[2] > 0.667 )  return ')';
+  if( (x[1]+x[2]) > x[0] ) {
+    if( (x[1]/(x[1]+x[2])) > 0.667) return '{';
+    if( (x[2]/(x[1]+x[2])) > 0.667) return '}';
+    else return '|';
+  }
+  if( x[0] > (x[1]+x[2]) ) return ',';
+  return ':';
+}
+
+PUBLIC void bppm_to_structure(char *structure, FLT_OR_DBL *p, unsigned int length){
+  int    i, j;
+  int   *index = get_iindx(length);
+  float  P[3];   /* P[][0] unpaired, P[][1] upstream p, P[][2] downstream p */
+
+  for( j=1; j<=length; j++ ) {
+    P[0] = 1.0;
+    P[1] = P[2] = 0.0;
+    for( i=1; i<j; i++) {
+      P[2] += p[index[i]-j];    /* j is paired downstream */
+      P[0] -= p[index[i]-j];    /* j is unpaired */
+    }
+    for( i=j+1; i<=length; i++ ) {
+      P[1] += p[index[j]-i];    /* j is paired upstream */
+      P[0] -= p[index[j]-i];    /* j is unpaired */
+    }
+    structure[j-1] = bppm_symbol(P);
+  }
+  structure[length] = '\0';
+  free(index);
+}
+
+
+/*---------------------------------------------------------------------------*/
+PRIVATE void make_ptypes(const short *S, const char *structure){
+  int n,i,j,k,l, noLP;
+
+  noLP = pf_params->model_details.noLP;
+
+  n=S[0];
+  for (k=1; k<n-TURN; k++)
+    for (l=1; l<=2; l++) {
+      int type,ntype=0,otype=0;
+      i=k; j = i+TURN+l; if (j>n) continue;
+      type = pair[S[i]][S[j]];
+      while ((i>=1)&&(j<=n)) {
+        if ((i>1)&&(j<n)) ntype = pair[S[i-1]][S[j+1]];
+        if (noLP && (!otype) && (!ntype))
+          type = 0; /* i.j can only form isolated pairs */
+        qb[my_iindx[i]-j] = 0.;
+        ptype[my_iindx[i]-j] = (char) type;
+        otype =  type;
+        type  = ntype;
+        i--; j++;
+      }
+    }
+
+  if (struct_constrained && (structure != NULL))
+    constrain_ptypes(structure, (unsigned int)n, ptype, NULL, TURN, 1);
+}
+
+/*
+  stochastic backtracking in pf_fold arrays
+  returns random structure S with Boltzman probabilty
+  p(S) = exp(-E(S)/kT)/Z
+*/
+char *pbacktrack(char *seq){
+  double r, qt;
+  int i,j,n, start;
+  sequence = seq;
+  n = strlen(sequence);
+
+  if (init_length<1)
+    nrerror("can't backtrack without pf arrays.\n"
+            "Call pf_fold() before pbacktrack()");
+  pstruc = space((n+1)*sizeof(char));
+
+  for (i=0; i<n; i++) pstruc[i] = '.';
+
+  start = 1;
+  while (start<n) {
+  /* find i position of first pair */
+    for (i=start; i<n; i++) {
+      r = urn() * qln[i];
+      if (r > qln[i+1]*scale[1])  break; /* i is paired */
+    }
+    if (i>=n) break; /* no more pairs */
+    /* now find the pairing partner j */
+    r = urn() * (qln[i] - qln[i+1]*scale[1]);
+    for (qt=0, j=i+1; j<=n; j++) {
+      int type;
+      type = ptype[my_iindx[i]-j];
+      if (type) {
+        double qkl;
+        qkl = qb[my_iindx[i]-j];
+        if (j<n) qkl *= qln[j+1];
+        qkl *=  exp_E_ExtLoop(type, (i>1) ? S1[i-1] : -1, (j<n) ? S1[j+1] : -1, pf_params);
+        qt += qkl;
+        if (qt > r) break; /* j is paired */
+      }
+    }
+    if (j==n+1) nrerror("backtracking failed in ext loop");
+    start = j+1;
+    backtrack(i,j);
+  }
+
+  return pstruc;
+}
+char *pbacktrack_circ(char *seq){
+  double r, qt;
+  int i, j, k, l, n;
+  FLT_OR_DBL  expMLclosing      = pf_params->expMLclosing;
+
+  sequence = seq;
+  n = strlen(sequence);
+
+  if (init_length<1)
+    nrerror("can't backtrack without pf arrays.\n"
+      "Call pf_circ_fold() before pbacktrack_circ()");
+  pstruc = space((n+1)*sizeof(char));
+
+  /* initialize pstruct with single bases  */
+  for (i=0; i<n; i++) pstruc[i] = '.';
+
+  qt = 1.0*scale[n];
+  r = urn() * qo;
+
+  /* open chain? */
+  if(qt > r) return pstruc;
+
+  for(i=1; (i < n); i++){
+    for(j=i+TURN+1;(j<=n); j++){
+
+      int type, u;
+      /* 1. first check, wether we can do a hairpin loop  */
+      u = n-j + i-1;
+      if (u<TURN) continue;
+
+      type = ptype[my_iindx[i]-j];
+      if (!type) continue;
+
+      type=rtype[type];
+
+      char loopseq[10];
+      if (u<7){
+        strcpy(loopseq , sequence+j-1);
+        strncat(loopseq, sequence, i);
+      }
+
+      qt += qb[my_iindx[i]-j] * exp_E_Hairpin(u, type, S1[j+1], S1[i-1],  loopseq, pf_params) * scale[u];
+      /* found a hairpin? so backtrack in the enclosed part and we're done  */
+      if(qt>r){ backtrack(i,j); return pstruc;}
+
+      /* 2. search for (k,l) with which we can close an interior loop  */
+      for(k=j+1; (k < n); k++){
+        int ln1, lstart;
+        ln1 = k - j - 1;
+        if(ln1+i-1>MAXLOOP) break;
+
+        lstart = ln1+i-1+n-MAXLOOP;
+        if(lstart<k+TURN+1) lstart = k + TURN + 1;
+        for(l=lstart; (l <= n); l++){
+            int ln2, type2;
+            ln2 = (i - 1) + (n - l);
+            if((ln1+ln2) > MAXLOOP) continue;
+
+            type2 = ptype[my_iindx[k]-l];
+            if(!type) continue;
+            type2 = rtype[type2];
+            qt += qb[my_iindx[i]-j] * qb[my_iindx[k]-l] * exp_E_IntLoop(ln2, ln1, type2, type, S1[l+1], S1[k-1], S1[i-1], S1[j+1], pf_params) * scale[ln1 + ln2];
+            /* found an exterior interior loop? also this time, we can go straight  */
+            /* forward and backtracking the both enclosed parts and we're done      */
+            if(qt>r){ backtrack(i,j); backtrack(k,l); return pstruc;}
+        }
+      } /* end of kl double loop */
+    }
+  } /* end of ij double loop  */
+  {
+    /* as we reach this part, we have to search for our barrier between qm and qm2  */
+    qt = 0.;
+    r = urn()*qmo;
+    for(k=TURN+2; k<n-2*TURN-3; k++){
+      qt += qm[my_iindx[1]-k] * qm2[k+1] * expMLclosing;
+      /* backtrack in qm and qm2 if we've found a valid barrier k  */
+      if(qt>r){ backtrack_qm(1,k); backtrack_qm2(k+1,n); return pstruc;}
+    }
+  }
+  /* if we reach the actual end of this function, an error has occured  */
+  /* cause we HAVE TO find an exterior loop or an open chain!!!         */
+  nrerror("backtracking failed in exterior loop");
+  return pstruc;
+}
+
+PRIVATE void backtrack_qm(int i, int j){
+  /* divide multiloop into qm and qm1  */
+  double qmt, r;
+  int k;
+  while(j>i){
+    /* now backtrack  [i ... j] in qm[] */
+    r = urn() * qm[my_iindx[i] - j];
+    qmt = qm1[jindx[j]+i]; k=i;
+    if(qmt<r)
+      for(k=i+1; k<=j; k++){
+        qmt += (qm[my_iindx[i]-(k-1)]+expMLbase[k-i])*qm1[jindx[j]+k];
+        if(qmt >= r) break;
+      }
+    if(k>j) nrerror("backtrack failed in qm");
+
+    backtrack_qm1(k,j);
+
+    if(k<i+TURN) break; /* no more pairs */
+    r = urn() * (qm[my_iindx[i]-(k-1)] + expMLbase[k-i]);
+    if(expMLbase[k-i] >= r) break; /* no more pairs */
+    j = k-1;
+  }
+}
+
+PRIVATE void backtrack_qm1(int i,int j){
+  /* i is paired to l, i<l<j; backtrack in qm1 to find l */
+  int ii, l, type;
+  double qt, r;
+  r = urn() * qm1[jindx[j]+i];
+  ii = my_iindx[i];
+  for (qt=0., l=i+TURN+1; l<=j; l++) {
+    type = ptype[ii-l];
+    if (type)
+      qt +=  qb[ii-l] * exp_E_MLstem(type, S1[i-1], S1[l+1], pf_params) * expMLbase[j-l];
+    if (qt>=r) break;
+  }
+  if (l>j) nrerror("backtrack failed in qm1");
+  backtrack(i,l);
+}
+
+PRIVATE void backtrack_qm2(int k, int n){
+  double qom2t, r;
+  int u;
+  r= urn()*qm2[k];
+  /* we have to search for our barrier u between qm1 and qm1  */
+  for (qom2t = 0.,u=k+TURN+1; u<n-TURN-1; u++){
+    qom2t += qm1[jindx[u]+k]*qm1[jindx[n]+(u+1)];
+    if(qom2t > r) break;
+  }
+  if(u==n-TURN) nrerror("backtrack failed in qm2");
+  backtrack_qm1(k,u);
+  backtrack_qm1(u+1,n);
+}
+
+PRIVATE void backtrack(int i, int j){
+  int noGUclosure = pf_params->model_details.noGUclosure;
+
+  do {
+    double r, qbt1;
+    int k, l, type, u, u1;
+
+    pstruc[i-1] = '('; pstruc[j-1] = ')';
+
+    r = urn() * qb[my_iindx[i]-j];
+    type = ptype[my_iindx[i]-j];
+    u = j-i-1;
+    /*hairpin contribution*/
+    if (((type==3)||(type==4))&&noGUclosure) qbt1 = 0;
+    else
+      qbt1 = exp_E_Hairpin(u, type, S1[i+1], S1[j-1], sequence+i-1, pf_params)*
+        scale[u+2]; /* add scale[u+2] */
+
+    if (qbt1>=r) return; /* found the hairpin we're done */
+
+    for (k=i+1; k<=MIN2(i+MAXLOOP+1,j-TURN-2); k++) {
+      u1 = k-i-1;
+      for (l=MAX2(k+TURN+1,j-1-MAXLOOP+u1); l<j; l++) {
+        int type_2;
+        type_2 = ptype[my_iindx[k]-l];
+        if (type_2) {
+          type_2 = rtype[type_2];
+          /* add *scale[u1+u2+2] */
+          qbt1 += qb[my_iindx[k]-l] * (scale[u1+j-l+1] *
+            exp_E_IntLoop(u1, j-l-1, type, type_2,
+                          S1[i+1], S1[j-1], S1[k-1], S1[l+1], pf_params));
+        }
+        if (qbt1 > r) break;
+      }
+      if (qbt1 > r) break;
+    }
+    if (l<j) {
+      i=k; j=l;
+    }
+    else break;
+  } while (1);
+
+  /* backtrack in multi-loop */
+  {
+    double r, qt;
+    int k, ii, jj;
+
+    i++; j--;
+    /* find the first split index */
+    ii = my_iindx[i]; /* ii-j=[i,j] */
+    jj = jindx[j]; /* jj+i=[j,i] */
+    for (qt=0., k=i+1; k<j; k++) qt += qm[ii-(k-1)]*qm1[jj+k];
+    r = urn() * qt;
+    for (qt=0., k=i+1; k<j; k++) {
+      qt += qm[ii-(k-1)]*qm1[jj+k];
+      if (qt>=r) break;
+    }
+    if (k>=j) nrerror("backtrack failed, can't find split index ");
+
+    backtrack_qm1(k, j);
+
+    j = k-1;
+    backtrack_qm(i,j);
+  }
+}
+
+PUBLIC void assign_plist_from_pr(plist **pl, FLT_OR_DBL *probs, int length, double cut_off){
+  int i, j, n, count, *index;
+  count = 0;
+  n     = 2;
+
+  index = get_iindx(length);
+
+  /* first guess of the size needed for pl */
+  *pl = (plist *)space(n*length*sizeof(plist));
+
+  for (i=1; i<length; i++) {
+    for (j=i+1; j<=length; j++) {
+      /* skip all entries below the cutoff */
+      if (probs[index[i]-j] < cut_off) continue;
+      /* do we need to allocate more memory? */
+      if (count == n * length - 1){
+        n *= 2;
+        *pl = (plist *)xrealloc(*pl, n * length * sizeof(plist));
+      }
+      (*pl)[count].i    = i;
+      (*pl)[count].j    = j;
+      (*pl)[count].p  = probs[index[i] - j];
+      (*pl)[count++].type = 0;
+    }
+  }
+  /* mark the end of pl */
+  (*pl)[count].i   = 0;
+  (*pl)[count].j   = 0;
+  (*pl)[count].p = 0.;
+  (*pl)[count++].type = 0;
+  /* shrink memory to actual size needed */
+  *pl = (plist *)xrealloc(*pl, count * sizeof(plist));
+
+  free(index);
+}
+
+/* this doesn't work if free_pf_arrays() is called before */
+PUBLIC void assign_plist_gquad_from_pr( plist **pl,
+                                        int length,
+                                        double cut_off){
+
+  int i, j, k, n, count, *index;
+  count = 0;
+  n     = 2;
+
+  if(!probs){ *pl = NULL; return;}
+
+  index = get_iindx(length);
+
+  /* first guess of the size needed for pl */
+  *pl = (plist *)space(n*length*sizeof(plist));
+
+  for (i=1; i<length; i++) {
+    for (j=i+1; j<=length; j++) {
+      /* skip all entries below the cutoff */
+      if (probs[index[i]-j] < cut_off) continue;
+
+      /* do we need to allocate more memory? */
+      if (count == n * length - 1){
+        n *= 2;
+        *pl = (plist *)xrealloc(*pl, n * length * sizeof(plist));
+      }
+
+      /* check for presence of gquadruplex */
+      if((S[i] == 3) && (S[j] == 3)){
+          /* add probability of a gquadruplex at position (i,j)
+             for dot_plot
+          */
+          (*pl)[count].i      = i;
+          (*pl)[count].j      = j;
+          (*pl)[count].p      = probs[index[i] - j];
+          (*pl)[count++].type = 1;
+          /* now add the probabilies of it's actual pairing patterns */
+          plist *inner, *ptr;
+          inner = get_plist_gquad_from_pr(S, i, j, G, probs, scale, pf_params);
+          for(ptr=inner; ptr->i != 0; ptr++){
+              if (count == n * length - 1){
+                n *= 2;
+                *pl = (plist *)xrealloc(*pl, n * length * sizeof(plist));
+              }
+              /* check if we've already seen this pair */
+              for(k = 0; k < count; k++)
+                if(((*pl)[k].i == ptr->i) && ((*pl)[k].j == ptr->j))
+                  break;
+              (*pl)[k].i      = ptr->i;
+              (*pl)[k].j      = ptr->j;
+              (*pl)[k].type = 0;
+              if(k == count){
+                (*pl)[k].p  = ptr->p;
+                count++;
+              } else
+                (*pl)[k].p  += ptr->p;
+          }
+      } else {
+          (*pl)[count].i      = i;
+          (*pl)[count].j      = j;
+          (*pl)[count].p      = probs[index[i] - j];
+          (*pl)[count++].type = 0;
+      }
+    }
+  }
+  /* mark the end of pl */
+  (*pl)[count].i   = 0;
+  (*pl)[count].j   = 0;
+  (*pl)[count++].p = 0.;
+  /* shrink memory to actual size needed */
+  *pl = (plist *)xrealloc(*pl, count * sizeof(plist));
+  free(index);
+}
+
+/* this doesn't work if free_pf_arrays() is called before */
+PUBLIC char *get_centroid_struct_gquad_pr( int length,
+                                          double *dist){
+
+  /* compute the centroid structure of the ensemble, i.e. the strutcure
+     with the minimal average distance to all other structures
+     <d(S)> = \sum_{(i,j) \in S} (1-p_{ij}) + \sum_{(i,j) \notin S} p_{ij}
+     Thus, the centroid is simply the structure containing all pairs with
+     p_ij>0.5 */
+  int i,j, k;
+  double p;
+  char  *centroid;
+  int   *my_iindx = get_iindx(length);
+
+  if (probs == NULL)
+    nrerror("get_centroid_struct_pr: probs==NULL!");
+
+  *dist = 0.;
+  centroid = (char *) space((length+1)*sizeof(char));
+  for (i=0; i<length; i++) centroid[i]='.';
+  for (i=1; i<=length; i++)
+    for (j=i+TURN+1; j<=length; j++) {
+      if ((p=probs[my_iindx[i]-j])>0.5) {
+        /* check for presence of gquadruplex */
+        if((S[i] == 3) && (S[j] == 3)){
+          int L, l[3];
+          get_gquad_pattern_pf(S, i, j, pf_params, &L, l);
+          for(k=0;k<L;k++){
+            centroid[i+k-1]\
+            = centroid[i+k+L+l[0]-1]\
+            = centroid[i+k+2*L+l[0]+l[1]-1]\
+            = centroid[i+k+3*L+l[0]+l[1]+l[2]-1]\
+            = '+';
+          }
+          /* skip everything within the gquad */
+          i = j; j = j+TURN+1;
+          *dist += (1-p); /* right? */
+          break;
+        } else {
+            centroid[i-1] = '(';
+            centroid[j-1] = ')';
+        }
+        *dist += (1-p);
+      } else
+        *dist += p;
+    }
+  free(my_iindx);
+  centroid[length] = '\0';
+  return centroid;
+}
+
+/* this function is a threadsafe replacement for centroid() */
+PUBLIC char *get_centroid_struct_pl(int length, double *dist, plist *pl){
+  /* compute the centroid structure of the ensemble, i.e. the strutcure
+     with the minimal average distance to all other structures
+     <d(S)> = \sum_{(i,j) \in S} (1-p_{ij}) + \sum_{(i,j) \notin S} p_{ij}
+     Thus, the centroid is simply the structure containing all pairs with
+     p_ij>0.5 */
+  int i;
+  char *centroid;
+
+  if (pl==NULL)
+    nrerror("get_centroid_struct: pl==NULL!");
+
+  *dist = 0.;
+  centroid = (char *) space((length+1)*sizeof(char));
+  for (i=0; i<length; i++) centroid[i]='.';
+  for (i=0; pl[i].i>0; i++){
+    if ((pl[i].p)>0.5) {
+      centroid[pl[i].i-1] = '(';
+      centroid[pl[i].j-1] = ')';
+      *dist += (1-pl[i].p);
+    } else
+      *dist += pl[i].p;
+  }
+  centroid[length] = '\0';
+  return centroid;
+}
+
+/* this function is a threadsafe replacement for centroid() */
+PUBLIC char *get_centroid_struct_pr(int length, double *dist, FLT_OR_DBL *probs){
+  /* compute the centroid structure of the ensemble, i.e. the strutcure
+     with the minimal average distance to all other structures
+     <d(S)> = \sum_{(i,j) \in S} (1-p_{ij}) + \sum_{(i,j) \notin S} p_{ij}
+     Thus, the centroid is simply the structure containing all pairs with
+     p_ij>0.5 */
+  int i,j;
+  double p;
+  char  *centroid;
+  int   *index = get_iindx(length);
+
+  if (probs == NULL)
+    nrerror("get_centroid_struct_pr: probs==NULL!");
+
+  *dist = 0.;
+  centroid = (char *) space((length+1)*sizeof(char));
+  for (i=0; i<length; i++) centroid[i]='.';
+  for (i=1; i<=length; i++)
+    for (j=i+TURN+1; j<=length; j++) {
+      if ((p=probs[index[i]-j])>0.5) {
+        centroid[i-1] = '(';
+        centroid[j-1] = ')';
+        *dist += (1-p);
+      } else
+        *dist += p;
+    }
+  free(index);
+  centroid[length] = '\0';
+  return centroid;
+}
+
+PUBLIC plist *stackProb(double cutoff){
+  plist *pl;
+  int i,j,plsize=256;
+  int num = 0;
+
+  if (probs==NULL)
+    nrerror("probs==NULL. You need to call pf_fold() before stackProb()");
+
+  int length  = S[0];
+  int *index  = get_iindx(length);
+
+  pl = (plist *) space(plsize*sizeof(plist));
+
+  for (i=1; i<length; i++)
+    for (j=i+TURN+3; j<=length; j++) {
+      double p;
+      if((p=probs[index[i]-j]) < cutoff) continue;
+      if (qb[index[i+1]-(j-1)]<FLT_MIN) continue;
+      p *= qb[index[i+1]-(j-1)]/qb[index[i]-j];
+      p *= exp_E_IntLoop(0,0,ptype[index[i]-j],rtype[ptype[index[i+1]-(j-1)]],
+                         0,0,0,0, pf_params)*scale[2];/* add *scale[u1+u2+2] */
+      if (p>cutoff) {
+        pl[num].i = i;
+        pl[num].j = j;
+        pl[num++].p = p;
+        if (num>=plsize) {
+          plsize *= 2;
+          pl = xrealloc(pl, plsize*sizeof(plist));
+        }
+      }
+    }
+  pl[num].i=0;
+  free(index);
+  return pl;
+}
+
+/*-------------------------------------------------------------------------*/
+/* make arrays used for pf_fold available to other routines */
+PUBLIC int get_pf_arrays( short **S_p,
+                          short **S1_p,
+                          char **ptype_p,
+                          FLT_OR_DBL **qb_p,
+                          FLT_OR_DBL **qm_p,
+                          FLT_OR_DBL **q1k_p,
+                          FLT_OR_DBL **qln_p){
+
+  if(qb == NULL) return(0); /* check if pf_fold() has been called */
+  *S_p = S; *S1_p = S1; *ptype_p = ptype;
+  *qb_p = qb; *qm_p = qm;
+  *q1k_p = q1k; *qln_p = qln;
+  return(1); /* success */
+}
+
+/* get the free energy of a subsequence from the q[] array */
+PUBLIC double get_subseq_F(int i, int j){
+  if (!q)
+    nrerror("call pf_fold() to fill q[] array before calling get_subseq_F()");
+  return ((-log(q[my_iindx[i]-j])-(j-i+1)*log(pf_params->pf_scale))*pf_params->kT/1000.0);
+}
+
+
+PUBLIC double mean_bp_distance(int length){
+  return mean_bp_distance_pr(length, probs);
+}
+
+PUBLIC double mean_bp_distance_pr(int length, FLT_OR_DBL *p){
+  /* compute the mean base pair distance in the thermodynamic ensemble */
+  /* <d> = \sum_{a,b} p_a p_b d(S_a,S_b)
+     this can be computed from the pair probs p_ij as
+     <d> = \sum_{ij} p_{ij}(1-p_{ij}) */
+  int i,j;
+  double d=0;
+  int *index = get_iindx((unsigned int) length);
+
+  if (p==NULL)
+    nrerror("p==NULL. You need to supply a valid probability matrix for mean_bp_distance_pr()");
+
+  for (i=1; i<=length; i++)
+    for (j=i+TURN+1; j<=length; j++)
+      d += p[index[i]-j] * (1-p[index[i]-j]);
+
+  free(index);
+  return 2*d;
+}
+
+PUBLIC FLT_OR_DBL *export_bppm(void){
+  return probs;
+}
+
+/*###########################################*/
+/*# deprecated functions below              #*/
+/*###########################################*/
+
+/* this function is deprecated since it is not threadsafe */
+PUBLIC char *centroid(int length, double *dist) {
+  /* compute the centroid structure of the ensemble, i.e. the strutcure
+     with the minimal average distance to all other structures
+     <d(S)> = \sum_{(i,j) \in S} (1-p_{ij}) + \sum_{(i,j) \notin S} p_{ij}
+     Thus, the centroid is simply the structure containing all pairs with
+     p_ij>0.5 */
+  int i,j;
+  double p;
+  char *centroid;
+
+  if (pr==NULL)
+    nrerror("pr==NULL. You need to call pf_fold() before centroid()");
+
+  *dist = 0.;
+  centroid = (char *) space((length+1)*sizeof(char));
+  for (i=0; i<length; i++) centroid[i]='.';
+  for (i=1; i<=length; i++)
+    for (j=i+TURN+1; j<=length; j++) {
+      if ((p=pr[my_iindx[i]-j])>0.5) {
+        centroid[i-1] = '(';
+        centroid[j-1] = ')';
+        *dist += (1-p);
+      } else
+        *dist += p;
+    }
+  return centroid;
+}
+
+
+/* This function is deprecated since it uses the global array pr for calculations */
+PUBLIC double mean_bp_dist(int length) {
+  /* compute the mean base pair distance in the thermodynamic ensemble */
+  /* <d> = \sum_{a,b} p_a p_b d(S_a,S_b)
+     this can be computed from the pair probs p_ij as
+     <d> = \sum_{ij} p_{ij}(1-p_{ij}) */
+  int i,j;
+  double d=0;
+
+  if (pr==NULL)
+    nrerror("pr==NULL. You need to call pf_fold() before mean_bp_dist()");
+
+  for (i=1; i<=length; i++)
+    for (j=i+TURN+1; j<=length; j++)
+      d += pr[my_iindx[i]-j] * (1-pr[my_iindx[i]-j]);
+  return 2*d;
+}
+
+/*----------------------------------------------------------------------*/
+PUBLIC double expHairpinEnergy(int u, int type, short si1, short sj1,
+                                const char *string) {
+/* compute Boltzmann weight of a hairpin loop, multiply by scale[u+2] */
+  double q, kT;
+  kT = pf_params->kT;   /* kT in cal/mol  */
+  if(u <= 30)
+    q = pf_params->exphairpin[u];
+  else
+    q = pf_params->exphairpin[30] * exp( -(pf_params->lxc*log( u/30.))*10./kT);
+  if ((tetra_loop)&&(u==4)) {
+    char tl[7]={0}, *ts;
+    strncpy(tl, string, 6);
+    if ((ts=strstr(pf_params->Tetraloops, tl)))
+      return (pf_params->exptetra[(ts-pf_params->Tetraloops)/7]);
+  }
+  if ((tetra_loop)&&(u==6)) {
+    char tl[9]={0}, *ts;
+    strncpy(tl, string, 6);
+    if ((ts=strstr(pf_params->Hexaloops, tl)))
+      return  (pf_params->exphex[(ts-pf_params->Hexaloops)/9]);
+  }
+  if (u==3) {
+    char tl[6]={0}, *ts;
+    strncpy(tl, string, 5);
+    if ((ts=strstr(pf_params->Triloops, tl)))
+      return (pf_params->exptri[(ts-pf_params->Triloops)/6]);
+    if (type>2)
+      q *= pf_params->expTermAU;
+  }
+  else /* no mismatches for tri-loops */
+    q *= pf_params->expmismatchH[type][si1][sj1];
+
+  return q;
+}
+PUBLIC double expLoopEnergy(int u1, int u2, int type, int type2,
+                             short si1, short sj1, short sp1, short sq1) {
+/* compute Boltzmann weight of interior loop,
+   multiply by scale[u1+u2+2] for scaling */
+  double z=0;
+  int no_close = 0;
+
+  if ((no_closingGU) && ((type2==3)||(type2==4)||(type==2)||(type==4)))
+    no_close = 1;
+
+  if ((u1==0) && (u2==0)) /* stack */
+    z = pf_params->expstack[type][type2];
+  else if (no_close==0) {
+    if ((u1==0)||(u2==0)) { /* bulge */
+      int u;
+      u = (u1==0)?u2:u1;
+      z = pf_params->expbulge[u];
+      if (u2+u1==1) z *= pf_params->expstack[type][type2];
+      else {
+        if (type>2) z *= pf_params->expTermAU;
+        if (type2>2) z *= pf_params->expTermAU;
+      }
+    }
+    else {     /* interior loop */
+      if (u1+u2==2) /* size 2 is special */
+        z = pf_params->expint11[type][type2][si1][sj1];
+      else if ((u1==1) && (u2==2))
+        z = pf_params->expint21[type][type2][si1][sq1][sj1];
+      else if ((u1==2) && (u2==1))
+        z = pf_params->expint21[type2][type][sq1][si1][sp1];
+      else if ((u1==2) && (u2==2))
+        z = pf_params->expint22[type][type2][si1][sp1][sq1][sj1];
+      else if (((u1==2)&&(u2==3))||((u1==3)&&(u2==2))){ /*2-3 is special*/
+        z = pf_params->expinternal[5]*
+          pf_params->expmismatch23I[type][si1][sj1]*
+          pf_params->expmismatch23I[type2][sq1][sp1];
+        z *= pf_params->expninio[2][1];
+      }
+      else if ((u1==1)||(u2==1)) {  /*1-n is special*/
+        z = pf_params->expinternal[u1+u2]*
+          pf_params->expmismatch1nI[type][si1][sj1]*
+          pf_params->expmismatch1nI[type2][sq1][sp1];
+        z *= pf_params->expninio[2][abs(u1-u2)];
+      }
+      else {
+        z = pf_params->expinternal[u1+u2]*
+          pf_params->expmismatchI[type][si1][sj1]*
+          pf_params->expmismatchI[type2][sq1][sp1];
+        z *= pf_params->expninio[2][abs(u1-u2)];
+      }
+    }
+  }
+  return z;
+}
+
+PUBLIC void init_pf_circ_fold(int length){
+/* DO NOTHING */
+}
+
+PUBLIC void init_pf_fold(int length){
+/* DO NOTHING */
+}
+
+
diff --git a/cbits/part_func_co.c b/cbits/part_func_co.c
new file mode 100644
--- /dev/null
+++ b/cbits/part_func_co.c
@@ -0,0 +1,1046 @@
+/* Last changed Time-stamp: <2007-05-09 16:11:21 ivo> */
+/*
+                  partiton function for RNA secondary structures
+
+                  Ivo L Hofacker
+                  Stephan Bernhart
+                  Vienna RNA package
+*/
+/*
+  $Log: part_func_co.c,v $
+  Revision 1.10  2007/05/10 17:27:01  ivo
+  make sure the relative error eps is positive in newton iteration
+
+  Revision 1.9  2006/05/10 15:12:11  ivo
+  some compiler choked on  double semicolon after declaration
+
+  Revision 1.8  2006/04/05 12:52:31  ivo
+  Fix performance bug (O(n^4) loop)
+
+  Revision 1.7  2006/01/19 11:30:04  ivo
+  compute_probabilities should only look at one dimer at a time
+
+  Revision 1.6  2006/01/18 12:55:40  ivo
+  major cleanup of berni code
+  fix bugs related to confusing which free energy is returned by co_pf_fold()
+
+  Revision 1.5  2006/01/16 11:32:25  ivo
+  small bug in multiloop pair probs
+
+  Revision 1.4  2006/01/05 18:13:40  ivo
+  update
+
+  Revision 1.3  2006/01/04 15:14:29  ivo
+  fix bug in concentration calculations
+
+  Revision 1.2  2004/12/23 12:14:41  berni
+  *** empty log message ***
+
+  Revision 1.1  2004/12/22 10:46:17  berni
+
+  Partition function Cofolding 0.9, Computation of concentrations.
+
+  Revision 1.16  2003/08/04 09:14:09  ivo
+  finish up stochastic backtracking
+
+  Revision 1.15  2002/03/19 16:51:12  ivo
+  more on stochastic backtracking (still incomplete)
+
+  Revision 1.13  2001/11/16 17:30:04  ivo
+  add stochastic backtracking (still incomplete)
+*/
+
+#include <config.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <float.h>    /* #defines FLT_MAX ... */
+#include <limits.h>
+
+#include "utils.h"
+#include "energy_par.h"
+#include "fold_vars.h"
+#include "pair_mat.h"
+#include "PS_dot.h"
+#include "params.h"
+#include "loop_energies.h"
+#include "part_func.h"
+#include "part_func_co.h"
+
+#ifdef _OPENMP
+#include <omp.h>
+#endif
+
+
+/*@unused@*/
+PRIVATE char rcsid[] UNUSED = "$Id: part_func_co.c,v 1.10 2007/05/10 17:27:01 ivo Exp $";
+
+#define ISOLATED  256.0
+#undef TURN
+#define TURN 0
+#define SAME_STRAND(I,J) (((I)>=cut_point)||((J)<cut_point))
+
+/* #define SAME_STRAND(I,J) (((J)<cut_point)||((I)>=cut_point2)||(((I)>=cut_point)&&((J)<cut_point2)))
+ */
+
+/*
+#################################
+# GLOBAL VARIABLES              #
+#################################
+*/
+int     mirnatog      = 0;
+double  F_monomer[2]  = {0,0}; /* free energies of the two monomers */
+
+/*
+#################################
+# PRIVATE VARIABLES             #
+#################################
+*/
+PRIVATE FLT_OR_DBL  *expMLbase=NULL;
+PRIVATE FLT_OR_DBL  *q=NULL, *qb=NULL, *qm=NULL, *qm1=NULL, *qqm=NULL, *qqm1=NULL, *qq=NULL, *qq1=NULL;
+PRIVATE FLT_OR_DBL  *prml=NULL, *prm_l=NULL, *prm_l1=NULL, *q1k=NULL, *qln=NULL, *probs=NULL;
+PRIVATE FLT_OR_DBL  *scale=NULL;
+PRIVATE pf_paramT   *pf_params = NULL;
+PRIVATE char        *ptype=NULL; /* precomputed array of pair types */
+PRIVATE int         *jindx=NULL;
+PRIVATE int         *my_iindx=NULL;
+PRIVATE int         init_length; /* length in last call to init_pf_fold() */
+PRIVATE int         do_bppm = 1;             /* do backtracking per default */
+PRIVATE short       *S=NULL, *S1=NULL;
+PRIVATE char        *pstruc=NULL;
+PRIVATE char        *sequence=NULL;
+PRIVATE double      alpha = 1.0;
+PRIVATE int         struct_constrained = 0;
+
+#ifdef _OPENMP
+
+/* NOTE: all variables are assumed to be uninitialized if they are declared as threadprivate
+*/
+#pragma omp threadprivate(expMLbase, q, qb, qm, qm1, qqm, qqm1, qq, qq1, prml, prm_l, prm_l1, q1k, qln,\
+                          scale, pf_params, ptype, jindx, my_iindx, init_length, S, S1, pstruc, sequence, probs, do_bppm, alpha, struct_constrained)
+
+#endif
+
+
+/*
+#################################
+# PRIVATE FUNCTION DECLARATIONS #
+#################################
+*/
+PRIVATE void    init_partfunc_co(int length, pf_paramT *parameters);
+PRIVATE void    pf_co(const char *sequence);
+PRIVATE void    pf_co_bppm(const char *sequence, char *structure);
+PRIVATE double  *Newton_Conc(double ZAB, double ZAA, double ZBB, double concA, double concB,double* ConcVec);
+PRIVATE void    scale_pf_params(unsigned int length, pf_paramT *parameters);
+PRIVATE void    get_arrays(unsigned int length);
+PRIVATE void    make_ptypes(const short *S, const char *structure);
+PRIVATE void    backtrack(int i, int j);
+
+
+/*
+#################################
+# BEGIN OF FUNCTION DEFINITIONS #
+#################################
+*/
+
+PRIVATE void init_partfunc_co(int length, pf_paramT *parameters){
+  if (length<1) nrerror("init_pf_fold: length must be greater 0");
+
+#ifdef _OPENMP
+/* Explicitly turn off dynamic threads */
+  omp_set_dynamic(0);
+  free_co_pf_arrays(); /* free previous allocation */
+#else
+  if (init_length>0) free_co_pf_arrays(); /* free previous allocation */
+#endif
+
+#ifdef SUN4
+  nonstandard_arithmetic();
+#else
+#ifdef HP9
+  fpsetfastmode(1);
+#endif
+#endif
+  make_pair_matrix();
+  get_arrays((unsigned) length);
+  scale_pf_params((unsigned) length, parameters);
+  init_length = length;
+}
+
+PRIVATE void get_arrays(unsigned int length){
+  unsigned int size;
+
+  if((length +1) >= (unsigned int)sqrt((double)INT_MAX))
+    nrerror("get_arrays@part_func_co.c: sequence length exceeds addressable range");
+
+  size      = sizeof(FLT_OR_DBL) * ((length+1)*(length+2)/2);
+  q         = (FLT_OR_DBL *) space(size);
+  qb        = (FLT_OR_DBL *) space(size);
+  qm        = (FLT_OR_DBL *) space(size);
+  probs     = (FLT_OR_DBL *) space(size);
+  qm1       = (FLT_OR_DBL *) space(size);
+  q1k       = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+1));
+  qln       = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2));
+  qq        = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2));
+  qq1       = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2));
+  qqm       = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2));
+  qqm1      = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2));
+  prm_l     = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2));
+  prm_l1    = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2));
+  prml      = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+2));
+  expMLbase = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+1));
+  scale     = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL)*(length+1));
+  ptype     = (char *) space(sizeof(char)*((length+1)*(length+2)/2));
+  my_iindx  = get_iindx(length);
+  iindx     = get_iindx(length); /* for backward compatibility and Perl wrapper */
+  jindx     = get_indx(length);
+}
+
+PUBLIC void free_co_pf_arrays(void){
+  if(q)         free(q);
+  if(qb)        free(qb);
+  if(qm)        free(qm);
+  if(qm1)       free(qm1);
+  if(ptype)     free(ptype);
+  if(qq)        free(qq);
+  if(qq1)       free(qq1);
+  if(qqm)       free(qqm);
+  if(qqm1)      free(qqm1);
+  if(q1k)       free(q1k);
+  if(qln)       free(qln);
+  if(prm_l)     free(prm_l);
+  if(prm_l1)    free(prm_l1);
+  if(prml)      free(prml);
+  if(probs)     free(probs);
+  if(expMLbase) free(expMLbase);
+  if(scale)     free(scale);
+  if(my_iindx)  free(my_iindx);
+  if(iindx)     free(iindx); /* for backward compatibility and Perl wrapper */
+  if(jindx)     free(jindx);
+  if(S)         free(S);
+  if(S1)        free(S1);
+
+  init_length=0;
+  q = qb = qm = qm1 = qq = qq1 = qqm = qqm1 = q1k = qln = prm_l = prm_l1 = prml = expMLbase = scale = probs = NULL;
+  ptype = NULL;
+  S = S1 = NULL;
+  my_iindx = jindx = iindx = NULL;
+
+#ifdef SUN4
+  standard_arithmetic();
+#else
+#ifdef HP9
+  fpsetfastmode(0);
+#endif
+#endif
+}
+
+/*-----------------------------------------------------------------*/
+PUBLIC cofoldF co_pf_fold(char *sequence, char *structure){
+  return co_pf_fold_par(sequence, structure, NULL, do_backtrack, fold_constrained);
+}
+
+PUBLIC cofoldF co_pf_fold_par(char *sequence,
+                              char *structure,
+                              pf_paramT *parameters,
+                              int calculate_bppm,
+                              int is_constrained){
+
+  int         n;
+  FLT_OR_DBL  Q;
+  cofoldF     X;
+  double      free_energy;
+
+  n                   = (int) strlen(sequence);
+  do_bppm             = calculate_bppm;
+  struct_constrained  = is_constrained;
+
+#ifdef _OPENMP
+  /* always init everything since all global static variables are uninitialized when entering a thread */
+  init_partfunc_co(n, parameters);
+#else
+  if(parameters) init_partfunc_co(n, parameters);
+  else if (n > init_length) init_partfunc_co(n, parameters);
+  else if (fabs(pf_params->temperature - temperature)>1e-6) update_co_pf_params_par(n, parameters);
+#endif
+
+ /* printf("mirnatog=%d\n",mirnatog); */
+
+  if(S) free(S);
+  S   = encode_sequence(sequence, 0);
+  if(S1) free(S1);
+  S1  = encode_sequence(sequence, 1);
+
+  make_ptypes(S, structure);
+
+  pf_co(sequence);
+
+  if (backtrack_type=='C')      Q = qb[my_iindx[1]-n];
+  else if (backtrack_type=='M') Q = qm[my_iindx[1]-n];
+  else Q = q[my_iindx[1]-n];
+  /* ensemble free energy in Kcal/mol */
+  if (Q<=FLT_MIN) fprintf(stderr, "pf_scale too large\n");
+  free_energy = (-log(Q)-n*log(pf_params->pf_scale))*pf_params->kT/1000.0;
+  /* in case we abort because of floating point errors */
+  if (n>1600) fprintf(stderr, "free energy = %8.2f\n", free_energy);
+  /*probability of molecules being bound together*/
+
+
+  /*Computation of "real" Partition function*/
+  /*Need that for concentrations*/
+  if (cut_point>0){
+    double kT, pbound, QAB, QToT, Qzero;
+
+    kT = pf_params->kT/1000.0;
+    Qzero=q[my_iindx[1]-n];
+    QAB=(q[my_iindx[1]-n]-q[my_iindx[1]-(cut_point-1)]*q[my_iindx[cut_point]-n])*pf_params->expDuplexInit;
+    /*correction for symmetry*/
+    if((n-(cut_point-1)*2)==0) {
+      if ((strncmp(sequence, sequence+cut_point-1, cut_point-1))==0) {
+        QAB/=2;
+      }}
+
+    QToT=q[my_iindx[1]-(cut_point-1)]*q[my_iindx[cut_point]-n]+QAB;
+    pbound=1-(q[my_iindx[1]-(cut_point-1)]*q[my_iindx[cut_point]-n]/QToT);
+     X.FAB  = -kT*(log(QToT)+n*log(pf_params->pf_scale));
+    X.F0AB = -kT*(log(Qzero)+n*log(pf_params->pf_scale));
+    X.FcAB = (QAB>1e-17) ? -kT*(log(QAB)+n*log(pf_params->pf_scale)) : 999;
+    X.FA = -kT*(log(q[my_iindx[1]-(cut_point-1)]) + (cut_point-1)*log(pf_params->pf_scale));
+    X.FB = -kT*(log(q[my_iindx[cut_point]-n]) + (n-cut_point+1)*log(pf_params->pf_scale));
+
+    /* printf("QAB=%.9f\tQtot=%.9f\n",QAB/scale[n],QToT/scale[n]);*/
+  }
+  else {
+    X.FA = X.FB = X.FAB = X.F0AB = free_energy;
+    X.FcAB = 0;
+  }
+
+  /* backtracking to construct binding probabilities of pairs*/
+  if(do_bppm){
+    pf_co_bppm(sequence, structure);
+    /*
+    *  Backward compatibility:
+    *  This block may be removed if deprecated functions
+    *  relying on the global variable "pr" vanish from within the package!
+    */
+    pr = probs;
+    /*
+    {
+      if(pr) free(pr);
+      pr = (FLT_OR_DBL *) space(sizeof(FLT_OR_DBL) * ((n+1)*(n+2)/2));
+      memcpy(pr, probs, sizeof(FLT_OR_DBL) * ((n+1)*(n+2)/2));
+    }
+    */
+  }
+  return X;
+}
+
+/* forward recursion of pf cofolding */
+PRIVATE void pf_co(const char *sequence){
+  int         n, i,j,k,l, ij, u,u1,ii, type, type_2, tt;
+  FLT_OR_DBL  temp, Qmax=0;
+  FLT_OR_DBL  qbt1, *tmp;
+  FLT_OR_DBL  expMLclosing;
+  double      max_real;
+  int         noGUclosure = pf_params->model_details.noGUclosure;
+
+  max_real = (sizeof(FLT_OR_DBL) == sizeof(float)) ? FLT_MAX : DBL_MAX;
+  n = (int) strlen(sequence);
+
+  expMLclosing = pf_params->expMLclosing;
+
+
+  /*array initialization ; qb,qm,q
+    qb,qm,q (i,j) are stored as ((n+1-i)*(n-i) div 2 + n+1-j */
+
+  /* for (d=0; d<=TURN; d++) */
+  for (i=1; i<=n/*-d*/; i++) {
+      ij = my_iindx[i]-i;
+      q[ij]=scale[1];
+      qb[ij]=qm[ij]=0.0;
+    }
+
+  for (i=0; i<=n; i++)
+    qq[i]=qq1[i]=qqm[i]=qqm1[i]=prm_l[i]=prm_l1[i]=prml[i]=0;
+
+  for (j=TURN+2;j<=n; j++) {
+    for (i=j-TURN-1; i>=1; i--) {
+      /* construction of partition function of segment i,j*/
+       /*firstly that given i bound to j : qb(i,j) */
+      u = j-i-1; ij = my_iindx[i]-j;
+      type = ptype[ij];
+      qbt1=0;
+      if (type!=0) {
+        /*hairpin contribution*/
+        if SAME_STRAND(i,j){
+          if (((type==3)||(type==4))&&noGUclosure) qbt1 = 0;
+          else
+            qbt1 = exp_E_Hairpin(u, type, S1[i+1], S1[j-1], sequence+i-1, pf_params)*scale[u+2];
+
+        }
+
+        /* interior loops with interior pair k,l */
+        for (k=i+1; k<=MIN2(i+MAXLOOP+1,j-TURN-2); k++) {
+          u1 = k-i-1;
+          for (l=MAX2(k+TURN+1,j-1-MAXLOOP+u1); l<j; l++) {
+            if ((SAME_STRAND(i,k))&&(SAME_STRAND(l,j))){
+              type_2 = ptype[my_iindx[k]-l];
+              if (type_2) {
+                type_2 = rtype[type_2];
+                qbt1 += qb[my_iindx[k]-l] *
+                  exp_E_IntLoop(u1, j-l-1, type, type_2,
+                                S1[i+1], S1[j-1], S1[k-1], S1[l+1], pf_params)*scale[u1+j-l+1];
+              }
+            }
+          }
+        }
+        /*multiple stem loop contribution*/
+        ii = my_iindx[i+1]; /* ii-k=[i+1,k-1] */
+        temp = 0.0;
+        if (SAME_STRAND(i,i+1) && SAME_STRAND(j-1,j)) {
+          for (k=i+2; k<=j-1; k++) {
+            if (SAME_STRAND(k-1,k))
+              temp += qm[ii-(k-1)]*qqm1[k];
+          }
+          tt = rtype[type];
+          temp*=exp_E_MLstem(tt, S1[j-1], S1[i+1], pf_params)*scale[2];
+          temp*=expMLclosing;
+          qbt1 += temp;
+        }
+        /*qc contribution*/
+        temp=0.0;
+        if (!SAME_STRAND(i,j)){
+          tt = rtype[type];
+          temp=q[my_iindx[i+1]-(cut_point-1)]*q[my_iindx[cut_point]-(j-1)];
+          if ((j==cut_point)&&(i==cut_point-1)) temp=scale[2];
+          else if (i==cut_point-1) temp=q[my_iindx[cut_point]-(j-1)]*scale[1];
+          else if (j==cut_point) temp=q[my_iindx[i+1]-(cut_point-1)]*scale[1];
+          if (j>cut_point) temp*=scale[1];
+          if (i<cut_point-1) temp*=scale[1];
+          temp *= exp_E_ExtLoop(tt, SAME_STRAND(j-1,j) ? S1[j-1] : -1, SAME_STRAND(i,i+1) ? S1[i+1] : -1, pf_params);
+          qbt1+=temp;
+        }
+        qb[ij] = qbt1;
+      } /* end if (type!=0) */
+      else qb[ij] = 0.0;
+      /* construction of qqm matrix containing final stem
+         contributions to multiple loop partition function
+         from segment i,j */
+      if (SAME_STRAND(j-1,j)) {
+        qqm[i] = qqm1[i]*expMLbase[1];
+      }
+      else qqm[i]=0;
+      if (type&&SAME_STRAND(i-1,i)&&SAME_STRAND(j,j+1)) {
+        qbt1 = qb[ij];
+        qbt1 *= exp_E_MLstem(type, (i>1) ? S1[i-1] : -1, (j<n) ? S1[j+1] : -1, pf_params);
+        qqm[i] += qbt1;
+      }
+
+      if (qm1) qm1[jindx[j]+i] = qqm[i]; /* for stochastic backtracking */
+
+
+      /*construction of qm matrix containing multiple loop
+        partition function contributions from segment i,j */
+      temp = 0.0;
+      ii = my_iindx[i];  /* ii-k=[i,k] */
+
+      for (k=i+1; k<=j; k++) {
+        if (SAME_STRAND(k-1,k)) temp += (qm[ii-(k-1)])*qqm[k];
+        if (SAME_STRAND(i,k))   temp += expMLbase[k-i]*qqm[k];
+
+      }
+
+      qm[ij] = (temp + qqm[i]);
+
+      /*auxiliary matrix qq for cubic order q calculation below */
+      qbt1 = qb[ij];
+      if (type) {
+        qbt1 *= exp_E_ExtLoop(type, ((i>1)&&(SAME_STRAND(i-1,i))) ? S1[i-1] : -1, ((j<n)&&(SAME_STRAND(j,j+1))) ? S1[j+1] : -1, pf_params);
+      }
+      qq[i] = qq1[i]*scale[1] + qbt1;
+       /*construction of partition function for segment i,j */
+      temp = 1.0*scale[1+j-i] + qq[i];
+      for (k=i; k<=j-1; k++) temp += q[ii-k]*qq[k+1];
+      q[ij] = temp;
+
+      if (temp>Qmax) {
+        Qmax = temp;
+        if (Qmax>max_real/10.)
+          fprintf(stderr, "Q close to overflow: %d %d %g\n", i,j,temp);
+      }
+      if (temp>=max_real) {
+        PRIVATE char msg[128];
+        snprintf(msg, 127, "overflow in co_pf_fold while calculating q[%d,%d]\n"
+                "use larger pf_scale", i,j);
+        nrerror(msg);
+      }
+    }
+    tmp = qq1;  qq1 =qq;  qq =tmp;
+    tmp = qqm1; qqm1=qqm; qqm=tmp;
+  }
+}
+
+/* backward recursion of pf cofolding */
+PRIVATE void pf_co_bppm(const char *sequence, char *structure){
+  int         n, i,j,k,l, ij, kl, ii, ll, type, type_2, tt, ov=0;
+  FLT_OR_DBL  temp, Qmax=0, prm_MLb;
+  FLT_OR_DBL  prmt,prmt1;
+  FLT_OR_DBL  *tmp;
+  FLT_OR_DBL  expMLclosing;
+  double      max_real;
+
+  max_real = (sizeof(FLT_OR_DBL) == sizeof(float)) ? FLT_MAX : DBL_MAX;
+  n = (int) strlen(sequence);
+
+  expMLclosing = pf_params->expMLclosing;
+
+  /* backtracking to construct binding probabilities of pairs*/
+  if ((S != NULL) && (S1 != NULL)) {
+    FLT_OR_DBL   *Qlout, *Qrout;
+    Qmax=0;
+    Qrout=(FLT_OR_DBL *)space(sizeof(FLT_OR_DBL) * (n+2));
+    Qlout=(FLT_OR_DBL *)space(sizeof(FLT_OR_DBL) * (cut_point+2));
+
+    for (k=1; k<=n; k++) {
+      q1k[k] = q[my_iindx[1] - k];
+      qln[k] = q[my_iindx[k] -n];
+    }
+    q1k[0] = 1.0;
+    qln[n+1] = 1.0;
+
+    /*    pr = q;     /  * recycling */
+
+    /* 1. exterior pair i,j and initialization of pr array */
+    for (i=1; i<=n; i++) {
+      for (j=i; j<=MIN2(i+TURN,n); j++) probs[my_iindx[i]-j] = 0;
+      for (j=i+TURN+1; j<=n; j++) {
+        ij = my_iindx[i]-j;
+        type = ptype[ij];
+        if (type&&(qb[ij]>0.)) {
+          probs[ij] = q1k[i-1]*qln[j+1]/q1k[n];
+          probs[ij] *= exp_E_ExtLoop(type, ((i>1)&&(SAME_STRAND(i-1,i))) ? S1[i-1] : -1, ((j<n)&&(SAME_STRAND(j,j+1))) ? S1[j+1] : -1, pf_params);
+        } else
+          probs[ij] = 0;
+      }
+    }
+
+    for (l=n; l>TURN+1; l--) {
+
+      /* 2. bonding k,l as substem of 2:loop enclosed by i,j */
+      for (k=1; k<l-TURN; k++) {
+        kl = my_iindx[k]-l;
+        type_2 = ptype[kl]; type_2 = rtype[type_2];
+        if (qb[kl]==0) continue;
+
+        for (i=MAX2(1,k-MAXLOOP-1); i<=k-1; i++)
+          for (j=l+1; j<=MIN2(l+ MAXLOOP -k+i+2,n); j++) {
+            if ((SAME_STRAND(i,k))&&(SAME_STRAND(l,j))){
+              ij = my_iindx[i] - j;
+              type = ptype[ij];
+              if ((probs[ij]>0)) {
+                probs[kl] += probs[ij]*exp_E_IntLoop(k-i-1, j-l-1, type, type_2,
+                                               S1[i+1], S1[j-1], S1[k-1], S1[l+1], pf_params)*scale[k-i+j-l];
+              }
+            }
+          }
+      }
+      /* 3. bonding k,l as substem of multi-loop enclosed by i,j */
+      prm_MLb = 0.;
+      if ((l<n)&&(SAME_STRAND(l,l+1)))
+        for (k=2; k<l-TURN; k++) {
+          i = k-1;
+          prmt = prmt1 = 0.0;
+
+          ii = my_iindx[i];     /* ii-j=[i,j]     */
+          ll = my_iindx[l+1];   /* ll-j=[l+1,j] */
+          tt = ptype[ii-(l+1)]; tt=rtype[tt];
+          if (SAME_STRAND(i,k)){
+            prmt1 = probs[ii-(l+1)]*expMLclosing;
+            prmt1 *= exp_E_MLstem(tt, S1[l], S1[i+1], pf_params);
+            for (j=l+2; j<=n; j++) {
+              if (SAME_STRAND(j-1,j)){ /*??*/
+                tt = ptype[ii-j]; tt = rtype[tt];
+                prmt += probs[ii-j]*exp_E_MLstem(tt, S1[j-1], S1[i+1], pf_params)*qm[ll-(j-1)];
+              }
+            }
+          }
+          kl = my_iindx[k]-l;
+          tt = ptype[kl];
+          prmt *= expMLclosing;
+          prml[ i] = prmt;
+          prm_l[i] = prm_l1[i]*expMLbase[1]+prmt1;
+
+          prm_MLb = prm_MLb*expMLbase[1] + prml[i];
+          /* same as:    prm_MLb = 0;
+             for (i=1; i<=k-1; i++) prm_MLb += prml[i]*expMLbase[k-i-1]; */
+
+          prml[i] = prml[ i] + prm_l[i];
+
+          if (qb[kl] == 0.) continue;
+
+          temp = prm_MLb;
+
+          for (i=1;i<=k-2; i++) {
+            if ((SAME_STRAND(i,i+1))&&(SAME_STRAND(k-1,k))){
+              temp += prml[i]*qm[my_iindx[i+1] - (k-1)];
+            }
+          }
+          temp *= exp_E_MLstem( tt,
+                                ((k>1)&&SAME_STRAND(k-1,k)) ? S1[k-1] : -1,
+                                ((l<n)&&SAME_STRAND(l,l+1)) ? S1[l+1] : -1,
+                                pf_params) * scale[2];
+          probs[kl] += temp;
+
+          if (probs[kl]>Qmax) {
+            Qmax = probs[kl];
+            if (Qmax>max_real/10.)
+              fprintf(stderr, "P close to overflow: %d %d %g %g\n",
+                      i, j, probs[kl], qb[kl]);
+          }
+          if (probs[kl]>=max_real) {
+            ov++;
+            probs[kl]=FLT_MAX;
+          }
+
+        } /* end for (k=..) multloop*/
+      else  /* set prm_l to 0 to get prm_l1 to be 0 */
+        for (i=0; i<=n; i++) prm_l[i]=0;
+
+      tmp = prm_l1; prm_l1=prm_l; prm_l=tmp;
+      /*computation of .(..(...)..&..). type features?*/
+      if (cut_point<=0) continue;  /* no .(..(...)..&..). type features*/
+      if ((l==n)||(l<=2)) continue; /* no .(..(...)..&..). type features*/
+      /*new version with O(n^3)??*/
+      if (l>cut_point) {
+        if (l<n) {
+          int t,kt;
+          for (t=n; t>l; t--) {
+            for (k=1; k<cut_point; k++) {
+              kt=my_iindx[k]-t;
+              type=rtype[ptype[kt]];
+              temp = probs[kt] * exp_E_ExtLoop(type, S1[t-1], (SAME_STRAND(k,k+1)) ? S1[k+1] : -1, pf_params) * scale[2];
+              if (l+1<t)               temp*=q[my_iindx[l+1]-(t-1)];
+              if (SAME_STRAND(k,k+1))  temp*=q[my_iindx[k+1]-(cut_point-1)];
+              Qrout[l]+=temp;
+            }
+          }
+        }
+        for (k=l-1; k>=cut_point; k--) {
+          if (qb[my_iindx[k]-l]) {
+            kl=my_iindx[k]-l;
+            type=ptype[kl];
+            temp = Qrout[l];
+            temp *= exp_E_ExtLoop(type, (k>cut_point) ? S1[k-1] : -1, (l < n) ? S1[l+1] : -1, pf_params);
+            if (k>cut_point) temp*=q[my_iindx[cut_point]-(k-1)];
+            probs[kl]+=temp;
+          }
+        }
+      }
+      else if (l==cut_point ) {
+        int t, sk,s;
+        for (t=2; t<cut_point;t++) {
+          for (s=1; s<t; s++) {
+            for (k=cut_point; k<=n; k++) {
+              sk=my_iindx[s]-k;
+              if (qb[sk]) {
+                type=rtype[ptype[sk]];
+                temp=probs[sk]*exp_E_ExtLoop(type, (SAME_STRAND(k-1,k)) ? S1[k-1] : -1, S1[s+1], pf_params)*scale[2];
+                if (s+1<t)               temp*=q[my_iindx[s+1]-(t-1)];
+                if (SAME_STRAND(k-1,k))  temp*=q[my_iindx[cut_point]-(k-1)];
+                Qlout[t]+=temp;
+              }
+            }
+          }
+        }
+      }
+      else if (l<cut_point) {
+        for (k=1; k<l; k++) {
+          if (qb[my_iindx[k]-l]) {
+            type=ptype[my_iindx[k]-l];
+            temp=Qlout[k];
+            temp *= exp_E_ExtLoop(type, (k>1) ? S1[k-1] : -1, (l<(cut_point-1)) ? S1[l+1] : -1, pf_params);
+            if (l+1<cut_point) temp*=q[my_iindx[l+1]-(cut_point-1)];
+            probs[my_iindx[k]-l]+=temp;
+          }
+        }
+      }
+    }  /* end for (l=..)   */
+    free(Qlout);
+    free(Qrout);
+    for (i=1; i<=n; i++)
+      for (j=i+TURN+1; j<=n; j++) {
+        ij = my_iindx[i]-j;
+        probs[ij] *= qb[ij];
+      }
+
+    if (structure!=NULL)
+      bppm_to_structure(structure, probs, n);
+  }   /* end if (do_backtrack)*/
+
+  if (ov>0) fprintf(stderr, "%d overflows occurred while backtracking;\n"
+                    "you might try a smaller pf_scale than %g\n",
+                    ov, pf_params->pf_scale);
+}
+
+
+PRIVATE void scale_pf_params(unsigned int length, pf_paramT *parameters){
+  unsigned int  i;
+  double        kT, scaling_factor;
+
+  if(pf_params) free(pf_params);
+
+  if(parameters){
+    pf_params = get_boltzmann_factor_copy(parameters);
+  } else {
+    model_detailsT md;
+    set_model_details(&md);
+    pf_params = get_boltzmann_factors(temperature, alpha, md, pf_scale);
+  }
+
+  scaling_factor  = pf_params->pf_scale;
+  kT              = pf_params->kT;        /* kT in cal/mol  */
+
+   /* scaling factors (to avoid overflows) */
+  if (scaling_factor == -1) { /* mean energy for random sequences: 184.3*length cal */
+    scaling_factor = exp(-(-185+(pf_params->temperature-37.)*7.27)/kT);
+    if (scaling_factor<1) scaling_factor=1;
+    pf_params->pf_scale = scaling_factor;
+  }
+  scale[0] = 1.;
+  scale[1] = 1./scaling_factor;
+  expMLbase[0] = 1;
+  expMLbase[1] = pf_params->expMLbase/scaling_factor;
+  for (i=2; i<=length; i++) {
+    scale[i] = scale[i/2]*scale[i-(i/2)];
+    expMLbase[i] = pow(pf_params->expMLbase, (double)i) * scale[i];
+  }
+}
+
+/*----------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------*/
+
+/*---------------------------------------------------------------------------*/
+
+PUBLIC void update_co_pf_params(int length){
+  update_co_pf_params_par(length, NULL);
+}
+
+PUBLIC void update_co_pf_params_par(int length, pf_paramT *parameters){
+  make_pair_matrix();
+  scale_pf_params((unsigned) length, parameters);
+}
+
+/*---------------------------------------------------------------------------*/
+PRIVATE void make_ptypes(const short *S, const char *structure) {
+  int n,i,j,k,l;
+  int noLP = pf_params->model_details.noLP;
+
+  n=S[0];
+  for (k=1; k<=n-TURN-1; k++)
+    for (l=1; l<=2; l++) {
+      int type,ntype=0,otype=0;
+      i=k; j = i+TURN+l;
+      if (j>n) continue;
+      type = pair[S[i]][S[j]];
+      while ((i>=1)&&(j<=n)) {
+        if ((i>1)&&(j<n)) ntype = pair[S[i-1]][S[j+1]];
+        if (noLP && (!otype) && (!ntype))
+          type = 0; /* i.j can only form isolated pairs */
+        qb[my_iindx[i]-j] = 0.;
+        ptype[my_iindx[i]-j] = (char) type;
+        otype =  type;
+        type  = ntype;
+        i--; j++;
+      }
+
+    }
+
+  if (struct_constrained&&(structure!=NULL)) {
+    constrain_ptypes(structure, (unsigned int)n, ptype, NULL, TURN, 1);
+    for(j=1; j<=n; j++) {
+      switch (structure[j-1]) {
+        case 'l': /*only intramolecular basepairing*/
+                  if (j<cut_point) for (l=cut_point; l<=n; l++) ptype[my_iindx[j]-l] = 0;
+                  else for (l=1; l<cut_point; l++) ptype[my_iindx[l]-j] =0;
+                  break;
+        case 'e': /*only intermolecular bp*/
+                  if (j<cut_point) {
+                    for (l=1; l<j; l++) ptype[my_iindx[l]-j] =0;
+                    for (l=j+1; l<cut_point; l++) ptype[my_iindx[j]-l] = 0;
+                  }
+                  else {
+                    for (l=cut_point; l<j; l++) ptype[my_iindx[l]-j] =0;
+                    for (l=j+1; l<=n; l++) ptype[my_iindx[j]-l] = 0;
+                  }
+                  break;
+      }
+    }
+  }
+  if (mirnatog==1) {   /*microRNA toggle: no intramolec. bp in 2. molec*/
+    for (j=cut_point; j<n; j++) {
+      for (l=j+1; l<=n; l++) {
+        ptype[my_iindx[j]-l] = 0;
+      }
+    }
+  }
+}
+
+/*
+  stochastic backtracking in pf_fold arrays
+  returns random structure S with Boltzman probabilty
+  p(S) = exp(-E(S)/kT)/Z
+*/
+PRIVATE void backtrack_qm1(int i,int j) {
+  /* i is paired to l, i<l<j; backtrack in qm1 to find l */
+  int ii, l, type;
+  double qt, r;
+  r = urn() * qm1[jindx[j]+i];
+  ii = my_iindx[i];
+  for (qt=0., l=i+TURN+1; l<=j; l++) {
+    type = ptype[ii-l];
+    if (type)
+      qt +=  qb[ii-l]*exp_E_MLstem(type, S1[i-1], S1[l+1], pf_params) * expMLbase[j-l];
+    if (qt>=r) break;
+  }
+  if (l>j) nrerror("backtrack failed in qm1");
+  backtrack(i,l);
+}
+
+PRIVATE void backtrack(int i, int j) {
+  int noGUclosure = pf_params->model_details.noGUclosure;
+
+  do {
+    double r, qbt1;
+    int k, l, type, u, u1;
+
+    pstruc[i-1] = '('; pstruc[j-1] = ')';
+
+    r = urn() * qb[my_iindx[i]-j];
+    type = ptype[my_iindx[i]-j];
+    u = j-i-1;
+    /*hairpin contribution*/
+    if (((type==3)||(type==4))&&noGUclosure) qbt1 = 0;
+    else
+      qbt1 = exp_E_Hairpin(u, type, S1[i+1], S1[j-1], sequence+i-1, pf_params)*scale[u+2];
+
+    if (qbt1>r) return; /* found the hairpin we're done */
+
+    for (k=i+1; k<=MIN2(i+MAXLOOP+1,j-TURN-2); k++) {
+      u1 = k-i-1;
+      for (l=MAX2(k+TURN+1,j-1-MAXLOOP+u1); l<j; l++) {
+        int type_2;
+        type_2 = ptype[my_iindx[k]-l];
+        if (type_2) {
+          type_2 = rtype[type_2];
+          qbt1 += qb[my_iindx[k]-l] *
+            exp_E_IntLoop(u1, j-l-1, type, type_2,
+                          S1[i+1], S1[j-1], S1[k-1], S1[l+1], pf_params)*scale[u1+j-l+1];
+        }
+        if (qbt1 > r) break;
+      }
+      if (qbt1 > r) break;
+    }
+    if (l<j) {
+      i=k; j=l;
+    }
+    else break;
+  } while (1);
+
+  /* backtrack in multi-loop */
+  {
+    double r, qt;
+    int k, ii, jj;
+
+    i++; j--;
+    /* find the first split index */
+    ii = my_iindx[i]; /* ii-j=[i,j] */
+    jj = jindx[j]; /* jj+i=[j,i] */
+    for (qt=0., k=i+1; k<j; k++) qt += qm[ii-(k-1)]*qm1[jj+k];
+    r = urn() * qt;
+    for (qt=0., k=i+1; k<j; k++) {
+      qt += qm[ii-(k-1)]*qm1[jj+k];
+      if (qt>=r) break;
+    }
+    if (k>=j) nrerror("backtrack failed, can't find split index ");
+
+    backtrack_qm1(k, j);
+
+    j = k-1;
+    while (j>i) {
+      /* now backtrack  [i ... j] in qm[] */
+      jj = jindx[j];
+      ii = my_iindx[i];
+      r = urn() * qm[ii - j];
+      qt = qm1[jj+i]; k=i;
+      if (qt<r)
+        for (k=i+1; k<=j; k++) {
+          qt += (qm[ii-(k-1)]+expMLbase[k-i])*qm1[jj+k];
+          if (qt >= r) break;
+        }
+      if (k>j) nrerror("backtrack failed in qm");
+
+      backtrack_qm1(k,j);
+
+      if (k<i+TURN) break; /* no more pairs */
+      r = urn() * (qm[ii-(k-1)] + expMLbase[k-i]);
+      if (expMLbase[k-i] >= r) break; /* no more pairs */
+      j = k-1;
+    }
+  }
+}
+
+PUBLIC void compute_probabilities(double FAB, double FA,double FB,
+                                  struct plist *prAB,
+                                  struct plist *prA, struct plist *prB,
+                                  int Alength) {
+  /*computes binding probabilities and dimer free energies*/
+  int i, j;
+  double pAB;
+  double mykT;
+  struct plist  *lp1, *lp2;
+  int offset;
+
+  mykT=pf_params->kT/1000.;
+
+  /* pair probabilities in pr are relative to the null model (without DuplexInit) */
+
+  /*Compute probabilities pAB, pAA, pBB*/
+
+  pAB=1.-exp((1/mykT)*(FAB-FA-FB));
+
+  /* compute pair probabilities given that it is a dimer */
+  /* AB dimer */
+  offset=0;
+  lp2=prA;
+  if (pAB>0)
+    for (lp1=prAB; lp1->j>0; lp1++) {
+      float pp=0;
+      i=lp1->i; j=lp1->j;
+      while (offset+lp2->i < i && lp2->i>0) lp2++;
+      if (offset+lp2->i == i)
+        while ((offset+lp2->j) < j  && (lp2->j>0)) lp2++;
+      if (lp2->j == 0) {lp2=prB; offset=Alength;}/* jump to next list */
+      if ((offset+lp2->i==i) && (offset+lp2->j ==j)) {
+        pp = lp2->p;
+        lp2++;
+      }
+      lp1->p=(lp1->p-(1-pAB)*pp)/pAB;
+      if(lp1->p < 0.){
+        warn_user("part_func_co: numeric instability detected, probability below zero!");
+        lp1->p = 0.;
+      }
+    }
+  return;
+}
+
+PRIVATE double *Newton_Conc(double KAB, double KAA, double KBB, double concA, double concB,double* ConcVec) {
+  double TOL, EPS, xn, yn, det, cA, cB;
+  int i=0;
+  /*Newton iteration for computing concentrations*/
+  cA=concA;
+  cB=concB;
+  TOL=1e-6; /*Tolerance for convergence*/
+  ConcVec=(double*)space(5*sizeof(double)); /* holds concentrations */
+  do {
+    /* det = (4.0 * KAA * cA + KAB *cB + 1.0) * (4.0 * KBB * cB + KAB *cA + 1.0) - (KAB *cB) * (KAB *cA); */
+    det = 1 + 16. *KAA*KBB*cA*cB + KAB*(cA+cB) + 4.*KAA*cA + 4.*KBB*cB + 4.*KAB*(KBB*cB*cB + KAA*cA*cA);
+    /* xn  = ( (2.0 * KBB * cB*cB + KAB *cA *cB + cB - concB) * (KAB *cA) -
+       (2.0 * KAA * cA*cA + KAB *cA *cB + cA - concA) * (4.0 * KBB * cB + KAB *cA + 1.0) ) /det; */
+    xn  = ( (2.0 * KBB * cB*cB + cB - concB) * (KAB *cA) - KAB*cA*cB*(4. * KBB*cB + 1.) -
+	    (2.0 * KAA * cA*cA + cA - concA) * (4.0 * KBB * cB + KAB *cA + 1.0) ) /det;
+    /* yn  = ( (2.0 * KAA * cA*cA + KAB *cA *cB + cA - concA) * (KAB *cB) -
+       (2.0 * KBB * cB*cB + KAB *cA *cB + cB - concB) * (4.0 * KAA * cA + KAB *cB + 1.0) ) /det; */
+    yn  = ( (2.0 * KAA * cA*cA + cA - concA) * (KAB *cB) - KAB*cA*cB*(4. * KAA*cA + 1.) -
+            (2.0 * KBB * cB*cB + cB - concB) * (4.0 * KAA * cA + KAB *cB + 1.0) ) /det;
+    EPS = fabs(xn/cA) + fabs(yn/cB);
+    cA += xn;
+    cB += yn;
+    i++;
+    if (i>10000) {
+      fprintf(stderr, "Newton did not converge after %d steps!!\n",i);
+      break;
+    }
+  } while(EPS>TOL);
+
+  ConcVec[0]= cA*cB*KAB ;/*AB concentration*/
+  ConcVec[1]= cA*cA*KAA ;/*AA concentration*/
+  ConcVec[2]= cB*cB*KBB ;/*BB concentration*/
+  ConcVec[3]= cA;        /* A concentration*/
+  ConcVec[4]= cB;        /* B concentration*/
+
+  return ConcVec;
+}
+
+PUBLIC struct ConcEnt *get_concentrations(double FcAB, double FcAA, double FcBB, double FEA, double FEB, double *startconc)
+{
+  /*takes an array of start concentrations, computes equilibrium concentrations of dimers, monomers, returns array of concentrations in strucutre ConcEnt*/
+  double *ConcVec;
+  int i;
+  struct ConcEnt *Concentration;
+  double KAA, KAB, KBB, kT;
+
+  kT=pf_params->kT/1000.;
+  Concentration=(struct ConcEnt *)space(20*sizeof(struct ConcEnt));
+ /* Compute equilibrium constants */
+  /* again note the input free energies are not from the null model (without DuplexInit) */
+
+  KAA = exp(( 2.0 * FEA - FcAA)/kT);
+  KBB = exp(( 2.0 * FEB - FcBB)/kT);
+  KAB = exp(( FEA + FEB - FcAB)/kT);
+  /* printf("Kaa..%g %g %g\n", KAA, KBB, KAB); */
+  for (i=0; ((startconc[i]!=0)||(startconc[i+1]!=0));i+=2) {
+    ConcVec=Newton_Conc(KAB, KAA, KBB, startconc[i], startconc[i+1], ConcVec);
+    Concentration[i/2].A0=startconc[i];
+    Concentration[i/2].B0=startconc[i+1];
+    Concentration[i/2].ABc=ConcVec[0];
+    Concentration[i/2].AAc=ConcVec[1];
+    Concentration[i/2].BBc=ConcVec[2];
+    Concentration[i/2].Ac=ConcVec[3];
+    Concentration[i/2].Bc=ConcVec[4];
+
+   if (!(((i+2)/2)%20))  {
+     Concentration=(struct ConcEnt *)xrealloc(Concentration,((i+2)/2+20)*sizeof(struct ConcEnt));
+     }
+    free(ConcVec);
+  }
+
+  return Concentration;
+}
+
+PUBLIC FLT_OR_DBL *export_co_bppm(void){
+  return probs;
+}
+
+/*###########################################*/
+/*# deprecated functions below              #*/
+/*###########################################*/
+
+
+PUBLIC struct plist *get_plist(struct plist *pl, int length, double cut_off) {
+  int i, j,n, count;
+  /*get pair probibilities out of pr array*/
+  count=0;
+  n=2;
+  for (i=1; i<length; i++) {
+    for (j=i+1; j<=length; j++) {
+      if (pr[my_iindx[i]-j]<cut_off) continue;
+      if (count==n*length-1) {
+        n*=2;
+        pl=(struct plist *)xrealloc(pl,n*length*sizeof(struct plist));
+      }
+      pl[count].i=i;
+      pl[count].j=j;
+      pl[count++].p=pr[my_iindx[i]-j];
+      /*      printf("gpl: %2d %2d %.9f\n",i,j,pr[my_iindx[i]-j]);*/
+    }
+  }
+  pl[count].i=0;
+  pl[count].j=0; /*->??*/
+  pl[count++].p=0.;
+  pl=(struct plist *)xrealloc(pl,(count)*sizeof(struct plist));
+  return pl;
+}
+
+PUBLIC void init_co_pf_fold(int length){ /* DO NOTHING */ }
diff --git a/cbits/utils.c b/cbits/utils.c
new file mode 100644
--- /dev/null
+++ b/cbits/utils.c
@@ -0,0 +1,1154 @@
+/*
+                               utils.c
+
+                 c  Ivo L Hofacker and Walter Fontana
+                          Vienna RNA package
+*/
+/* Last changed Time-stamp: <2008-11-25 16:34:36 ivo> */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <errno.h>
+#include <time.h>
+#include <string.h>
+#include "config.h" // chzs
+#include "utils.h"
+
+#ifdef WITH_DMALLOC
+#include "dmalloc.h"
+#endif
+
+#define PRIVATE  static
+#define PUBLIC
+
+/*@notnull@ @only@*/
+PUBLIC unsigned short xsubi[3];
+
+PRIVATE char  scale1[] = "....,....1....,....2....,....3....,....4";
+PRIVATE char  scale2[] = "....,....5....,....6....,....7....,....8";
+PRIVATE char  *inbuf = NULL;
+
+PRIVATE char  *inbuf2 = NULL;
+PRIVATE unsigned int typebuf2 = 0;
+
+/*-------------------------------------------------------------------------*/
+
+PUBLIC void *space(unsigned size) {
+  void *pointer;
+
+  if ( (pointer = (void *) calloc(1, (size_t) size)) == NULL) {
+#ifdef EINVAL
+    if (errno==EINVAL) {
+      fprintf(stderr,"SPACE: requested size: %d\n", size);
+      nrerror("SPACE allocation failure -> EINVAL");
+    }
+    if (errno==ENOMEM)
+#endif
+      nrerror("SPACE allocation failure -> no memory");
+  }
+  return  pointer;
+}
+
+#ifdef WITH_DMALLOC
+#define space(S) calloc(1,(S))
+#endif
+
+#undef xrealloc
+/* dmalloc.h #define's xrealloc */
+void *xrealloc (void *p, unsigned size) {
+  if (p == 0)
+    return space(size);
+  p = (void *) realloc(p, size);
+  if (p == NULL) {
+#ifdef EINVAL
+    if (errno==EINVAL) {
+      fprintf(stderr,"xrealloc: requested size: %d\n", size);
+      nrerror("xrealloc allocation failure -> EINVAL");
+    }
+    if (errno==ENOMEM)
+#endif
+      nrerror("xrealloc allocation failure -> no memory");
+  }
+  return p;
+}
+
+/*------------------------------------------------------------------------*/
+
+PUBLIC void nrerror(const char message[])       /* output message upon error */
+{
+  fprintf(stderr, "ERROR: %s\n", message);
+  exit(EXIT_FAILURE);
+}
+
+PUBLIC void warn_user(const char message[]){
+  fprintf(stderr, "WARNING: %s\n", message);
+}
+
+/*------------------------------------------------------------------------*/
+PUBLIC void init_rand(void)
+{
+  time_t t;
+  (void) time(&t);
+  xsubi[0] = xsubi[1] = xsubi[2] = (unsigned short) t;  /* lower 16 bit */
+  xsubi[1] += (unsigned short) ((unsigned)t >> 6);
+  xsubi[2] += (unsigned short) ((unsigned)t >> 12);
+#ifndef HAVE_ERAND48
+  srand((unsigned int) t);
+#endif
+}
+
+/*------------------------------------------------------------------------*/
+
+PUBLIC double urn(void)
+     /* uniform random number generator; urn() is in [0,1] */
+     /* uses a linear congruential library routine */
+     /* 48 bit arithmetic */
+{
+#ifdef HAVE_ERAND48
+  extern double erand48(unsigned short[]);
+  return erand48(xsubi);
+#else
+  return ((double) rand())/RAND_MAX;
+#endif
+}
+
+/*------------------------------------------------------------------------*/
+
+PUBLIC int int_urn(int from, int to)
+{
+  return ( ( (int) (urn()*(to-from+1)) ) + from );
+}
+
+/*------------------------------------------------------------------------*/
+
+PUBLIC void filecopy(FILE *from, FILE *to)
+{
+  int c;
+
+  while ((c = getc(from)) != EOF) (void)putc(c, to);
+}
+
+/*-----------------------------------------------------------------*/
+
+PUBLIC char *time_stamp(void)
+{
+  time_t  cal_time;
+
+  cal_time = time(NULL);
+  return ( ctime(&cal_time) );
+}
+
+/*-----------------------------------------------------------------*/
+
+PUBLIC char *random_string(int l, const char symbols[])
+{
+  char *r;
+  int   i, rn, base;
+
+  base = (int) strlen(symbols);
+  r = (char *) space(sizeof(char)*(l+1));
+
+  for (i = 0; i < l; i++) {
+    rn = (int) (urn()*base);  /* [0, base-1] */
+    r[i] = symbols[rn];
+  }
+  r[l] = '\0';
+  return r;
+}
+
+/*-----------------------------------------------------------------*/
+
+PUBLIC int   hamming(const char *s1, const char *s2)
+{
+  int h=0;
+
+  for (; *s1 && *s2; s1++, s2++)
+    if (*s1 != *s2) h++;
+  return h;
+}
+
+PUBLIC int   hamming_bound(const char *s1, const char *s2, int boundary)
+{
+  int h=0;
+
+  for (; *s1 && *s2 && boundary; s1++, s2++, boundary--)
+    if (*s1 != *s2) h++;
+  return h;
+}
+/*-----------------------------------------------------------------*/
+
+PUBLIC char *get_line(FILE *fp) /* reads lines of arbitrary length from fp */
+{
+  char s[512], *line, *cp;
+  int len=0, size=0, l;
+  line=NULL;
+  do {
+    if (fgets(s, 512, fp)==NULL) break;
+    cp = strchr(s, '\n');
+    if (cp != NULL) *cp = '\0';
+    l = len + (int)strlen(s);
+    if (l+1>size) {
+      size = (int)((l+1)*1.2);
+      line = (char *) xrealloc(line, size*sizeof(char));
+    }
+    strcat(line+len, s);
+    len=l;
+  } while(cp==NULL);
+
+  return line;
+}
+
+PUBLIC int  skip_comment_lines(char **line){
+  if((*line = get_line(stdin))==NULL) return -1;
+
+  while((**line=='*')||(**line=='\0')){
+    free(*line);
+    if((*line = get_line(stdin))==NULL) return -1;
+  }
+  return 0;
+}
+
+PUBLIC  unsigned int get_input_line(char **string, unsigned int option){
+  char  *line;
+  int   i, l, r;
+
+  /*
+  * read lines until informative data appears or
+  * report an error if anything goes wrong
+  */
+  if((line = get_line(stdin))==NULL) return VRNA_INPUT_ERROR;
+
+  if(!(option & VRNA_INPUT_NOSKIP_COMMENTS))
+    while((*line=='*')||(*line=='\0')){
+      free(line);
+      if((line = get_line(stdin))==NULL) return VRNA_INPUT_ERROR;
+    }
+
+  l = (int) strlen(line);
+
+  /* break on '@' sign if not disabled */
+  if(*line == '@'){
+    free(line);
+    return VRNA_INPUT_QUIT;
+  }
+  /* print line read if not disabled */
+  /* if(!(option & VRNA_INPUT_NOPRINT)) printf("%s\n", line); */
+
+  /* eliminate whitespaces at the end of the line read */
+  if(!(option & VRNA_INPUT_NO_TRUNCATION)){
+    for(i = l-1; i >= 0; i--){
+      if      (line[i] == ' ')  continue;
+      else if (line[i] == '\t') continue;
+      else                      break;
+    }
+    line[(i >= 0) ? (i+1) : 0] = '\0';
+  }
+
+  if(*line == '>'){
+    /* fasta header */
+    /* alloc memory for the string */
+    *string = (char *) space(sizeof(char) * (strlen(line) + 1));
+    r = VRNA_INPUT_FASTA_HEADER;
+    i = sscanf(line, ">%s", *string);
+    if(i > 0){
+      i       = (int)     strlen(*string);
+      *string = (char *)  xrealloc(*string, (i+1)*sizeof(char));
+      free(line);
+      return r;
+    }
+    else{
+      free(line);
+      free(*string);
+      *string = NULL;
+      return VRNA_INPUT_ERROR;
+    }
+  }
+  else{
+    *string = strdup(line);
+    free(line);
+  }
+  return VRNA_INPUT_MISC;
+}
+
+PUBLIC  unsigned int get_multi_input_line(char **string, unsigned int option){
+  char  *line;
+  int   i, l;
+  int   state = 0;
+  int   str_length = 0;
+
+  line = (inbuf) ? inbuf : get_line(stdin);
+  inbuf = NULL;
+  do{
+
+    /*
+    * read lines until informative data appears or
+    * report an error if anything goes wrong
+    */
+    if(!line) return VRNA_INPUT_ERROR;
+
+    l = (int)strlen(line);
+
+    /* eliminate whitespaces at the end of the line read */
+    if(!(option & VRNA_INPUT_NO_TRUNCATION)){
+      for(i = l-1; i >= 0; i--){
+        if      (line[i] == ' ')  continue;
+        else if (line[i] == '\t') continue;
+        else                      break;
+      }
+      line[(i >= 0) ? (i+1) : 0] = '\0';
+    }
+
+    l           = (int)strlen(line);
+    str_length  = (*string) ? (int) strlen(*string) : 0;
+
+    switch(*line){
+      case  '@':    /* user abort */
+                    if(state) inbuf = line;
+                    else      free(line);
+                    return (state==2) ? VRNA_INPUT_CONSTRAINT : (state==1) ? VRNA_INPUT_SEQUENCE : VRNA_INPUT_QUIT;
+
+      case  '\0':   /* empty line */
+                    if(option & VRNA_INPUT_NOSKIP_BLANK_LINES){
+                      if(state) inbuf = line;
+                      else      free(line);
+                      return (state==2) ? VRNA_INPUT_CONSTRAINT : (state==1) ? VRNA_INPUT_SEQUENCE : VRNA_INPUT_BLANK_LINE;
+                    }
+                    break;
+
+      case  '#': case  '%': case  ';': case  '/': case  '*': case ' ':
+                    /* comments */
+                    if(option & VRNA_INPUT_NOSKIP_COMMENTS){
+                      if(state) inbuf   = line;
+                      else      *string = line;
+                      return (state == 2) ? VRNA_INPUT_CONSTRAINT : (state==1) ? VRNA_INPUT_SEQUENCE : VRNA_INPUT_COMMENT;
+                    }
+                    break;
+
+      case  '>':    /* fasta header */
+                    if(state) inbuf   = line;
+                    else      *string = line;
+                    return (state==2) ? VRNA_INPUT_CONSTRAINT : (state==1) ? VRNA_INPUT_SEQUENCE : VRNA_INPUT_FASTA_HEADER;
+
+      case  'x': case 'e': case 'l': case '&':   /* seems to be a constraint or line starting with second sequence for dimer calculations */
+                    i = 1;
+                    /* lets see if this assumption holds for the complete line */
+                    while((line[i] == 'x') || (line[i] == 'e') || (line[i] == 'l')) i++;
+                    /* lines solely consisting of 'x's, 'e's or 'l's will be considered as structure constraint */
+                    
+                    if(
+                            ((line[i]>64) && (line[i]<91))  /* A-Z */
+                        ||  ((line[i]>96) && (line[i]<123)) /* a-z */
+                      ){
+                      if(option & VRNA_INPUT_FASTA_HEADER){
+                        /* are we in structure mode? Then we remember this line for the next round */
+                        if(state == 2){ inbuf = line; return VRNA_INPUT_CONSTRAINT;}
+                        else{
+                          *string = (char *)xrealloc(*string, sizeof(char) * (str_length + l + 1));
+                          strcpy(*string + str_length, line);
+                          state = 1;
+                        }
+                        break;
+                      }
+                      /* otherwise return line read */
+                      else{ *string = line; return VRNA_INPUT_SEQUENCE;}
+                    }
+                    /* mmmh? it really seems to be a constraint */
+                    /* fallthrough */
+      case  '<': case  '.': case  '|': case  '(': case ')': case '[': case ']': case '{': case '}': case ',': case '+':
+                    /* seems to be a structure or a constraint */
+                    /* either we concatenate this line to one that we read previously */
+                    if(option & VRNA_INPUT_FASTA_HEADER){
+                      if(state == 1){
+                        inbuf = line;
+                        return VRNA_INPUT_SEQUENCE;
+                      }
+                      else{
+                        *string = (char *)xrealloc(*string, sizeof(char) * (str_length + l + 1));
+                        strcpy(*string + str_length, line);
+                        state = 2;
+                      }
+                    }
+                    /* or we return it as it is */
+                    else{
+                      *string = line;
+                      return VRNA_INPUT_CONSTRAINT;
+                    }
+                    break;
+      default:      if(option & VRNA_INPUT_FASTA_HEADER){
+                      /* are we already in sequence mode? */
+                      if(state == 2){
+                        inbuf = line;
+                        return VRNA_INPUT_CONSTRAINT;
+                      }
+                      else{
+                        *string = (char *)xrealloc(*string, sizeof(char) * (str_length + l + 1));
+                        strcpy(*string + str_length, line);
+                        state = 1;
+                      }
+                    }
+                    /* otherwise return line read */
+                    else{
+                      *string = line;
+                      return VRNA_INPUT_SEQUENCE;
+                    }
+    }
+    free(line);
+    line = get_line(stdin);
+  }while(line);
+
+  return (state==2) ? VRNA_INPUT_CONSTRAINT : (state==1) ? VRNA_INPUT_SEQUENCE : VRNA_INPUT_ERROR;
+}
+
+PUBLIC  unsigned int read_record(char **header, char **sequence, char ***rest, unsigned int options){
+  unsigned int  input_type, return_type, tmp_type;
+  int           rest_count;
+  char          *input_string;
+
+  rest_count    = 0;
+  return_type   = tmp_type = 0;
+  input_string  = *header = *sequence = NULL;
+  *rest         = (char **)space(sizeof(char *));
+
+  /* remove unnecessary option flags from options variable... */
+  options &= ~VRNA_INPUT_FASTA_HEADER;
+
+  /* read first input or last buffered input */
+  if(typebuf2){
+    input_type    = typebuf2;
+    input_string  = inbuf2;
+    typebuf2      = 0;
+    inbuf2        = NULL;
+  }
+  else input_type  = get_multi_input_line(&input_string, options);
+
+  if(input_type & (VRNA_INPUT_QUIT | VRNA_INPUT_ERROR)) return input_type;
+
+  /* skip everything until we read either a fasta header or a sequence */
+  while(input_type & (VRNA_INPUT_MISC | VRNA_INPUT_CONSTRAINT | VRNA_INPUT_BLANK_LINE)){
+    free(input_string); input_string = NULL;
+    input_type    = get_multi_input_line(&input_string, options);
+    if(input_type & (VRNA_INPUT_QUIT | VRNA_INPUT_ERROR)) return input_type;
+  }
+
+  if(input_type & VRNA_INPUT_FASTA_HEADER){
+    return_type  |= VRNA_INPUT_FASTA_HEADER; /* remember that we've read a fasta header */
+    *header       = input_string;
+    input_string  = NULL;
+    /* get next data-block with fasta support if not explicitely forbidden by VRNA_INPUT_NO_SPAN */
+    input_type  = get_multi_input_line(
+                    &input_string,
+                    ((options & VRNA_INPUT_NO_SPAN) ? 0 : VRNA_INPUT_FASTA_HEADER) | options
+                  );
+    if(input_type & (VRNA_INPUT_QUIT | VRNA_INPUT_ERROR)) return (return_type | input_type);
+  }
+
+  if(input_type & VRNA_INPUT_SEQUENCE){
+    return_type  |= VRNA_INPUT_SEQUENCE; /* remember that we've read a sequence */
+    *sequence     = input_string;
+    input_string  = NULL;
+  } else nrerror("sequence input missing");
+
+  /* read the rest until we find user abort, EOF, new sequence or new fasta header */
+  if(!(options & VRNA_INPUT_NO_REST)){
+    options |= VRNA_INPUT_NOSKIP_COMMENTS; /* allow commetns to appear in rest output */
+    tmp_type = VRNA_INPUT_QUIT | VRNA_INPUT_ERROR | VRNA_INPUT_SEQUENCE | VRNA_INPUT_FASTA_HEADER;
+    if(options & VRNA_INPUT_NOSKIP_BLANK_LINES) tmp_type |= VRNA_INPUT_BLANK_LINE;
+    while(!((input_type = get_multi_input_line(&input_string, options)) & tmp_type)){
+      *rest = xrealloc(*rest, sizeof(char **)*(++rest_count + 1));
+      (*rest)[rest_count-1] = input_string;
+      input_string = NULL;
+    }
+    /*
+    if(input_type & (VRNA_INPUT_QUIT | VRNA_INPUT_ERROR)) return input_type;
+    */
+
+    /*  finished reading everything...
+    *   we now put the last line into the buffer if necessary
+    *   since it should belong to the next record
+    */
+    inbuf2 = input_string;
+    typebuf2 = input_type;
+  }
+  (*rest)[rest_count] = NULL;
+  return (return_type);
+}
+
+
+/*-----------------------------------------------------------------*/
+
+PUBLIC char *pack_structure(const char *struc) {
+  /* 5:1 compression using base 3 encoding */
+  int i,j,l,pi;
+  unsigned char *packed;
+
+  l = (int) strlen(struc);
+  packed = (unsigned char *) space(((l+4)/5+1)*sizeof(unsigned char));
+
+  j=i=pi=0;
+  while (i<l) {
+    register int p;
+    for (p=pi=0; pi<5; pi++) {
+      p *= 3;
+      switch (struc[i]) {
+      case '(':
+      case '\0':
+        break;
+      case '.':
+        p++;
+        break;
+      case ')':
+        p += 2;
+        break;
+      default: nrerror("pack_structure: illegal charcter in structure");
+      }
+      if (i<l) i++;
+    }
+    packed[j++] = (unsigned char) (p+1); /* never use 0, so we can use
+                                            strcmp()  etc. */
+  }
+  packed[j] = '\0';      /* for str*() functions */
+  return (char *) packed;
+}
+
+PUBLIC char *unpack_structure(const char *packed) {
+  /* 5:1 compression using base 3 encoding */
+  int i,j,l;
+  char *struc;
+  unsigned const char *pp;
+  char code[3] = {'(', '.', ')'};
+
+  l = (int) strlen(packed);
+  pp = (const unsigned char *) packed;
+  struc = (char *) space((l*5+1)*sizeof(char));   /* up to 4 byte extra */
+
+  for (i=j=0; i<l; i++) {
+    register int p, c, k;
+
+    p = (int) pp[i] - 1;
+    for (k=4; k>=0; k--) {
+      c = p % 3;
+      p /= 3;
+      struc[j+k] = code[c];
+    }
+    j += 5;
+  }
+  struc[j--] = '\0';
+  while (struc[j] == '(') /* strip trailing ( */
+    struc[j--] = '\0';
+
+  return struc;
+}
+
+/*--------------------------------------------------------------------------*/
+
+PUBLIC short *make_pair_table(const char *structure)
+{
+    /* returns array representation of structure.
+       table[i] is 0 if unpaired or j if (i.j) pair.  */
+   short i,j,hx;
+   short length;
+   short *stack;
+   short *table;
+
+   length = (short) strlen(structure);
+   stack = (short *) space(sizeof(short)*(length+1));
+   table = (short *) space(sizeof(short)*(length+2));
+   table[0] = length;
+
+   for (hx=0, i=1; i<=length; i++) {
+      switch (structure[i-1]) {
+       case '(':
+         stack[hx++]=i;
+         break;
+       case ')':
+         j = stack[--hx];
+         if (hx<0) {
+            fprintf(stderr, "%s\n", structure);
+            nrerror("unbalanced brackets in make_pair_table");
+         }
+         table[i]=j;
+         table[j]=i;
+         break;
+       default:   /* unpaired base, usually '.' */
+         table[i]= 0;
+         break;
+      }
+   }
+   if (hx!=0) {
+      fprintf(stderr, "%s\n", structure);
+      nrerror("unbalanced brackets in make_pair_table");
+   }
+   free(stack);
+   return(table);
+}
+
+PUBLIC short *make_pair_table_pk(const char *structure){
+   short i,j,hx, hx2;
+   short length;
+   short *stack;
+   short *stack2;
+   short *table;
+
+   length = (short) strlen(structure);
+   stack  = (short *) space(sizeof(short)*(length+1));
+   stack2 = (short *) space(sizeof(short)*(length+1));
+   table  = (short *) space(sizeof(short)*(length+2));
+   table[0] = length;
+
+   for (hx=0, hx2=0, i=1; i<=length; i++) {
+      switch (structure[i-1]) {
+       case '(':
+         stack[hx++]=i;
+         break;
+       case ')':
+         j = stack[--hx];
+         if (hx<0) {
+            fprintf(stderr, "%s\n", structure);
+            nrerror("unbalanced '()' brackets in make_pair_table_pk");
+         }
+         table[i]=j;
+         table[j]=i;
+         break;
+       case '[':
+         stack2[hx2++]=i;
+         break;
+       case ']':
+         j = stack2[--hx2];
+         if (hx2<0) {
+            fprintf(stderr, "%s\n", structure);
+            nrerror("unbalanced '[]' brackets in make_pair_table_pk");
+         }
+         table[i]=j;
+         table[j]=i;
+         break;
+       default:   /* unpaired base, usually '.' */
+         table[i]= 0;
+         break;
+      }
+   }
+   if (hx!=0) {
+      fprintf(stderr, "%s\n", structure);
+      nrerror("unbalanced '()' brackets in make_pair_table_pk");
+   } else if (hx2!=0) {
+      fprintf(stderr, "%s\n", structure);
+      nrerror("unbalanced '[]' brackets in make_pair_table_pk");
+   }
+   free(stack);
+   free(stack2);
+   return(table);
+}
+
+PUBLIC short *make_pair_table_snoop(const char *structure)
+{
+    /* returns array representation of structure.
+       table[i] is 0 if unpaired or j if (i.j) pair.  */
+   short i,j,hx;
+   short length;
+   short *stack;
+   short *table;
+
+   length = (short) strlen(structure);
+   stack = (short *) space(sizeof(short)*(length+1));
+   table = (short *) space(sizeof(short)*(length+2));
+   table[0] = length;
+
+   for (hx=0, i=1; i<=length; i++) {
+     switch (structure[i-1]) {
+     case '<':
+       stack[hx++]=i;
+       break;
+     case '>':
+       j = stack[--hx];
+       if (hx<0) {
+	 fprintf(stderr, "%s\n", structure);
+	 nrerror("unbalanced brackets in make_pair_table");
+       }
+       table[i]=j;
+       table[j]=i;
+       break;
+     default:   /* unpaired base, usually '.' */
+       table[i]= table[i];
+       break;
+     }
+   }
+   if (hx!=0) {
+     fprintf(stderr, "%s\n", structure);
+     nrerror("unbalanced brackets in make_pair_table");
+   }
+   free(stack);
+   return table ;
+}
+
+
+PUBLIC short *alimake_pair_table(const char *structure)
+{
+    /* returns array representation of structure.
+       table[i] is 0 if unpaired or j if (i.j) pair.  */
+   short i,j,hx;
+   short length;
+   short *stack;
+   short *table;
+
+   length = (short) strlen(structure);
+   stack = (short *) space(sizeof(short)*(length+1));
+   table = (short *) space(sizeof(short)*(length+2));
+   table[0] = length;
+
+   for (hx=0, i=1; i<=length; i++) {
+      switch (structure[i-1]) {
+       case '(':
+	 stack[hx++]=i;
+	 break;
+       case ')':
+	 j = stack[--hx];
+	 if (hx<0) {
+	    fprintf(stderr, "%s\n", structure);
+	    nrerror("unbalanced brackets in make_pair_table");
+	 }
+	 table[i]=j;
+	 table[j]=i;
+	 break;
+       default:   /* unpaired base, usually '.' */
+	 table[i]= 0;
+	 break;
+      }
+   }
+   for (hx=0, i=1; i<=length; i++) {
+      switch (structure[i-1]) {
+       case '<':
+	 stack[hx++]=i;
+	 break;
+       case '>':
+	 j = stack[--hx];
+	 if (hx<0) {
+	    fprintf(stderr, "%s\n", structure);
+	    nrerror("unbalanced brackets in make_pair_table");
+	 }
+	 table[i]=j;
+	 table[j]=i;
+	 break;
+       default:   /* unpaired base, usually '.' */
+	 table[i]= table[i];
+	 break;
+      }
+   }
+   for (hx=0, i=1; i<=length; i++) {
+     switch (structure[i-1]) {
+     case '[':
+       stack[hx++]=i;
+       break;
+     case ']':
+       j = stack[--hx];
+       if (hx<0) {
+	 fprintf(stderr, "%s\n", structure);
+	 nrerror("unbalanced brackets in make_pair_table");
+       }
+       table[i]=j;
+       table[j]=i;
+       break;
+     default:   /* unpaired base, usually '.' */
+       break;
+     }
+   }
+   if (hx!=0) {
+      fprintf(stderr, "%s\n", structure);
+      nrerror("unbalanced brackets in make_pair_table");
+   }
+   free(stack);
+   return(table);
+}
+
+PUBLIC short *copy_pair_table(const short *pt){
+  short *table = (short *)space(sizeof(short) * (pt[0]+2));
+  memcpy(table, pt, sizeof(short)*(pt[0]+2));
+  return table;
+}
+
+
+PUBLIC int *make_loop_index_pt(short *pt){
+
+  /* number each position by which loop it belongs to (positions start
+     at 1) */
+  int i,hx,l,nl;
+  int length;
+  int *stack = NULL;
+  int *loop = NULL;
+
+  length = pt[0];
+  stack  = (int *) space(sizeof(int)*(length+1));
+  loop   = (int *) space(sizeof(int)*(length+2));
+  hx=l=nl=0;
+
+  for (i=1; i<=length; i++) {
+    if ((pt[i] != 0) && (i < pt[i])) { /* ( */
+      nl++; l=nl;
+      stack[hx++]=i;
+    }
+    loop[i]=l;
+
+    if ((pt[i] != 0) && (i > pt[i])) { /* ) */
+      --hx;
+      if (hx>0)
+        l = loop[stack[hx-1]];  /* index of enclosing loop   */
+      else l=0;                 /* external loop has index 0 */
+      if (hx<0) {
+        nrerror("unbalanced brackets in make_pair_table");
+      }
+    }
+  }
+  loop[0] = nl;
+  free(stack);
+  return (loop);
+}
+
+/*---------------------------------------------------------------------------*/
+
+PUBLIC int bp_distance(const char *str1, const char *str2)
+{
+  /* dist = {number of base pairs in one structure but not in the other} */
+  /* same as edit distance with pair_open pair_close as move set */
+   int dist;
+   short i,l;
+   short *t1, *t2;
+
+   dist = 0;
+   t1 = make_pair_table(str1);
+   t2 = make_pair_table(str2);
+
+   l = (t1[0]<t2[0])?t1[0]:t2[0];    /* minimum of the two lengths */
+
+   for (i=1; i<=l; i++)
+     if (t1[i]!=t2[i]) {
+       if (t1[i]>i) dist++;
+       if (t2[i]>i) dist++;
+     }
+   free(t1); free(t2);
+   return dist;
+}
+
+#ifndef HAVE_STRDUP
+char *strdup(const char *s) {
+  char *dup;
+
+  dup = space(strlen(s)+1);
+  strcpy(dup, s);
+  return(dup);
+}
+#endif
+
+PUBLIC  void  print_tty_input_seq(void){
+  print_tty_input_seq_str("Input string (upper or lower case)");
+}
+
+PUBLIC  void  print_tty_input_seq_str(const char *s){
+  printf("\n%s; @ to quit\n", s);
+  printf("%s%s\n", scale1, scale2);
+  (void) fflush(stdout);
+}
+
+PUBLIC  void  print_tty_constraint_full(void){
+  print_tty_constraint(VRNA_CONSTRAINT_PIPE | VRNA_CONSTRAINT_DOT | VRNA_CONSTRAINT_X | VRNA_CONSTRAINT_ANG_BRACK | VRNA_CONSTRAINT_RND_BRACK);
+}
+
+PUBLIC  void  print_tty_constraint(unsigned int option){
+  if(!(option & VRNA_CONSTRAINT_NO_HEADER)) printf("Input structure constraints using the following notation:\n");
+  if(option & VRNA_CONSTRAINT_PIPE)       printf("| : paired with another base\n");
+  if(option & VRNA_CONSTRAINT_DOT)        printf(". : no constraint at all\n");
+  if(option & VRNA_CONSTRAINT_X)          printf("x : base must not pair\n");
+  if(option & VRNA_CONSTRAINT_ANG_BRACK)  printf("< : base i is paired with a base j<i\n> : base i is paired with a base j>i\n");
+  if(option & VRNA_CONSTRAINT_RND_BRACK)  printf("matching brackets ( ): base i pairs base j\n");
+}
+
+PUBLIC  void  str_DNA2RNA(char *sequence){
+  unsigned int l, i;
+  if(sequence != NULL){
+    l = strlen(sequence);
+    for(i = 0; i < l; i++){
+      if(sequence[i] == 'T') sequence[i] = 'U';
+      if(sequence[i] == 't') sequence[i] = 'u';
+    }
+  }
+}
+
+PUBLIC void str_uppercase(char *sequence){
+  unsigned int l, i;
+  if(sequence){
+    l = strlen(sequence);
+    for(i=0;i<l;i++)
+      sequence[i] = toupper(sequence[i]);
+  }
+}
+
+PUBLIC int *get_iindx(unsigned int length){
+  int i;
+  int *idx = (int *)space(sizeof(int) * (length+1));
+  for (i=1; i <= length; i++)
+    idx[i] = (((length + 1 - i) * (length - i))>>1) + length + 1;
+  return idx;
+}
+
+PUBLIC int *get_indx(unsigned int length){
+  unsigned int i;
+  int *idx = (int *)space(sizeof(int) * (length+1));
+  for (i = 1; i <= length; i++)
+    idx[i] = (i*(i-1)) >> 1;        /* i(i-1)/2 */
+  return idx;
+}
+
+PUBLIC void getConstraint(char **cstruc, const char **lines, unsigned int option){
+  int r, i, l, cl, stop;
+  char *c, *ptr;
+  if(lines){
+    if(option & VRNA_CONSTRAINT_ALL)
+      option |= VRNA_CONSTRAINT_PIPE | VRNA_CONSTRAINT_ANG_BRACK | VRNA_CONSTRAINT_RND_BRACK | VRNA_CONSTRAINT_X | VRNA_CONSTRAINT_G;
+
+    for(r=i=stop=0;lines[i];i++){
+      l   = (int)strlen(lines[i]);
+      c   = (char *) space(sizeof(char) * (l+1));
+      (void) sscanf(lines[i], "%s", c);
+      cl  = (int)strlen(c);
+      /* line commented out ? */
+      if((*c == '#') || (*c == '%') || (*c == ';') || (*c == '/') || (*c == '*' || (*c == '\0'))){
+        /* skip leading comments only, i.e. do not allow comments inside the constraint */
+        if(!r)  continue;
+        else    break;
+      }
+
+      /* check current line for actual constraining structure */
+      for(ptr = c;*c;c++){
+        switch(*c){
+          case '|':   if(!(option & VRNA_CONSTRAINT_PIPE)){
+                        warn_user("constraints of type '|' not allowed");
+                        *c = '.';
+                      }
+                      break;
+          case '<':   
+          case '>':   if(!(option & VRNA_CONSTRAINT_ANG_BRACK)){
+                        warn_user("constraints of type '<' or '>' not allowed");
+                        *c = '.';
+                      }
+                      break;
+          case '(':
+          case ')':   if(!(option & VRNA_CONSTRAINT_RND_BRACK)){
+                        warn_user("constraints of type '(' or ')' not allowed");
+                        *c = '.';
+                      }
+                      break;
+          case 'x':   if(!(option & VRNA_CONSTRAINT_X)){
+                        warn_user("constraints of type 'x' not allowed");
+                        *c = '.';
+                      }
+                      break;
+          case '+':   if(!(option & VRNA_CONSTRAINT_G)){
+                        warn_user("character '+' ignored in structure");
+                        *c = '.';
+                      }
+          case '.':   break;
+          case '&':   break; /* ignore concatenation char */
+          default:    warn_user("unrecognized character in constraint structure");
+                      break;
+        }
+      }
+
+      r += cl+1;
+      *cstruc = (char *)xrealloc(*cstruc, r*sizeof(char));
+      strcat(*cstruc, ptr);
+      free(ptr);
+      /* stop if not in fasta mode or multiple words on line */
+      if(!(option & VRNA_CONSTRAINT_MULTILINE) || (cl != l)) break;
+    }
+  }
+}
+
+PUBLIC char *extract_record_rest_structure( const char **lines,
+                                            unsigned int length,
+                                            unsigned int option){
+
+  char *structure = NULL;
+  int r, i, l, cl, stop;
+  char *c;
+
+  if(lines){
+    for(r = i = stop = 0; lines[i]; i++){
+      l   = (int)strlen(lines[i]);
+      c   = (char *) space(sizeof(char) * (l+1));
+      (void) sscanf(lines[i], "%s", c);
+      cl  = (int)strlen(c);
+
+      /* line commented out ? */
+      if((*c == '#') || (*c == '%') || (*c == ';') || (*c == '/') || (*c == '*' || (*c == '\0'))){
+        /* skip leading comments only, i.e. do not allow comments inside the constraint */
+        if(!r)  continue;
+        else    break;
+      }
+
+      /* append the structure part to the output */
+      r += cl+1;
+      structure = (char *)xrealloc(structure, r*sizeof(char));
+      strcat(structure, c);
+      free(c);
+      /* stop if the assumed structure length has been reached */
+      if((length > 0) && (r-1 == length)) break;
+      /* stop if not allowed to read from multiple lines */
+      if(!(option & VRNA_OPTION_MULTILINE)) break;
+    }
+  }
+  return structure;
+}
+
+
+
+PUBLIC void constrain_ptypes(const char *constraint, unsigned int length, char *ptype, int *BP, int min_loop_size, unsigned int idx_type){
+  int n,i,j,k,l;
+  int hx, *stack;
+  char type;
+  int *index;
+
+  if(constraint == NULL) return;
+
+  n = (int)strlen(constraint);
+
+  stack = (int *) space(sizeof(int)*(n+1));
+
+  if(!idx_type){ /* index allows access in energy matrices at pos (i,j) via index[j]+i */
+    index = get_indx(length);
+
+    for(hx=0, j=1; j<=n; j++){
+      switch(constraint[j-1]){
+        case '|':   if(BP) BP[j] = -1;
+                    break;
+        case 'x':   /* can't pair */
+                    for (l=1; l<j-min_loop_size; l++) ptype[index[j]+l] = 0;
+                    for (l=j+min_loop_size+1; l<=(int)length; l++) ptype[index[l]+j] = 0;
+                    break;
+        case '(':   stack[hx++]=j;
+                    /* fallthrough */
+        case '<':   /* pairs upstream */
+                    for (l=1; l<j-min_loop_size; l++) ptype[index[j]+l] = 0;
+                    break;
+        case ')':   if (hx<=0) {
+                      fprintf(stderr, "%s\n", constraint);
+                      nrerror("unbalanced brackets in constraint");
+                    }
+                    i = stack[--hx];
+                    type = ptype[index[j]+i];
+                    for (k=i+1; k<=(int)length; k++) ptype[index[k]+i] = 0;
+                    /* don't allow pairs i<k<j<l */
+                    for (l=j; l<=(int)length; l++)
+                      for (k=i+1; k<=j; k++) ptype[index[l]+k] = 0;
+                    /* don't allow pairs k<i<l<j */
+                    for (l=i; l<=j; l++)
+                      for (k=1; k<=i; k++) ptype[index[l]+k] = 0;
+                    for (k=1; k<j; k++) ptype[index[j]+k] = 0;
+                    ptype[index[j]+i] = (type==0) ? 7 : type;
+                    /* fallthrough */
+        case '>':   /* pairs downstream */
+                    for (l=j+min_loop_size+1; l<=(int)length; l++) ptype[index[l]+j] = 0;
+                    break;
+      }
+    }
+  }
+  else{ /* index allows access in energy matrices at pos (i,j) via index[i]-j */
+    index = get_iindx(length);
+
+    for(hx=0, j=1; j<=n; j++) {
+      switch (constraint[j-1]) {
+        case 'x':   /* can't pair */
+                    for (l=1; l<j-min_loop_size; l++) ptype[index[l]-j] = 0;
+                    for (l=j+min_loop_size+1; l<=(int)length; l++) ptype[index[j]-l] = 0;
+                    break;
+        case '(':   stack[hx++]=j;
+                    /* fallthrough */
+        case '<':   /* pairs upstream */
+                    for (l=1; l<j-min_loop_size; l++) ptype[index[l]-j] = 0;
+                    break;
+        case ')':   if (hx<=0) {
+                      fprintf(stderr, "%s\n", constraint);
+                      nrerror("unbalanced brackets in constraints");
+                    }
+                    i = stack[--hx];
+                    type = ptype[index[i]-j];
+                    /* don't allow pairs i<k<j<l */
+                    for (k=i; k<=j; k++)
+                      for (l=j; l<=(int)length; l++) ptype[index[k]-l] = 0;
+                    /* don't allow pairs k<i<l<j */
+                    for (k=1; k<=i; k++)
+                      for (l=i; l<=j; l++) ptype[index[k]-l] = 0;
+                    ptype[index[i]-j] = (type==0) ? 7 : type;
+                    /* fallthrough */
+        case '>':   /* pairs downstream */
+                    for (l=j+min_loop_size+1; l<=(int)length; l++) ptype[index[j]-l] = 0;
+                    break;
+      }
+    }
+  }
+  if (hx!=0) {
+    fprintf(stderr, "%s\n", constraint);
+    nrerror("unbalanced brackets in constraint string");
+  }
+  free(index);
+  free(stack);
+}
+
+/* get a matrix containing the number of basepairs of a reference structure for each interval [i,j] with i<j
+*  access it via iindx!!!
+*/
+PUBLIC unsigned int *make_referenceBP_array(short *reference_pt, unsigned int turn){
+  unsigned int i,j,k,ij,length;
+  int *iindx;
+  unsigned int *array;
+  unsigned int size;
+  length = (unsigned int)reference_pt[0];
+  size  = ((length+1)*(length+2))/2;
+  iindx = get_iindx(length);
+  array = (unsigned int *) space(sizeof(unsigned int)*size);    /* matrix containing number of basepairs of reference structure1 in interval [i,j] */;
+  for (k=0; k<=turn; k++)
+    for (i=1; i<=length-k; i++) {
+      j=i+k;
+      ij = iindx[i]-j;
+      array[ij] = 0;
+    }
+
+  for (i = length-turn-1; i >= 1; i--)
+    for (j = i+turn+1; j <= length; j++){
+      int bps;
+      ij = iindx[i]-j;
+      bps = array[ij+1];
+      if((i<=(unsigned int)reference_pt[j]) && ((unsigned int)reference_pt[j] < j))
+        bps++;
+      array[ij] = bps;
+    }
+  free(iindx);
+  return array;
+}
+
+PUBLIC unsigned int *compute_BPdifferences(short *pt1, short *pt2, unsigned int turn){
+  unsigned int *array;
+  unsigned int n, size, i, j, ij, d;
+  n = (unsigned int)pt1[0];
+  size = ((n+1)*(n+2))/2;
+  array = (unsigned int *)space(sizeof(unsigned int) * size);
+  int *iindx = get_iindx(n);
+  for(i = n - turn - 1; i>=1; i--){
+    d = 0;
+    for(j = i+turn+1; j <= n; j++){
+      ij = iindx[i]-j;
+      d = array[ij+1];
+      if(pt1[j] != pt2[j]){
+        if(i <= (unsigned int)pt1[j] && (unsigned int)pt1[j] < j){
+          /* we got an additional base pair in reference structure 1 */
+          d++;
+        }
+        if(i <= (unsigned int)pt2[j] && (unsigned int)pt2[j] < j){
+          /* we got another base pair in reference structure 2 */
+          d++;
+        }
+      }
+      array[ij] = d;
+
+    }
+  }
+  free(iindx);
+  return array;
+}
diff --git a/include/1.8.4_epars.h b/include/1.8.4_epars.h
new file mode 100644
--- /dev/null
+++ b/include/1.8.4_epars.h
@@ -0,0 +1,366 @@
+#ifndef __VIENNA_RNA_PACKAGE_OLD_EPARS__
+#define __VIENNA_RNA_PACKAGE_OLD_EPARS__
+/**
+    \file 1.8.4_epars.h
+    \brief Free energy parameters for parameter file conversion
+
+    This file contains the free energy parameters used in ViennaRNAPackage 1.8.4.
+    They are summarized in:
+
+    D.H.Mathews, J. Sabina, M. ZUker, D.H. Turner
+    "Expanded sequence dependence of thermodynamic parameters improves
+    prediction of RNA secondary structure"
+    JMB, 288, pp 911-940, 1999
+
+    Enthalpies taken from:
+
+    A. Walter, D Turner, J Kim, M Lyttle, P M"uller, D Mathews, M Zuker
+    "Coaxial stckaing of helices enhances binding of oligoribonucleotides.."
+    PNAS, 91, pp 9218-9222, 1994
+
+    D.H. Turner, N. Sugimoto, and S.M. Freier.
+    "RNA Structure Prediction",
+    Ann. Rev. Biophys. Biophys. Chem. 17, 167-192, 1988.
+
+    John A.Jaeger, Douglas H.Turner, and Michael Zuker.
+    "Improved predictions of secondary structures for RNA",
+    PNAS, 86, 7706-7710, October 1989.
+
+    L. He, R. Kierzek, J. SantaLucia, A.E. Walter, D.H. Turner
+    "Nearest-Neughbor Parameters for GU Mismatches...."
+    Biochemistry 1991, 30 11124-11132
+
+    A.E. Peritz, R. Kierzek, N, Sugimoto, D.H. Turner
+    "Thermodynamic Study of Internal Loops in Oligoribonucleotides..."
+    Biochemistry 1991, 30, 6428--6435
+*/
+
+#define K0        273.15
+#ifdef INF
+#undef INF
+#endif
+#define INF       1000000
+#define NBPAIRS   7
+#define NST       0     /* Energy for nonstandard stacked pairs */
+#define DEF       -50   /* Default terminal mismatch, used for I */
+                        /* and any non_pairing bases */
+#define NSM       0     /* terminal mismatch for non standard pairs */
+
+PRIVATE double Tmeasure_184 = 37 + K0;  /* temperature of param measurements */
+PRIVATE double lxc37_184    = 107.856;  /* parameter for logarithmic loop
+                                           energy extrapolation */
+
+PRIVATE int stack37_184[NBPAIRS+1][NBPAIRS+1] =
+/*          CG     GC     GU     UG     AU     UA  */
+{ {  INF,   INF,   INF,   INF,   INF,   INF,   INF, INF},
+  {  INF,  -240,  -330,  -210,  -140,  -210,  -210, NST},
+  {  INF,  -330,  -340,  -250,  -150,  -220,  -240, NST},
+  {  INF,  -210,  -250,   130,   -50,  -140,  -130, NST},
+  {  INF,  -140,  -150,   -50,    30,   -60,  -100, NST},
+  {  INF,  -210,  -220,  -140,   -60,  -110,   -90, NST},
+  {  INF,  -210,  -240,  -130,  -100,   -90,  -130, NST},
+  {  INF,   NST,   NST,   NST,   NST,   NST,   NST, NST}};
+
+/* enthalpies (0.01*kcal/mol at 37 C) for stacked pairs */
+/* different from mfold-2.3, which uses values from mfold-2.2 */
+PRIVATE int enthalpies_184[NBPAIRS+1][NBPAIRS+1] =
+/*          CG     GC     GU     UG     AU     UA  */
+{ {  INF,   INF,   INF,   INF,   INF,   INF,   INF, INF},
+  {  INF, -1060, -1340, -1210,  -560, -1050, -1040, NST},
+  {  INF, -1340, -1490, -1260,  -830, -1140, -1240, NST},
+  {  INF, -1210, -1260, -1460, -1350,  -880, -1280, NST},
+  {  INF,  -560,  -830, -1350,  -930,  -320,  -700, NST},
+  {  INF, -1050, -1140,  -880,  -320,  -940,  -680, NST},
+  {  INF, -1040, -1240, -1280,  -700,  -680,  -770, NST},
+  {  INF,   NST,   NST,   NST,   NST,   NST,   NST, NST}};
+
+
+/* old values are here just for comparison */
+PRIVATE int oldhairpin37_184[31] = { /* from ViennaRNA 1.3 */
+  INF, INF, INF, 410, 490, 440, 470, 500, 510, 520, 531,
+       542, 551, 560, 568, 575, 582, 589, 595, 601, 606,
+       611, 616, 621, 626, 630, 634, 638, 642, 646, 650};
+
+PRIVATE int hairpin37_184[31] = {
+  INF, INF, INF, 570, 560, 560, 540, 590, 560, 640, 650,
+       660, 670, 678, 686, 694, 701, 707, 713, 719, 725,
+       730, 735, 740, 744, 749, 753, 757, 761, 765, 769};
+
+PRIVATE int oldbulge37_184[31] = {
+  INF, 390, 310, 350, 420, 480, 500, 516, 531, 543, 555,
+       565, 574, 583, 591, 598, 605, 612, 618, 624, 630,
+       635, 640, 645, 649, 654, 658, 662, 666, 670, 673};
+
+PRIVATE int bulge37_184[31] = {
+  INF, 380, 280, 320, 360, 400, 440, 459, 470, 480, 490,
+       500, 510, 519, 527, 534, 541, 548, 554, 560, 565,
+  571, 576, 580, 585, 589, 594, 598, 602, 605, 609};
+
+PRIVATE int oldinternal_loop37_184[31] = {
+  INF, INF, 410, 510, 490, 530, 570, 587, 601, 614, 625,
+       635, 645, 653, 661, 669, 676, 682, 688, 694, 700,
+       705, 710, 715, 720, 724, 728, 732, 736, 740, 744};
+
+PRIVATE int internal_loop37_184[31] = {
+  INF, INF, 410, 510, 170, 180, 200, 220, 230, 240, 250,
+       260, 270, 278, 286, 294, 301, 307, 313, 319, 325,
+       330, 335, 340, 345, 349, 353, 357, 361, 365, 369};
+
+/* terminal mismatches */
+/* mismatch free energies for interior loops at 37C */
+PRIVATE int mismatchI37_184[NBPAIRS+1][5][5] =
+{ /* @@ */
+  {{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}},
+  { /* CG */
+   {   0,    0,    0,    0,    0}, /* @@  @A  @C  @G  @U */
+   {   0,    0,    0, -110,    0}, /* A@  AA  AC  AG  AU */
+   {   0,    0,    0,    0,    0}, /* C@  CA  CC  CG  CU */
+   {   0, -110,    0,    0,    0}, /* G@  GA  GC  GG  GU */
+   {   0,    0,    0,    0,  -70}},/* U@  UA  UC  UG  UU */
+  { /* GC */
+   {   0,    0,    0,    0,    0}, /* @@  @A  @C  @G  @U */
+   {   0,    0,    0, -110,    0}, /* A@  AA  AC  AG  AU */
+   {   0,    0,    0,    0,    0}, /* C@  CA  CC  CG  CU */
+   {   0, -110,    0,    0,    0}, /* G@  GA  GC  GG  GU */
+   {   0,    0,    0,    0,  -70}},/* U@  UA  UC  UG  UU */
+  { /* GU */
+   {   0,    0,    0,    0,    0}, /* @@  @A  @C  @G  @U */
+   {   0,   70,   70,  -40,   70}, /* A@  AA  AC  AG  AU */
+   {   0,   70,   70,   70,   70}, /* C@  CA  CC  CG  CU */
+   {   0,  -40,   70,   70,   70}, /* G@  GA  GC  GG  GU */
+   {   0,   70,   70,   70,    0}},/* U@  UA  UC  UG  UU */
+  { /* UG */
+   {   0,    0,    0,    0,    0}, /* @@  @A  @C  @G  @U */
+   {   0,   70,   70,  -40,   70}, /* A@  AA  AC  AG  AU */
+   {   0,   70,   70,   70,   70}, /* C@  CA  CC  CG  CU */
+   {   0,  -40,   70,   70,   70}, /* G@  GA  GC  GG  GU */
+   {   0,   70,   70,   70,    0}},/* U@  UA  UC  UG  UU */
+  { /* AU */
+   {   0,    0,    0,    0,    0}, /* @@  @A  @C  @G  @U */
+   {   0,   70,   70,  -40,   70}, /* A@  AA  AC  AG  AU */
+   {   0,   70,   70,   70,   70}, /* C@  CA  CC  CG  CU */
+   {   0,  -40,   70,   70,   70}, /* G@  GA  GC  GG  GU */
+   {   0,   70,   70,   70,    0}},/* U@  UA  UC  UG  UU */
+  { /* UA */
+   {   0,    0,    0,    0,    0}, /* @@  @A  @C  @G  @U */
+   {   0,   70,   70,  -40,   70}, /* A@  AA  AC  AG  AU */
+   {   0,   70,   70,   70,   70}, /* C@  CA  CC  CG  CU */
+   {   0,  -40,   70,   70,   70}, /* G@  GA  GC  GG  GU */
+   {   0,   70,   70,   70,    0}},/* U@  UA  UC  UG  UU */
+  { /* @@ */
+   { 90, 90, 90, 90, 90},{ 90, 90, 90, 90,-20},{ 90, 90, 90, 90, 90},
+   { 90,-20, 90, 90, 90},{ 90, 90, 90, 90, 20}}
+};
+
+/* mismatch free energies for hairpins at 37C */
+PRIVATE int mismatchH37_184[NBPAIRS+1][5][5] =
+{ /* @@ */
+  {{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}},
+  { /* CG */
+   {   0,    0,    0,    0,    0}, /* @@  @A  @C  @G  @U */
+   { -90, -150, -150, -140, -180}, /* A@  AA  AC  AG  AU */
+   { -90, -100,  -90, -290,  -80}, /* C@  CA  CC  CG  CU */
+   { -90, -220, -200, -160, -110}, /* G@  GA  GC  GG  GU */
+   { -90, -170, -140, -180, -200}},/* U@  UA  UC  UG  UU */
+  { /* GC */
+   {   0,    0,    0,    0,    0}, /* @@  @A  @C  @G  @U */
+   { -70, -110, -150, -130, -210}, /* A@  AA  AC  AG  AU */
+   { -70, -110,  -70, -240,  -50}, /* C@  CA  CC  CG  CU */
+   { -70, -240, -290, -140, -120}, /* G@  GA  GC  GG  GU */
+   { -70, -190, -100, -220, -150}},/* U@  UA  UC  UG  UU */
+  { /* GU */
+   {   0,    0,    0,    0,    0}, /* @@  @A  @C  @G  @U */
+   {   0,   20,  -50,  -30,  -30}, /* A@  AA  AC  AG  AU */
+   {   0,  -10,  -20, -150,  -20}, /* C@  CA  CC  CG  CU */
+   {   0,  -90, -110,  -30,    0}, /* G@  GA  GC  GG  GU */
+   {   0,  -30,  -30,  -40, -110}},/* U@  UA  UC  UG  UU */
+  { /* UG */
+   {   0,    0,    0,    0,    0}, /* @@  @A  @C  @G  @U */
+   {   0,  -50,  -30,  -60,  -50}, /* A@  AA  AC  AG  AU */
+   {   0,  -20,  -10, -170,    0}, /* C@  CA  CC  CG  CU */
+   {   0,  -80, -120,  -30,  -70}, /* G@  GA  GC  GG  GU */
+   {   0,  -60,  -10,  -60,  -80}},/* U@  UA  UC  UG  UU */
+  { /* AU */
+   {   0,    0,    0,    0,    0}, /* @@  @A  @C  @G  @U */
+   {   0,  -30,  -50,  -30,  -30}, /* A@  AA  AC  AG  AU */
+   {   0,  -10,  -20, -150,  -20}, /* C@  CA  CC  CG  CU */
+   {   0, -110, -120,  -20,   20}, /* G@  GA  GC  GG  GU */
+   {   0,  -30,  -30,  -60, -110}},/* U@  UA  UC  UG  UU */
+  { /* UA */
+   {   0,    0,    0,    0,    0}, /* @@  @A  @C  @G  @U */
+   {   0,  -50,  -30,  -60,  -50}, /* A@  AA  AC  AG  AU */
+   {   0,  -20,  -10, -120,   -0}, /* C@  CA  CC  CG  CU */
+   {   0, -140, -120,  -70,  -20}, /* G@  GA  GC  GG  GU */
+   {   0,  -30,  -10,  -50,  -80}},/* U@  UA  UC  UG  UU */
+  { /* @@ */
+   {  0,  0,  0,  0,  0},{  0,  0,  0,  0,  0},{  0,  0,  0,  0,  0},
+   {  0,  0,  0,  0,  0},{  0,  0,  0,  0,  0}}
+};
+
+/* mismatch energies in multiloops */
+PRIVATE int mismatchM37_184[NBPAIRS+1][5][5];
+
+/* these are probably junk */
+/* mismatch enthalpies for temperature scaling */
+PRIVATE int mism_H_184[NBPAIRS+1][5][5] =
+{ /* no pair */
+  {{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}},
+  { /* CG */
+   {   0,    0,    0,    0,    0}, /* @@  @A  @C  @G  @U */
+   { DEF,-1030, -950,-1030,-1030}, /* A@  AA  AC  AG  AU */
+   { DEF, -520, -450, -520, -670}, /* C@  CA  CC  CG  CU */
+   { DEF, -940, -940, -940, -940}, /* G@  GA  GC  GG  GU */
+   { DEF, -810, -740, -810, -860}},/* U@  UA  UC  UG  UU */
+  { /* GC */
+   {   0,    0,    0,    0,    0}, /* @@  @A  @C  @G  @U */
+   { DEF, -520, -880, -560, -880}, /* A@  AA  AC  AG  AU */
+   { DEF, -720, -310, -310, -390}, /* C@  CA  CC  CG  CU */
+   { DEF, -710, -740, -620, -740}, /* G@  GA  GC  GG  GU */
+   { DEF, -500, -500, -500, -570}},/* U@  UA  UC  UG  UU */
+  { /* GU */
+   {   0,    0,    0,    0,    0}, /* @@  @A  @C  @G  @U */
+   { DEF, -430, -600, -600, -600}, /* A@  AA  AC  AG  AU */
+   { DEF, -260, -240, -240, -240}, /* C@  CA  CC  CG  CU */
+   { DEF, -340, -690, -690, -690}, /* G@  GA  GC  GG  GU */
+   { DEF, -330, -330, -330, -330}},/* U@  UA  UC  UG  UU */
+  { /* UG */
+   {   0,    0,    0,    0,    0}, /* @@  @A  @C  @G  @U */
+   { DEF, -720, -790, -960, -810}, /* A@  AA  AC  AG  AU */
+   { DEF, -480, -480, -360, -480}, /* C@  CA  CC  CG  CU */
+   { DEF, -660, -810, -920, -810}, /* G@  GA  GC  GG  GU */
+   { DEF, -550, -440, -550, -360}},/* U@  UA  UC  UG  UU */
+  { /* AU */
+   {   0,    0,    0,    0,    0}, /* @@  @A  @C  @G  @U */
+   { DEF, -430, -600, -600, -600}, /* A@  AA  AC  AG  AU */
+   { DEF, -260, -240, -240, -240}, /* C@  CA  CC  CG  CU */
+   { DEF, -340, -690, -690, -690}, /* G@  GA  GC  GG  GU */
+   { DEF, -330, -330, -330, -330}},/* U@  UA  UC  UG  UU */
+  { /* UA */
+   {   0,    0,    0,    0,    0}, /* @@  @A  @C  @G  @U */
+   { DEF, -400, -630, -890, -590}, /* A@  AA  AC  AG  AU */
+   { DEF, -430, -510, -200, -180}, /* C@  CA  CC  CG  CU */
+   { DEF, -380, -680, -890, -680}, /* G@  GA  GC  GG  GU */
+   { DEF, -280, -140, -280, -140}},/* U@  UA  UC  UG  UU */
+  { /* nonstandard pair */
+   {DEF,DEF,DEF,DEF,DEF},{DEF,DEF,DEF,DEF,DEF},{DEF,DEF,DEF,DEF,DEF},
+   {DEF,DEF,DEF,DEF,DEF},{DEF,DEF,DEF,DEF,DEF}}
+};
+
+/* 5' dangling ends (unpaird base stacks on first paired base) */
+PRIVATE int dangle5_37_184[NBPAIRS+1][5]=
+{/*   @     A     C     G     U   */
+   { INF,  INF,  INF,  INF,  INF}, /* no pair */
+   { INF,  -50,  -30,  -20,  -10}, /* CG  (stacks on C) */
+   { INF,  -20,  -30,   -0,   -0}, /* GC  (stacks on G) */
+   { INF,  -30,  -30,  -40,  -20}, /* GU */
+   { INF,  -30,  -10,  -20,  -20}, /* UG */
+   { INF,  -30,  -30,  -40,  -20}, /* AU */
+   { INF,  -30,  -10,  -20,  -20}, /* UA */
+   {   0,    0,     0,    0,   0}  /*  @ */
+};
+
+/* 3' dangling ends (unpaired base stacks on second paired base */
+PRIVATE int dangle3_37_184[NBPAIRS+1][5]=
+{/*   @     A     C     G     U   */
+   { INF,  INF,  INF,  INF,  INF},  /* no pair */
+   { INF, -110,  -40, -130,  -60},  /* CG  (stacks on G) */
+   { INF, -170,  -80, -170, -120},  /* GC */
+   { INF,  -70,  -10,  -70,  -10},  /* GU */
+   { INF,  -80,  -50,  -80,  -60},  /* UG */
+   { INF,  -70,  -10,  -70,  -10},  /* AU */
+   { INF,  -80,  -50,  -80,  -60},  /* UA */
+   {   0,    0,     0,    0,   0}   /*  @ */
+};
+
+/* enthalpies for temperature scaling */
+PRIVATE int dangle3_H_184[NBPAIRS+1][5] =
+{/*   @     A     C     G     U   */
+   { INF,  INF,  INF,  INF,  INF},  /* no pair */
+   {   0, -740, -280, -640, -360},
+   {   0, -900, -410, -860, -750},
+   {   0, -740, -240, -720, -490},
+   {   0, -490,  -90, -550, -230},
+   {   0, -570,  -70, -580, -220},
+   {   0, -490,  -90, -550, -230},
+   {   0,    0,    0,    0,   0}
+};
+
+PRIVATE int dangle5_H_184[NBPAIRS+1][5] =
+{/*   @     A     C     G     U   */
+   { INF,  INF,  INF,  INF,  INF},  /* no pair */
+   {   0, -240,  330,   80, -140},
+   {   0, -160,   70, -460,  -40},
+   {   0,  160,  220,   70,  310},
+   {   0, -150,  510,   10,  100},
+   {   0,  160,  220,   70,  310},
+   {   0,  -50,  690,  -60,  -60},
+   {   0,    0,    0,    0,   0}
+};
+
+
+/* constants for linearly destabilizing contributions for multi-loops
+   F = ML_closing + ML_intern*k + ML_BASE*u  */
+/* old versions erroneously used ML_intern*(k-1) */
+PRIVATE int ML_BASE37_184 = 0;
+PRIVATE int ML_closing37_184 = 340;
+PRIVATE int ML_intern37_184 =  40;
+
+/* Ninio-correction for asymmetric internal loops with branches n1 and n2 */
+/*    ninio_energy = min{max_ninio, |n1-n2|*F_ninio[min{4.0, n1, n2}] } */
+PRIVATE int MAX_NINIO_184 = 300;                   /* maximum correction */
+PRIVATE int F_ninio37_184[5] = { 0, 40, 50, 20, 10 };      /* only F[2] used */
+
+/* stabilizing contribution due to special hairpins of size 4 (tetraloops) */
+
+PRIVATE char Tetraloops_184[1400] =  /* place for up to 200 tetra loops */
+  "GGGGAC "
+  "GGUGAC "
+  "CGAAAG "
+  "GGAGAC "
+  "CGCAAG "
+  "GGAAAC "
+  "CGGAAG "
+  "CUUCGG "
+  "CGUGAG "
+  "CGAAGG "
+  "CUACGG "
+  "GGCAAC "
+  "CGCGAG "
+  "UGAGAG "
+  "CGAGAG "
+  "AGAAAU "
+  "CGUAAG "
+  "CUAACG "
+  "UGAAAG "
+  "GGAAGC "
+  "GGGAAC "
+  "UGAAAA "
+  "AGCAAU "
+  "AGUAAU "
+  "CGGGAG "
+  "AGUGAU "
+  "GGCGAC "
+  "GGGAGC "
+  "GUGAAC "
+  "UGGAAA "
+;
+
+PRIVATE int   TETRA_ENERGY37_184[200] = {
+  -300, -300, -300, -300, -300, -300, -300, -300, -300, -250, -250, -250,
+  -250, -250, -200, -200, -200, -200, -200, -150, -150, -150, -150, -150,
+  -150, -150, -150, -150, -150, -150};
+
+PRIVATE int   TETRA_ENTH37_184   = -400;
+
+PRIVATE char Triloops_184[241] = "";
+
+PRIVATE int Triloop_E37_184[40];
+
+/* penalty for AU (or GU) terminating helix) */
+/* mismatches already contain these */
+PRIVATE int TerminalAU_184 = 50;
+
+/* penalty for forming a bi-molecular duplex */
+PRIVATE int DuplexInit_184 = 410;
+
+#endif
diff --git a/include/1.8.4_intloops.h b/include/1.8.4_intloops.h
new file mode 100644
--- /dev/null
+++ b/include/1.8.4_intloops.h
@@ -0,0 +1,11073 @@
+/**
+*** \file 1.8.4_intloops.h
+*** \brief Free energy parameters for interior loop contributions needed by the parameter file conversion functions
+**/
+PRIVATE int int11_37_184[NBPAIRS+1][NBPAIRS+1][5][5] =
+{ /* noPair */ {{{0}}},
+{ /* noPair */ {{0}},
+/* CG..CG */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110,  40,  40,  40},
+{ 110,  40,  40,  40,  40},
+{ 110,  40,  40, -140,  40},
+{ 110,  40,  40,  40,  40}
+},
+/* CG..GC */
+{{ 110, 110, 110, 110, 110},
+{ 110,  40, -40,  40,  40},
+{ 110,  30,  50,  40,  50},
+{ 110, -10,  40, -170,  40},
+{ 110,  40,   0,  40, -30}
+},
+/* CG..GU */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, -100, 110},
+{ 110, 110, 110, 110, 110}
+},
+/* CG..UG */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, -100, 110},
+{ 110, 110, 110, 110, 110}
+},
+/* CG..AU */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, -100, 110},
+{ 110, 110, 110, 110, 110}
+},
+/* CG..UA */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, -100, 110},
+{ 110, 110, 110, 110, 110}
+},
+/* CG..?? */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110}
+}
+},
+{ /* noPair */ {{0}},
+/* GC..CG */
+{{ 110, 110, 110, 110, 110},
+{ 110,  40,  30, -10,  40},
+{ 110, -40,  50,  40,   0},
+{ 110,  40,  40, -170,  40},
+{ 110,  40,  50,  40, -30}
+},
+/* GC..GC */
+{{ 110, 110, 110, 110, 110},
+{ 110,  80,  40,  40,  40},
+{ 110,  40,  40,  40,  40},
+{ 110,  40,  40, -210,  40},
+{ 110,  40,  40,  40, -70}
+},
+/* GC..GU */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, -100, 110},
+{ 110, 110, 110, 110, 110}
+},
+/* GC..UG */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, -100, 110},
+{ 110, 110, 110, 110, 110}
+},
+/* GC..AU */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, -100, 110},
+{ 110, 110, 110, 110, 100}
+},
+/* GC..UA */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, -100, 110},
+{ 110, 110, 110, 110, 110}
+},
+/* GC..?? */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110}
+}
+},
+{ /* noPair */ {{0}},
+/* GU..CG */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, -100, 110},
+{ 110, 110, 110, 110, 110}
+},
+/* GU..GC */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, -100, 110},
+{ 110, 110, 110, 110, 110}
+},
+/* GU..GU */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, -40, 170},
+{ 170, 170, 170, 170, 170}
+},
+/* GU..UG */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, -40, 170},
+{ 170, 170, 170, 170, 170}
+},
+/* GU..AU */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, -40, 170},
+{ 170, 170, 170, 170, 170}
+},
+/* GU..UA */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, -40, 170},
+{ 170, 170, 170, 170, 170}
+},
+/* GU..?? */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170}
+}
+},
+{ /* noPair */ {{0}},
+/* UG..CG */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, -100, 110},
+{ 110, 110, 110, 110, 110}
+},
+/* UG..GC */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, -100, 110},
+{ 110, 110, 110, 110, 110}
+},
+/* UG..GU */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, -40, 170},
+{ 170, 170, 170, 170, 170}
+},
+/* UG..UG */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, -40, 170},
+{ 170, 170, 170, 170, 170}
+},
+/* UG..AU */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, -40, 170},
+{ 170, 170, 170, 170, 170}
+},
+/* UG..UA */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, -40, 170},
+{ 170, 170, 170, 170, 170}
+},
+/* UG..?? */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170}
+}
+},
+{ /* noPair */ {{0}},
+/* AU..CG */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, -100, 110},
+{ 110, 110, 110, 110, 110}
+},
+/* AU..GC */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, -100, 110},
+{ 110, 110, 110, 110, 100}
+},
+/* AU..GU */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, -40, 170},
+{ 170, 170, 170, 170, 170}
+},
+/* AU..UG */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, -40, 170},
+{ 170, 170, 170, 170, 170}
+},
+/* AU..AU */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, -40, 170},
+{ 170, 170, 170, 170, 120}
+},
+/* AU..UA */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, -40, 170},
+{ 170, 170, 170, 170, 150}
+},
+/* AU..?? */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170}
+}
+},
+{ /* noPair */ {{0}},
+/* UA..CG */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, -100, 110},
+{ 110, 110, 110, 110, 110}
+},
+/* UA..GC */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, -100, 110},
+{ 110, 110, 110, 110, 110}
+},
+/* UA..GU */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, -40, 170},
+{ 170, 170, 170, 170, 170}
+},
+/* UA..UG */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, -40, 170},
+{ 170, 170, 170, 170, 170}
+},
+/* UA..AU */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, -40, 170},
+{ 170, 170, 170, 170, 150}
+},
+/* UA..UA */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, -40, 170},
+{ 170, 170, 170, 170, 180}
+},
+/* UA..?? */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170}
+}
+},
+{ /* noPair */ {{0}},
+/* ??..CG */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110}
+},
+/* ??..GC */
+{{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110},
+{ 110, 110, 110, 110, 110}
+},
+/* ??..GU */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170}
+},
+/* ??..UG */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170}
+},
+/* ??..AU */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170}
+},
+/* ??..UA */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170}
+},
+/* ??..?? */
+{{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170},
+{ 170, 170, 170, 170, 170}
+}
+}
+};
+
+PRIVATE int int11_H_184[NBPAIRS+1][NBPAIRS+1][5][5] =
+ /* GC..GC */
+{ /* noPair */ {{{0}}},
+{ /* noPair */ {{0}},
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* GC..CG */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* GC..GU */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* GC..UG */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* GC..AU */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* GC..UA */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* GC.. @ */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}}},
+ /* CG..GC */
+{ /* noPair */ {{0}},
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* CG..CG */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* CG..GU */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* CG..UG */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* CG..AU */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* CG..UA */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* CG.. @ */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}}},
+ /* GU..GC */
+{ /* noPair */ {{0}},
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* GU..CG */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* GU..GU */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* GU..UG */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* GU..AU */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* GU..UA */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* GU.. @ */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}}},
+ /* UG..GC */
+{ /* noPair */ {{0}},
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* UG..CG */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* UG..GU */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* UG..UG */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* UG..AU */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* UG..UA */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* UG.. @ */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}}},
+ /* AU..GC */
+{ /* noPair */ {{0}},
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* AU..CG */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* AU..GU */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* AU..UG */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* AU..AU */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* AU..UA */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* AU.. @ */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}}},
+ /* UA..GC */
+{ /* noPair */ {{0}},
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* UA..CG */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* UA..GU */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* UA..UG */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* UA..AU */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* UA..UA */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /* UA.. @ */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}}},
+ /*  @..GC */
+{ /* noPair */ {{0}},
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /*  @..CG */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /*  @..GU */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /*  @..UG */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /*  @..AU */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /*  @..UA */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}},
+ /*  @.. @ */
+{ {  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0},
+{  0, 0, 0, 0, 0}}}};
+
+PRIVATE int int21_37_184[NBPAIRS+1][NBPAIRS+1][5][5][5] =
+{ /* noPair */ {{{{0}}}},
+{ /* noPair */ {{{0}}},
+{
+/* CG.@..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* CG.A..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 240, 220, 160, 400},{ 550, 210, 170, 160, 400},{ 550, 100,  60,  40, 400},{ 550, 400, 400, 400, 400}},
+/* CG.C..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 230, 220, 400, 220},{ 550, 220, 250, 400, 220},{ 550, 400, 400, 400, 400},{ 550, 250, 190, 400, 220}},
+/* CG.G..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 170, 400,  80, 400},{ 550, 400, 400, 400, 400},{ 550,  80, 400, 220, 400},{ 550, 400, 400, 400, 400}},
+/* CG.U..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 400, 400, 400, 400},{ 550, 400, 220, 400, 130},{ 550, 400, 400, 400, 400},{ 550, 400, 170, 400, 120}}
+},
+{
+/* CG.@..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* CG.A..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 230, 220, 110, 400},{ 550, 210, 170, 160, 400},{ 550,  80,  60,  40, 400},{ 550, 400, 400, 400, 400}},
+/* CG.C..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 230, 220, 400, 220},{ 550, 220, 250, 400, 220},{ 550, 400, 400, 400, 400},{ 550, 250, 190, 400, 220}},
+/* CG.G..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 170, 400,  80, 400},{ 550, 400, 400, 400, 400},{ 550,  80, 400, 220, 400},{ 550, 400, 400, 400, 400}},
+/* CG.U..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 400, 400, 400, 400},{ 550, 400, 220, 400, 150},{ 550, 400, 400, 400, 400},{ 550, 400, 170, 400, 120}}
+},
+{
+/* CG.@..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* CG.A..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 300, 240, 480},{ 550, 290, 250, 240, 480},{ 550, 180, 140, 120, 480},{ 550, 480, 480, 480, 480}},
+/* CG.C..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 310, 300, 480, 300},{ 550, 300, 330, 480, 300},{ 550, 480, 480, 480, 480},{ 550, 330, 270, 480, 300}},
+/* CG.G..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 250, 480, 160, 480},{ 550, 480, 480, 480, 480},{ 550, 160, 480, 300, 480},{ 550, 480, 480, 480, 480}},
+/* CG.U..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 480, 480, 480, 480},{ 550, 480, 300, 480, 210},{ 550, 480, 480, 480, 480},{ 550, 480, 250, 480, 200}}
+},
+{
+/* CG.@..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* CG.A..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 300, 240, 480},{ 550, 290, 250, 240, 480},{ 550, 180, 140, 120, 480},{ 550, 480, 480, 480, 480}},
+/* CG.C..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 310, 300, 480, 300},{ 550, 300, 330, 480, 300},{ 550, 480, 480, 480, 480},{ 550, 330, 270, 480, 300}},
+/* CG.G..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 250, 480, 160, 480},{ 550, 480, 480, 480, 480},{ 550, 160, 480, 300, 480},{ 550, 480, 480, 480, 480}},
+/* CG.U..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 480, 480, 480, 480},{ 550, 480, 300, 480, 210},{ 550, 480, 480, 480, 480},{ 550, 480, 250, 480, 200}}
+},
+{
+/* CG.@..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* CG.A..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 300, 240, 480},{ 550, 290, 250, 240, 480},{ 550, 180, 140, 120, 480},{ 550, 480, 480, 480, 480}},
+/* CG.C..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 310, 300, 480, 300},{ 550, 300, 330, 480, 300},{ 550, 480, 480, 480, 480},{ 550, 330, 270, 480, 300}},
+/* CG.G..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 250, 480, 160, 480},{ 550, 480, 480, 480, 480},{ 550, 160, 480, 300, 480},{ 550, 480, 480, 480, 480}},
+/* CG.U..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 480, 480, 480, 480},{ 550, 480, 300, 480, 210},{ 550, 480, 480, 480, 480},{ 550, 480, 250, 480, 200}}
+},
+{
+/* CG.@..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* CG.A..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 300, 240, 480},{ 550, 290, 250, 240, 480},{ 550, 180, 140, 120, 480},{ 550, 480, 480, 480, 480}},
+/* CG.C..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 310, 300, 480, 300},{ 550, 300, 330, 480, 300},{ 550, 480, 480, 480, 480},{ 550, 330, 270, 480, 300}},
+/* CG.G..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 250, 480, 160, 480},{ 550, 480, 480, 480, 480},{ 550, 160, 480, 300, 480},{ 550, 480, 480, 480, 480}},
+/* CG.U..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 480, 480, 480, 480},{ 550, 480, 300, 480, 210},{ 550, 480, 480, 480, 480},{ 550, 480, 250, 480, 200}}
+},
+{
+/* CG.@..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* CG.A..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* CG.C..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* CG.G..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* CG.U..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}}
+}
+},
+{ /* noPair */ {{{0}}},
+{
+/* GC.@..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GC.A..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 250, 220, 210, 400},{ 550, 210, 170, 160, 400},{ 550, 120,  60,  40, 400},{ 550, 400, 400, 400, 400}},
+/* GC.C..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 230, 220, 400, 220},{ 550, 220, 250, 400, 220},{ 550, 400, 400, 400, 400},{ 550, 250, 190, 400, 220}},
+/* GC.G..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 170, 400,  80, 400},{ 550, 400, 400, 400, 400},{ 550,  80, 400, 220, 400},{ 550, 400, 400, 400, 400}},
+/* GC.U..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 400, 400, 400, 400},{ 550, 400, 220, 400, 120},{ 550, 400, 400, 400, 400},{ 550, 400, 170, 400, 120}}
+},
+{
+/* GC.@..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GC.A..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 240, 220, 160, 400},{ 550, 210, 170, 160, 400},{ 550, 100,  60,  40, 400},{ 550, 400, 400, 400, 400}},
+/* GC.C..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 230, 220, 400, 220},{ 550, 220, 250, 400, 220},{ 550, 400, 400, 400, 400},{ 550, 250, 190, 400, 220}},
+/* GC.G..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 170, 400,  80, 400},{ 550, 400, 400, 400, 400},{ 550,  80, 400, 220, 400},{ 550, 400, 400, 400, 400}},
+/* GC.U..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 400, 400, 400, 400},{ 550, 400, 220, 400, 130},{ 550, 400, 400, 400, 400},{ 550, 400, 170, 400, 120}}
+},
+{
+/* GC.@..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GC.A..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 300, 240, 480},{ 550, 290, 250, 240, 480},{ 550, 180, 140, 120, 480},{ 550, 480, 480, 480, 480}},
+/* GC.C..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 310, 300, 480, 300},{ 550, 300, 330, 480, 300},{ 550, 480, 480, 480, 480},{ 550, 330, 270, 480, 300}},
+/* GC.G..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 250, 480, 160, 480},{ 550, 480, 480, 480, 480},{ 550, 160, 480, 300, 480},{ 550, 480, 480, 480, 480}},
+/* GC.U..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 480, 480, 480, 480},{ 550, 480, 300, 480, 210},{ 550, 480, 480, 480, 480},{ 550, 480, 250, 480, 200}}
+},
+{
+/* GC.@..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GC.A..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 300, 240, 480},{ 550, 290, 250, 240, 480},{ 550, 180, 140, 120, 480},{ 550, 480, 480, 480, 480}},
+/* GC.C..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 310, 300, 480, 300},{ 550, 300, 330, 480, 300},{ 550, 480, 480, 480, 480},{ 550, 330, 270, 480, 300}},
+/* GC.G..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 250, 480, 160, 480},{ 550, 480, 480, 480, 480},{ 550, 160, 480, 300, 480},{ 550, 480, 480, 480, 480}},
+/* GC.U..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 480, 480, 480, 480},{ 550, 480, 300, 480, 210},{ 550, 480, 480, 480, 480},{ 550, 480, 250, 480, 200}}
+},
+{
+/* GC.@..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GC.A..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 300, 240, 480},{ 550, 290, 250, 240, 480},{ 550, 180, 140, 120, 480},{ 550, 480, 480, 480, 480}},
+/* GC.C..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 310, 300, 480, 300},{ 550, 300, 330, 480, 300},{ 550, 480, 480, 480, 480},{ 550, 330, 270, 480, 300}},
+/* GC.G..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 250, 480, 160, 480},{ 550, 480, 480, 480, 480},{ 550, 160, 480, 300, 480},{ 550, 480, 480, 480, 480}},
+/* GC.U..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 480, 480, 480, 480},{ 550, 480, 300, 480, 210},{ 550, 480, 480, 480, 480},{ 550, 480, 250, 480, 200}}
+},
+{
+/* GC.@..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GC.A..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 300, 240, 480},{ 550, 290, 250, 240, 480},{ 550, 180, 140, 120, 480},{ 550, 480, 480, 480, 480}},
+/* GC.C..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 310, 300, 480, 300},{ 550, 300, 330, 480, 300},{ 550, 480, 480, 480, 480},{ 550, 330, 270, 480, 300}},
+/* GC.G..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 250, 480, 160, 480},{ 550, 480, 480, 480, 480},{ 550, 160, 480, 300, 480},{ 550, 480, 480, 480, 480}},
+/* GC.U..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 480, 480, 480, 480},{ 550, 480, 300, 480, 210},{ 550, 480, 480, 480, 480},{ 550, 480, 250, 480, 200}}
+},
+{
+/* GC.@..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GC.A..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GC.C..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GC.G..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GC.U..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}}
+}
+},
+{ /* noPair */ {{{0}}},
+{
+/* GU.@..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GU.A..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 300, 240, 480},{ 550, 290, 250, 240, 480},{ 550, 180, 140, 120, 480},{ 550, 480, 480, 480, 480}},
+/* GU.C..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 310, 300, 480, 300},{ 550, 300, 330, 480, 300},{ 550, 480, 480, 480, 480},{ 550, 330, 270, 480, 300}},
+/* GU.G..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 250, 480, 160, 480},{ 550, 480, 480, 480, 480},{ 550, 160, 480, 300, 480},{ 550, 480, 480, 480, 480}},
+/* GU.U..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 480, 480, 480, 480},{ 550, 480, 300, 480, 210},{ 550, 480, 480, 480, 480},{ 550, 480, 250, 480, 200}}
+},
+{
+/* GU.@..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GU.A..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 300, 240, 480},{ 550, 290, 250, 240, 480},{ 550, 180, 140, 120, 480},{ 550, 480, 480, 480, 480}},
+/* GU.C..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 310, 300, 480, 300},{ 550, 300, 330, 480, 300},{ 550, 480, 480, 480, 480},{ 550, 330, 270, 480, 300}},
+/* GU.G..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 250, 480, 160, 480},{ 550, 480, 480, 480, 480},{ 550, 160, 480, 300, 480},{ 550, 480, 480, 480, 480}},
+/* GU.U..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 480, 480, 480, 480},{ 550, 480, 300, 480, 210},{ 550, 480, 480, 480, 480},{ 550, 480, 250, 480, 200}}
+},
+{
+/* GU.@..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GU.A..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 390, 370, 310, 550},{ 550, 360, 320, 310, 550},{ 550, 250, 210, 190, 550},{ 550, 550, 550, 550, 550}},
+/* GU.C..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 380, 370, 550, 370},{ 550, 370, 400, 550, 370},{ 550, 550, 550, 550, 550},{ 550, 400, 340, 550, 370}},
+/* GU.G..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 550, 230, 550},{ 550, 550, 550, 550, 550},{ 550, 230, 550, 370, 550},{ 550, 550, 550, 550, 550}},
+/* GU.U..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 370, 550, 280},{ 550, 550, 550, 550, 550},{ 550, 550, 320, 550, 270}}
+},
+{
+/* GU.@..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GU.A..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 390, 370, 310, 550},{ 550, 360, 320, 310, 550},{ 550, 250, 210, 190, 550},{ 550, 550, 550, 550, 550}},
+/* GU.C..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 380, 370, 550, 370},{ 550, 370, 400, 550, 370},{ 550, 550, 550, 550, 550},{ 550, 400, 340, 550, 370}},
+/* GU.G..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 550, 230, 550},{ 550, 550, 550, 550, 550},{ 550, 230, 550, 370, 550},{ 550, 550, 550, 550, 550}},
+/* GU.U..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 370, 550, 280},{ 550, 550, 550, 550, 550},{ 550, 550, 320, 550, 270}}
+},
+{
+/* GU.@..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GU.A..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 390, 370, 310, 550},{ 550, 360, 320, 310, 550},{ 550, 250, 210, 190, 550},{ 550, 550, 550, 550, 550}},
+/* GU.C..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 380, 370, 550, 370},{ 550, 370, 400, 550, 370},{ 550, 550, 550, 550, 550},{ 550, 400, 340, 550, 370}},
+/* GU.G..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 550, 230, 550},{ 550, 550, 550, 550, 550},{ 550, 230, 550, 370, 550},{ 550, 550, 550, 550, 550}},
+/* GU.U..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 370, 550, 280},{ 550, 550, 550, 550, 550},{ 550, 550, 320, 550, 270}}
+},
+{
+/* GU.@..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GU.A..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 390, 370, 310, 550},{ 550, 360, 320, 310, 550},{ 550, 250, 210, 190, 550},{ 550, 550, 550, 550, 550}},
+/* GU.C..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 380, 370, 550, 370},{ 550, 370, 400, 550, 370},{ 550, 550, 550, 550, 550},{ 550, 400, 340, 550, 370}},
+/* GU.G..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 550, 230, 550},{ 550, 550, 550, 550, 550},{ 550, 230, 550, 370, 550},{ 550, 550, 550, 550, 550}},
+/* GU.U..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 370, 550, 280},{ 550, 550, 550, 550, 550},{ 550, 550, 320, 550, 270}}
+},
+{
+/* GU.@..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GU.A..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GU.C..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GU.G..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* GU.U..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}}
+}
+},
+{ /* noPair */ {{{0}}},
+{
+/* UG.@..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UG.A..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 300, 240, 480},{ 550, 290, 250, 240, 480},{ 550, 180, 140, 120, 480},{ 550, 480, 480, 480, 480}},
+/* UG.C..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 310, 300, 480, 300},{ 550, 300, 330, 480, 300},{ 550, 480, 480, 480, 480},{ 550, 330, 270, 480, 300}},
+/* UG.G..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 250, 480, 160, 480},{ 550, 480, 480, 480, 480},{ 550, 160, 480, 300, 480},{ 550, 480, 480, 480, 480}},
+/* UG.U..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 480, 480, 480, 480},{ 550, 480, 300, 480, 210},{ 550, 480, 480, 480, 480},{ 550, 480, 250, 480, 200}}
+},
+{
+/* UG.@..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UG.A..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 300, 240, 480},{ 550, 290, 250, 240, 480},{ 550, 180, 140, 120, 480},{ 550, 480, 480, 480, 480}},
+/* UG.C..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 310, 300, 480, 300},{ 550, 300, 330, 480, 300},{ 550, 480, 480, 480, 480},{ 550, 330, 270, 480, 300}},
+/* UG.G..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 250, 480, 160, 480},{ 550, 480, 480, 480, 480},{ 550, 160, 480, 300, 480},{ 550, 480, 480, 480, 480}},
+/* UG.U..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 480, 480, 480, 480},{ 550, 480, 300, 480, 210},{ 550, 480, 480, 480, 480},{ 550, 480, 250, 480, 200}}
+},
+{
+/* UG.@..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UG.A..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 390, 370, 310, 550},{ 550, 360, 320, 310, 550},{ 550, 250, 210, 190, 550},{ 550, 550, 550, 550, 550}},
+/* UG.C..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 380, 370, 550, 370},{ 550, 370, 400, 550, 370},{ 550, 550, 550, 550, 550},{ 550, 400, 340, 550, 370}},
+/* UG.G..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 550, 230, 550},{ 550, 550, 550, 550, 550},{ 550, 230, 550, 370, 550},{ 550, 550, 550, 550, 550}},
+/* UG.U..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 370, 550, 280},{ 550, 550, 550, 550, 550},{ 550, 550, 320, 550, 270}}
+},
+{
+/* UG.@..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UG.A..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 390, 370, 310, 550},{ 550, 360, 320, 310, 550},{ 550, 250, 210, 190, 550},{ 550, 550, 550, 550, 550}},
+/* UG.C..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 380, 370, 550, 370},{ 550, 370, 400, 550, 370},{ 550, 550, 550, 550, 550},{ 550, 400, 340, 550, 370}},
+/* UG.G..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 550, 230, 550},{ 550, 550, 550, 550, 550},{ 550, 230, 550, 370, 550},{ 550, 550, 550, 550, 550}},
+/* UG.U..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 370, 550, 280},{ 550, 550, 550, 550, 550},{ 550, 550, 320, 550, 270}}
+},
+{
+/* UG.@..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UG.A..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 390, 370, 310, 550},{ 550, 360, 320, 310, 550},{ 550, 250, 210, 190, 550},{ 550, 550, 550, 550, 550}},
+/* UG.C..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 380, 370, 550, 370},{ 550, 370, 400, 550, 370},{ 550, 550, 550, 550, 550},{ 550, 400, 340, 550, 370}},
+/* UG.G..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 550, 230, 550},{ 550, 550, 550, 550, 550},{ 550, 230, 550, 370, 550},{ 550, 550, 550, 550, 550}},
+/* UG.U..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 370, 550, 280},{ 550, 550, 550, 550, 550},{ 550, 550, 320, 550, 270}}
+},
+{
+/* UG.@..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UG.A..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 390, 370, 310, 550},{ 550, 360, 320, 310, 550},{ 550, 250, 210, 190, 550},{ 550, 550, 550, 550, 550}},
+/* UG.C..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 380, 370, 550, 370},{ 550, 370, 400, 550, 370},{ 550, 550, 550, 550, 550},{ 550, 400, 340, 550, 370}},
+/* UG.G..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 550, 230, 550},{ 550, 550, 550, 550, 550},{ 550, 230, 550, 370, 550},{ 550, 550, 550, 550, 550}},
+/* UG.U..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 370, 550, 280},{ 550, 550, 550, 550, 550},{ 550, 550, 320, 550, 270}}
+},
+{
+/* UG.@..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UG.A..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UG.C..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UG.G..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UG.U..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}}
+}
+},
+{ /* noPair */ {{{0}}},
+{
+/* AU.@..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* AU.A..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 300, 240, 480},{ 550, 290, 250, 240, 480},{ 550, 180, 140, 120, 480},{ 550, 480, 480, 480, 480}},
+/* AU.C..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 310, 300, 480, 300},{ 550, 300, 330, 480, 300},{ 550, 480, 480, 480, 480},{ 550, 330, 270, 480, 300}},
+/* AU.G..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 250, 480, 160, 480},{ 550, 480, 480, 480, 480},{ 550, 160, 480, 300, 480},{ 550, 480, 480, 480, 480}},
+/* AU.U..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 480, 480, 480, 480},{ 550, 480, 300, 480, 210},{ 550, 480, 480, 480, 480},{ 550, 480, 250, 480, 200}}
+},
+{
+/* AU.@..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* AU.A..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 300, 240, 480},{ 550, 290, 250, 240, 480},{ 550, 180, 140, 120, 480},{ 550, 480, 480, 480, 480}},
+/* AU.C..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 310, 300, 480, 300},{ 550, 300, 330, 480, 300},{ 550, 480, 480, 480, 480},{ 550, 330, 270, 480, 300}},
+/* AU.G..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 250, 480, 160, 480},{ 550, 480, 480, 480, 480},{ 550, 160, 480, 300, 480},{ 550, 480, 480, 480, 480}},
+/* AU.U..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 480, 480, 480, 480},{ 550, 480, 300, 480, 210},{ 550, 480, 480, 480, 480},{ 550, 480, 250, 480, 200}}
+},
+{
+/* AU.@..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* AU.A..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 390, 370, 310, 550},{ 550, 360, 320, 310, 550},{ 550, 250, 210, 190, 550},{ 550, 550, 550, 550, 550}},
+/* AU.C..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 380, 370, 550, 370},{ 550, 370, 400, 550, 370},{ 550, 550, 550, 550, 550},{ 550, 400, 340, 550, 370}},
+/* AU.G..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 550, 230, 550},{ 550, 550, 550, 550, 550},{ 550, 230, 550, 370, 550},{ 550, 550, 550, 550, 550}},
+/* AU.U..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 370, 550, 280},{ 550, 550, 550, 550, 550},{ 550, 550, 320, 550, 270}}
+},
+{
+/* AU.@..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* AU.A..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 390, 370, 310, 550},{ 550, 360, 320, 310, 550},{ 550, 250, 210, 190, 550},{ 550, 550, 550, 550, 550}},
+/* AU.C..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 380, 370, 550, 370},{ 550, 370, 400, 550, 370},{ 550, 550, 550, 550, 550},{ 550, 400, 340, 550, 370}},
+/* AU.G..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 550, 230, 550},{ 550, 550, 550, 550, 550},{ 550, 230, 550, 370, 550},{ 550, 550, 550, 550, 550}},
+/* AU.U..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 370, 550, 280},{ 550, 550, 550, 550, 550},{ 550, 550, 320, 550, 270}}
+},
+{
+/* AU.@..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* AU.A..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 390, 370, 310, 550},{ 550, 360, 320, 310, 550},{ 550, 250, 210, 190, 550},{ 550, 550, 550, 550, 550}},
+/* AU.C..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 380, 370, 550, 370},{ 550, 370, 400, 550, 370},{ 550, 550, 550, 550, 550},{ 550, 400, 340, 550, 370}},
+/* AU.G..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 550, 230, 550},{ 550, 550, 550, 550, 550},{ 550, 230, 550, 370, 550},{ 550, 550, 550, 550, 550}},
+/* AU.U..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 370, 550, 280},{ 550, 550, 550, 550, 550},{ 550, 550, 320, 550, 270}}
+},
+{
+/* AU.@..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* AU.A..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 390, 370, 310, 550},{ 550, 360, 320, 310, 550},{ 550, 250, 210, 190, 550},{ 550, 550, 550, 550, 550}},
+/* AU.C..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 380, 370, 550, 370},{ 550, 370, 400, 550, 370},{ 550, 550, 550, 550, 550},{ 550, 400, 340, 550, 370}},
+/* AU.G..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 550, 230, 550},{ 550, 550, 550, 550, 550},{ 550, 230, 550, 370, 550},{ 550, 550, 550, 550, 550}},
+/* AU.U..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 370, 550, 280},{ 550, 550, 550, 550, 550},{ 550, 550, 320, 550, 270}}
+},
+{
+/* AU.@..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* AU.A..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* AU.C..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* AU.G..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* AU.U..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}}
+}
+},
+{ /* noPair */ {{{0}}},
+{
+/* UA.@..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UA.A..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 300, 240, 480},{ 550, 290, 250, 240, 480},{ 550, 180, 140, 120, 480},{ 550, 480, 480, 480, 480}},
+/* UA.C..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 310, 300, 480, 300},{ 550, 300, 330, 480, 300},{ 550, 480, 480, 480, 480},{ 550, 330, 270, 480, 300}},
+/* UA.G..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 250, 480, 160, 480},{ 550, 480, 480, 480, 480},{ 550, 160, 480, 300, 480},{ 550, 480, 480, 480, 480}},
+/* UA.U..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 480, 480, 480, 480},{ 550, 480, 300, 480, 210},{ 550, 480, 480, 480, 480},{ 550, 480, 250, 480, 200}}
+},
+{
+/* UA.@..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UA.A..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 300, 240, 480},{ 550, 290, 250, 240, 480},{ 550, 180, 140, 120, 480},{ 550, 480, 480, 480, 480}},
+/* UA.C..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 310, 300, 480, 300},{ 550, 300, 330, 480, 300},{ 550, 480, 480, 480, 480},{ 550, 330, 270, 480, 300}},
+/* UA.G..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 250, 480, 160, 480},{ 550, 480, 480, 480, 480},{ 550, 160, 480, 300, 480},{ 550, 480, 480, 480, 480}},
+/* UA.U..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 480, 480, 480, 480},{ 550, 480, 300, 480, 210},{ 550, 480, 480, 480, 480},{ 550, 480, 250, 480, 200}}
+},
+{
+/* UA.@..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UA.A..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 390, 370, 310, 550},{ 550, 360, 320, 310, 550},{ 550, 250, 210, 190, 550},{ 550, 550, 550, 550, 550}},
+/* UA.C..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 380, 370, 550, 370},{ 550, 370, 400, 550, 370},{ 550, 550, 550, 550, 550},{ 550, 400, 340, 550, 370}},
+/* UA.G..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 550, 230, 550},{ 550, 550, 550, 550, 550},{ 550, 230, 550, 370, 550},{ 550, 550, 550, 550, 550}},
+/* UA.U..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 370, 550, 280},{ 550, 550, 550, 550, 550},{ 550, 550, 320, 550, 270}}
+},
+{
+/* UA.@..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UA.A..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 390, 370, 310, 550},{ 550, 360, 320, 310, 550},{ 550, 250, 210, 190, 550},{ 550, 550, 550, 550, 550}},
+/* UA.C..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 380, 370, 550, 370},{ 550, 370, 400, 550, 370},{ 550, 550, 550, 550, 550},{ 550, 400, 340, 550, 370}},
+/* UA.G..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 550, 230, 550},{ 550, 550, 550, 550, 550},{ 550, 230, 550, 370, 550},{ 550, 550, 550, 550, 550}},
+/* UA.U..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 370, 550, 280},{ 550, 550, 550, 550, 550},{ 550, 550, 320, 550, 270}}
+},
+{
+/* UA.@..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UA.A..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 390, 370, 310, 550},{ 550, 360, 320, 310, 550},{ 550, 250, 210, 190, 550},{ 550, 550, 550, 550, 550}},
+/* UA.C..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 380, 370, 550, 370},{ 550, 370, 400, 550, 370},{ 550, 550, 550, 550, 550},{ 550, 400, 340, 550, 370}},
+/* UA.G..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 550, 230, 550},{ 550, 550, 550, 550, 550},{ 550, 230, 550, 370, 550},{ 550, 550, 550, 550, 550}},
+/* UA.U..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 370, 550, 280},{ 550, 550, 550, 550, 550},{ 550, 550, 320, 550, 270}}
+},
+{
+/* UA.@..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UA.A..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 390, 370, 310, 550},{ 550, 360, 320, 310, 550},{ 550, 250, 210, 190, 550},{ 550, 550, 550, 550, 550}},
+/* UA.C..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 380, 370, 550, 370},{ 550, 370, 400, 550, 370},{ 550, 550, 550, 550, 550},{ 550, 400, 340, 550, 370}},
+/* UA.G..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 320, 550, 230, 550},{ 550, 550, 550, 550, 550},{ 550, 230, 550, 370, 550},{ 550, 550, 550, 550, 550}},
+/* UA.U..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 370, 550, 280},{ 550, 550, 550, 550, 550},{ 550, 550, 320, 550, 270}}
+},
+{
+/* UA.@..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UA.A..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UA.C..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UA.G..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* UA.U..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}}
+}
+},
+{ /* noPair */ {{{0}}},
+{
+/* ??.@..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.A..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.C..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.G..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.U..GC */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}}
+},
+{
+/* ??.@..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.A..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.C..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.G..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.U..CG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}}
+},
+{
+/* ??.@..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.A..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.C..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.G..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.U..UG */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}}
+},
+{
+/* ??.@..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.A..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.C..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.G..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.U..GU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}}
+},
+{
+/* ??.@..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.A..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.C..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.G..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.U..UA */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}}
+},
+{
+/* ??.@..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.A..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.C..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.G..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.U..AU */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}}
+},
+{
+/* ??.@..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.A..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.C..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.G..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}},
+/* ??.U..?? */
+{{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550},{ 550, 550, 550, 550, 550}}
+}
+}
+};
+
+PRIVATE int int21_H_184[NBPAIRS+1][NBPAIRS+1][5][5][5] =
+{ /* noPair */ {{{{0}}}},
+{ /* noPair */ {{{0}}},
+{
+/* CG.@..CG */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* CG.A..CG */
+{{  DEF,-1029, -949,-1029,-1029},{-1079,-2058,-1978,-2058,-2058},{ -569,-1548,-1468,-1548,-1548},{ -989,-1968,-1888,-1968,-1968},{ -859,-1838,-1758,-1838,-1838}},
+/* CG.C..CG */
+{{  DEF, -519, -449, -519, -669},{ -999,-1468,-1398,-1468,-1618},{ -499, -968, -898, -968,-1118},{ -989,-1458,-1388,-1458,-1608},{ -789,-1258,-1188,-1258,-1408}},
+/* CG.G..CG */
+{{  DEF, -939, -939, -939, -939},{-1079,-1968,-1968,-1968,-1968},{ -569,-1458,-1458,-1458,-1458},{ -989,-1878,-1878,-1878,-1878},{ -859,-1748,-1748,-1748,-1748}},
+/* CG.U..CG */
+{{  DEF, -809, -739, -809, -859},{-1079,-1838,-1768,-1838,-1888},{ -719,-1478,-1408,-1478,-1528},{ -989,-1748,-1678,-1748,-1798},{ -909,-1668,-1598,-1668,-1718}}
+},
+{
+/* CG.@..GC */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* CG.A..GC */
+{{  DEF,-1029, -949,-1029,-1029},{ -569,-1548,-1468,-1548,-1548},{ -769,-1748,-1668,-1748,-1748},{ -759,-1738,-1658,-1738,-1738},{ -549,-1528,-1448,-1528,-1528}},
+/* CG.C..GC */
+{{  DEF, -519, -449, -519, -669},{ -929,-1398,-1328,-1398,-1548},{ -359, -828, -758, -828, -978},{ -789,-1258,-1188,-1258,-1408},{ -549,-1018, -948,-1018,-1168}},
+/* CG.G..GC */
+{{  DEF, -939, -939, -939, -939},{ -609,-1498,-1498,-1498,-1498},{ -359,-1248,-1248,-1248,-1248},{ -669,-1558,-1558,-1558,-1558},{ -549,-1438,-1438,-1438,-1438}},
+/* CG.U..GC */
+{{  DEF, -809, -739, -809, -859},{ -929,-1688,-1618,-1688,-1738},{ -439,-1198,-1128,-1198,-1248},{ -789,-1548,-1478,-1548,-1598},{ -619,-1378,-1308,-1378,-1428}}
+},
+{
+/* CG.@..GU */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* CG.A..GU */
+{{  DEF,-1029, -949,-1029,-1029},{ -479,-1458,-1378,-1458,-1458},{ -309,-1288,-1208,-1288,-1288},{ -389,-1368,-1288,-1368,-1368},{ -379,-1358,-1278,-1358,-1358}},
+/* CG.C..GU */
+{{  DEF, -519, -449, -519, -669},{ -649,-1118,-1048,-1118,-1268},{ -289, -758, -688, -758, -908},{ -739,-1208,-1138,-1208,-1358},{ -379, -848, -778, -848, -998}},
+/* CG.G..GU */
+{{  DEF, -939, -939, -939, -939},{ -649,-1538,-1538,-1538,-1538},{ -289,-1178,-1178,-1178,-1178},{ -739,-1628,-1628,-1628,-1628},{ -379,-1268,-1268,-1268,-1268}},
+/* CG.U..GU */
+{{  DEF, -809, -739, -809, -859},{ -649,-1408,-1338,-1408,-1458},{ -289,-1048, -978,-1048,-1098},{ -739,-1498,-1428,-1498,-1548},{ -379,-1138,-1068,-1138,-1188}}
+},
+{
+/* CG.@..UG */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* CG.A..UG */
+{{  DEF,-1029, -949,-1029,-1029},{ -769,-1748,-1668,-1748,-1748},{ -529,-1508,-1428,-1508,-1508},{ -709,-1688,-1608,-1688,-1688},{ -599,-1578,-1498,-1578,-1578}},
+/* CG.C..UG */
+{{  DEF, -519, -449, -519, -669},{ -839,-1308,-1238,-1308,-1458},{ -529, -998, -928, -998,-1148},{ -859,-1328,-1258,-1328,-1478},{ -489, -958, -888, -958,-1108}},
+/* CG.G..UG */
+{{  DEF, -939, -939, -939, -939},{-1009,-1898,-1898,-1898,-1898},{ -409,-1298,-1298,-1298,-1298},{ -969,-1858,-1858,-1858,-1858},{ -599,-1488,-1488,-1488,-1488}},
+/* CG.U..UG */
+{{  DEF, -809, -739, -809, -859},{ -859,-1618,-1548,-1618,-1668},{ -529,-1288,-1218,-1288,-1338},{ -859,-1618,-1548,-1618,-1668},{ -409,-1168,-1098,-1168,-1218}}
+},
+{
+/* CG.@..AU */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* CG.A..AU */
+{{  DEF,-1029, -949,-1029,-1029},{ -479,-1458,-1378,-1458,-1458},{ -309,-1288,-1208,-1288,-1288},{ -389,-1368,-1288,-1368,-1368},{ -379,-1358,-1278,-1358,-1358}},
+/* CG.C..AU */
+{{  DEF, -519, -449, -519, -669},{ -649,-1118,-1048,-1118,-1268},{ -289, -758, -688, -758, -908},{ -739,-1208,-1138,-1208,-1358},{ -379, -848, -778, -848, -998}},
+/* CG.G..AU */
+{{  DEF, -939, -939, -939, -939},{ -649,-1538,-1538,-1538,-1538},{ -289,-1178,-1178,-1178,-1178},{ -739,-1628,-1628,-1628,-1628},{ -379,-1268,-1268,-1268,-1268}},
+/* CG.U..AU */
+{{  DEF, -809, -739, -809, -859},{ -649,-1408,-1338,-1408,-1458},{ -289,-1048, -978,-1048,-1098},{ -739,-1498,-1428,-1498,-1548},{ -379,-1138,-1068,-1138,-1188}}
+},
+{
+/* CG.@..UA */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* CG.A..UA */
+{{  DEF,-1029, -949,-1029,-1029},{ -449,-1428,-1348,-1428,-1428},{ -479,-1458,-1378,-1458,-1458},{ -429,-1408,-1328,-1408,-1408},{ -329,-1308,-1228,-1308,-1308}},
+/* CG.C..UA */
+{{  DEF, -519, -449, -519, -669},{ -679,-1148,-1078,-1148,-1298},{ -559,-1028, -958,-1028,-1178},{ -729,-1198,-1128,-1198,-1348},{ -189, -658, -588, -658, -808}},
+/* CG.G..UA */
+{{  DEF, -939, -939, -939, -939},{ -939,-1828,-1828,-1828,-1828},{ -249,-1138,-1138,-1138,-1138},{ -939,-1828,-1828,-1828,-1828},{ -329,-1218,-1218,-1218,-1218}},
+/* CG.U..UA */
+{{  DEF, -809, -739, -809, -859},{ -639,-1398,-1328,-1398,-1448},{ -229, -988, -918, -988,-1038},{ -729,-1488,-1418,-1488,-1538},{ -190, -949, -879, -949, -999}}
+},
+{
+/* CG.@.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* CG.A.. @ */
+{{ -100,-1079, -999,-1079,-1079},{ -100,-1079, -999,-1079,-1079},{ -100,-1079, -999,-1079,-1079},{ -100,-1079, -999,-1079,-1079},{ -100,-1079, -999,-1079,-1079}},
+/* CG.C.. @ */
+{{ -100, -569, -499, -569, -719},{ -100, -569, -499, -569, -719},{ -100, -569, -499, -569, -719},{ -100, -569, -499, -569, -719},{ -100, -569, -499, -569, -719}},
+/* CG.G.. @ */
+{{ -100, -989, -989, -989, -989},{ -100, -989, -989, -989, -989},{ -100, -989, -989, -989, -989},{ -100, -989, -989, -989, -989},{ -100, -989, -989, -989, -989}},
+/* CG.U.. @ */
+{{ -100, -859, -789, -859, -909},{ -100, -859, -789, -859, -909},{ -100, -859, -789, -859, -909},{ -100, -859, -789, -859, -909},{ -100, -859, -789, -859, -909}}
+}
+},
+{ /* noPair */ {{{0}}},
+{
+/* GC.@..CG */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GC.A..CG */
+{{  DEF, -519, -879, -559, -879},{-1079,-1548,-1908,-1588,-1908},{ -569,-1038,-1398,-1078,-1398},{ -989,-1458,-1818,-1498,-1818},{ -859,-1328,-1688,-1368,-1688}},
+/* GC.C..CG */
+{{  DEF, -719, -309, -309, -389},{ -999,-1668,-1258,-1258,-1338},{ -499,-1168, -758, -758, -838},{ -989,-1658,-1248,-1248,-1328},{ -789,-1458,-1048,-1048,-1128}},
+/* GC.G..CG */
+{{  DEF, -709, -739, -619, -739},{-1079,-1738,-1768,-1648,-1768},{ -569,-1228,-1258,-1138,-1258},{ -989,-1648,-1678,-1558,-1678},{ -859,-1518,-1548,-1428,-1548}},
+/* GC.U..CG */
+{{  DEF, -499, -499, -499, -569},{-1079,-1528,-1528,-1528,-1598},{ -719,-1168,-1168,-1168,-1238},{ -989,-1438,-1438,-1438,-1508},{ -909,-1358,-1358,-1358,-1428}}
+},
+{
+/* GC.@..GC */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GC.A..GC */
+{{  DEF, -519, -879, -559, -879},{ -569,-1038,-1398,-1078,-1398},{ -769,-1238,-1598,-1278,-1598},{ -759,-1228,-1588,-1268,-1588},{ -549,-1018,-1378,-1058,-1378}},
+/* GC.C..GC */
+{{  DEF, -719, -309, -309, -389},{ -929,-1598,-1188,-1188,-1268},{ -359,-1028, -618, -618, -698},{ -789,-1458,-1048,-1048,-1128},{ -549,-1218, -808, -808, -888}},
+/* GC.G..GC */
+{{  DEF, -709, -739, -619, -739},{ -609,-1268,-1298,-1178,-1298},{ -359,-1018,-1048, -928,-1048},{ -669,-1328,-1358,-1238,-1358},{ -549,-1208,-1238,-1118,-1238}},
+/* GC.U..GC */
+{{  DEF, -499, -499, -499, -569},{ -929,-1378,-1378,-1378,-1448},{ -439, -888, -888, -888, -958},{ -789,-1238,-1238,-1238,-1308},{ -619,-1068,-1068,-1068,-1138}}
+},
+{
+/* GC.@..GU */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GC.A..GU */
+{{  DEF, -519, -879, -559, -879},{ -479, -948,-1308, -988,-1308},{ -309, -778,-1138, -818,-1138},{ -389, -858,-1218, -898,-1218},{ -379, -848,-1208, -888,-1208}},
+/* GC.C..GU */
+{{  DEF, -719, -309, -309, -389},{ -649,-1318, -908, -908, -988},{ -289, -958, -548, -548, -628},{ -739,-1408, -998, -998,-1078},{ -379,-1048, -638, -638, -718}},
+/* GC.G..GU */
+{{  DEF, -709, -739, -619, -739},{ -649,-1308,-1338,-1218,-1338},{ -289, -948, -978, -858, -978},{ -739,-1398,-1428,-1308,-1428},{ -379,-1038,-1068, -948,-1068}},
+/* GC.U..GU */
+{{  DEF, -499, -499, -499, -569},{ -649,-1098,-1098,-1098,-1168},{ -289, -738, -738, -738, -808},{ -739,-1188,-1188,-1188,-1258},{ -379, -828, -828, -828, -898}}
+},
+{
+/* GC.@..UG */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GC.A..UG */
+{{  DEF, -519, -879, -559, -879},{ -769,-1238,-1598,-1278,-1598},{ -529, -998,-1358,-1038,-1358},{ -709,-1178,-1538,-1218,-1538},{ -599,-1068,-1428,-1108,-1428}},
+/* GC.C..UG */
+{{  DEF, -719, -309, -309, -389},{ -839,-1508,-1098,-1098,-1178},{ -529,-1198, -788, -788, -868},{ -859,-1528,-1118,-1118,-1198},{ -489,-1158, -748, -748, -828}},
+/* GC.G..UG */
+{{  DEF, -709, -739, -619, -739},{-1009,-1668,-1698,-1578,-1698},{ -409,-1068,-1098, -978,-1098},{ -969,-1628,-1658,-1538,-1658},{ -599,-1258,-1288,-1168,-1288}},
+/* GC.U..UG */
+{{  DEF, -499, -499, -499, -569},{ -859,-1308,-1308,-1308,-1378},{ -529, -978, -978, -978,-1048},{ -859,-1308,-1308,-1308,-1378},{ -409, -858, -858, -858, -928}}
+},
+{
+/* GC.@..AU */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GC.A..AU */
+{{  DEF, -519, -879, -559, -879},{ -479, -948,-1308, -988,-1308},{ -309, -778,-1138, -818,-1138},{ -389, -858,-1218, -898,-1218},{ -379, -848,-1208, -888,-1208}},
+/* GC.C..AU */
+{{  DEF, -719, -309, -309, -389},{ -649,-1318, -908, -908, -988},{ -289, -958, -548, -548, -628},{ -739,-1408, -998, -998,-1078},{ -379,-1048, -638, -638, -718}},
+/* GC.G..AU */
+{{  DEF, -709, -739, -619, -739},{ -649,-1308,-1338,-1218,-1338},{ -289, -948, -978, -858, -978},{ -739,-1398,-1428,-1308,-1428},{ -379,-1038,-1068, -948,-1068}},
+/* GC.U..AU */
+{{  DEF, -499, -499, -499, -569},{ -649,-1098,-1098,-1098,-1168},{ -289, -738, -738, -738, -808},{ -739,-1188,-1188,-1188,-1258},{ -379, -828, -828, -828, -898}}
+},
+{
+/* GC.@..UA */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GC.A..UA */
+{{  DEF, -519, -879, -559, -879},{ -449, -918,-1278, -958,-1278},{ -479, -948,-1308, -988,-1308},{ -429, -898,-1258, -938,-1258},{ -329, -798,-1158, -838,-1158}},
+/* GC.C..UA */
+{{  DEF, -719, -309, -309, -389},{ -679,-1348, -938, -938,-1018},{ -559,-1228, -818, -818, -898},{ -729,-1398, -988, -988,-1068},{ -189, -858, -448, -448, -528}},
+/* GC.G..UA */
+{{  DEF, -709, -739, -619, -739},{ -939,-1598,-1628,-1508,-1628},{ -249, -908, -938, -818, -938},{ -939,-1598,-1628,-1508,-1628},{ -329, -988,-1018, -898,-1018}},
+/* GC.U..UA */
+{{  DEF, -499, -499, -499, -569},{ -639,-1088,-1088,-1088,-1158},{ -229, -678, -678, -678, -748},{ -729,-1178,-1178,-1178,-1248},{ -190, -639, -639, -639, -709}}
+},
+{
+/* GC.@.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GC.A.. @ */
+{{ -100, -569, -929, -609, -929},{ -100, -569, -929, -609, -929},{ -100, -569, -929, -609, -929},{ -100, -569, -929, -609, -929},{ -100, -569, -929, -609, -929}},
+/* GC.C.. @ */
+{{ -100, -769, -359, -359, -439},{ -100, -769, -359, -359, -439},{ -100, -769, -359, -359, -439},{ -100, -769, -359, -359, -439},{ -100, -769, -359, -359, -439}},
+/* GC.G.. @ */
+{{ -100, -759, -789, -669, -789},{ -100, -759, -789, -669, -789},{ -100, -759, -789, -669, -789},{ -100, -759, -789, -669, -789},{ -100, -759, -789, -669, -789}},
+/* GC.U.. @ */
+{{ -100, -549, -549, -549, -619},{ -100, -549, -549, -549, -619},{ -100, -549, -549, -549, -619},{ -100, -549, -549, -549, -619},{ -100, -549, -549, -549, -619}}
+}
+},
+{ /* noPair */ {{{0}}},
+{
+/* GU.@..CG */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GU.A..CG */
+{{  DEF, -429, -599, -599, -599},{-1079,-1458,-1628,-1628,-1628},{ -569, -948,-1118,-1118,-1118},{ -989,-1368,-1538,-1538,-1538},{ -859,-1238,-1408,-1408,-1408}},
+/* GU.C..CG */
+{{  DEF, -259, -239, -239, -239},{ -999,-1208,-1188,-1188,-1188},{ -499, -708, -688, -688, -688},{ -989,-1198,-1178,-1178,-1178},{ -789, -998, -978, -978, -978}},
+/* GU.G..CG */
+{{  DEF, -339, -689, -689, -689},{-1079,-1368,-1718,-1718,-1718},{ -569, -858,-1208,-1208,-1208},{ -989,-1278,-1628,-1628,-1628},{ -859,-1148,-1498,-1498,-1498}},
+/* GU.U..CG */
+{{  DEF, -329, -329, -329, -329},{-1079,-1358,-1358,-1358,-1358},{ -719, -998, -998, -998, -998},{ -989,-1268,-1268,-1268,-1268},{ -909,-1188,-1188,-1188,-1188}}
+},
+{
+/* GU.@..GC */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GU.A..GC */
+{{  DEF, -429, -599, -599, -599},{ -569, -948,-1118,-1118,-1118},{ -769,-1148,-1318,-1318,-1318},{ -759,-1138,-1308,-1308,-1308},{ -549, -928,-1098,-1098,-1098}},
+/* GU.C..GC */
+{{  DEF, -259, -239, -239, -239},{ -929,-1138,-1118,-1118,-1118},{ -359, -568, -548, -548, -548},{ -789, -998, -978, -978, -978},{ -549, -758, -738, -738, -738}},
+/* GU.G..GC */
+{{  DEF, -339, -689, -689, -689},{ -609, -898,-1248,-1248,-1248},{ -359, -648, -998, -998, -998},{ -669, -958,-1308,-1308,-1308},{ -549, -838,-1188,-1188,-1188}},
+/* GU.U..GC */
+{{  DEF, -329, -329, -329, -329},{ -929,-1208,-1208,-1208,-1208},{ -439, -718, -718, -718, -718},{ -789,-1068,-1068,-1068,-1068},{ -619, -898, -898, -898, -898}}
+},
+{
+/* GU.@..GU */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GU.A..GU */
+{{  DEF, -429, -599, -599, -599},{ -479, -858,-1028,-1028,-1028},{ -309, -688, -858, -858, -858},{ -389, -768, -938, -938, -938},{ -379, -758, -928, -928, -928}},
+/* GU.C..GU */
+{{  DEF, -259, -239, -239, -239},{ -649, -858, -838, -838, -838},{ -289, -498, -478, -478, -478},{ -739, -948, -928, -928, -928},{ -379, -588, -568, -568, -568}},
+/* GU.G..GU */
+{{  DEF, -339, -689, -689, -689},{ -649, -938,-1288,-1288,-1288},{ -289, -578, -928, -928, -928},{ -739,-1028,-1378,-1378,-1378},{ -379, -668,-1018,-1018,-1018}},
+/* GU.U..GU */
+{{  DEF, -329, -329, -329, -329},{ -649, -928, -928, -928, -928},{ -289, -568, -568, -568, -568},{ -739,-1018,-1018,-1018,-1018},{ -379, -658, -658, -658, -658}}
+},
+{
+/* GU.@..UG */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GU.A..UG */
+{{  DEF, -429, -599, -599, -599},{ -769,-1148,-1318,-1318,-1318},{ -529, -908,-1078,-1078,-1078},{ -709,-1088,-1258,-1258,-1258},{ -599, -978,-1148,-1148,-1148}},
+/* GU.C..UG */
+{{  DEF, -259, -239, -239, -239},{ -839,-1048,-1028,-1028,-1028},{ -529, -738, -718, -718, -718},{ -859,-1068,-1048,-1048,-1048},{ -489, -698, -678, -678, -678}},
+/* GU.G..UG */
+{{  DEF, -339, -689, -689, -689},{-1009,-1298,-1648,-1648,-1648},{ -409, -698,-1048,-1048,-1048},{ -969,-1258,-1608,-1608,-1608},{ -599, -888,-1238,-1238,-1238}},
+/* GU.U..UG */
+{{  DEF, -329, -329, -329, -329},{ -859,-1138,-1138,-1138,-1138},{ -529, -808, -808, -808, -808},{ -859,-1138,-1138,-1138,-1138},{ -409, -688, -688, -688, -688}}
+},
+{
+/* GU.@..AU */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GU.A..AU */
+{{  DEF, -429, -599, -599, -599},{ -479, -858,-1028,-1028,-1028},{ -309, -688, -858, -858, -858},{ -389, -768, -938, -938, -938},{ -379, -758, -928, -928, -928}},
+/* GU.C..AU */
+{{  DEF, -259, -239, -239, -239},{ -649, -858, -838, -838, -838},{ -289, -498, -478, -478, -478},{ -739, -948, -928, -928, -928},{ -379, -588, -568, -568, -568}},
+/* GU.G..AU */
+{{  DEF, -339, -689, -689, -689},{ -649, -938,-1288,-1288,-1288},{ -289, -578, -928, -928, -928},{ -739,-1028,-1378,-1378,-1378},{ -379, -668,-1018,-1018,-1018}},
+/* GU.U..AU */
+{{  DEF, -329, -329, -329, -329},{ -649, -928, -928, -928, -928},{ -289, -568, -568, -568, -568},{ -739,-1018,-1018,-1018,-1018},{ -379, -658, -658, -658, -658}}
+},
+{
+/* GU.@..UA */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GU.A..UA */
+{{  DEF, -429, -599, -599, -599},{ -449, -828, -998, -998, -998},{ -479, -858,-1028,-1028,-1028},{ -429, -808, -978, -978, -978},{ -329, -708, -878, -878, -878}},
+/* GU.C..UA */
+{{  DEF, -259, -239, -239, -239},{ -679, -888, -868, -868, -868},{ -559, -768, -748, -748, -748},{ -729, -938, -918, -918, -918},{ -189, -398, -378, -378, -378}},
+/* GU.G..UA */
+{{  DEF, -339, -689, -689, -689},{ -939,-1228,-1578,-1578,-1578},{ -249, -538, -888, -888, -888},{ -939,-1228,-1578,-1578,-1578},{ -329, -618, -968, -968, -968}},
+/* GU.U..UA */
+{{  DEF, -329, -329, -329, -329},{ -639, -918, -918, -918, -918},{ -229, -508, -508, -508, -508},{ -729,-1008,-1008,-1008,-1008},{ -190, -469, -469, -469, -469}}
+},
+{
+/* GU.@.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GU.A.. @ */
+{{ -100, -479, -649, -649, -649},{ -100, -479, -649, -649, -649},{ -100, -479, -649, -649, -649},{ -100, -479, -649, -649, -649},{ -100, -479, -649, -649, -649}},
+/* GU.C.. @ */
+{{ -100, -309, -289, -289, -289},{ -100, -309, -289, -289, -289},{ -100, -309, -289, -289, -289},{ -100, -309, -289, -289, -289},{ -100, -309, -289, -289, -289}},
+/* GU.G.. @ */
+{{ -100, -389, -739, -739, -739},{ -100, -389, -739, -739, -739},{ -100, -389, -739, -739, -739},{ -100, -389, -739, -739, -739},{ -100, -389, -739, -739, -739}},
+/* GU.U.. @ */
+{{ -100, -379, -379, -379, -379},{ -100, -379, -379, -379, -379},{ -100, -379, -379, -379, -379},{ -100, -379, -379, -379, -379},{ -100, -379, -379, -379, -379}}
+}
+},
+{ /* noPair */ {{{0}}},
+{
+/* UG.@..CG */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UG.A..CG */
+{{  DEF, -719, -789, -959, -809},{-1079,-1748,-1818,-1988,-1838},{ -569,-1238,-1308,-1478,-1328},{ -989,-1658,-1728,-1898,-1748},{ -859,-1528,-1598,-1768,-1618}},
+/* UG.C..CG */
+{{  DEF, -479, -479, -359, -479},{ -999,-1428,-1428,-1308,-1428},{ -499, -928, -928, -808, -928},{ -989,-1418,-1418,-1298,-1418},{ -789,-1218,-1218,-1098,-1218}},
+/* UG.G..CG */
+{{  DEF, -659, -809, -919, -809},{-1079,-1688,-1838,-1948,-1838},{ -569,-1178,-1328,-1438,-1328},{ -989,-1598,-1748,-1858,-1748},{ -859,-1468,-1618,-1728,-1618}},
+/* UG.U..CG */
+{{  DEF, -549, -439, -549, -359},{-1079,-1578,-1468,-1578,-1388},{ -719,-1218,-1108,-1218,-1028},{ -989,-1488,-1378,-1488,-1298},{ -909,-1408,-1298,-1408,-1218}}
+},
+{
+/* UG.@..GC */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UG.A..GC */
+{{  DEF, -719, -789, -959, -809},{ -569,-1238,-1308,-1478,-1328},{ -769,-1438,-1508,-1678,-1528},{ -759,-1428,-1498,-1668,-1518},{ -549,-1218,-1288,-1458,-1308}},
+/* UG.C..GC */
+{{  DEF, -479, -479, -359, -479},{ -929,-1358,-1358,-1238,-1358},{ -359, -788, -788, -668, -788},{ -789,-1218,-1218,-1098,-1218},{ -549, -978, -978, -858, -978}},
+/* UG.G..GC */
+{{  DEF, -659, -809, -919, -809},{ -609,-1218,-1368,-1478,-1368},{ -359, -968,-1118,-1228,-1118},{ -669,-1278,-1428,-1538,-1428},{ -549,-1158,-1308,-1418,-1308}},
+/* UG.U..GC */
+{{  DEF, -549, -439, -549, -359},{ -929,-1428,-1318,-1428,-1238},{ -439, -938, -828, -938, -748},{ -789,-1288,-1178,-1288,-1098},{ -619,-1118,-1008,-1118, -928}}
+},
+{
+/* UG.@..GU */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UG.A..GU */
+{{  DEF, -719, -789, -959, -809},{ -479,-1148,-1218,-1388,-1238},{ -309, -978,-1048,-1218,-1068},{ -389,-1058,-1128,-1298,-1148},{ -379,-1048,-1118,-1288,-1138}},
+/* UG.C..GU */
+{{  DEF, -479, -479, -359, -479},{ -649,-1078,-1078, -958,-1078},{ -289, -718, -718, -598, -718},{ -739,-1168,-1168,-1048,-1168},{ -379, -808, -808, -688, -808}},
+/* UG.G..GU */
+{{  DEF, -659, -809, -919, -809},{ -649,-1258,-1408,-1518,-1408},{ -289, -898,-1048,-1158,-1048},{ -739,-1348,-1498,-1608,-1498},{ -379, -988,-1138,-1248,-1138}},
+/* UG.U..GU */
+{{  DEF, -549, -439, -549, -359},{ -649,-1148,-1038,-1148, -958},{ -289, -788, -678, -788, -598},{ -739,-1238,-1128,-1238,-1048},{ -379, -878, -768, -878, -688}}
+},
+{
+/* UG.@..UG */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UG.A..UG */
+{{  DEF, -719, -789, -959, -809},{ -769,-1438,-1508,-1678,-1528},{ -529,-1198,-1268,-1438,-1288},{ -709,-1378,-1448,-1618,-1468},{ -599,-1268,-1338,-1508,-1358}},
+/* UG.C..UG */
+{{  DEF, -479, -479, -359, -479},{ -839,-1268,-1268,-1148,-1268},{ -529, -958, -958, -838, -958},{ -859,-1288,-1288,-1168,-1288},{ -489, -918, -918, -798, -918}},
+/* UG.G..UG */
+{{  DEF, -659, -809, -919, -809},{-1009,-1618,-1768,-1878,-1768},{ -409,-1018,-1168,-1278,-1168},{ -969,-1578,-1728,-1838,-1728},{ -599,-1208,-1358,-1468,-1358}},
+/* UG.U..UG */
+{{  DEF, -549, -439, -549, -359},{ -859,-1358,-1248,-1358,-1168},{ -529,-1028, -918,-1028, -838},{ -859,-1358,-1248,-1358,-1168},{ -409, -908, -798, -908, -718}}
+},
+{
+/* UG.@..AU */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UG.A..AU */
+{{  DEF, -719, -789, -959, -809},{ -479,-1148,-1218,-1388,-1238},{ -309, -978,-1048,-1218,-1068},{ -389,-1058,-1128,-1298,-1148},{ -379,-1048,-1118,-1288,-1138}},
+/* UG.C..AU */
+{{  DEF, -479, -479, -359, -479},{ -649,-1078,-1078, -958,-1078},{ -289, -718, -718, -598, -718},{ -739,-1168,-1168,-1048,-1168},{ -379, -808, -808, -688, -808}},
+/* UG.G..AU */
+{{  DEF, -659, -809, -919, -809},{ -649,-1258,-1408,-1518,-1408},{ -289, -898,-1048,-1158,-1048},{ -739,-1348,-1498,-1608,-1498},{ -379, -988,-1138,-1248,-1138}},
+/* UG.U..AU */
+{{  DEF, -549, -439, -549, -359},{ -649,-1148,-1038,-1148, -958},{ -289, -788, -678, -788, -598},{ -739,-1238,-1128,-1238,-1048},{ -379, -878, -768, -878, -688}}
+},
+{
+/* UG.@..UA */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UG.A..UA */
+{{  DEF, -719, -789, -959, -809},{ -449,-1118,-1188,-1358,-1208},{ -479,-1148,-1218,-1388,-1238},{ -429,-1098,-1168,-1338,-1188},{ -329, -998,-1068,-1238,-1088}},
+/* UG.C..UA */
+{{  DEF, -479, -479, -359, -479},{ -679,-1108,-1108, -988,-1108},{ -559, -988, -988, -868, -988},{ -729,-1158,-1158,-1038,-1158},{ -189, -618, -618, -498, -618}},
+/* UG.G..UA */
+{{  DEF, -659, -809, -919, -809},{ -939,-1548,-1698,-1808,-1698},{ -249, -858,-1008,-1118,-1008},{ -939,-1548,-1698,-1808,-1698},{ -329, -938,-1088,-1198,-1088}},
+/* UG.U..UA */
+{{  DEF, -549, -439, -549, -359},{ -639,-1138,-1028,-1138, -948},{ -229, -728, -618, -728, -538},{ -729,-1228,-1118,-1228,-1038},{ -190, -689, -579, -689, -499}}
+},
+{
+/* UG.@.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UG.A.. @ */
+{{ -100, -769, -839,-1009, -859},{ -100, -769, -839,-1009, -859},{ -100, -769, -839,-1009, -859},{ -100, -769, -839,-1009, -859},{ -100, -769, -839,-1009, -859}},
+/* UG.C.. @ */
+{{ -100, -529, -529, -409, -529},{ -100, -529, -529, -409, -529},{ -100, -529, -529, -409, -529},{ -100, -529, -529, -409, -529},{ -100, -529, -529, -409, -529}},
+/* UG.G.. @ */
+{{ -100, -709, -859, -969, -859},{ -100, -709, -859, -969, -859},{ -100, -709, -859, -969, -859},{ -100, -709, -859, -969, -859},{ -100, -709, -859, -969, -859}},
+/* UG.U.. @ */
+{{ -100, -599, -489, -599, -409},{ -100, -599, -489, -599, -409},{ -100, -599, -489, -599, -409},{ -100, -599, -489, -599, -409},{ -100, -599, -489, -599, -409}}
+}
+},
+{ /* noPair */ {{{0}}},
+{
+/* AU.@..CG */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* AU.A..CG */
+{{  DEF, -429, -599, -599, -599},{-1079,-1458,-1628,-1628,-1628},{ -569, -948,-1118,-1118,-1118},{ -989,-1368,-1538,-1538,-1538},{ -859,-1238,-1408,-1408,-1408}},
+/* AU.C..CG */
+{{  DEF, -259, -239, -239, -239},{ -999,-1208,-1188,-1188,-1188},{ -499, -708, -688, -688, -688},{ -989,-1198,-1178,-1178,-1178},{ -789, -998, -978, -978, -978}},
+/* AU.G..CG */
+{{  DEF, -339, -689, -689, -689},{-1079,-1368,-1718,-1718,-1718},{ -569, -858,-1208,-1208,-1208},{ -989,-1278,-1628,-1628,-1628},{ -859,-1148,-1498,-1498,-1498}},
+/* AU.U..CG */
+{{  DEF, -329, -329, -329, -329},{-1079,-1358,-1358,-1358,-1358},{ -719, -998, -998, -998, -998},{ -989,-1268,-1268,-1268,-1268},{ -909,-1188,-1188,-1188,-1188}}
+},
+{
+/* AU.@..GC */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* AU.A..GC */
+{{  DEF, -429, -599, -599, -599},{ -569, -948,-1118,-1118,-1118},{ -769,-1148,-1318,-1318,-1318},{ -759,-1138,-1308,-1308,-1308},{ -549, -928,-1098,-1098,-1098}},
+/* AU.C..GC */
+{{  DEF, -259, -239, -239, -239},{ -929,-1138,-1118,-1118,-1118},{ -359, -568, -548, -548, -548},{ -789, -998, -978, -978, -978},{ -549, -758, -738, -738, -738}},
+/* AU.G..GC */
+{{  DEF, -339, -689, -689, -689},{ -609, -898,-1248,-1248,-1248},{ -359, -648, -998, -998, -998},{ -669, -958,-1308,-1308,-1308},{ -549, -838,-1188,-1188,-1188}},
+/* AU.U..GC */
+{{  DEF, -329, -329, -329, -329},{ -929,-1208,-1208,-1208,-1208},{ -439, -718, -718, -718, -718},{ -789,-1068,-1068,-1068,-1068},{ -619, -898, -898, -898, -898}}
+},
+{
+/* AU.@..GU */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* AU.A..GU */
+{{  DEF, -429, -599, -599, -599},{ -479, -858,-1028,-1028,-1028},{ -309, -688, -858, -858, -858},{ -389, -768, -938, -938, -938},{ -379, -758, -928, -928, -928}},
+/* AU.C..GU */
+{{  DEF, -259, -239, -239, -239},{ -649, -858, -838, -838, -838},{ -289, -498, -478, -478, -478},{ -739, -948, -928, -928, -928},{ -379, -588, -568, -568, -568}},
+/* AU.G..GU */
+{{  DEF, -339, -689, -689, -689},{ -649, -938,-1288,-1288,-1288},{ -289, -578, -928, -928, -928},{ -739,-1028,-1378,-1378,-1378},{ -379, -668,-1018,-1018,-1018}},
+/* AU.U..GU */
+{{  DEF, -329, -329, -329, -329},{ -649, -928, -928, -928, -928},{ -289, -568, -568, -568, -568},{ -739,-1018,-1018,-1018,-1018},{ -379, -658, -658, -658, -658}}
+},
+{
+/* AU.@..UG */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* AU.A..UG */
+{{  DEF, -429, -599, -599, -599},{ -769,-1148,-1318,-1318,-1318},{ -529, -908,-1078,-1078,-1078},{ -709,-1088,-1258,-1258,-1258},{ -599, -978,-1148,-1148,-1148}},
+/* AU.C..UG */
+{{  DEF, -259, -239, -239, -239},{ -839,-1048,-1028,-1028,-1028},{ -529, -738, -718, -718, -718},{ -859,-1068,-1048,-1048,-1048},{ -489, -698, -678, -678, -678}},
+/* AU.G..UG */
+{{  DEF, -339, -689, -689, -689},{-1009,-1298,-1648,-1648,-1648},{ -409, -698,-1048,-1048,-1048},{ -969,-1258,-1608,-1608,-1608},{ -599, -888,-1238,-1238,-1238}},
+/* AU.U..UG */
+{{  DEF, -329, -329, -329, -329},{ -859,-1138,-1138,-1138,-1138},{ -529, -808, -808, -808, -808},{ -859,-1138,-1138,-1138,-1138},{ -409, -688, -688, -688, -688}}
+},
+{
+/* AU.@..AU */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* AU.A..AU */
+{{  DEF, -429, -599, -599, -599},{ -479, -858,-1028,-1028,-1028},{ -309, -688, -858, -858, -858},{ -389, -768, -938, -938, -938},{ -379, -758, -928, -928, -928}},
+/* AU.C..AU */
+{{  DEF, -259, -239, -239, -239},{ -649, -858, -838, -838, -838},{ -289, -498, -478, -478, -478},{ -739, -948, -928, -928, -928},{ -379, -588, -568, -568, -568}},
+/* AU.G..AU */
+{{  DEF, -339, -689, -689, -689},{ -649, -938,-1288,-1288,-1288},{ -289, -578, -928, -928, -928},{ -739,-1028,-1378,-1378,-1378},{ -379, -668,-1018,-1018,-1018}},
+/* AU.U..AU */
+{{  DEF, -329, -329, -329, -329},{ -649, -928, -928, -928, -928},{ -289, -568, -568, -568, -568},{ -739,-1018,-1018,-1018,-1018},{ -379, -658, -658, -658, -658}}
+},
+{
+/* AU.@..UA */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* AU.A..UA */
+{{  DEF, -429, -599, -599, -599},{ -449, -828, -998, -998, -998},{ -479, -858,-1028,-1028,-1028},{ -429, -808, -978, -978, -978},{ -329, -708, -878, -878, -878}},
+/* AU.C..UA */
+{{  DEF, -259, -239, -239, -239},{ -679, -888, -868, -868, -868},{ -559, -768, -748, -748, -748},{ -729, -938, -918, -918, -918},{ -189, -398, -378, -378, -378}},
+/* AU.G..UA */
+{{  DEF, -339, -689, -689, -689},{ -939,-1228,-1578,-1578,-1578},{ -249, -538, -888, -888, -888},{ -939,-1228,-1578,-1578,-1578},{ -329, -618, -968, -968, -968}},
+/* AU.U..UA */
+{{  DEF, -329, -329, -329, -329},{ -639, -918, -918, -918, -918},{ -229, -508, -508, -508, -508},{ -729,-1008,-1008,-1008,-1008},{ -190, -469, -469, -469, -469}}
+},
+{
+/* AU.@.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* AU.A.. @ */
+{{ -100, -479, -649, -649, -649},{ -100, -479, -649, -649, -649},{ -100, -479, -649, -649, -649},{ -100, -479, -649, -649, -649},{ -100, -479, -649, -649, -649}},
+/* AU.C.. @ */
+{{ -100, -309, -289, -289, -289},{ -100, -309, -289, -289, -289},{ -100, -309, -289, -289, -289},{ -100, -309, -289, -289, -289},{ -100, -309, -289, -289, -289}},
+/* AU.G.. @ */
+{{ -100, -389, -739, -739, -739},{ -100, -389, -739, -739, -739},{ -100, -389, -739, -739, -739},{ -100, -389, -739, -739, -739},{ -100, -389, -739, -739, -739}},
+/* AU.U.. @ */
+{{ -100, -379, -379, -379, -379},{ -100, -379, -379, -379, -379},{ -100, -379, -379, -379, -379},{ -100, -379, -379, -379, -379},{ -100, -379, -379, -379, -379}}
+}
+},
+{ /* noPair */ {{{0}}},
+{
+/* UA.@..CG */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UA.A..CG */
+{{  DEF, -399, -629, -889, -589},{-1079,-1428,-1658,-1918,-1618},{ -569, -918,-1148,-1408,-1108},{ -989,-1338,-1568,-1828,-1528},{ -859,-1208,-1438,-1698,-1398}},
+/* UA.C..CG */
+{{  DEF, -429, -509, -199, -179},{ -999,-1378,-1458,-1148,-1128},{ -499, -878, -958, -648, -628},{ -989,-1368,-1448,-1138,-1118},{ -789,-1168,-1248, -938, -918}},
+/* UA.G..CG */
+{{  DEF, -379, -679, -889, -679},{-1079,-1408,-1708,-1918,-1708},{ -569, -898,-1198,-1408,-1198},{ -989,-1318,-1618,-1828,-1618},{ -859,-1188,-1488,-1698,-1488}},
+/* UA.U..CG */
+{{  DEF, -279, -139, -279, -140},{-1079,-1308,-1168,-1308,-1169},{ -719, -948, -808, -948, -809},{ -989,-1218,-1078,-1218,-1079},{ -909,-1138, -998,-1138, -999}}
+},
+{
+/* UA.@..GC */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UA.A..GC */
+{{  DEF, -399, -629, -889, -589},{ -569, -918,-1148,-1408,-1108},{ -769,-1118,-1348,-1608,-1308},{ -759,-1108,-1338,-1598,-1298},{ -549, -898,-1128,-1388,-1088}},
+/* UA.C..GC */
+{{  DEF, -429, -509, -199, -179},{ -929,-1308,-1388,-1078,-1058},{ -359, -738, -818, -508, -488},{ -789,-1168,-1248, -938, -918},{ -549, -928,-1008, -698, -678}},
+/* UA.G..GC */
+{{  DEF, -379, -679, -889, -679},{ -609, -938,-1238,-1448,-1238},{ -359, -688, -988,-1198, -988},{ -669, -998,-1298,-1508,-1298},{ -549, -878,-1178,-1388,-1178}},
+/* UA.U..GC */
+{{  DEF, -279, -139, -279, -140},{ -929,-1158,-1018,-1158,-1019},{ -439, -668, -528, -668, -529},{ -789,-1018, -878,-1018, -879},{ -619, -848, -708, -848, -709}}
+},
+{
+/* UA.@..GU */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UA.A..GU */
+{{  DEF, -399, -629, -889, -589},{ -479, -828,-1058,-1318,-1018},{ -309, -658, -888,-1148, -848},{ -389, -738, -968,-1228, -928},{ -379, -728, -958,-1218, -918}},
+/* UA.C..GU */
+{{  DEF, -429, -509, -199, -179},{ -649,-1028,-1108, -798, -778},{ -289, -668, -748, -438, -418},{ -739,-1118,-1198, -888, -868},{ -379, -758, -838, -528, -508}},
+/* UA.G..GU */
+{{  DEF, -379, -679, -889, -679},{ -649, -978,-1278,-1488,-1278},{ -289, -618, -918,-1128, -918},{ -739,-1068,-1368,-1578,-1368},{ -379, -708,-1008,-1218,-1008}},
+/* UA.U..GU */
+{{  DEF, -279, -139, -279, -140},{ -649, -878, -738, -878, -739},{ -289, -518, -378, -518, -379},{ -739, -968, -828, -968, -829},{ -379, -608, -468, -608, -469}}
+},
+{
+/* UA.@..UG */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UA.A..UG */
+{{  DEF, -399, -629, -889, -589},{ -769,-1118,-1348,-1608,-1308},{ -529, -878,-1108,-1368,-1068},{ -709,-1058,-1288,-1548,-1248},{ -599, -948,-1178,-1438,-1138}},
+/* UA.C..UG */
+{{  DEF, -429, -509, -199, -179},{ -839,-1218,-1298, -988, -968},{ -529, -908, -988, -678, -658},{ -859,-1238,-1318,-1008, -988},{ -489, -868, -948, -638, -618}},
+/* UA.G..UG */
+{{  DEF, -379, -679, -889, -679},{-1009,-1338,-1638,-1848,-1638},{ -409, -738,-1038,-1248,-1038},{ -969,-1298,-1598,-1808,-1598},{ -599, -928,-1228,-1438,-1228}},
+/* UA.U..UG */
+{{  DEF, -279, -139, -279, -140},{ -859,-1088, -948,-1088, -949},{ -529, -758, -618, -758, -619},{ -859,-1088, -948,-1088, -949},{ -409, -638, -498, -638, -499}}
+},
+{
+/* UA.@..AU */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UA.A..AU */
+{{  DEF, -399, -629, -889, -589},{ -479, -828,-1058,-1318,-1018},{ -309, -658, -888,-1148, -848},{ -389, -738, -968,-1228, -928},{ -379, -728, -958,-1218, -918}},
+/* UA.C..AU */
+{{  DEF, -429, -509, -199, -179},{ -649,-1028,-1108, -798, -778},{ -289, -668, -748, -438, -418},{ -739,-1118,-1198, -888, -868},{ -379, -758, -838, -528, -508}},
+/* UA.G..AU */
+{{  DEF, -379, -679, -889, -679},{ -649, -978,-1278,-1488,-1278},{ -289, -618, -918,-1128, -918},{ -739,-1068,-1368,-1578,-1368},{ -379, -708,-1008,-1218,-1008}},
+/* UA.U..AU */
+{{  DEF, -279, -139, -279, -140},{ -649, -878, -738, -878, -739},{ -289, -518, -378, -518, -379},{ -739, -968, -828, -968, -829},{ -379, -608, -468, -608, -469}}
+},
+{
+/* UA.@..UA */
+{{    0,    0,    0,    0,    0},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UA.A..UA */
+{{  DEF, -399, -629, -889, -589},{ -449, -798,-1028,-1288, -988},{ -479, -828,-1058,-1318,-1018},{ -429, -778,-1008,-1268, -968},{ -329, -678, -908,-1168, -868}},
+/* UA.C..UA */
+{{  DEF, -429, -509, -199, -179},{ -679,-1058,-1138, -828, -808},{ -559, -938,-1018, -708, -688},{ -729,-1108,-1188, -878, -858},{ -189, -568, -648, -338, -318}},
+/* UA.G..UA */
+{{  DEF, -379, -679, -889, -679},{ -939,-1268,-1568,-1778,-1568},{ -249, -578, -878,-1088, -878},{ -939,-1268,-1568,-1778,-1568},{ -329, -658, -958,-1168, -958}},
+/* UA.U..UA */
+{{  DEF, -279, -139, -279, -140},{ -639, -868, -728, -868, -729},{ -229, -458, -318, -458, -319},{ -729, -958, -818, -958, -819},{ -190, -419, -279, -419, -280}}
+},
+{
+/* UA.@.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF},{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UA.A.. @ */
+{{ -100, -449, -679, -939, -639},{ -100, -449, -679, -939, -639},{ -100, -449, -679, -939, -639},{ -100, -449, -679, -939, -639},{ -100, -449, -679, -939, -639}},
+/* UA.C.. @ */
+{{ -100, -479, -559, -249, -229},{ -100, -479, -559, -249, -229},{ -100, -479, -559, -249, -229},{ -100, -479, -559, -249, -229},{ -100, -479, -559, -249, -229}},
+/* UA.G.. @ */
+{{ -100, -429, -729, -939, -729},{ -100, -429, -729, -939, -729},{ -100, -429, -729, -939, -729},{ -100, -429, -729, -939, -729},{ -100, -429, -729, -939, -729}},
+/* UA.U.. @ */
+{{ -100, -329, -189, -329, -190},{ -100, -329, -189, -329, -190},{ -100, -329, -189, -329, -190},{ -100, -329, -189, -329, -190},{ -100, -329, -189, -329, -190}}
+}
+},
+{ /* noPair */ {{{0}}},
+{
+/*  @.@..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100}},
+/*  @.A..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{-1079,-1079,-1079,-1079,-1079},{ -569, -569, -569, -569, -569},{ -989, -989, -989, -989, -989},{ -859, -859, -859, -859, -859}},
+/*  @.C..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -999, -999, -999, -999, -999},{ -499, -499, -499, -499, -499},{ -989, -989, -989, -989, -989},{ -789, -789, -789, -789, -789}},
+/*  @.G..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{-1079,-1079,-1079,-1079,-1079},{ -569, -569, -569, -569, -569},{ -989, -989, -989, -989, -989},{ -859, -859, -859, -859, -859}},
+/*  @.U..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{-1079,-1079,-1079,-1079,-1079},{ -719, -719, -719, -719, -719},{ -989, -989, -989, -989, -989},{ -909, -909, -909, -909, -909}}
+},
+{
+/*  @.@..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100}},
+/*  @.A..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -569, -569, -569, -569, -569},{ -769, -769, -769, -769, -769},{ -759, -759, -759, -759, -759},{ -549, -549, -549, -549, -549}},
+/*  @.C..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -929, -929, -929, -929, -929},{ -359, -359, -359, -359, -359},{ -789, -789, -789, -789, -789},{ -549, -549, -549, -549, -549}},
+/*  @.G..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -609, -609, -609, -609, -609},{ -359, -359, -359, -359, -359},{ -669, -669, -669, -669, -669},{ -549, -549, -549, -549, -549}},
+/*  @.U..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -929, -929, -929, -929, -929},{ -439, -439, -439, -439, -439},{ -789, -789, -789, -789, -789},{ -619, -619, -619, -619, -619}}
+},
+{
+/*  @.@..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100}},
+/*  @.A..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -479, -479, -479, -479, -479},{ -309, -309, -309, -309, -309},{ -389, -389, -389, -389, -389},{ -379, -379, -379, -379, -379}},
+/*  @.C..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -649, -649, -649, -649, -649},{ -289, -289, -289, -289, -289},{ -739, -739, -739, -739, -739},{ -379, -379, -379, -379, -379}},
+/*  @.G..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -649, -649, -649, -649, -649},{ -289, -289, -289, -289, -289},{ -739, -739, -739, -739, -739},{ -379, -379, -379, -379, -379}},
+/*  @.U..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -649, -649, -649, -649, -649},{ -289, -289, -289, -289, -289},{ -739, -739, -739, -739, -739},{ -379, -379, -379, -379, -379}}
+},
+{
+/*  @.@..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100}},
+/*  @.A..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -769, -769, -769, -769, -769},{ -529, -529, -529, -529, -529},{ -709, -709, -709, -709, -709},{ -599, -599, -599, -599, -599}},
+/*  @.C..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -839, -839, -839, -839, -839},{ -529, -529, -529, -529, -529},{ -859, -859, -859, -859, -859},{ -489, -489, -489, -489, -489}},
+/*  @.G..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{-1009,-1009,-1009,-1009,-1009},{ -409, -409, -409, -409, -409},{ -969, -969, -969, -969, -969},{ -599, -599, -599, -599, -599}},
+/*  @.U..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -859, -859, -859, -859, -859},{ -529, -529, -529, -529, -529},{ -859, -859, -859, -859, -859},{ -409, -409, -409, -409, -409}}
+},
+{
+/*  @.@..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100}},
+/*  @.A..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -479, -479, -479, -479, -479},{ -309, -309, -309, -309, -309},{ -389, -389, -389, -389, -389},{ -379, -379, -379, -379, -379}},
+/*  @.C..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -649, -649, -649, -649, -649},{ -289, -289, -289, -289, -289},{ -739, -739, -739, -739, -739},{ -379, -379, -379, -379, -379}},
+/*  @.G..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -649, -649, -649, -649, -649},{ -289, -289, -289, -289, -289},{ -739, -739, -739, -739, -739},{ -379, -379, -379, -379, -379}},
+/*  @.U..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -649, -649, -649, -649, -649},{ -289, -289, -289, -289, -289},{ -739, -739, -739, -739, -739},{ -379, -379, -379, -379, -379}}
+},
+{
+/*  @.@..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100}},
+/*  @.A..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -449, -449, -449, -449, -449},{ -479, -479, -479, -479, -479},{ -429, -429, -429, -429, -429},{ -329, -329, -329, -329, -329}},
+/*  @.C..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -679, -679, -679, -679, -679},{ -559, -559, -559, -559, -559},{ -729, -729, -729, -729, -729},{ -189, -189, -189, -189, -189}},
+/*  @.G..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -939, -939, -939, -939, -939},{ -249, -249, -249, -249, -249},{ -939, -939, -939, -939, -939},{ -329, -329, -329, -329, -329}},
+/*  @.U..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},{ -639, -639, -639, -639, -639},{ -229, -229, -229, -229, -229},{ -729, -729, -729, -729, -729},{ -190, -190, -190, -190, -190}}
+},
+{
+/*  @.@.. @ */
+{{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100}},
+/*  @.A.. @ */
+{{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100}},
+/*  @.C.. @ */
+{{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100}},
+/*  @.G.. @ */
+{{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100}},
+/*  @.U.. @ */
+{{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100},{ -100, -100, -100, -100, -100}}
+}
+}
+};
+
+PRIVATE int int22_37_184[NBPAIRS+1][NBPAIRS+1][5][5][5][5] = {
+/* noPair */ {{{{{0}}}}},
+{ /* noPair */ {{{{0}}}},
+/* CG....CG */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 130, 160,  30, 200},{ 340, 120, 150,  20, 200},{ 340,  30,  60, -70, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 160, 200,  60, 200},{ 340, 210, 180, 150, 200},{ 340, 200, 200, 200, 200},{ 340, 190, 170, 130, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  30,  60, -70, 200},{ 340, 200, 200, 200, 200},{ 340, 100, 140,   0, 200},{ 340, -40, -110, -60, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 190, 170, 130, 200},{ 340, 110,  40,  90, 200},{ 340, 140,  80, 130, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 120, 210, 200, 190},{ 340, 110, 140, 200, 120},{ 340,  20, 150, 200, 130},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 180, 200, 170},{ 340, 140, 170, 200, 150},{ 340, 200, 200, 200, 200},{ 340, 120, 150, 200, 140}},
+{{ 340, 340, 340, 340, 340},{ 340,  20, 150, 200, 130},{ 340, 200, 200, 200, 200},{ 340,  90, 180, 200, 170},{ 340, -150, -20, 200, -40}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 120, 150, 200, 140},{ 340,   0, 130, 200, 110},{ 340,  30,  60, 200,  50}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340,  30, 200, 100, 110},{ 340,  20, 200,  90,   0},{ 340, -70, 200,   0,  90},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  60, 200, 140,  40},{ 340, 150, 200, 180, 130},{ 340, 200, 200, 200, 200},{ 340, 130, 200, 170, 110}},
+{{ 340, 340, 340, 340, 340},{ 340, -70, 200,   0,  90},{ 340, 200, 200, 200, 200},{ 340,   0, 200,  80,  90},{ 340, -60, 200, -70, -260}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 130, 200, 170, 110},{ 340,  90, 200,  90, -110},{ 340, 130, 200, 120, 110}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 190, -40, 140},{ 340, 200, 120, -150,  30},{ 340, 200, 130, -60, 130},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 170, -110,  80},{ 340, 200, 150, -20,  60},{ 340, 200, 200, 200, 200},{ 340, 200, 140, -40,  50}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 130, -60, 130},{ 340, 200, 200, 200, 200},{ 340, 200, 170, -70, 120},{ 340, 200, -40, -420, -50}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 140, -40,  50},{ 340, 200, 110, -260, 110},{ 340, 200,  50, -50, -40}}
+}
+},
+/* CG....GC */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340,  50,  60,   0, 200},{ 340, 110, 150, -70, 200},{ 340, -30,  10, -160, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 110, 110, -100, 200},{ 340, 170, 150, -60, 200},{ 340, 200, 200, 200, 200},{ 340,  70,  50,  20, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  40,  50, -70, 200},{ 340, 200, 200, 200, 200},{ 340, 100, 140,   0, 200},{ 340,  10, -70, -80, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 180, 150, 120, 200},{ 340, -50, -60, -60, 200},{ 340, 150,   0,  90, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 130, 220, 200, 200},{ 340, 100, 130, 200, 120},{ 340, -70,  70, 200,  40},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 100, 190, 200, 110},{ 340, 100, 130, 200, 120},{ 340, 200, 200, 200, 200},{ 340,   0,  30, 200, 170}},
+{{ 340, 340, 340, 340, 340},{ 340,  70,  70, 200, 100},{ 340, 200, 200, 200, 200},{ 340,  90, 180, 200, 170},{ 340, -190, -30, 200, -70}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 110, 140, 200, 120},{ 340, -150, -20, 200, -30},{ 340, -20, -10, 200,  20}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, -20, 200, 110,  90},{ 340, -40, 200,  90,   0},{ 340, -170, 200, -90,  30},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  70, 200,  80, -10},{ 340, 110, 200, 150, 100},{ 340, 200, 200, 200, 200},{ 340,  20, 200,  50,   0}},
+{{ 340, 340, 340, 340, 340},{ 340, -50, 200, -20,  60},{ 340, 200, 200, 200, 200},{ 340,   0, 200,  80,  90},{ 340, -90, 200, -100, -300}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 120, 200, 150, 100},{ 340, -130, 200, -60, -240},{ 340,  90, 200, 110,  60}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, -10, 140},{ 340, 200, 120, -160,  30},{ 340, 200,  40, -160,  50},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 110, -160,  30},{ 340, 200, 120, -60,  30},{ 340, 200, 200, 200, 200},{ 340, 200,  20, -160,  10}},
+{{ 340, 340, 340, 340, 340},{ 340, 200,  50, -60, 140},{ 340, 200, 200, 200, 200},{ 340, 200, 170, -70, 120},{ 340, 200, -70, -440, -100}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 120, -50,  30},{ 340, 200, -10, -410,  10},{ 340, 200,  40, -100,  60}}
+}
+},
+/* CG....GU */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 240, 100, 200},{ 340, 180, 210,  80, 200},{ 340,  80, 110, -20, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 190, 220,  90, 200},{ 340, 230, 210, 170, 200},{ 340, 200, 200, 200, 200},{ 340, 230, 210, 170, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  80, 110, -20, 200},{ 340, 200, 200, 200, 200},{ 340, 130, 170,  30, 200},{ 340,  60,   0,  40, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 230, 210, 170, 200},{ 340, 160,  90, 140, 200},{ 340, 190, 130, 180, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 190, 280, 200, 270},{ 340, 170, 200, 200, 180},{ 340,  70, 200, 200, 180},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 180, 210, 200, 190},{ 340, 160, 190, 200, 180},{ 340, 200, 200, 200, 200},{ 340, 160, 190, 200, 180}},
+{{ 340, 340, 340, 340, 340},{ 340,  70, 200, 200, 180},{ 340, 200, 200, 200, 200},{ 340, 120, 210, 200, 200},{ 340, -50,  80, 200,  70}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 160, 190, 200, 180},{ 340,  50, 180, 200, 160},{ 340,  80, 110, 200, 100}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 100, 200, 180, 180},{ 340,  80, 200, 150,  60},{ 340, -20, 200,  50, 140},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  90, 200, 160,  70},{ 340, 170, 200, 210, 150},{ 340, 200, 200, 200, 200},{ 340, 170, 200, 210, 150}},
+{{ 340, 340, 340, 340, 340},{ 340, -20, 200,  50, 140},{ 340, 200, 200, 200, 200},{ 340,  30, 200, 110, 110},{ 340,  40, 200,  40, -160}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 170, 200, 210, 150},{ 340, 140, 200, 130, -60},{ 340, 180, 200, 170, 160}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 270,  30, 220},{ 340, 200, 180, -90,  90},{ 340, 200, 180, -10, 180},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 190, -80, 100},{ 340, 200, 180,   0,  90},{ 340, 200, 200, 200, 200},{ 340, 200, 180,   0,  90}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 180, -10, 180},{ 340, 200, 200, 200, 200},{ 340, 200, 200, -40, 150},{ 340, 200,  70, -310,  60}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 180,   0,  90},{ 340, 200, 160, -210, 160},{ 340, 200, 100,   0,  10}}
+}
+},
+/* CG....UG */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 240, 100, 200},{ 340, 160, 190,  60, 200},{ 340, 100, 130,   0, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 240, 100, 200},{ 340, 260, 240, 200, 200},{ 340, 200, 200, 200, 200},{ 340, 260, 240, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 100, 130,   0, 200},{ 340, 200, 200, 200, 200},{ 340, 140, 170,  40, 200},{ 340,  20, -40,   0, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 230, 210, 170, 200},{ 340, 150,  80, 130, 200},{ 340, 220, 150, 200, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 190, 280, 200, 270},{ 340, 150, 180, 200, 160},{ 340,  90, 220, 200, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 190, 220, 200, 210},{ 340, 190, 220, 200, 210},{ 340, 200, 200, 200, 200},{ 340, 190, 220, 200, 210}},
+{{ 340, 340, 340, 340, 340},{ 340,  90, 220, 200, 200},{ 340, 200, 200, 200, 200},{ 340, 130, 220, 200, 200},{ 340, -90,  40, 200,  30}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 160, 190, 200, 180},{ 340,  40, 170, 200, 150},{ 340, 110, 140, 200, 120}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 100, 200, 180, 180},{ 340,  60, 200, 130,  40},{ 340,   0, 200,  70, 160},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 100, 200, 180,  80},{ 340, 200, 200, 240, 180},{ 340, 200, 200, 200, 200},{ 340, 200, 200, 240, 180}},
+{{ 340, 340, 340, 340, 340},{ 340,   0, 200,  70, 160},{ 340, 200, 200, 200, 200},{ 340,  40, 200, 110, 120},{ 340,   0, 200,   0, -200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 170, 200, 210, 150},{ 340, 130, 200, 120, -70},{ 340, 200, 200, 190, 180}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 270,  30, 220},{ 340, 200, 160, -110,  70},{ 340, 200, 200,  10, 190},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 210, -70, 120},{ 340, 200, 210,  30, 120},{ 340, 200, 200, 200, 200},{ 340, 200, 210,  30, 120}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200,  10, 190},{ 340, 200, 200, 200, 200},{ 340, 200, 200, -30, 150},{ 340, 200,  30, -350,  20}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 180,   0,  90},{ 340, 200, 150, -220, 150},{ 340, 200, 120,  30,  30}}
+}
+},
+/* CG....AU */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 240, 100, 200},{ 340, 180, 210,  80, 200},{ 340,  80, 110, -20, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 190, 220,  90, 200},{ 340, 230, 210, 170, 200},{ 340, 200, 200, 200, 200},{ 340, 230, 210, 170, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  80, 110, -20, 200},{ 340, 200, 200, 200, 200},{ 340, 130, 170,  30, 200},{ 340,  60,   0,  40, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 230, 210, 170, 200},{ 340, 160,  90, 140, 200},{ 340, 190, 130, 180, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 190, 280, 200, 270},{ 340, 170, 200, 200, 180},{ 340,  70, 200, 200, 180},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 180, 210, 200, 190},{ 340, 160, 190, 200, 180},{ 340, 200, 200, 200, 200},{ 340, 160, 190, 200, 180}},
+{{ 340, 340, 340, 340, 340},{ 340,  70, 200, 200, 180},{ 340, 200, 200, 200, 200},{ 340, 120, 210, 200, 200},{ 340, -50,  80, 200,  70}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 160, 190, 200, 180},{ 340,  50, 180, 200, 160},{ 340,  80, 110, 200, 100}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 100, 200, 180, 180},{ 340,  80, 200, 150,  60},{ 340, -20, 200,  50, 140},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  90, 200, 160,  70},{ 340, 170, 200, 210, 150},{ 340, 200, 200, 200, 200},{ 340, 170, 200, 210, 150}},
+{{ 340, 340, 340, 340, 340},{ 340, -20, 200,  50, 140},{ 340, 200, 200, 200, 200},{ 340,  30, 200, 110, 110},{ 340,  40, 200,  40, -160}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 170, 200, 210, 150},{ 340, 140, 200, 130, -60},{ 340, 180, 200, 170, 160}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 270,  30, 220},{ 340, 200, 180, -90,  90},{ 340, 200, 180, -10, 180},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 190, -80, 100},{ 340, 200, 180,   0,  90},{ 340, 200, 200, 200, 200},{ 340, 200, 180,   0,  90}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 180, -10, 180},{ 340, 200, 200, 200, 200},{ 340, 200, 200, -40, 150},{ 340, 200,  70, -310,  60}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 180,   0,  90},{ 340, 200, 160, -210, 160},{ 340, 200, 100,   0,  10}}
+}
+},
+/* CG....UA */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 240, 100, 200},{ 340, 160, 190,  60, 200},{ 340, 100, 130,   0, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 240, 100, 200},{ 340, 260, 240, 200, 200},{ 340, 200, 200, 200, 200},{ 340, 260, 240, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 100, 130,   0, 200},{ 340, 200, 200, 200, 200},{ 340, 140, 170,  40, 200},{ 340,  20, -40,   0, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 230, 210, 170, 200},{ 340, 150,  80, 130, 200},{ 340, 220, 150, 200, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 190, 280, 200, 270},{ 340, 150, 180, 200, 160},{ 340,  90, 220, 200, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 190, 220, 200, 210},{ 340, 190, 220, 200, 210},{ 340, 200, 200, 200, 200},{ 340, 190, 220, 200, 210}},
+{{ 340, 340, 340, 340, 340},{ 340,  90, 220, 200, 200},{ 340, 200, 200, 200, 200},{ 340, 130, 220, 200, 200},{ 340, -90,  40, 200,  30}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 160, 190, 200, 180},{ 340,  40, 170, 200, 150},{ 340, 110, 140, 200, 120}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 100, 200, 180, 180},{ 340,  60, 200, 130,  40},{ 340,   0, 200,  70, 160},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 100, 200, 180,  80},{ 340, 200, 200, 240, 180},{ 340, 200, 200, 200, 200},{ 340, 200, 200, 240, 180}},
+{{ 340, 340, 340, 340, 340},{ 340,   0, 200,  70, 160},{ 340, 200, 200, 200, 200},{ 340,  40, 200, 110, 120},{ 340,   0, 200,   0, -200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 170, 200, 210, 150},{ 340, 130, 200, 120, -70},{ 340, 200, 200, 190, 180}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 270,  30, 220},{ 340, 200, 160, -110,  70},{ 340, 200, 200,  10, 190},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 210, -70, 120},{ 340, 200, 210,  30, 120},{ 340, 200, 200, 200, 200},{ 340, 200, 210,  30, 120}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200,  10, 190},{ 340, 200, 200, 200, 200},{ 340, 200, 200, -30, 150},{ 340, 200,  30, -350,  20}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 180,   0,  90},{ 340, 200, 150, -220, 150},{ 340, 200, 120,  30,  30}}
+}
+},
+/* CG....?? */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+}
+}
+},
+{ /* noPair */ {{{{0}}}},
+/* GC....CG */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340,  50, 110,  40, 200},{ 340, 130, 100,  70, 200},{ 340, -20,  70, -50, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  60, 110,  50, 200},{ 340, 220, 190,  70, 200},{ 340, 200, 200, 200, 200},{ 340, 200, 110,  50, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,   0, -100, -70, 200},{ 340, 200, 200, 200, 200},{ 340, 110,  80, -20, 200},{ 340, -10, -160, -60, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 110, 100, 200},{ 340,  90, -10,  60, 200},{ 340, 140,  30, 140, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 110, 170, 200, 180},{ 340, 100, 100, 200, 110},{ 340, -40, 110, 200, 120},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 150, 200, 150},{ 340, 130, 130, 200, 140},{ 340, 200, 200, 200, 200},{ 340, 120, 120, 200, 120}},
+{{ 340, 340, 340, 340, 340},{ 340, -70, -60, 200, 120},{ 340, 200, 200, 200, 200},{ 340,  90, 150, 200, 150},{ 340, -160, -60, 200, -50}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 120, 120, 200, 120},{ 340,   0, 100, 200, 100},{ 340,  30,  30, 200,  30}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, -30, 200, 100, -50},{ 340, -70, 200,  90, -150},{ 340, -170, 200,   0, -130},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  10, 200, 140, -60},{ 340,  70, 200, 180, -20},{ 340, 200, 200, 200, 200},{ 340,  40, 200, 170, -10}},
+{{ 340, 340, 340, 340, 340},{ 340, -160, 200,   0, -60},{ 340, 200, 200, 200, 200},{ 340, -90, 200,  80, -60},{ 340, -160, 200, -70, -410}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340,  40, 200, 170, -30},{ 340,  30, 200,  90, -240},{ 340,  50, 200, 120,  10}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200,  70,  10, 150},{ 340, 200,   0, -190, -20},{ 340, 200,  20, -90,  90},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200,  50, -70,   0},{ 340, 200,  30, -30, -10},{ 340, 200, 200, 200, 200},{ 340, 200,  20, -70,  40}},
+{{ 340, 340, 340, 340, 340},{ 340, 200,  20, -80,  90},{ 340, 200, 200, 200, 200},{ 340, 200,  50, -100, 110},{ 340, 200, -160, -440, -100}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 170, -70,  20},{ 340, 200,   0, -300,  60},{ 340, 200,  10, -100,  60}}
+}
+},
+/* GC....GC */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 120,  10, 200},{ 340, 120,  90, -10, 200},{ 340, -50, -80, -190, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 120,  90, -20, 200},{ 340, 180,  90,  90, 200},{ 340, 200, 200, 200, 200},{ 340,  80,   0, -10, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  10, -20, -130, 200},{ 340, 200, 200, 200, 200},{ 340, 110,  80, -20, 200},{ 340, -70, -200, -130, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 190, 100,  90, 200},{ 340, -30, -160, -90, 200},{ 340, 150,  20,  90, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 120, 180, 200, 190},{ 340, 100, 100, 200, 100},{ 340, -80,  20, 200,  30},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  90,  90, 200, 100},{ 340, 100, 100, 200, 100},{ 340, 200, 200, 200, 200},{ 340,   0,   0, 200,   0}},
+{{ 340, 340, 340, 340, 340},{ 340, -10,  90, 200,  90},{ 340, 200, 200, 200, 200},{ 340,  90, 150, 200, 150},{ 340, -190, -90, 200, -90}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 100, 100, 200, 110},{ 340, -150, -50, 200, -50},{ 340,  20,  20, 200,  30}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, -50, 200, 110, -30},{ 340, -80, 200,  90, -150},{ 340, -260, 200, -90, -150},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, -80, 200,  80, -160},{ 340,  20, 200, 150, -50},{ 340, 200, 200, 200, 200},{ 340, -80, 200,  50, -150}},
+{{ 340, 340, 340, 340, 340},{ 340, -190, 200, -20, -90},{ 340, 200, 200, 200, 200},{ 340, -90, 200,  80, -60},{ 340, -190, 200, -100, -450}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340,  30, 200, 150, -50},{ 340, -150, 200, -60, -410},{ 340,  30, 200, 110, -50}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200,  80, -70, 150},{ 340, 200,   0, -190,  20},{ 340, 200, -80, -190,  30},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200,   0, -200,  20},{ 340, 200,   0, -90,  20},{ 340, 200, 200, 200, 200},{ 340, 200, -100, -190, -70}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, -10, -130,  90},{ 340, 200, 200, 200, 200},{ 340, 200,  50, -100, 110},{ 340, 200, -190, -490, -90}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200,   0, -90,  30},{ 340, 200, -150, -450, -50},{ 340, 200, -70, -90, -50}}
+}
+},
+/* GC....GU */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 210, 180,  70, 200},{ 340, 190, 160,  50, 200},{ 340,  90,  60, -50, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 170,  60, 200},{ 340, 240, 150, 140, 200},{ 340, 200, 200, 200, 200},{ 340, 240, 150, 140, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  90,  60, -50, 200},{ 340, 200, 200, 200, 200},{ 340, 140, 110,   0, 200},{ 340,  70, -60,  10, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 240, 150, 140, 200},{ 340, 170,  40, 110, 200},{ 340, 200,  70, 150, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 190, 250, 200, 250},{ 340, 160, 160, 200, 170},{ 340,  60, 160, 200, 170},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 170, 200, 180},{ 340, 160, 160, 200, 160},{ 340, 200, 200, 200, 200},{ 340, 160, 160, 200, 160}},
+{{ 340, 340, 340, 340, 340},{ 340,  60, 160, 200, 170},{ 340, 200, 200, 200, 200},{ 340, 120, 180, 200, 180},{ 340, -50,  50, 200,  50}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 160, 160, 200, 160},{ 340,  40, 140, 200, 150},{ 340,  80,  80, 200,  80}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340,  10, 200, 180,  40},{ 340, -10, 200, 150, -90},{ 340, -110, 200,  50, -10},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,   0, 200, 160, -80},{ 340,  80, 200, 210,  10},{ 340, 200, 200, 200, 200},{ 340,  80, 200, 210,  10}},
+{{ 340, 340, 340, 340, 340},{ 340, -110, 200,  50, -10},{ 340, 200, 200, 200, 200},{ 340, -60, 200, 110, -30},{ 340, -50, 200,  40, -310}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340,  80, 200, 210,  10},{ 340,  50, 200, 130, -210},{ 340,  80, 200, 170,  10}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 150,   0, 210},{ 340, 200,  60, -130,  90},{ 340, 200,  70, -50, 170},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200,  70, -120, 100},{ 340, 200,  60, -30,  80},{ 340, 200, 200, 200, 200},{ 340, 200,  60, -30,  80}},
+{{ 340, 340, 340, 340, 340},{ 340, 200,  70, -50, 170},{ 340, 200, 200, 200, 200},{ 340, 200,  80, -70, 140},{ 340, 200, -50, -350,  50}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200,  60, -30,  80},{ 340, 200,  50, -250, 150},{ 340, 200, -20, -30,   0}}
+}
+},
+/* GC....UG */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 210, 180,  70, 200},{ 340, 170, 140,  30, 200},{ 340, 110,  80, -30, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 210, 180,  70, 200},{ 340, 270, 180, 170, 200},{ 340, 200, 200, 200, 200},{ 340, 270, 180, 170, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 110,  80, -30, 200},{ 340, 200, 200, 200, 200},{ 340, 150, 120,  10, 200},{ 340,  30, -100, -30, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 240, 150, 140, 200},{ 340, 160,  30, 100, 200},{ 340, 230, 100, 170, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 190, 250, 200, 250},{ 340, 140, 140, 200, 150},{ 340,  80, 180, 200, 190},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 190, 190, 200, 190},{ 340, 190, 190, 200, 190},{ 340, 200, 200, 200, 200},{ 340, 190, 190, 200, 190}},
+{{ 340, 340, 340, 340, 340},{ 340,  80, 180, 200, 190},{ 340, 200, 200, 200, 200},{ 340, 120, 180, 200, 190},{ 340, -90,  10, 200,  10}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 160, 160, 200, 160},{ 340,  30, 130, 200, 140},{ 340, 100, 100, 200, 110}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340,  10, 200, 180,  40},{ 340, -30, 200, 130, -110},{ 340, -90, 200,  70,  10},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  10, 200, 180, -60},{ 340, 110, 200, 240,  40},{ 340, 200, 200, 200, 200},{ 340, 110, 200, 240,  40}},
+{{ 340, 340, 340, 340, 340},{ 340, -90, 200,  70,  10},{ 340, 200, 200, 200, 200},{ 340, -50, 200, 110, -30},{ 340, -90, 200,   0, -350}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340,  80, 200, 210,  10},{ 340,  40, 200, 120, -220},{ 340, 110, 200, 190,  30}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 150,   0, 210},{ 340, 200,  40, -150,  70},{ 340, 200,  90, -30, 190},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200,  90, -100, 110},{ 340, 200,  90,   0, 110},{ 340, 200, 200, 200, 200},{ 340, 200,  90,   0, 110}},
+{{ 340, 340, 340, 340, 340},{ 340, 200,  90, -30, 190},{ 340, 200, 200, 200, 200},{ 340, 200,  80, -70, 150},{ 340, 200, -90, -390,  10}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200,  60, -30,  80},{ 340, 200,  40, -260, 140},{ 340, 200,   0, -10,  30}}
+}
+},
+/* GC....AU */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 210, 180,  70, 200},{ 340, 190, 160,  50, 200},{ 340,  90,  60, -50, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 170,  60, 200},{ 340, 240, 150, 140, 200},{ 340, 200, 200, 200, 200},{ 340, 240, 150, 140, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  90,  60, -50, 200},{ 340, 200, 200, 200, 200},{ 340, 140, 110,   0, 200},{ 340,  70, -60,  10, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 240, 150, 140, 200},{ 340, 170,  40, 110, 200},{ 340, 200,  70, 150, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 190, 250, 200, 250},{ 340, 160, 160, 200, 170},{ 340,  60, 160, 200, 170},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 170, 200, 180},{ 340, 160, 160, 200, 160},{ 340, 200, 200, 200, 200},{ 340, 160, 160, 200, 160}},
+{{ 340, 340, 340, 340, 340},{ 340,  60, 160, 200, 170},{ 340, 200, 200, 200, 200},{ 340, 120, 180, 200, 180},{ 340, -50,  50, 200,  50}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 160, 160, 200, 160},{ 340,  40, 140, 200, 150},{ 340,  80,  80, 200,  80}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340,  10, 200, 180,  40},{ 340, -10, 200, 150, -90},{ 340, -110, 200,  50, -10},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,   0, 200, 160, -80},{ 340,  80, 200, 210,  10},{ 340, 200, 200, 200, 200},{ 340,  80, 200, 210,  10}},
+{{ 340, 340, 340, 340, 340},{ 340, -110, 200,  50, -10},{ 340, 200, 200, 200, 200},{ 340, -60, 200, 110, -30},{ 340, -50, 200,  40, -310}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340,  80, 200, 210,  10},{ 340,  50, 200, 130, -210},{ 340,  80, 200, 170,  10}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 150,   0, 210},{ 340, 200,  60, -130,  90},{ 340, 200,  70, -50, 170},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200,  70, -120, 100},{ 340, 200,  60, -30,  80},{ 340, 200, 200, 200, 200},{ 340, 200,  60, -30,  80}},
+{{ 340, 340, 340, 340, 340},{ 340, 200,  70, -50, 170},{ 340, 200, 200, 200, 200},{ 340, 200,  80, -70, 140},{ 340, 200, -50, -350,  50}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200,  60, -30,  80},{ 340, 200,  50, -250, 150},{ 340, 200, -20, -30,   0}}
+}
+},
+/* GC....UA */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 210, 180,  70, 200},{ 340, 170, 140,  30, 200},{ 340, 110,  80, -30, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 210, 180,  70, 200},{ 340, 270, 180, 170, 200},{ 340, 200, 200, 200, 200},{ 340, 270, 180, 170, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 110,  80, -30, 200},{ 340, 200, 200, 200, 200},{ 340, 150, 120,  10, 200},{ 340,  30, -100, -30, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 240, 150, 140, 200},{ 340, 160,  30, 100, 200},{ 340, 230, 100, 170, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 190, 250, 200, 250},{ 340, 140, 140, 200, 150},{ 340,  80, 180, 200, 190},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 190, 190, 200, 190},{ 340, 190, 190, 200, 190},{ 340, 200, 200, 200, 200},{ 340, 190, 190, 200, 190}},
+{{ 340, 340, 340, 340, 340},{ 340,  80, 180, 200, 190},{ 340, 200, 200, 200, 200},{ 340, 120, 180, 200, 190},{ 340, -90,  10, 200,  10}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 160, 160, 200, 160},{ 340,  30, 130, 200, 140},{ 340, 100, 100, 200, 110}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340,  10, 200, 180,  40},{ 340, -30, 200, 130, -110},{ 340, -90, 200,  70,  10},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  10, 200, 180, -60},{ 340, 110, 200, 240,  40},{ 340, 200, 200, 200, 200},{ 340, 110, 200, 240,  40}},
+{{ 340, 340, 340, 340, 340},{ 340, -90, 200,  70,  10},{ 340, 200, 200, 200, 200},{ 340, -50, 200, 110, -30},{ 340, -90, 200,   0, -350}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340,  80, 200, 210,  10},{ 340,  40, 200, 120, -220},{ 340, 110, 200, 190,  30}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 150,   0, 210},{ 340, 200,  40, -150,  70},{ 340, 200,  90, -30, 190},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200,  90, -100, 110},{ 340, 200,  90,   0, 110},{ 340, 200, 200, 200, 200},{ 340, 200,  90,   0, 110}},
+{{ 340, 340, 340, 340, 340},{ 340, 200,  90, -30, 190},{ 340, 200, 200, 200, 200},{ 340, 200,  80, -70, 150},{ 340, 200, -90, -390,  10}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200,  60, -30,  80},{ 340, 200,  40, -260, 140},{ 340, 200,   0, -10,  30}}
+}
+},
+/* GC....?? */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+}
+}
+},
+{ /* noPair */ {{{{0}}}},
+/* GU....CG */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 190,  80, 200},{ 340, 190, 180,  70, 200},{ 340, 100,  90, -20, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 240, 220, 110, 200},{ 340, 280, 210, 200, 200},{ 340, 200, 200, 200, 200},{ 340, 270, 190, 180, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 100,  90, -20, 200},{ 340, 200, 200, 200, 200},{ 340, 180, 160,  50, 200},{ 340,  30, -80, -10, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 270, 190, 180, 200},{ 340, 180,  70, 140, 200},{ 340, 220, 100, 180, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 180, 230, 200, 230},{ 340, 170, 160, 200, 160},{ 340,  80, 170, 200, 170},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 210, 210, 200, 210},{ 340, 200, 190, 200, 190},{ 340, 200, 200, 200, 200},{ 340, 180, 180, 200, 180}},
+{{ 340, 340, 340, 340, 340},{ 340,  80, 170, 200, 170},{ 340, 200, 200, 200, 200},{ 340, 150, 210, 200, 210},{ 340, -90,   0, 200,   0}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 180, 180, 200, 180},{ 340,  60, 150, 200, 150},{ 340,  90,  90, 200,  90}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340,  80, 200, 130, 160},{ 340,  70, 200, 120,  50},{ 340, -20, 200,  30, 140},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 110, 200, 170,  90},{ 340, 200, 200, 210, 180},{ 340, 200, 200, 200, 200},{ 340, 180, 200, 200, 160}},
+{{ 340, 340, 340, 340, 340},{ 340, -20, 200,  30, 140},{ 340, 200, 200, 200, 200},{ 340,  50, 200, 110, 130},{ 340, -10, 200, -40, -210}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 180, 200, 200, 160},{ 340, 140, 200, 110, -60},{ 340, 180, 200, 150, 160}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 230,  60, 190},{ 340, 200, 160, -50,  80},{ 340, 200, 170,  40, 180},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 210,   0, 130},{ 340, 200, 190,  80, 110},{ 340, 200, 200, 200, 200},{ 340, 200, 180,  70, 100}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 170,  40, 180},{ 340, 200, 200, 200, 200},{ 340, 200, 210,  40, 170},{ 340, 200,   0, -310,   0}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 180,  70, 100},{ 340, 200, 150, -160, 160},{ 340, 200,  90,  60,  10}}
+}
+},
+/* GU....GC */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 210, 200,  90, 200},{ 340, 190, 170,  60, 200},{ 340,  10,   0, -110, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 180, 170,  60, 200},{ 340, 250, 170, 160, 200},{ 340, 200, 200, 200, 200},{ 340, 150,  70,  70, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  70,  60, -50, 200},{ 340, 200, 200, 200, 200},{ 340, 180, 160,  50, 200},{ 340,   0, -120, -50, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 250, 180, 170, 200},{ 340,  40, -80, -10, 200},{ 340, 210, 100, 170, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 190, 240, 200, 240},{ 340, 160, 160, 200, 160},{ 340, -10,  80, 200,  80},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 160, 150, 200, 150},{ 340, 160, 160, 200, 160},{ 340, 200, 200, 200, 200},{ 340,  60,  60, 200,  60}},
+{{ 340, 340, 340, 340, 340},{ 340,  50, 140, 200, 140},{ 340, 200, 200, 200, 200},{ 340, 150, 210, 200, 210},{ 340, -130, -30, 200, -30}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 170, 160, 200, 160},{ 340, -90,  10, 200,  10},{ 340,  90,  80, 200,  80}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340,  90, 200, 140, 170},{ 340,  60, 200, 120,  40},{ 340, -110, 200, -60,  50},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  60, 200, 110,  40},{ 340, 160, 200, 180, 140},{ 340, 200, 200, 200, 200},{ 340,  70, 200,  80,  50}},
+{{ 340, 340, 340, 340, 340},{ 340, -50, 200,   0, 110},{ 340, 200, 200, 200, 200},{ 340,  50, 200, 110, 130},{ 340, -50, 200, -70, -250}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 170, 200, 180, 150},{ 340, -10, 200, -30, -210},{ 340, 170, 200, 140, 150}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 240,  70, 200},{ 340, 200, 160, -50,  80},{ 340, 200,  80, -50,  80},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 150, -60,  70},{ 340, 200, 160,  50,  80},{ 340, 200, 200, 200, 200},{ 340, 200,  60, -50, -20}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 140,  10, 150},{ 340, 200, 200, 200, 200},{ 340, 200, 210,  40, 170},{ 340, 200, -30, -350, -30}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 160,  50,  80},{ 340, 200,  10, -310,  10},{ 340, 200,  80,  50,   0}}
+}
+},
+/* GU....GU */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 260, 150, 200},{ 340, 250, 240, 130, 200},{ 340, 150, 140,  30, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 260, 250, 140, 200},{ 340, 310, 230, 220, 200},{ 340, 200, 200, 200, 200},{ 340, 310, 230, 220, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 140,  30, 200},{ 340, 200, 200, 200, 200},{ 340, 210, 190,  80, 200},{ 340, 130,  20,  90, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 310, 230, 220, 200},{ 340, 230, 120, 190, 200},{ 340, 270, 150, 220, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 250, 310, 200, 310},{ 340, 230, 220, 200, 220},{ 340, 130, 220, 200, 220},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 240, 230, 200, 230},{ 340, 220, 220, 200, 220},{ 340, 200, 200, 200, 200},{ 340, 220, 220, 200, 220}},
+{{ 340, 340, 340, 340, 340},{ 340, 130, 220, 200, 220},{ 340, 200, 200, 200, 200},{ 340, 180, 240, 200, 240},{ 340,  10, 100, 200, 100}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 220, 220, 200, 220},{ 340, 110, 200, 200, 200},{ 340, 140, 140, 200, 140}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 200, 210, 230},{ 340, 130, 200, 180, 110},{ 340,  30, 200,  80, 190},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 140, 200, 190, 120},{ 340, 220, 200, 240, 200},{ 340, 200, 200, 200, 200},{ 340, 220, 200, 240, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  30, 200,  80, 190},{ 340, 200, 200, 200, 200},{ 340,  80, 200, 140, 160},{ 340,  90, 200,  70, -110}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 220, 200, 240, 200},{ 340, 190, 200, 160, -10},{ 340, 220, 200, 200, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 310, 130, 270},{ 340, 200, 220,  10, 140},{ 340, 200, 220,  90, 220},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 230,  20, 150},{ 340, 200, 220, 100, 140},{ 340, 200, 200, 200, 200},{ 340, 200, 220, 100, 140}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 220,  90, 220},{ 340, 200, 200, 200, 200},{ 340, 200, 240,  70, 200},{ 340, 200, 100, -210, 110}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 220, 100, 140},{ 340, 200, 200, -110, 200},{ 340, 200, 140, 110,  60}}
+}
+},
+/* GU....UG */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 260, 150, 200},{ 340, 230, 220, 110, 200},{ 340, 170, 160,  50, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 260, 150, 200},{ 340, 340, 260, 250, 200},{ 340, 200, 200, 200, 200},{ 340, 340, 260, 250, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 160,  50, 200},{ 340, 200, 200, 200, 200},{ 340, 210, 200,  90, 200},{ 340, 100, -20,  50, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 310, 230, 220, 200},{ 340, 220, 110, 180, 200},{ 340, 290, 180, 250, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 250, 310, 200, 310},{ 340, 210, 200, 200, 200},{ 340, 150, 240, 200, 240},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 250, 250, 200, 250},{ 340, 250, 250, 200, 250},{ 340, 200, 200, 200, 200},{ 340, 250, 250, 200, 250}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 240, 200, 240},{ 340, 200, 200, 200, 200},{ 340, 190, 240, 200, 240},{ 340, -30,  70, 200,  70}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 220, 220, 200, 220},{ 340, 100, 190, 200, 190},{ 340, 170, 160, 200, 160}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 200, 210, 230},{ 340, 110, 200, 160,  90},{ 340,  50, 200, 100, 210},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 200, 210, 130},{ 340, 250, 200, 270, 230},{ 340, 200, 200, 200, 200},{ 340, 250, 200, 270, 230}},
+{{ 340, 340, 340, 340, 340},{ 340,  50, 200, 100, 210},{ 340, 200, 200, 200, 200},{ 340,  90, 200, 140, 170},{ 340,  50, 200,  30, -150}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 220, 200, 240, 200},{ 340, 180, 200, 150, -20},{ 340, 250, 200, 220, 230}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 310, 130, 270},{ 340, 200, 200, -10, 120},{ 340, 200, 240, 110, 240},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 250,  30, 170},{ 340, 200, 250, 130, 170},{ 340, 200, 200, 200, 200},{ 340, 200, 250, 130, 170}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 240, 110, 240},{ 340, 200, 200, 200, 200},{ 340, 200, 240,  70, 200},{ 340, 200,  70, -250,  70}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 220, 100, 140},{ 340, 200, 190, -120, 190},{ 340, 200, 160, 130,  80}}
+}
+},
+/* GU....AU */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 260, 150, 200},{ 340, 250, 240, 130, 200},{ 340, 150, 140,  30, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 260, 250, 140, 200},{ 340, 310, 230, 220, 200},{ 340, 200, 200, 200, 200},{ 340, 310, 230, 220, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 140,  30, 200},{ 340, 200, 200, 200, 200},{ 340, 210, 190,  80, 200},{ 340, 130,  20,  90, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 310, 230, 220, 200},{ 340, 230, 120, 190, 200},{ 340, 270, 150, 220, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 250, 310, 200, 310},{ 340, 230, 220, 200, 220},{ 340, 130, 220, 200, 220},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 240, 230, 200, 230},{ 340, 220, 220, 200, 220},{ 340, 200, 200, 200, 200},{ 340, 220, 220, 200, 220}},
+{{ 340, 340, 340, 340, 340},{ 340, 130, 220, 200, 220},{ 340, 200, 200, 200, 200},{ 340, 180, 240, 200, 240},{ 340,  10, 100, 200, 100}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 220, 220, 200, 220},{ 340, 110, 200, 200, 200},{ 340, 140, 140, 200, 140}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 200, 210, 230},{ 340, 130, 200, 180, 110},{ 340,  30, 200,  80, 190},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 140, 200, 190, 120},{ 340, 220, 200, 240, 200},{ 340, 200, 200, 200, 200},{ 340, 220, 200, 240, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  30, 200,  80, 190},{ 340, 200, 200, 200, 200},{ 340,  80, 200, 140, 160},{ 340,  90, 200,  70, -110}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 220, 200, 240, 200},{ 340, 190, 200, 160, -10},{ 340, 220, 200, 200, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 310, 130, 270},{ 340, 200, 220,  10, 140},{ 340, 200, 220,  90, 220},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 230,  20, 150},{ 340, 200, 220, 100, 140},{ 340, 200, 200, 200, 200},{ 340, 200, 220, 100, 140}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 220,  90, 220},{ 340, 200, 200, 200, 200},{ 340, 200, 240,  70, 200},{ 340, 200, 100, -210, 110}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 220, 100, 140},{ 340, 200, 200, -110, 200},{ 340, 200, 140, 110,  60}}
+}
+},
+/* GU....UA */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 260, 150, 200},{ 340, 230, 220, 110, 200},{ 340, 170, 160,  50, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 260, 150, 200},{ 340, 340, 260, 250, 200},{ 340, 200, 200, 200, 200},{ 340, 340, 260, 250, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 160,  50, 200},{ 340, 200, 200, 200, 200},{ 340, 210, 200,  90, 200},{ 340, 100, -20,  50, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 310, 230, 220, 200},{ 340, 220, 110, 180, 200},{ 340, 290, 180, 250, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 250, 310, 200, 310},{ 340, 210, 200, 200, 200},{ 340, 150, 240, 200, 240},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 250, 250, 200, 250},{ 340, 250, 250, 200, 250},{ 340, 200, 200, 200, 200},{ 340, 250, 250, 200, 250}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 240, 200, 240},{ 340, 200, 200, 200, 200},{ 340, 190, 240, 200, 240},{ 340, -30,  70, 200,  70}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 220, 220, 200, 220},{ 340, 100, 190, 200, 190},{ 340, 170, 160, 200, 160}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 200, 210, 230},{ 340, 110, 200, 160,  90},{ 340,  50, 200, 100, 210},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 200, 210, 130},{ 340, 250, 200, 270, 230},{ 340, 200, 200, 200, 200},{ 340, 250, 200, 270, 230}},
+{{ 340, 340, 340, 340, 340},{ 340,  50, 200, 100, 210},{ 340, 200, 200, 200, 200},{ 340,  90, 200, 140, 170},{ 340,  50, 200,  30, -150}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 220, 200, 240, 200},{ 340, 180, 200, 150, -20},{ 340, 250, 200, 220, 230}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 310, 130, 270},{ 340, 200, 200, -10, 120},{ 340, 200, 240, 110, 240},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 250,  30, 170},{ 340, 200, 250, 130, 170},{ 340, 200, 200, 200, 200},{ 340, 200, 250, 130, 170}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 240, 110, 240},{ 340, 200, 200, 200, 200},{ 340, 200, 240,  70, 200},{ 340, 200,  70, -250,  70}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 220, 100, 140},{ 340, 200, 190, -120, 190},{ 340, 200, 160, 130,  80}}
+}
+},
+/* GU....?? */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+}
+}
+},
+{ /* noPair */ {{{{0}}}},
+/* UG....CG */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 100, 200},{ 340, 190, 190,  90, 200},{ 340, 100, 100,   0, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 240, 240, 130, 200},{ 340, 280, 220, 220, 200},{ 340, 200, 200, 200, 200},{ 340, 270, 210, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 100, 100,   0, 200},{ 340, 200, 200, 200, 200},{ 340, 180, 180,  70, 200},{ 340,  30, -70,  10, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 270, 210, 200, 200},{ 340, 180,  80, 160, 200},{ 340, 220, 120, 190, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 160, 260, 200, 230},{ 340, 150, 190, 200, 160},{ 340,  60, 200, 200, 170},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 190, 240, 200, 210},{ 340, 180, 220, 200, 190},{ 340, 200, 200, 200, 200},{ 340, 160, 210, 200, 180}},
+{{ 340, 340, 340, 340, 340},{ 340,  60, 200, 200, 170},{ 340, 200, 200, 200, 200},{ 340, 130, 240, 200, 210},{ 340, -110,  30, 200,   0}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 160, 210, 200, 180},{ 340,  40, 180, 200, 150},{ 340,  70, 120, 200,  90}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 100, 200, 140, 150},{ 340,  90, 200, 130,  40},{ 340,   0, 200,  40, 130},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 130, 200, 170,  80},{ 340, 220, 200, 220, 170},{ 340, 200, 200, 200, 200},{ 340, 200, 200, 200, 150}},
+{{ 340, 340, 340, 340, 340},{ 340,   0, 200,  40, 130},{ 340, 200, 200, 200, 200},{ 340,  70, 200, 110, 120},{ 340,  10, 200, -30, -220}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 200, 200, 150},{ 340, 160, 200, 120, -70},{ 340, 190, 200, 150, 150}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 260,  20, 220},{ 340, 200, 190, -90, 110},{ 340, 200, 200,   0, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 240, -40, 150},{ 340, 200, 220,  40, 140},{ 340, 200, 200, 200, 200},{ 340, 200, 210,  30, 120}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200,   0, 200},{ 340, 200, 200, 200, 200},{ 340, 200, 240,   0, 190},{ 340, 200,  30, -350,  30}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 210,  30, 120},{ 340, 200, 180, -200, 180},{ 340, 200, 120,  20,  30}}
+}
+},
+/* UG....GC */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 210, 210, 110, 200},{ 340, 190, 190,  80, 200},{ 340,  10,  10, -90, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 180, 180,  80, 200},{ 340, 250, 190, 180, 200},{ 340, 200, 200, 200, 200},{ 340, 150,  90,  90, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  70,  70, -30, 200},{ 340, 200, 200, 200, 200},{ 340, 180, 180,  70, 200},{ 340,   0, -100, -30, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 250, 190, 190, 200},{ 340,  40, -60,  10, 200},{ 340, 210, 110, 190, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 270, 200, 240},{ 340, 140, 190, 200, 160},{ 340, -30, 110, 200,  80},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 140, 180, 200, 150},{ 340, 140, 190, 200, 160},{ 340, 200, 200, 200, 200},{ 340,  40,  90, 200,  60}},
+{{ 340, 340, 340, 340, 340},{ 340,  30, 170, 200, 140},{ 340, 200, 200, 200, 200},{ 340, 130, 240, 200, 210},{ 340, -150,   0, 200, -30}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 150, 190, 200, 160},{ 340, -110,  40, 200,  10},{ 340,  70, 110, 200,  80}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 110, 200, 150, 160},{ 340,  80, 200, 120,  30},{ 340, -90, 200, -50,  40},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  80, 200, 120,  30},{ 340, 180, 200, 180, 130},{ 340, 200, 200, 200, 200},{ 340,  90, 200,  80,  40}},
+{{ 340, 340, 340, 340, 340},{ 340, -30, 200,  10, 100},{ 340, 200, 200, 200, 200},{ 340,  70, 200, 110, 120},{ 340, -30, 200, -70, -260}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 190, 200, 190, 140},{ 340,  10, 200, -30, -220},{ 340, 190, 200, 150, 140}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 270,  30, 230},{ 340, 200, 190, -90, 100},{ 340, 200, 110, -90, 110},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 180, -100, 100},{ 340, 200, 190,  10, 100},{ 340, 200, 200, 200, 200},{ 340, 200,  90, -90,   0}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 170, -30, 170},{ 340, 200, 200, 200, 200},{ 340, 200, 240,   0, 190},{ 340, 200,   0, -390, -10}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 190,  10, 110},{ 340, 200,  40, -350,  30},{ 340, 200, 110,  10,  30}}
+}
+},
+/* UG....GU */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 280, 170, 200},{ 340, 250, 250, 150, 200},{ 340, 150, 150,  50, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 260, 260, 160, 200},{ 340, 310, 250, 240, 200},{ 340, 200, 200, 200, 200},{ 340, 310, 250, 240, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 150,  50, 200},{ 340, 200, 200, 200, 200},{ 340, 210, 210, 100, 200},{ 340, 130,  30, 110, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 310, 250, 240, 200},{ 340, 230, 130, 210, 200},{ 340, 270, 170, 240, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 230, 340, 200, 310},{ 340, 210, 250, 200, 220},{ 340, 110, 250, 200, 220},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 220, 260, 200, 230},{ 340, 200, 250, 200, 220},{ 340, 200, 200, 200, 200},{ 340, 200, 250, 200, 220}},
+{{ 340, 340, 340, 340, 340},{ 340, 110, 250, 200, 220},{ 340, 200, 200, 200, 200},{ 340, 160, 270, 200, 240},{ 340, -10, 130, 200, 100}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 250, 200, 220},{ 340,  90, 230, 200, 200},{ 340, 120, 170, 200, 140}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 200, 210, 220},{ 340, 150, 200, 190, 100},{ 340,  50, 200,  90, 180},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 160, 200, 200, 110},{ 340, 240, 200, 240, 190},{ 340, 200, 200, 200, 200},{ 340, 240, 200, 240, 190}},
+{{ 340, 340, 340, 340, 340},{ 340,  50, 200,  90, 180},{ 340, 200, 200, 200, 200},{ 340, 100, 200, 140, 150},{ 340, 110, 200,  70, -120}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 240, 200, 240, 190},{ 340, 210, 200, 170, -20},{ 340, 240, 200, 200, 190}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 340, 100, 290},{ 340, 200, 250, -30, 170},{ 340, 200, 250,  50, 250},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 260, -20, 180},{ 340, 200, 250,  70, 160},{ 340, 200, 200, 200, 200},{ 340, 200, 250,  70, 160}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 250,  50, 250},{ 340, 200, 200, 200, 200},{ 340, 200, 270,  30, 220},{ 340, 200, 130, -250, 130}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 250,  70, 160},{ 340, 200, 230, -150, 230},{ 340, 200, 170,  70,  80}}
+}
+},
+/* UG....UG */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 280, 170, 200},{ 340, 230, 230, 130, 200},{ 340, 170, 170,  70, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 280, 170, 200},{ 340, 340, 280, 270, 200},{ 340, 200, 200, 200, 200},{ 340, 340, 280, 270, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 170,  70, 200},{ 340, 200, 200, 200, 200},{ 340, 210, 210, 110, 200},{ 340, 100,   0,  70, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 310, 250, 240, 200},{ 340, 220, 120, 200, 200},{ 340, 290, 190, 270, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 230, 340, 200, 310},{ 340, 190, 230, 200, 200},{ 340, 130, 270, 200, 240},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 230, 280, 200, 250},{ 340, 230, 280, 200, 250},{ 340, 200, 200, 200, 200},{ 340, 230, 280, 200, 250}},
+{{ 340, 340, 340, 340, 340},{ 340, 130, 270, 200, 240},{ 340, 200, 200, 200, 200},{ 340, 170, 270, 200, 240},{ 340, -50, 100, 200,  70}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 250, 200, 220},{ 340,  80, 220, 200, 190},{ 340, 150, 190, 200, 160}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 200, 210, 220},{ 340, 130, 200, 170,  80},{ 340,  70, 200, 110, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 200, 210, 120},{ 340, 270, 200, 270, 220},{ 340, 200, 200, 200, 200},{ 340, 270, 200, 270, 220}},
+{{ 340, 340, 340, 340, 340},{ 340,  70, 200, 110, 200},{ 340, 200, 200, 200, 200},{ 340, 110, 200, 150, 160},{ 340,  70, 200,  30, -160}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 240, 200, 240, 190},{ 340, 200, 200, 160, -30},{ 340, 270, 200, 230, 220}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 340, 100, 290},{ 340, 200, 230, -50, 150},{ 340, 200, 270,  70, 270},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 280,   0, 190},{ 340, 200, 280, 100, 190},{ 340, 200, 200, 200, 200},{ 340, 200, 280, 100, 190}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 270,  70, 270},{ 340, 200, 200, 200, 200},{ 340, 200, 270,  30, 230},{ 340, 200, 100, -290,  90}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 250,  70, 160},{ 340, 200, 220, -160, 220},{ 340, 200, 190,  90, 110}}
+}
+},
+/* UG....AU */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 280, 170, 200},{ 340, 250, 250, 150, 200},{ 340, 150, 150,  50, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 260, 260, 160, 200},{ 340, 310, 250, 240, 200},{ 340, 200, 200, 200, 200},{ 340, 310, 250, 240, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 150,  50, 200},{ 340, 200, 200, 200, 200},{ 340, 210, 210, 100, 200},{ 340, 130,  30, 110, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 310, 250, 240, 200},{ 340, 230, 130, 210, 200},{ 340, 270, 170, 240, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 230, 340, 200, 310},{ 340, 210, 250, 200, 220},{ 340, 110, 250, 200, 220},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 220, 260, 200, 230},{ 340, 200, 250, 200, 220},{ 340, 200, 200, 200, 200},{ 340, 200, 250, 200, 220}},
+{{ 340, 340, 340, 340, 340},{ 340, 110, 250, 200, 220},{ 340, 200, 200, 200, 200},{ 340, 160, 270, 200, 240},{ 340, -10, 130, 200, 100}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 250, 200, 220},{ 340,  90, 230, 200, 200},{ 340, 120, 170, 200, 140}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 200, 210, 220},{ 340, 150, 200, 190, 100},{ 340,  50, 200,  90, 180},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 160, 200, 200, 110},{ 340, 240, 200, 240, 190},{ 340, 200, 200, 200, 200},{ 340, 240, 200, 240, 190}},
+{{ 340, 340, 340, 340, 340},{ 340,  50, 200,  90, 180},{ 340, 200, 200, 200, 200},{ 340, 100, 200, 140, 150},{ 340, 110, 200,  70, -120}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 240, 200, 240, 190},{ 340, 210, 200, 170, -20},{ 340, 240, 200, 200, 190}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 340, 100, 290},{ 340, 200, 250, -30, 170},{ 340, 200, 250,  50, 250},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 260, -20, 180},{ 340, 200, 250,  70, 160},{ 340, 200, 200, 200, 200},{ 340, 200, 250,  70, 160}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 250,  50, 250},{ 340, 200, 200, 200, 200},{ 340, 200, 270,  30, 220},{ 340, 200, 130, -250, 130}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 250,  70, 160},{ 340, 200, 230, -150, 230},{ 340, 200, 170,  70,  80}}
+}
+},
+/* UG....UA */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 280, 170, 200},{ 340, 230, 230, 130, 200},{ 340, 170, 170,  70, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 280, 170, 200},{ 340, 340, 280, 270, 200},{ 340, 200, 200, 200, 200},{ 340, 340, 280, 270, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 170,  70, 200},{ 340, 200, 200, 200, 200},{ 340, 210, 210, 110, 200},{ 340, 100,   0,  70, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 310, 250, 240, 200},{ 340, 220, 120, 200, 200},{ 340, 290, 190, 270, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 230, 340, 200, 310},{ 340, 190, 230, 200, 200},{ 340, 130, 270, 200, 240},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 230, 280, 200, 250},{ 340, 230, 280, 200, 250},{ 340, 200, 200, 200, 200},{ 340, 230, 280, 200, 250}},
+{{ 340, 340, 340, 340, 340},{ 340, 130, 270, 200, 240},{ 340, 200, 200, 200, 200},{ 340, 170, 270, 200, 240},{ 340, -50, 100, 200,  70}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 250, 200, 220},{ 340,  80, 220, 200, 190},{ 340, 150, 190, 200, 160}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 200, 210, 220},{ 340, 130, 200, 170,  80},{ 340,  70, 200, 110, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 200, 210, 120},{ 340, 270, 200, 270, 220},{ 340, 200, 200, 200, 200},{ 340, 270, 200, 270, 220}},
+{{ 340, 340, 340, 340, 340},{ 340,  70, 200, 110, 200},{ 340, 200, 200, 200, 200},{ 340, 110, 200, 150, 160},{ 340,  70, 200,  30, -160}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 240, 200, 240, 190},{ 340, 200, 200, 160, -30},{ 340, 270, 200, 230, 220}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 340, 100, 290},{ 340, 200, 230, -50, 150},{ 340, 200, 270,  70, 270},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 280,   0, 190},{ 340, 200, 280, 100, 190},{ 340, 200, 200, 200, 200},{ 340, 200, 280, 100, 190}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 270,  70, 270},{ 340, 200, 200, 200, 200},{ 340, 200, 270,  30, 230},{ 340, 200, 100, -290,  90}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 250,  70, 160},{ 340, 200, 220, -160, 220},{ 340, 200, 190,  90, 110}}
+}
+},
+/* UG....?? */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+}
+}
+},
+{ /* noPair */ {{{{0}}}},
+/* AU....CG */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 190,  80, 200},{ 340, 190, 180,  70, 200},{ 340, 100,  90, -20, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 240, 220, 110, 200},{ 340, 280, 210, 200, 200},{ 340, 200, 200, 200, 200},{ 340, 270, 190, 180, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 100,  90, -20, 200},{ 340, 200, 200, 200, 200},{ 340, 180, 160,  50, 200},{ 340,  30, -80, -10, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 270, 190, 180, 200},{ 340, 180,  70, 140, 200},{ 340, 220, 100, 180, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 180, 230, 200, 230},{ 340, 170, 160, 200, 160},{ 340,  80, 170, 200, 170},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 210, 210, 200, 210},{ 340, 200, 190, 200, 190},{ 340, 200, 200, 200, 200},{ 340, 180, 180, 200, 180}},
+{{ 340, 340, 340, 340, 340},{ 340,  80, 170, 200, 170},{ 340, 200, 200, 200, 200},{ 340, 150, 210, 200, 210},{ 340, -90,   0, 200,   0}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 180, 180, 200, 180},{ 340,  60, 150, 200, 150},{ 340,  90,  90, 200,  90}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340,  80, 200, 130, 160},{ 340,  70, 200, 120,  50},{ 340, -20, 200,  30, 140},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 110, 200, 170,  90},{ 340, 200, 200, 210, 180},{ 340, 200, 200, 200, 200},{ 340, 180, 200, 200, 160}},
+{{ 340, 340, 340, 340, 340},{ 340, -20, 200,  30, 140},{ 340, 200, 200, 200, 200},{ 340,  50, 200, 110, 130},{ 340, -10, 200, -40, -210}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 180, 200, 200, 160},{ 340, 140, 200, 110, -60},{ 340, 180, 200, 150, 160}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 230,  60, 190},{ 340, 200, 160, -50,  80},{ 340, 200, 170,  40, 180},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 210,   0, 130},{ 340, 200, 190,  80, 110},{ 340, 200, 200, 200, 200},{ 340, 200, 180,  70, 100}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 170,  40, 180},{ 340, 200, 200, 200, 200},{ 340, 200, 210,  40, 170},{ 340, 200,   0, -310,   0}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 180,  70, 100},{ 340, 200, 150, -160, 160},{ 340, 200,  90,  60,  10}}
+}
+},
+/* AU....GC */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 210, 200,  90, 200},{ 340, 190, 170,  60, 200},{ 340,  10,   0, -110, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 180, 170,  60, 200},{ 340, 250, 170, 160, 200},{ 340, 200, 200, 200, 200},{ 340, 150,  70,  70, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  70,  60, -50, 200},{ 340, 200, 200, 200, 200},{ 340, 180, 160,  50, 200},{ 340,   0, -120, -50, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 250, 180, 170, 200},{ 340,  40, -80, -10, 200},{ 340, 210, 100, 170, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 190, 240, 200, 240},{ 340, 160, 160, 200, 160},{ 340, -10,  80, 200,  80},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 160, 150, 200, 150},{ 340, 160, 160, 200, 160},{ 340, 200, 200, 200, 200},{ 340,  60,  60, 200,  60}},
+{{ 340, 340, 340, 340, 340},{ 340,  50, 140, 200, 140},{ 340, 200, 200, 200, 200},{ 340, 150, 210, 200, 210},{ 340, -130, -30, 200, -30}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 170, 160, 200, 160},{ 340, -90,  10, 200,  10},{ 340,  90,  80, 200,  80}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340,  90, 200, 140, 170},{ 340,  60, 200, 120,  40},{ 340, -110, 200, -60,  50},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  60, 200, 110,  40},{ 340, 160, 200, 180, 140},{ 340, 200, 200, 200, 200},{ 340,  70, 200,  80,  50}},
+{{ 340, 340, 340, 340, 340},{ 340, -50, 200,   0, 110},{ 340, 200, 200, 200, 200},{ 340,  50, 200, 110, 130},{ 340, -50, 200, -70, -250}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 170, 200, 180, 150},{ 340, -10, 200, -30, -210},{ 340, 170, 200, 140, 150}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 240,  70, 200},{ 340, 200, 160, -50,  80},{ 340, 200,  80, -50,  80},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 150, -60,  70},{ 340, 200, 160,  50,  80},{ 340, 200, 200, 200, 200},{ 340, 200,  60, -50, -20}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 140,  10, 150},{ 340, 200, 200, 200, 200},{ 340, 200, 210,  40, 170},{ 340, 200, -30, -350, -30}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 160,  50,  80},{ 340, 200,  10, -310,  10},{ 340, 200,  80,  50,   0}}
+}
+},
+/* AU....GU */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 260, 150, 200},{ 340, 250, 240, 130, 200},{ 340, 150, 140,  30, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 260, 250, 140, 200},{ 340, 310, 230, 220, 200},{ 340, 200, 200, 200, 200},{ 340, 310, 230, 220, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 140,  30, 200},{ 340, 200, 200, 200, 200},{ 340, 210, 190,  80, 200},{ 340, 130,  20,  90, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 310, 230, 220, 200},{ 340, 230, 120, 190, 200},{ 340, 270, 150, 220, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 250, 310, 200, 310},{ 340, 230, 220, 200, 220},{ 340, 130, 220, 200, 220},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 240, 230, 200, 230},{ 340, 220, 220, 200, 220},{ 340, 200, 200, 200, 200},{ 340, 220, 220, 200, 220}},
+{{ 340, 340, 340, 340, 340},{ 340, 130, 220, 200, 220},{ 340, 200, 200, 200, 200},{ 340, 180, 240, 200, 240},{ 340,  10, 100, 200, 100}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 220, 220, 200, 220},{ 340, 110, 200, 200, 200},{ 340, 140, 140, 200, 140}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 200, 210, 230},{ 340, 130, 200, 180, 110},{ 340,  30, 200,  80, 190},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 140, 200, 190, 120},{ 340, 220, 200, 240, 200},{ 340, 200, 200, 200, 200},{ 340, 220, 200, 240, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  30, 200,  80, 190},{ 340, 200, 200, 200, 200},{ 340,  80, 200, 140, 160},{ 340,  90, 200,  70, -110}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 220, 200, 240, 200},{ 340, 190, 200, 160, -10},{ 340, 220, 200, 200, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 310, 130, 270},{ 340, 200, 220,  10, 140},{ 340, 200, 220,  90, 220},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 230,  20, 150},{ 340, 200, 220, 100, 140},{ 340, 200, 200, 200, 200},{ 340, 200, 220, 100, 140}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 220,  90, 220},{ 340, 200, 200, 200, 200},{ 340, 200, 240,  70, 200},{ 340, 200, 100, -210, 110}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 220, 100, 140},{ 340, 200, 200, -110, 200},{ 340, 200, 140, 110,  60}}
+}
+},
+/* AU....UG */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 260, 150, 200},{ 340, 230, 220, 110, 200},{ 340, 170, 160,  50, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 260, 150, 200},{ 340, 340, 260, 250, 200},{ 340, 200, 200, 200, 200},{ 340, 340, 260, 250, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 160,  50, 200},{ 340, 200, 200, 200, 200},{ 340, 210, 200,  90, 200},{ 340, 100, -20,  50, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 310, 230, 220, 200},{ 340, 220, 110, 180, 200},{ 340, 290, 180, 250, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 250, 310, 200, 310},{ 340, 210, 200, 200, 200},{ 340, 150, 240, 200, 240},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 250, 250, 200, 250},{ 340, 250, 250, 200, 250},{ 340, 200, 200, 200, 200},{ 340, 250, 250, 200, 250}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 240, 200, 240},{ 340, 200, 200, 200, 200},{ 340, 190, 240, 200, 240},{ 340, -30,  70, 200,  70}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 220, 220, 200, 220},{ 340, 100, 190, 200, 190},{ 340, 170, 160, 200, 160}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 200, 210, 230},{ 340, 110, 200, 160,  90},{ 340,  50, 200, 100, 210},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 200, 210, 130},{ 340, 250, 200, 270, 230},{ 340, 200, 200, 200, 200},{ 340, 250, 200, 270, 230}},
+{{ 340, 340, 340, 340, 340},{ 340,  50, 200, 100, 210},{ 340, 200, 200, 200, 200},{ 340,  90, 200, 140, 170},{ 340,  50, 200,  30, -150}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 220, 200, 240, 200},{ 340, 180, 200, 150, -20},{ 340, 250, 200, 220, 230}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 310, 130, 270},{ 340, 200, 200, -10, 120},{ 340, 200, 240, 110, 240},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 250,  30, 170},{ 340, 200, 250, 130, 170},{ 340, 200, 200, 200, 200},{ 340, 200, 250, 130, 170}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 240, 110, 240},{ 340, 200, 200, 200, 200},{ 340, 200, 240,  70, 200},{ 340, 200,  70, -250,  70}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 220, 100, 140},{ 340, 200, 190, -120, 190},{ 340, 200, 160, 130,  80}}
+}
+},
+/* AU....AU */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 260, 150, 200},{ 340, 250, 240, 130, 200},{ 340, 150, 140,  30, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 260, 250, 140, 200},{ 340, 310, 230, 220, 200},{ 340, 200, 200, 200, 200},{ 340, 310, 230, 220, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 140,  30, 200},{ 340, 200, 200, 200, 200},{ 340, 210, 190,  80, 200},{ 340, 130,  20,  90, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 310, 230, 220, 200},{ 340, 230, 120, 190, 200},{ 340, 270, 150, 220, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 250, 310, 200, 310},{ 340, 230, 220, 200, 220},{ 340, 130, 220, 200, 220},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 240, 230, 200, 230},{ 340, 220, 220, 200, 220},{ 340, 200, 200, 200, 200},{ 340, 220, 220, 200, 220}},
+{{ 340, 340, 340, 340, 340},{ 340, 130, 220, 200, 220},{ 340, 200, 200, 200, 200},{ 340, 180, 240, 200, 240},{ 340,  10, 100, 200, 100}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 220, 220, 200, 220},{ 340, 110, 200, 200, 200},{ 340, 140, 140, 200, 140}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 200, 210, 230},{ 340, 130, 200, 180, 110},{ 340,  30, 200,  80, 190},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 140, 200, 190, 120},{ 340, 220, 200, 240, 200},{ 340, 200, 200, 200, 200},{ 340, 220, 200, 240, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  30, 200,  80, 190},{ 340, 200, 200, 200, 200},{ 340,  80, 200, 140, 160},{ 340,  90, 200,  70, -110}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 220, 200, 240, 200},{ 340, 190, 200, 160, -10},{ 340, 220, 200, 200, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 310, 130, 270},{ 340, 200, 220,  10, 140},{ 340, 200, 220,  90, 220},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 230,  20, 150},{ 340, 200, 220, 100, 140},{ 340, 200, 200, 200, 200},{ 340, 200, 220, 100, 140}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 220,  90, 220},{ 340, 200, 200, 200, 200},{ 340, 200, 240,  70, 200},{ 340, 200, 100, -210, 110}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 220, 100, 140},{ 340, 200, 200, -110, 200},{ 340, 200, 140, 110,  60}}
+}
+},
+/* AU....UA */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 260, 150, 200},{ 340, 230, 220, 110, 200},{ 340, 170, 160,  50, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 260, 150, 200},{ 340, 340, 260, 250, 200},{ 340, 200, 200, 200, 200},{ 340, 340, 260, 250, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 160,  50, 200},{ 340, 200, 200, 200, 200},{ 340, 210, 200,  90, 200},{ 340, 100, -20,  50, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 310, 230, 220, 200},{ 340, 220, 110, 180, 200},{ 340, 290, 180, 250, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 250, 310, 200, 310},{ 340, 210, 200, 200, 200},{ 340, 150, 240, 200, 240},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 250, 250, 200, 250},{ 340, 250, 250, 200, 250},{ 340, 200, 200, 200, 200},{ 340, 250, 250, 200, 250}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 240, 200, 240},{ 340, 200, 200, 200, 200},{ 340, 190, 240, 200, 240},{ 340, -30,  70, 200,  70}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 220, 220, 200, 220},{ 340, 100, 190, 200, 190},{ 340, 170, 160, 200, 160}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 200, 210, 230},{ 340, 110, 200, 160,  90},{ 340,  50, 200, 100, 210},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 200, 210, 130},{ 340, 250, 200, 270, 230},{ 340, 200, 200, 200, 200},{ 340, 250, 200, 270, 230}},
+{{ 340, 340, 340, 340, 340},{ 340,  50, 200, 100, 210},{ 340, 200, 200, 200, 200},{ 340,  90, 200, 140, 170},{ 340,  50, 200,  30, -150}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 220, 200, 240, 200},{ 340, 180, 200, 150, -20},{ 340, 250, 200, 220, 230}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 310, 130, 270},{ 340, 200, 200, -10, 120},{ 340, 200, 240, 110, 240},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 250,  30, 170},{ 340, 200, 250, 130, 170},{ 340, 200, 200, 200, 200},{ 340, 200, 250, 130, 170}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 240, 110, 240},{ 340, 200, 200, 200, 200},{ 340, 200, 240,  70, 200},{ 340, 200,  70, -250,  70}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 220, 100, 140},{ 340, 200, 190, -120, 190},{ 340, 200, 160, 130,  80}}
+}
+},
+/* AU....?? */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+}
+}
+},
+{ /* noPair */ {{{{0}}}},
+/* UA....CG */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 100, 200},{ 340, 190, 190,  90, 200},{ 340, 100, 100,   0, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 240, 240, 130, 200},{ 340, 280, 220, 220, 200},{ 340, 200, 200, 200, 200},{ 340, 270, 210, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 100, 100,   0, 200},{ 340, 200, 200, 200, 200},{ 340, 180, 180,  70, 200},{ 340,  30, -70,  10, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 270, 210, 200, 200},{ 340, 180,  80, 160, 200},{ 340, 220, 120, 190, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 160, 260, 200, 230},{ 340, 150, 190, 200, 160},{ 340,  60, 200, 200, 170},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 190, 240, 200, 210},{ 340, 180, 220, 200, 190},{ 340, 200, 200, 200, 200},{ 340, 160, 210, 200, 180}},
+{{ 340, 340, 340, 340, 340},{ 340,  60, 200, 200, 170},{ 340, 200, 200, 200, 200},{ 340, 130, 240, 200, 210},{ 340, -110,  30, 200,   0}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 160, 210, 200, 180},{ 340,  40, 180, 200, 150},{ 340,  70, 120, 200,  90}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 100, 200, 140, 150},{ 340,  90, 200, 130,  40},{ 340,   0, 200,  40, 130},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 130, 200, 170,  80},{ 340, 220, 200, 220, 170},{ 340, 200, 200, 200, 200},{ 340, 200, 200, 200, 150}},
+{{ 340, 340, 340, 340, 340},{ 340,   0, 200,  40, 130},{ 340, 200, 200, 200, 200},{ 340,  70, 200, 110, 120},{ 340,  10, 200, -30, -220}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 200, 200, 150},{ 340, 160, 200, 120, -70},{ 340, 190, 200, 150, 150}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 260,  20, 220},{ 340, 200, 190, -90, 110},{ 340, 200, 200,   0, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 240, -40, 150},{ 340, 200, 220,  40, 140},{ 340, 200, 200, 200, 200},{ 340, 200, 210,  30, 120}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200,   0, 200},{ 340, 200, 200, 200, 200},{ 340, 200, 240,   0, 190},{ 340, 200,  30, -350,  30}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 210,  30, 120},{ 340, 200, 180, -200, 180},{ 340, 200, 120,  20,  30}}
+}
+},
+/* UA....GC */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 210, 210, 110, 200},{ 340, 190, 190,  80, 200},{ 340,  10,  10, -90, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 180, 180,  80, 200},{ 340, 250, 190, 180, 200},{ 340, 200, 200, 200, 200},{ 340, 150,  90,  90, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  70,  70, -30, 200},{ 340, 200, 200, 200, 200},{ 340, 180, 180,  70, 200},{ 340,   0, -100, -30, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 250, 190, 190, 200},{ 340,  40, -60,  10, 200},{ 340, 210, 110, 190, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 270, 200, 240},{ 340, 140, 190, 200, 160},{ 340, -30, 110, 200,  80},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 140, 180, 200, 150},{ 340, 140, 190, 200, 160},{ 340, 200, 200, 200, 200},{ 340,  40,  90, 200,  60}},
+{{ 340, 340, 340, 340, 340},{ 340,  30, 170, 200, 140},{ 340, 200, 200, 200, 200},{ 340, 130, 240, 200, 210},{ 340, -150,   0, 200, -30}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 150, 190, 200, 160},{ 340, -110,  40, 200,  10},{ 340,  70, 110, 200,  80}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 110, 200, 150, 160},{ 340,  80, 200, 120,  30},{ 340, -90, 200, -50,  40},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340,  80, 200, 120,  30},{ 340, 180, 200, 180, 130},{ 340, 200, 200, 200, 200},{ 340,  90, 200,  80,  40}},
+{{ 340, 340, 340, 340, 340},{ 340, -30, 200,  10, 100},{ 340, 200, 200, 200, 200},{ 340,  70, 200, 110, 120},{ 340, -30, 200, -70, -260}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 190, 200, 190, 140},{ 340,  10, 200, -30, -220},{ 340, 190, 200, 150, 140}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 270,  30, 230},{ 340, 200, 190, -90, 100},{ 340, 200, 110, -90, 110},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 180, -100, 100},{ 340, 200, 190,  10, 100},{ 340, 200, 200, 200, 200},{ 340, 200,  90, -90,   0}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 170, -30, 170},{ 340, 200, 200, 200, 200},{ 340, 200, 240,   0, 190},{ 340, 200,   0, -390, -10}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 190,  10, 110},{ 340, 200,  40, -350,  30},{ 340, 200, 110,  10,  30}}
+}
+},
+/* UA....GU */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 280, 170, 200},{ 340, 250, 250, 150, 200},{ 340, 150, 150,  50, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 260, 260, 160, 200},{ 340, 310, 250, 240, 200},{ 340, 200, 200, 200, 200},{ 340, 310, 250, 240, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 150,  50, 200},{ 340, 200, 200, 200, 200},{ 340, 210, 210, 100, 200},{ 340, 130,  30, 110, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 310, 250, 240, 200},{ 340, 230, 130, 210, 200},{ 340, 270, 170, 240, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 230, 340, 200, 310},{ 340, 210, 250, 200, 220},{ 340, 110, 250, 200, 220},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 220, 260, 200, 230},{ 340, 200, 250, 200, 220},{ 340, 200, 200, 200, 200},{ 340, 200, 250, 200, 220}},
+{{ 340, 340, 340, 340, 340},{ 340, 110, 250, 200, 220},{ 340, 200, 200, 200, 200},{ 340, 160, 270, 200, 240},{ 340, -10, 130, 200, 100}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 250, 200, 220},{ 340,  90, 230, 200, 200},{ 340, 120, 170, 200, 140}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 200, 210, 220},{ 340, 150, 200, 190, 100},{ 340,  50, 200,  90, 180},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 160, 200, 200, 110},{ 340, 240, 200, 240, 190},{ 340, 200, 200, 200, 200},{ 340, 240, 200, 240, 190}},
+{{ 340, 340, 340, 340, 340},{ 340,  50, 200,  90, 180},{ 340, 200, 200, 200, 200},{ 340, 100, 200, 140, 150},{ 340, 110, 200,  70, -120}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 240, 200, 240, 190},{ 340, 210, 200, 170, -20},{ 340, 240, 200, 200, 190}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 340, 100, 290},{ 340, 200, 250, -30, 170},{ 340, 200, 250,  50, 250},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 260, -20, 180},{ 340, 200, 250,  70, 160},{ 340, 200, 200, 200, 200},{ 340, 200, 250,  70, 160}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 250,  50, 250},{ 340, 200, 200, 200, 200},{ 340, 200, 270,  30, 220},{ 340, 200, 130, -250, 130}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 250,  70, 160},{ 340, 200, 230, -150, 230},{ 340, 200, 170,  70,  80}}
+}
+},
+/* UA....UG */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 280, 170, 200},{ 340, 230, 230, 130, 200},{ 340, 170, 170,  70, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 280, 170, 200},{ 340, 340, 280, 270, 200},{ 340, 200, 200, 200, 200},{ 340, 340, 280, 270, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 170,  70, 200},{ 340, 200, 200, 200, 200},{ 340, 210, 210, 110, 200},{ 340, 100,   0,  70, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 310, 250, 240, 200},{ 340, 220, 120, 200, 200},{ 340, 290, 190, 270, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 230, 340, 200, 310},{ 340, 190, 230, 200, 200},{ 340, 130, 270, 200, 240},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 230, 280, 200, 250},{ 340, 230, 280, 200, 250},{ 340, 200, 200, 200, 200},{ 340, 230, 280, 200, 250}},
+{{ 340, 340, 340, 340, 340},{ 340, 130, 270, 200, 240},{ 340, 200, 200, 200, 200},{ 340, 170, 270, 200, 240},{ 340, -50, 100, 200,  70}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 250, 200, 220},{ 340,  80, 220, 200, 190},{ 340, 150, 190, 200, 160}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 200, 210, 220},{ 340, 130, 200, 170,  80},{ 340,  70, 200, 110, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 200, 210, 120},{ 340, 270, 200, 270, 220},{ 340, 200, 200, 200, 200},{ 340, 270, 200, 270, 220}},
+{{ 340, 340, 340, 340, 340},{ 340,  70, 200, 110, 200},{ 340, 200, 200, 200, 200},{ 340, 110, 200, 150, 160},{ 340,  70, 200,  30, -160}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 240, 200, 240, 190},{ 340, 200, 200, 160, -30},{ 340, 270, 200, 230, 220}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 340, 100, 290},{ 340, 200, 230, -50, 150},{ 340, 200, 270,  70, 270},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 280,   0, 190},{ 340, 200, 280, 100, 190},{ 340, 200, 200, 200, 200},{ 340, 200, 280, 100, 190}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 270,  70, 270},{ 340, 200, 200, 200, 200},{ 340, 200, 270,  30, 230},{ 340, 200, 100, -290,  90}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 250,  70, 160},{ 340, 200, 220, -160, 220},{ 340, 200, 190,  90, 110}}
+}
+},
+/* UA....AU */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 280, 170, 200},{ 340, 250, 250, 150, 200},{ 340, 150, 150,  50, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 260, 260, 160, 200},{ 340, 310, 250, 240, 200},{ 340, 200, 200, 200, 200},{ 340, 310, 250, 240, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 150, 150,  50, 200},{ 340, 200, 200, 200, 200},{ 340, 210, 210, 100, 200},{ 340, 130,  30, 110, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 310, 250, 240, 200},{ 340, 230, 130, 210, 200},{ 340, 270, 170, 240, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 230, 340, 200, 310},{ 340, 210, 250, 200, 220},{ 340, 110, 250, 200, 220},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 220, 260, 200, 230},{ 340, 200, 250, 200, 220},{ 340, 200, 200, 200, 200},{ 340, 200, 250, 200, 220}},
+{{ 340, 340, 340, 340, 340},{ 340, 110, 250, 200, 220},{ 340, 200, 200, 200, 200},{ 340, 160, 270, 200, 240},{ 340, -10, 130, 200, 100}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 250, 200, 220},{ 340,  90, 230, 200, 200},{ 340, 120, 170, 200, 140}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 200, 210, 220},{ 340, 150, 200, 190, 100},{ 340,  50, 200,  90, 180},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 160, 200, 200, 110},{ 340, 240, 200, 240, 190},{ 340, 200, 200, 200, 200},{ 340, 240, 200, 240, 190}},
+{{ 340, 340, 340, 340, 340},{ 340,  50, 200,  90, 180},{ 340, 200, 200, 200, 200},{ 340, 100, 200, 140, 150},{ 340, 110, 200,  70, -120}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 240, 200, 240, 190},{ 340, 210, 200, 170, -20},{ 340, 240, 200, 200, 190}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 340, 100, 290},{ 340, 200, 250, -30, 170},{ 340, 200, 250,  50, 250},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 260, -20, 180},{ 340, 200, 250,  70, 160},{ 340, 200, 200, 200, 200},{ 340, 200, 250,  70, 160}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 250,  50, 250},{ 340, 200, 200, 200, 200},{ 340, 200, 270,  30, 220},{ 340, 200, 130, -250, 130}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 250,  70, 160},{ 340, 200, 230, -150, 230},{ 340, 200, 170,  70,  80}}
+}
+},
+/* UA....UA */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 280, 170, 200},{ 340, 230, 230, 130, 200},{ 340, 170, 170,  70, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 280, 280, 170, 200},{ 340, 340, 280, 270, 200},{ 340, 200, 200, 200, 200},{ 340, 340, 280, 270, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 170,  70, 200},{ 340, 200, 200, 200, 200},{ 340, 210, 210, 110, 200},{ 340, 100,   0,  70, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 310, 250, 240, 200},{ 340, 220, 120, 200, 200},{ 340, 290, 190, 270, 200}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 230, 340, 200, 310},{ 340, 190, 230, 200, 200},{ 340, 130, 270, 200, 240},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 230, 280, 200, 250},{ 340, 230, 280, 200, 250},{ 340, 200, 200, 200, 200},{ 340, 230, 280, 200, 250}},
+{{ 340, 340, 340, 340, 340},{ 340, 130, 270, 200, 240},{ 340, 200, 200, 200, 200},{ 340, 170, 270, 200, 240},{ 340, -50, 100, 200,  70}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 250, 200, 220},{ 340,  80, 220, 200, 190},{ 340, 150, 190, 200, 160}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 200, 210, 220},{ 340, 130, 200, 170,  80},{ 340,  70, 200, 110, 200},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 170, 200, 210, 120},{ 340, 270, 200, 270, 220},{ 340, 200, 200, 200, 200},{ 340, 270, 200, 270, 220}},
+{{ 340, 340, 340, 340, 340},{ 340,  70, 200, 110, 200},{ 340, 200, 200, 200, 200},{ 340, 110, 200, 150, 160},{ 340,  70, 200,  30, -160}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 240, 200, 240, 190},{ 340, 200, 200, 160, -30},{ 340, 270, 200, 230, 220}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 340, 100, 290},{ 340, 200, 230, -50, 150},{ 340, 200, 270,  70, 270},{ 340, 200, 200, 200, 200}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 280,   0, 190},{ 340, 200, 280, 100, 190},{ 340, 200, 200, 200, 200},{ 340, 200, 280, 100, 190}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 270,  70, 270},{ 340, 200, 200, 200, 200},{ 340, 200, 270,  30, 230},{ 340, 200, 100, -290,  90}},
+{{ 340, 340, 340, 340, 340},{ 340, 200, 200, 200, 200},{ 340, 200, 250,  70, 160},{ 340, 200, 220, -160, 220},{ 340, 200, 190,  90, 110}}
+}
+},
+/* UA....?? */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+}
+}
+},
+{ /* noPair */ {{{{0}}}},
+/* ??....CG */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+}
+},
+/* ??....GC */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+}
+},
+/* ??....GU */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+}
+},
+/* ??....UG */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+}
+},
+/* ??....AU */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+}
+},
+/* ??....UA */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+}
+},
+/* ??....?? */
+{{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+},
+{
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}},
+{{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340},{ 340, 340, 340, 340, 340}}
+}
+}
+}
+};
+
+PRIVATE int int22_H_184[NBPAIRS+1][NBPAIRS+1][5][5][5][5] =
+{ /* noPair */ {{{{{0}}}}},
+{ /* noPair */ {{{{0}}}},
+/* CG.@@..CG */
+{ { { {  0, 0, 0, 0, 0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* CG.@A..CG */
+{ {  0, 0, 0, 0, 0},
+{-1029,-1029,-1029,-1029,-1029},
+{ -519, -519, -519, -519, -519},
+{ -939, -939, -939, -939, -939},
+{ -809, -809, -809, -809, -809}},
+/* CG.@C..CG */
+{ {  0, 0, 0, 0, 0},
+{ -949, -949, -949, -949, -949},
+{ -449, -449, -449, -449, -449},
+{ -939, -939, -939, -939, -939},
+{ -739, -739, -739, -739, -739}},
+/* CG.@G..CG */
+{ {  0, 0, 0, 0, 0},
+{-1029,-1029,-1029,-1029,-1029},
+{ -519, -519, -519, -519, -519},
+{ -939, -939, -939, -939, -939},
+{ -809, -809, -809, -809, -809}},
+/* CG.@U..CG */
+{ {  0, 0, 0, 0, 0},
+{-1029,-1029,-1029,-1029,-1029},
+{ -669, -669, -669, -669, -669},
+{ -939, -939, -939, -939, -939},
+{ -859, -859, -859, -859, -859}}},
+/* CG.A@..CG */
+{{{  DEF,-1029, -949,-1029,-1029},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079}},
+/* CG.AA..CG */
+{{  DEF,-1029, -949,-1029,-1029},
+{-1079,-2058,-1978,-2058,-2058},
+{ -569,-1548,-1468,-1548,-1548},
+{ -989,-1968,-1888,-1968,-1968},
+{ -859,-1838,-1758,-1838,-1838}},
+/* CG.AC..CG */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -999,-1978,-1898,-1978,-1978},
+{ -499,-1478,-1398,-1478,-1478},
+{ -989,-1968,-1888,-1968,-1968},
+{ -789,-1768,-1688,-1768,-1768}},
+/* CG.AG..CG */
+{{  DEF,-1029, -949,-1029,-1029},
+{-1079,-2058,-1978,-2058,-2058},
+{ -569,-1548,-1468,-1548,-1548},
+{ -989,-1968,-1888,-1968,-1968},
+{ -859,-1838,-1758,-1838,-1838}},
+/* CG.AU..CG */
+{{  DEF,-1029, -949,-1029,-1029},
+{-1079,-2058,-1978,-2058,-2058},
+{ -719,-1698,-1618,-1698,-1698},
+{ -989,-1968,-1888,-1968,-1968},
+{ -909,-1888,-1808,-1888,-1888}}},
+/* CG.C@..CG */
+{{{  DEF, -519, -449, -519, -669},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719}},
+/* CG.CA..CG */
+{{  DEF, -519, -449, -519, -669},
+{-1079,-1548,-1478,-1548,-1698},
+{ -569,-1038, -968,-1038,-1188},
+{ -989,-1458,-1388,-1458,-1608},
+{ -859,-1328,-1258,-1328,-1478}},
+/* CG.CC..CG */
+{{  DEF, -519, -449, -519, -669},
+{ -999,-1468,-1398,-1468,-1618},
+{ -499, -968, -898, -968,-1118},
+{ -989,-1458,-1388,-1458,-1608},
+{ -789,-1258,-1188,-1258,-1408}},
+/* CG.CG..CG */
+{{  DEF, -519, -449, -519, -669},
+{-1079,-1548,-1478,-1548,-1698},
+{ -569,-1038, -968,-1038,-1188},
+{ -989,-1458,-1388,-1458,-1608},
+{ -859,-1328,-1258,-1328,-1478}},
+/* CG.CU..CG */
+{{  DEF, -519, -449, -519, -669},
+{-1079,-1548,-1478,-1548,-1698},
+{ -719,-1188,-1118,-1188,-1338},
+{ -989,-1458,-1388,-1458,-1608},
+{ -909,-1378,-1308,-1378,-1528}}},
+/* CG.G@..CG */
+{{{  DEF, -939, -939, -939, -939},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989}},
+/* CG.GA..CG */
+{{  DEF, -939, -939, -939, -939},
+{-1079,-1968,-1968,-1968,-1968},
+{ -569,-1458,-1458,-1458,-1458},
+{ -989,-1878,-1878,-1878,-1878},
+{ -859,-1748,-1748,-1748,-1748}},
+/* CG.GC..CG */
+{{  DEF, -939, -939, -939, -939},
+{ -999,-1888,-1888,-1888,-1888},
+{ -499,-1388,-1388,-1388,-1388},
+{ -989,-1878,-1878,-1878,-1878},
+{ -789,-1678,-1678,-1678,-1678}},
+/* CG.GG..CG */
+{{  DEF, -939, -939, -939, -939},
+{-1079,-1968,-1968,-1968,-1968},
+{ -569,-1458,-1458,-1458,-1458},
+{ -989,-1878,-1878,-1878,-1878},
+{ -859,-1748,-1748,-1748,-1748}},
+/* CG.GU..CG */
+{{  DEF, -939, -939, -939, -939},
+{-1079,-1968,-1968,-1968,-1968},
+{ -719,-1608,-1608,-1608,-1608},
+{ -989,-1878,-1878,-1878,-1878},
+{ -909,-1798,-1798,-1798,-1798}}},
+/* CG.U@..CG */
+{{{  DEF, -809, -739, -809, -859},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909}},
+/* CG.UA..CG */
+{{  DEF, -809, -739, -809, -859},
+{-1079,-1838,-1768,-1838,-1888},
+{ -569,-1328,-1258,-1328,-1378},
+{ -989,-1748,-1678,-1748,-1798},
+{ -859,-1618,-1548,-1618,-1668}},
+/* CG.UC..CG */
+{{  DEF, -809, -739, -809, -859},
+{ -999,-1758,-1688,-1758,-1808},
+{ -499,-1258,-1188,-1258,-1308},
+{ -989,-1748,-1678,-1748,-1798},
+{ -789,-1548,-1478,-1548,-1598}},
+/* CG.UG..CG */
+{{  DEF, -809, -739, -809, -859},
+{-1079,-1838,-1768,-1838,-1888},
+{ -569,-1328,-1258,-1328,-1378},
+{ -989,-1748,-1678,-1748,-1798},
+{ -859,-1618,-1548,-1618,-1668}},
+/* CG.UU..CG */
+{{  DEF, -809, -739, -809, -859},
+{-1079,-1838,-1768,-1838,-1888},
+{ -719,-1478,-1408,-1478,-1528},
+{ -989,-1748,-1678,-1748,-1798},
+{ -909,-1668,-1598,-1668,-1718}}}},
+/* CG.@@..GC */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* CG.@A..GC */
+{{    0,    0,    0,    0,    0},
+{ -519, -519, -519, -519, -519},
+{ -719, -719, -719, -719, -719},
+{ -709, -709, -709, -709, -709},
+{ -499, -499, -499, -499, -499}},
+/* CG.@C..GC */
+{{    0,    0,    0,    0,    0},
+{ -879, -879, -879, -879, -879},
+{ -309, -309, -309, -309, -309},
+{ -739, -739, -739, -739, -739},
+{ -499, -499, -499, -499, -499}},
+/* CG.@G..GC */
+{{    0,    0,    0,    0,    0},
+{ -559, -559, -559, -559, -559},
+{ -309, -309, -309, -309, -309},
+{ -619, -619, -619, -619, -619},
+{ -499, -499, -499, -499, -499}},
+/* CG.@U..GC */
+{{    0,    0,    0,    0,    0},
+{ -879, -879, -879, -879, -879},
+{ -389, -389, -389, -389, -389},
+{ -739, -739, -739, -739, -739},
+{ -569, -569, -569, -569, -569}}},
+/* CG.A@..GC */
+{{{  DEF,-1029, -949,-1029,-1029},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079}},
+/* CG.AA..GC */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -569,-1548,-1468,-1548,-1548},
+{ -769,-1748,-1668,-1748,-1748},
+{ -759,-1738,-1658,-1738,-1738},
+{ -549,-1528,-1448,-1528,-1528}},
+/* CG.AC..GC */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -929,-1908,-1828,-1908,-1908},
+{ -359,-1338,-1258,-1338,-1338},
+{ -789,-1768,-1688,-1768,-1768},
+{ -549,-1528,-1448,-1528,-1528}},
+/* CG.AG..GC */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -609,-1588,-1508,-1588,-1588},
+{ -359,-1338,-1258,-1338,-1338},
+{ -669,-1648,-1568,-1648,-1648},
+{ -549,-1528,-1448,-1528,-1528}},
+/* CG.AU..GC */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -929,-1908,-1828,-1908,-1908},
+{ -439,-1418,-1338,-1418,-1418},
+{ -789,-1768,-1688,-1768,-1768},
+{ -619,-1598,-1518,-1598,-1598}}},
+/* CG.C@..GC */
+{{{  DEF, -519, -449, -519, -669},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719}},
+/* CG.CA..GC */
+{{  DEF, -519, -449, -519, -669},
+{ -569,-1038, -968,-1038,-1188},
+{ -769,-1238,-1168,-1238,-1388},
+{ -759,-1228,-1158,-1228,-1378},
+{ -549,-1018, -948,-1018,-1168}},
+/* CG.CC..GC */
+{{  DEF, -519, -449, -519, -669},
+{ -929,-1398,-1328,-1398,-1548},
+{ -359, -828, -758, -828, -978},
+{ -789,-1258,-1188,-1258,-1408},
+{ -549,-1018, -948,-1018,-1168}},
+/* CG.CG..GC */
+{{  DEF, -519, -449, -519, -669},
+{ -609,-1078,-1008,-1078,-1228},
+{ -359, -828, -758, -828, -978},
+{ -669,-1138,-1068,-1138,-1288},
+{ -549,-1018, -948,-1018,-1168}},
+/* CG.CU..GC */
+{{  DEF, -519, -449, -519, -669},
+{ -929,-1398,-1328,-1398,-1548},
+{ -439, -908, -838, -908,-1058},
+{ -789,-1258,-1188,-1258,-1408},
+{ -619,-1088,-1018,-1088,-1238}}},
+/* CG.G@..GC */
+{{{  DEF, -939, -939, -939, -939},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989}},
+/* CG.GA..GC */
+{{  DEF, -939, -939, -939, -939},
+{ -569,-1458,-1458,-1458,-1458},
+{ -769,-1658,-1658,-1658,-1658},
+{ -759,-1648,-1648,-1648,-1648},
+{ -549,-1438,-1438,-1438,-1438}},
+/* CG.GC..GC */
+{{  DEF, -939, -939, -939, -939},
+{ -929,-1818,-1818,-1818,-1818},
+{ -359,-1248,-1248,-1248,-1248},
+{ -789,-1678,-1678,-1678,-1678},
+{ -549,-1438,-1438,-1438,-1438}},
+/* CG.GG..GC */
+{{  DEF, -939, -939, -939, -939},
+{ -609,-1498,-1498,-1498,-1498},
+{ -359,-1248,-1248,-1248,-1248},
+{ -669,-1558,-1558,-1558,-1558},
+{ -549,-1438,-1438,-1438,-1438}},
+/* CG.GU..GC */
+{{  DEF, -939, -939, -939, -939},
+{ -929,-1818,-1818,-1818,-1818},
+{ -439,-1328,-1328,-1328,-1328},
+{ -789,-1678,-1678,-1678,-3080},
+{ -619,-1508,-1508,-1508,-1508}}},
+/* CG.U@..GC */
+{{{  DEF, -809, -739, -809, -859},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909}},
+/* CG.UA..GC */
+{{  DEF, -809, -739, -809, -859},
+{ -569,-1328,-1258,-1328,-1378},
+{ -769,-1528,-1458,-1528,-1578},
+{ -759,-1518,-1448,-1518,-1568},
+{ -549,-1308,-1238,-1308,-1358}},
+/* CG.UC..GC */
+{{  DEF, -809, -739, -809, -859},
+{ -929,-1688,-1618,-1688,-1738},
+{ -359,-1118,-1048,-1118,-1168},
+{ -789,-1548,-1478,-1548,-1598},
+{ -549,-1308,-1238,-1308,-1358}},
+/* CG.UG..GC */
+{{  DEF, -809, -739, -809, -859},
+{ -609,-1368,-1298,-1368,-1418},
+{ -359,-1118,-1048,-1118,-1168},
+{ -669,-1428,-1358,-1428,-1478},
+{ -549,-1308,-1238,-1308,-1358}},
+/* CG.UU..GC */
+{{  DEF, -809, -739, -809, -859},
+{ -929,-1688,-1618,-1688,-1738},
+{ -439,-1198,-1128,-1198,-1248},
+{ -789,-1548,-1478,-1548,-1598},
+{ -619,-1378,-1308,-1378,-1428}}}},
+/* CG.@@..GU */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* CG.@A..GU */
+{{    0,    0,    0,    0,    0},
+{ -429, -429, -429, -429, -429},
+{ -259, -259, -259, -259, -259},
+{ -339, -339, -339, -339, -339},
+{ -329, -329, -329, -329, -329}},
+/* CG.@C..GU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* CG.@G..GU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* CG.@U..GU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}}},
+/* CG.A@..GU */
+{{{  DEF,-1029, -949,-1029,-1029},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079}},
+/* CG.AA..GU */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -479,-1458,-1378,-1458,-1458},
+{ -309,-1288,-1208,-1288,-1288},
+{ -389,-1368,-1288,-1368,-1368},
+{ -379,-1358,-1278,-1358,-1358}},
+/* CG.AC..GU */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -649,-1628,-1548,-1628,-1628},
+{ -289,-1268,-1188,-1268,-1268},
+{ -739,-1718,-1638,-1718,-1718},
+{ -379,-1358,-1278,-1358,-1358}},
+/* CG.AG..GU */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -649,-1628,-1548,-1628,-1628},
+{ -289,-1268,-1188,-1268,-1268},
+{ -739,-1718,-1638,-1718,-1718},
+{ -379,-1358,-1278,-1358,-1358}},
+/* CG.AU..GU */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -649,-1628,-1548,-1628,-1628},
+{ -289,-1268,-1188,-1268,-1268},
+{ -739,-1718,-1638,-1718,-1718},
+{ -379,-1358,-1278,-1358,-1358}}},
+/* CG.C@..GU */
+{{{  DEF, -519, -449, -519, -669},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719}},
+/* CG.CA..GU */
+{{  DEF, -519, -449, -519, -669},
+{ -479, -948, -878, -948,-1098},
+{ -309, -778, -708, -778, -928},
+{ -389, -858, -788, -858,-1008},
+{ -379, -848, -778, -848, -998}},
+/* CG.CC..GU */
+{{  DEF, -519, -449, -519, -669},
+{ -649,-1118,-1048,-1118,-1268},
+{ -289, -758, -688, -758, -908},
+{ -739,-1208,-1138,-1208,-1358},
+{ -379, -848, -778, -848, -998}},
+/* CG.CG..GU */
+{{  DEF, -519, -449, -519, -669},
+{ -649,-1118,-1048,-1118,-1268},
+{ -289, -758, -688, -758, -908},
+{ -739,-1208,-1138,-1208,-1358},
+{ -379, -848, -778, -848, -998}},
+/* CG.CU..GU */
+{{  DEF, -519, -449, -519, -669},
+{ -649,-1118,-1048,-1118,-1268},
+{ -289, -758, -688, -758, -908},
+{ -739,-1208,-1138,-1208,-1358},
+{ -379, -848, -778, -848, -998}}},
+/* CG.G@..GU */
+{{{  DEF, -939, -939, -939, -939},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989}},
+/* CG.GA..GU */
+{{  DEF, -939, -939, -939, -939},
+{ -479,-1368,-1368,-1368,-1368},
+{ -309,-1198,-1198,-1198,-1198},
+{ -389,-1278,-1278,-1278,-1278},
+{ -379,-1268,-1268,-1268,-1268}},
+/* CG.GC..GU */
+{{  DEF, -939, -939, -939, -939},
+{ -649,-1538,-1538,-1538,-1538},
+{ -289,-1178,-1178,-1178,-1178},
+{ -739,-1628,-1628,-1628,-1628},
+{ -379,-1268,-1268,-1268,-1268}},
+/* CG.GG..GU */
+{{  DEF, -939, -939, -939, -939},
+{ -649,-1538,-1538,-1538,-1538},
+{ -289,-1178,-1178,-1178,-1178},
+{ -739,-1628,-1628,-1628,-1628},
+{ -379,-1268,-1268,-1268,-1268}},
+/* CG.GU..GU */
+{{  DEF, -939, -939, -939, -939},
+{ -649,-1538,-1538,-1538,-1538},
+{ -289,-1178,-1178,-1178,-1178},
+{ -739,-1628,-1628,-1628,-1628},
+{ -379,-1268,-1268,-1268,-1268}}},
+/* CG.U@..GU */
+{{{  DEF, -809, -739, -809, -859},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909}},
+/* CG.UA..GU */
+{{  DEF, -809, -739, -809, -859},
+{ -479,-1238,-1168,-1238,-1288},
+{ -309,-1068, -998,-1068,-1118},
+{ -389,-1148,-1078,-1148,-1198},
+{ -379,-1138,-1068,-1138,-1188}},
+/* CG.UC..GU */
+{{  DEF, -809, -739, -809, -859},
+{ -649,-1408,-1338,-1408,-1458},
+{ -289,-1048, -978,-1048,-1098},
+{ -739,-1498,-1428,-1498,-1548},
+{ -379,-1138,-1068,-1138,-1188}},
+/* CG.UG..GU */
+{{  DEF, -809, -739, -809, -859},
+{ -649,-1408,-1338,-1408,-1458},
+{ -289,-1048, -978,-1048,-1098},
+{ -739,-1498,-1428,-1498,-1548},
+{ -379,-1138,-1068,-1138,-1188}},
+/* CG.UU..GU */
+{{  DEF, -809, -739, -809, -859},
+{ -649,-1408,-1338,-1408,-1458},
+{ -289,-1048, -978,-1048,-1098},
+{ -739,-1498,-1428,-1498,-1548},
+{ -379,-1138,-1068,-1138,-1188}}}},
+/* CG.@@..UG */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* CG.@A..UG */
+{{    0,    0,    0,    0,    0},
+{ -719, -719, -719, -719, -719},
+{ -479, -479, -479, -479, -479},
+{ -659, -659, -659, -659, -659},
+{ -549, -549, -549, -549, -549}},
+/* CG.@C..UG */
+{{    0,    0,    0,    0,    0},
+{ -789, -789, -789, -789, -789},
+{ -479, -479, -479, -479, -479},
+{ -809, -809, -809, -809, -809},
+{ -439, -439, -439, -439, -439}},
+/* CG.@G..UG */
+{{    0,    0,    0,    0,    0},
+{ -959, -959, -959, -959, -959},
+{ -359, -359, -359, -359, -359},
+{ -919, -919, -919, -919, -919},
+{ -549, -549, -549, -549, -549}},
+/* CG.@U..UG */
+{{    0,    0,    0,    0,    0},
+{ -809, -809, -809, -809, -809},
+{ -479, -479, -479, -479, -479},
+{ -809, -809, -809, -809, -809},
+{ -359, -359, -359, -359, -359}}},
+/* CG.A@..UG */
+{{{  DEF,-1029, -949,-1029,-1029},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079}},
+/* CG.AA..UG */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -769,-1748,-1668,-1748,-1748},
+{ -529,-1508,-1428,-1508,-1508},
+{ -709,-1688,-1608,-1688,-1688},
+{ -599,-1578,-1498,-1578,-1578}},
+/* CG.AC..UG */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -839,-1818,-1738,-1818,-1818},
+{ -529,-1508,-1428,-1508,-1508},
+{ -859,-1838,-1758,-1838,-1838},
+{ -489,-1468,-1388,-1468,-1468}},
+/* CG.AG..UG */
+{{  DEF,-1029, -949,-1029,-1029},
+{-1009,-1988,-1908,-1988,-1988},
+{ -409,-1388,-1308,-1388,-1388},
+{ -969,-1948,-1868,-1948,-1948},
+{ -599,-1578,-1498,-1578,-1578}},
+/* CG.AU..UG */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -859,-1838,-1758,-1838,-1838},
+{ -529,-1508,-1428,-1508,-1508},
+{ -859,-1838,-1758,-1838,-1838},
+{ -409,-1388,-1308,-1388,-1388}}},
+/* CG.C@..UG */
+{{{  DEF, -519, -449, -519, -669},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719}},
+/* CG.CA..UG */
+{{  DEF, -519, -449, -519, -669},
+{ -769,-1238,-1168,-1238,-1388},
+{ -529, -998, -928, -998,-1148},
+{ -709,-1178,-1108,-1178,-1328},
+{ -599,-1068, -998,-1068,-1218}},
+/* CG.CC..UG */
+{{  DEF, -519, -449, -519, -669},
+{ -839,-1308,-1238,-1308,-1458},
+{ -529, -998, -928, -998,-1148},
+{ -859,-1328,-1258,-1328,-1478},
+{ -489, -958, -888, -958,-1108}},
+/* CG.CG..UG */
+{{  DEF, -519, -449, -519, -669},
+{-1009,-1478,-1408,-1478,-1628},
+{ -409, -878, -808, -878,-1028},
+{ -969,-1438,-1368,-1438,-1588},
+{ -599,-1068, -998,-1068,-1218}},
+/* CG.CU..UG */
+{{  DEF, -519, -449, -519, -669},
+{ -859,-1328,-1258,-1328,-1478},
+{ -529, -998, -928, -998,-1148},
+{ -859,-1328,-1258,-1328,-1478},
+{ -409, -878, -808, -878,-1028}}},
+/* CG.G@..UG */
+{{{  DEF, -939, -939, -939, -939},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989}},
+/* CG.GA..UG */
+{{  DEF, -939, -939, -939, -939},
+{ -769,-1658,-1658,-1658,-1658},
+{ -529,-1418,-1418,-1418,-1418},
+{ -709,-1598,-1598,-1598,-1598},
+{ -599,-1488,-1488,-1488,-1488}},
+/* CG.GC..UG */
+{{  DEF, -939, -939, -939, -939},
+{ -839,-1728,-1728,-1728,-1728},
+{ -529,-1418,-1418,-1418,-1418},
+{ -859,-1748,-1748,-1748,-1748},
+{ -489,-1378,-1378,-1378,-1378}},
+/* CG.GG..UG */
+{{  DEF, -939, -939, -939, -939},
+{-1009,-1898,-1898,-1898,-1898},
+{ -409,-1298,-1298,-1298,-1298},
+{ -969,-1858,-1858,-1858,-1858},
+{ -599,-1488,-1488,-1488,-1488}},
+/* CG.GU..UG */
+{{  DEF, -939, -939, -939, -939},
+{ -859,-1748,-1748,-1748,-1748},
+{ -529,-1418,-1418,-1418,-1418},
+{ -859,-1748,-1748,-1748,-1748},
+{ -409,-1298,-1298,-1298,-1298}}},
+/* CG.U@..UG */
+{{{  DEF, -809, -739, -809, -859},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909}},
+/* CG.UA..UG */
+{{  DEF, -809, -739, -809, -859},
+{ -769,-1528,-1458,-1528,-1578},
+{ -529,-1288,-1218,-1288,-1338},
+{ -709,-1468,-1398,-1468,-1518},
+{ -599,-1358,-1288,-1358,-1408}},
+/* CG.UC..UG */
+{{  DEF, -809, -739, -809, -859},
+{ -839,-1598,-1528,-1598,-1648},
+{ -529,-1288,-1218,-1288,-1338},
+{ -859,-1618,-1548,-1618,-1668},
+{ -489,-1248,-1178,-1248,-1298}},
+/* CG.UG..UG */
+{{  DEF, -809, -739, -809, -859},
+{-1009,-1768,-1698,-1768,-1818},
+{ -409,-1168,-1098,-1168,-1218},
+{ -969,-1728,-1658,-1728,-1778},
+{ -599,-1358,-1288,-1358,-1408}},
+/* CG.UU..UG */
+{{  DEF, -809, -739, -809, -859},
+{ -859,-1618,-1548,-1618,-1668},
+{ -529,-1288,-1218,-1288,-1338},
+{ -859,-1618,-1548,-1618,-1668},
+{ -409,-1168,-1098,-1168,-1218}}}},
+/* CG.@@..AU */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* CG.@A..AU */
+{{    0,    0,    0,    0,    0},
+{ -429, -429, -429, -429, -429},
+{ -259, -259, -259, -259, -259},
+{ -339, -339, -339, -339, -339},
+{ -329, -329, -329, -329, -329}},
+/* CG.@C..AU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* CG.@G..AU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* CG.@U..AU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}}},
+/* CG.A@..AU */
+{{{  DEF,-1029, -949,-1029,-1029},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079}},
+/* CG.AA..AU */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -479,-1458,-1378,-1458,-1458},
+{ -309,-1288,-1208,-1288,-1288},
+{ -389,-1368,-1288,-1368,-1368},
+{ -379,-1358,-1278,-1358,-1358}},
+/* CG.AC..AU */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -649,-1628,-1548,-1628,-1628},
+{ -289,-1268,-1188,-1268,-1268},
+{ -739,-1718,-1638,-1718,-1718},
+{ -379,-1358,-1278,-1358,-1358}},
+/* CG.AG..AU */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -649,-1628,-1548,-1628,-1628},
+{ -289,-1268,-1188,-1268,-1268},
+{ -739,-1718,-1638,-1718,-1718},
+{ -379,-1358,-1278,-1358,-1358}},
+/* CG.AU..AU */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -649,-1628,-1548,-1628,-1628},
+{ -289,-1268,-1188,-1268,-1268},
+{ -739,-1718,-1638,-1718,-1718},
+{ -379,-1358,-1278,-1358,-1358}}},
+/* CG.C@..AU */
+{{{  DEF, -519, -449, -519, -669},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719}},
+/* CG.CA..AU */
+{{  DEF, -519, -449, -519, -669},
+{ -479, -948, -878, -948,-1098},
+{ -309, -778, -708, -778, -928},
+{ -389, -858, -788, -858,-1008},
+{ -379, -848, -778, -848, -998}},
+/* CG.CC..AU */
+{{  DEF, -519, -449, -519, -669},
+{ -649,-1118,-1048,-1118,-1268},
+{ -289, -758, -688, -758, -908},
+{ -739,-1208,-1138,-1208,-1358},
+{ -379, -848, -778, -848, -998}},
+/* CG.CG..AU */
+{{  DEF, -519, -449, -519, -669},
+{ -649,-1118,-1048,-1118,-1268},
+{ -289, -758, -688, -758, -908},
+{ -739,-1208,-1138,-1208,-1358},
+{ -379, -848, -778, -848, -998}},
+/* CG.CU..AU */
+{{  DEF, -519, -449, -519, -669},
+{ -649,-1118,-1048,-1118,-1268},
+{ -289, -758, -688, -758, -908},
+{ -739,-1208,-1138,-1208,-1358},
+{ -379, -848, -778, -848, -998}}},
+/* CG.G@..AU */
+{{{  DEF, -939, -939, -939, -939},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989}},
+/* CG.GA..AU */
+{{  DEF, -939, -939, -939, -939},
+{ -479,-1368,-1368,-1368,-1368},
+{ -309,-1198,-1198,-1198,-1198},
+{ -389,-1278,-1278,-1278,-1278},
+{ -379,-1268,-1268,-1268,-1268}},
+/* CG.GC..AU */
+{{  DEF, -939, -939, -939, -939},
+{ -649,-1538,-1538,-1538,-1538},
+{ -289,-1178,-1178,-1178,-1178},
+{ -739,-1628,-1628,-1628,-1628},
+{ -379,-1268,-1268,-1268,-1268}},
+/* CG.GG..AU */
+{{  DEF, -939, -939, -939, -939},
+{ -649,-1538,-1538,-1538,-1538},
+{ -289,-1178,-1178,-1178,-1178},
+{ -739,-1628,-1628,-1628,-1628},
+{ -379,-1268,-1268,-1268,-1268}},
+/* CG.GU..AU */
+{{  DEF, -939, -939, -939, -939},
+{ -649,-1538,-1538,-1538,-1538},
+{ -289,-1178,-1178,-1178,-1178},
+{ -739,-1628,-1628,-1628,-1628},
+{ -379,-1268,-1268,-1268,-1268}}},
+/* CG.U@..AU */
+{{{  DEF, -809, -739, -809, -859},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909}},
+/* CG.UA..AU */
+{{  DEF, -809, -739, -809, -859},
+{ -479,-1238,-1168,-1238,-1288},
+{ -309,-1068, -998,-1068,-1118},
+{ -389,-1148,-1078,-1148,-1198},
+{ -379,-1138,-1068,-1138,-1188}},
+/* CG.UC..AU */
+{{  DEF, -809, -739, -809, -859},
+{ -649,-1408,-1338,-1408,-1458},
+{ -289,-1048, -978,-1048,-1098},
+{ -739,-1498,-1428,-1498,-1548},
+{ -379,-1138,-1068,-1138,-1188}},
+/* CG.UG..AU */
+{{  DEF, -809, -739, -809, -859},
+{ -649,-1408,-1338,-1408,-1458},
+{ -289,-1048, -978,-1048,-1098},
+{ -739,-1498,-1428,-1498,-1548},
+{ -379,-1138,-1068,-1138,-1188}},
+/* CG.UU..AU */
+{{  DEF, -809, -739, -809, -859},
+{ -649,-1408,-1338,-1408,-1458},
+{ -289,-1048, -978,-1048,-1098},
+{ -739,-1498,-1428,-1498,-1548},
+{ -379,-1138,-1068,-1138,-1188}}}},
+/* CG.@@..UA */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* CG.@A..UA */
+{{    0,    0,    0,    0,    0},
+{ -399, -399, -399, -399, -399},
+{ -429, -429, -429, -429, -429},
+{ -379, -379, -379, -379, -379},
+{ -279, -279, -279, -279, -279}},
+/* CG.@C..UA */
+{{    0,    0,    0,    0,    0},
+{ -629, -629, -629, -629, -629},
+{ -509, -509, -509, -509, -509},
+{ -679, -679, -679, -679, -679},
+{ -139, -139, -139, -139, -139}},
+/* CG.@G..UA */
+{{    0,    0,    0,    0,    0},
+{ -889, -889, -889, -889, -889},
+{ -199, -199, -199, -199, -199},
+{ -889, -889, -889, -889, -889},
+{ -279, -279, -279, -279, -279}},
+/* CG.@U..UA */
+{{    0,    0,    0,    0,    0},
+{ -589, -589, -589, -589, -589},
+{ -179, -179, -179, -179, -179},
+{ -679, -679, -679, -679, -679},
+{ -140, -140, -140, -140, -140}}},
+/* CG.A@..UA */
+{{{  DEF,-1029, -949,-1029,-1029},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079}},
+/* CG.AA..UA */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -449,-1428,-1348,-1428,-1428},
+{ -479,-1458,-1378,-1458,-1458},
+{ -429,-1408,-1328,-1408,-1408},
+{ -329,-1308,-1228,-1308,-1308}},
+/* CG.AC..UA */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -679,-1658,-1578,-1658,-1658},
+{ -559,-1538,-1458,-1538,-1538},
+{ -729,-1708,-1628,-1708,-1708},
+{ -189,-1168,-1088,-1168,-1168}},
+/* CG.AG..UA */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -939,-1918,-1838,-1918,-1918},
+{ -249,-1228,-1148,-1228,-1228},
+{ -939,-1918,-1838,-1918,-1918},
+{ -329,-1308,-1228,-1308,-1308}},
+/* CG.AU..UA */
+{{  DEF,-1029, -949,-1029,-1029},
+{ -639,-1618,-1538,-1618,-1618},
+{ -229,-1208,-1128,-1208,-1208},
+{ -729,-1708,-1628,-1708,-1708},
+{ -190,-1169,-1089,-1169,-1169}}},
+/* CG.C@..UA */
+{{{  DEF, -519, -449, -519, -669},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719}},
+/* CG.CA..UA */
+{{  DEF, -519, -449, -519, -669},
+{ -449, -918, -848, -918,-1068},
+{ -479, -948, -878, -948,-1098},
+{ -429, -898, -828, -898,-1048},
+{ -329, -798, -728, -798, -948}},
+/* CG.CC..UA */
+{{  DEF, -519, -449, -519, -669},
+{ -679,-1148,-1078,-1148,-1298},
+{ -559,-1028, -958,-1028,-1178},
+{ -729,-1198,-1128,-1198,-1348},
+{ -189, -658, -588, -658, -808}},
+/* CG.CG..UA */
+{{  DEF, -519, -449, -519, -669},
+{ -939,-1408,-1338,-1408,-1558},
+{ -249, -718, -648, -718, -868},
+{ -939,-1408,-1338,-1408,-1558},
+{ -329, -798, -728, -798, -948}},
+/* CG.CU..UA */
+{{  DEF, -519, -449, -519, -669},
+{ -639,-1108,-1038,-1108,-1258},
+{ -229, -698, -628, -698, -848},
+{ -729,-1198,-1128,-1198,-1348},
+{ -190, -659, -589, -659, -809}}},
+/* CG.G@..UA */
+{{{  DEF, -939, -939, -939, -939},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989}},
+/* CG.GA..UA */
+{{  DEF, -939, -939, -939, -939},
+{ -449,-1338,-1338,-1338,-1338},
+{ -479,-1368,-1368,-1368,-1368},
+{ -429,-1318,-1318,-1318,-1318},
+{ -329,-1218,-1218,-1218,-1218}},
+/* CG.GC..UA */
+{{  DEF, -939, -939, -939, -939},
+{ -679,-1568,-1568,-1568,-1568},
+{ -559,-1448,-1448,-1448,-1448},
+{ -729,-1618,-1618,-1618,-1618},
+{ -189,-1078,-1078,-1078,-1078}},
+/* CG.GG..UA */
+{{  DEF, -939, -939, -939, -939},
+{ -939,-1828,-1828,-1828,-1828},
+{ -249,-1138,-1138,-1138,-1138},
+{ -939,-1828,-1828,-1828,-1828},
+{ -329,-1218,-1218,-1218,-1218}},
+/* CG.GU..UA */
+{{  DEF, -939, -939, -939, -939},
+{ -639,-1528,-1528,-1528,-1528},
+{ -229,-1118,-1118,-1118,-1118},
+{ -729,-1618,-1618,-1618,-1618},
+{ -190,-1079,-1079,-1079,-1079}}},
+/* CG.U@..UA */
+{{{  DEF, -809, -739, -809, -859},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909}},
+/* CG.UA..UA */
+{{  DEF, -809, -739, -809, -859},
+{ -449,-1208,-1138,-1208,-1258},
+{ -479,-1238,-1168,-1238,-1288},
+{ -429,-1188,-1118,-1188,-1238},
+{ -329,-1088,-1018,-1088,-1138}},
+/* CG.UC..UA */
+{{  DEF, -809, -739, -809, -859},
+{ -679,-1438,-1368,-1438,-1488},
+{ -559,-1318,-1248,-1318,-1368},
+{ -729,-1488,-1418,-1488,-1538},
+{ -189, -948, -878, -948, -998}},
+/* CG.UG..UA */
+{{  DEF, -809, -739, -809, -859},
+{ -939,-1698,-1628,-1698,-1748},
+{ -249,-1008, -938,-1008,-1058},
+{ -939,-1698,-1628,-1698,-1748},
+{ -329,-1088,-1018,-1088,-1138}},
+/* CG.UU..UA */
+{{  DEF, -809, -739, -809, -859},
+{ -639,-1398,-1328,-1398,-1448},
+{ -229, -988, -918, -988,-1038},
+{ -729,-1488,-1418,-1488,-1538},
+{ -190, -949, -879, -949, -999}}}},
+/* CG.@@.. @ */
+{{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* CG.@A.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* CG.@C.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* CG.@G.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* CG.@U.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}}},
+/* CG.A@.. @ */
+{{{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079}},
+/* CG.AA.. @ */
+{{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079}},
+/* CG.AC.. @ */
+{{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079}},
+/* CG.AG.. @ */
+{{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079}},
+/* CG.AU.. @ */
+{{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079},
+{ -100,-1079, -999,-1079,-1079}}},
+/* CG.C@.. @ */
+{{{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719}},
+/* CG.CA.. @ */
+{{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719}},
+/* CG.CC.. @ */
+{{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719}},
+/* CG.CG.. @ */
+{{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719}},
+/* CG.CU.. @ */
+{{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719},
+{ -100, -569, -499, -569, -719}}},
+/* CG.G@.. @ */
+{{{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989}},
+/* CG.GA.. @ */
+{{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989}},
+/* CG.GC.. @ */
+{{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989}},
+/* CG.GG.. @ */
+{{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989}},
+/* CG.GU.. @ */
+{{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989},
+{ -100, -989, -989, -989, -989}}},
+/* CG.U@.. @ */
+{{{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909}},
+/* CG.UA.. @ */
+{{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909}},
+/* CG.UC.. @ */
+{{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909}},
+/* CG.UG.. @ */
+{{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909}},
+/* CG.UU.. @ */
+{{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909},
+{ -100, -859, -789, -859, -909}}}}},
+{ /* noPair */ {{{{0}}}},
+/* GC.@@..CG */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GC.@A..CG */
+{{    0,    0,    0,    0,    0},
+{-1029,-1029,-1029,-1029,-1029},
+{ -519, -519, -519, -519, -519},
+{ -939, -939, -939, -939, -939},
+{ -809, -809, -809, -809, -809}},
+/* GC.@C..CG */
+{{    0,    0,    0,    0,    0},
+{ -949, -949, -949, -949, -949},
+{ -449, -449, -449, -449, -449},
+{ -939, -939, -939, -939, -939},
+{ -739, -739, -739, -739, -739}},
+/* GC.@G..CG */
+{{    0,    0,    0,    0,    0},
+{-1029,-1029,-1029,-1029,-1029},
+{ -519, -519, -519, -519, -519},
+{ -939, -939, -939, -939, -939},
+{ -809, -809, -809, -809, -809}},
+/* GC.@U..CG */
+{{    0,    0,    0,    0,    0},
+{-1029,-1029,-1029,-1029,-1029},
+{ -669, -669, -669, -669, -669},
+{ -939, -939, -939, -939, -939},
+{ -859, -859, -859, -859, -859}}},
+/* GC.A@..CG */
+{{{  DEF, -519, -879, -559, -879},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929}},
+/* GC.AA..CG */
+{{  DEF, -519, -879, -559, -879},
+{-1079,-1548,-1908,-1588,-1908},
+{ -569,-1038,-1398,-1078,-1398},
+{ -989,-1458,-1818,-1498,-1818},
+{ -859,-1328,-1688,-1368,-1688}},
+/* GC.AC..CG */
+{{  DEF, -519, -879, -559, -879},
+{ -999,-1468,-1828,-1508,-1828},
+{ -499, -968,-1328,-1008,-1328},
+{ -989,-1458,-1818,-1498,-1818},
+{ -789,-1258,-1618,-1298,-1618}},
+/* GC.AG..CG */
+{{  DEF, -519, -879, -559, -879},
+{-1079,-1548,-1908,-1588,-1908},
+{ -569,-1038,-1398,-1078,-1398},
+{ -989,-1458,-1818,-1498,-1818},
+{ -859,-1328,-1688,-1368,-1688}},
+/* GC.AU..CG */
+{{  DEF, -519, -879, -559, -879},
+{-1079,-1548,-1908,-1588,-1908},
+{ -719,-1188,-1548,-1228,-1548},
+{ -989,-1458,-1818,-1498,-1818},
+{ -909,-1378,-1738,-1418,-1738}}},
+/* GC.C@..CG */
+{{{  DEF, -719, -309, -309, -389},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439}},
+/* GC.CA..CG */
+{{  DEF, -719, -309, -309, -389},
+{-1079,-1748,-1338,-1338,-1418},
+{ -569,-1238, -828, -828, -908},
+{ -989,-1658,-1248,-1248,-1328},
+{ -859,-1528,-1118,-1118,-1198}},
+/* GC.CC..CG */
+{{  DEF, -719, -309, -309, -389},
+{ -999,-1668,-1258,-1258,-1338},
+{ -499,-1168, -758, -758, -838},
+{ -989,-1658,-1248,-1248,-1328},
+{ -789,-1458,-1048,-1048,-1128}},
+/* GC.CG..CG */
+{{  DEF, -719, -309, -309, -389},
+{-1079,-1748,-1338,-1338,-1418},
+{ -569,-1238, -828, -828, -908},
+{ -989,-1658,-1248,-1248,-1328},
+{ -859,-1528,-1118,-1118,-1198}},
+/* GC.CU..CG */
+{{  DEF, -719, -309, -309, -389},
+{-1079,-1748,-1338,-1338,-1418},
+{ -719,-1388, -978, -978,-1058},
+{ -989,-1658,-1248,-1248,-1328},
+{ -909,-1578,-1168,-1168,-1248}}},
+/* GC.G@..CG */
+{{{  DEF, -709, -739, -619, -739},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789}},
+/* GC.GA..CG */
+{{  DEF, -709, -739, -619, -739},
+{-1079,-1738,-1768,-1648,-1768},
+{ -569,-1228,-1258,-1138,-1258},
+{ -989,-1648,-1678,-1558,-1678},
+{ -859,-1518,-1548,-1428,-1548}},
+/* GC.GC..CG */
+{{  DEF, -709, -739, -619, -739},
+{ -999,-1658,-1688,-1568,-1688},
+{ -499,-1158,-1188,-1068,-1188},
+{ -989,-1648,-1678,-1558,-1678},
+{ -789,-1448,-1478,-1358,-1478}},
+/* GC.GG..CG */
+{{  DEF, -709, -739, -619, -739},
+{-1079,-1738,-1768,-1648,-1768},
+{ -569,-1228,-1258,-1138,-1258},
+{ -989,-1648,-1678,-1558,-1678},
+{ -859,-1518,-1548,-1428,-1548}},
+/* GC.GU..CG */
+{{  DEF, -709, -739, -619, -739},
+{-1079,-1738,-1768,-1648,-1768},
+{ -719,-1378,-1408,-1288,-1408},
+{ -989,-1648,-1678,-1558,-3080},
+{ -909,-1568,-1598,-1478,-1598}}},
+/* GC.U@..CG */
+{{{  DEF, -499, -499, -499, -569},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619}},
+/* GC.UA..CG */
+{{  DEF, -499, -499, -499, -569},
+{-1079,-1528,-1528,-1528,-1598},
+{ -569,-1018,-1018,-1018,-1088},
+{ -989,-1438,-1438,-1438,-1508},
+{ -859,-1308,-1308,-1308,-1378}},
+/* GC.UC..CG */
+{{  DEF, -499, -499, -499, -569},
+{ -999,-1448,-1448,-1448,-1518},
+{ -499, -948, -948, -948,-1018},
+{ -989,-1438,-1438,-1438,-1508},
+{ -789,-1238,-1238,-1238,-1308}},
+/* GC.UG..CG */
+{{  DEF, -499, -499, -499, -569},
+{-1079,-1528,-1528,-1528,-1598},
+{ -569,-1018,-1018,-1018,-1088},
+{ -989,-1438,-1438,-1438,-1508},
+{ -859,-1308,-1308,-1308,-1378}},
+/* GC.UU..CG */
+{{  DEF, -499, -499, -499, -569},
+{-1079,-1528,-1528,-1528,-1598},
+{ -719,-1168,-1168,-1168,-1238},
+{ -989,-1438,-1438,-1438,-1508},
+{ -909,-1358,-1358,-1358,-1428}}}},
+/* GC.@@..GC */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GC.@A..GC */
+{{    0,    0,    0,    0,    0},
+{ -519, -519, -519, -519, -519},
+{ -719, -719, -719, -719, -719},
+{ -709, -709, -709, -709, -709},
+{ -499, -499, -499, -499, -499}},
+/* GC.@C..GC */
+{{    0,    0,    0,    0,    0},
+{ -879, -879, -879, -879, -879},
+{ -309, -309, -309, -309, -309},
+{ -739, -739, -739, -739, -739},
+{ -499, -499, -499, -499, -499}},
+/* GC.@G..GC */
+{{    0,    0,    0,    0,    0},
+{ -559, -559, -559, -559, -559},
+{ -309, -309, -309, -309, -309},
+{ -619, -619, -619, -619, -619},
+{ -499, -499, -499, -499, -499}},
+/* GC.@U..GC */
+{{    0,    0,    0,    0,    0},
+{ -879, -879, -879, -879, -879},
+{ -389, -389, -389, -389, -389},
+{ -739, -739, -739, -739, -739},
+{ -569, -569, -569, -569, -569}}},
+/* GC.A@..GC */
+{{{  DEF, -519, -879, -559, -879},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929}},
+/* GC.AA..GC */
+{{  DEF, -519, -879, -559, -879},
+{ -569,-1038,-1398,-1078,-1398},
+{ -769,-1238,-1598,-1278,-1598},
+{ -759,-1228,-1588,-1268,-1588},
+{ -549,-1018,-1378,-1058,-1378}},
+/* GC.AC..GC */
+{{  DEF, -519, -879, -559, -879},
+{ -929,-1398,-1758,-1438,-1758},
+{ -359, -828,-1188, -868,-1188},
+{ -789,-1258,-1618,-1298,-1618},
+{ -549,-1018,-1378,-1058,-1378}},
+/* GC.AG..GC */
+{{  DEF, -519, -879, -559, -879},
+{ -609,-1078,-1438,-1118,-1438},
+{ -359, -828,-1188, -868,-1188},
+{ -669,-1138,-1498,-1178,-1498},
+{ -549,-1018,-1378,-1058,-1378}},
+/* GC.AU..GC */
+{{  DEF, -519, -879, -559, -879},
+{ -929,-1398,-1758,-1438,-1758},
+{ -439, -908,-1268, -948,-1268},
+{ -789,-1258,-1618,-1298,-1618},
+{ -619,-1088,-1448,-1128,-1448}}},
+/* GC.C@..GC */
+{{{  DEF, -719, -309, -309, -389},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439}},
+/* GC.CA..GC */
+{{  DEF, -719, -309, -309, -389},
+{ -569,-1238, -828, -828, -908},
+{ -769,-1438,-1028,-1028,-1108},
+{ -759,-1428,-1018,-1018,-1098},
+{ -549,-1218, -808, -808, -888}},
+/* GC.CC..GC */
+{{  DEF, -719, -309, -309, -389},
+{ -929,-1598,-1188,-1188,-1268},
+{ -359,-1028, -618, -618, -698},
+{ -789,-1458,-1048,-1048,-1128},
+{ -549,-1218, -808, -808, -888}},
+/* GC.CG..GC */
+{{  DEF, -719, -309, -309, -389},
+{ -609,-1278, -868, -868, -948},
+{ -359,-1028, -618, -618, -698},
+{ -669,-1338, -928, -928,-1008},
+{ -549,-1218, -808, -808, -888}},
+/* GC.CU..GC */
+{{  DEF, -719, -309, -309, -389},
+{ -929,-1598,-1188,-1188,-1268},
+{ -439,-1108, -698, -698, -778},
+{ -789,-1458,-1048,-1048,-1128},
+{ -619,-1288, -878, -878, -958}}},
+/* GC.G@..GC */
+{{{  DEF, -709, -739, -619, -739},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789}},
+/* GC.GA..GC */
+{{  DEF, -709, -739, -619, -739},
+{ -569,-1228,-1258,-1138,-1258},
+{ -769,-1428,-1458,-1338,-1458},
+{ -759,-1418,-1448,-1328,-1448},
+{ -549,-1208,-1238,-1118,-1238}},
+/* GC.GC..GC */
+{{  DEF, -709, -739, -619, -739},
+{ -929,-1588,-1618,-1498,-1618},
+{ -359,-1018,-1048, -928,-1048},
+{ -789,-1448,-1478,-1358,-1478},
+{ -549,-1208,-1238,-1118,-1238}},
+/* GC.GG..GC */
+{{  DEF, -709, -739, -619, -739},
+{ -609,-1268,-1298,-1178,-1298},
+{ -359,-1018,-1048, -928,-1048},
+{ -669,-1328,-1358,-1238,-1358},
+{ -549,-1208,-1238,-1118,-1238}},
+/* GC.GU..GC */
+{{  DEF, -709, -739, -619, -739},
+{ -929,-1588,-1618,-1498,-1618},
+{ -439,-1098,-1128,-1008,-1128},
+{ -789,-1448,-1478,-1358,-3080},
+{ -619,-1278,-1308,-1188,-1308}}},
+/* GC.U@..GC */
+{{{  DEF, -499, -499, -499, -569},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619}},
+/* GC.UA..GC */
+{{  DEF, -499, -499, -499, -569},
+{ -569,-1018,-1018,-1018,-1088},
+{ -769,-1218,-1218,-1218,-1288},
+{ -759,-1208,-1208,-1208,-1278},
+{ -549, -998, -998, -998,-1068}},
+/* GC.UC..GC */
+{{  DEF, -499, -499, -499, -569},
+{ -929,-1378,-1378,-1378,-1448},
+{ -359, -808, -808, -808, -878},
+{ -789,-1238,-1238,-1238,-1308},
+{ -549, -998, -998, -998,-1068}},
+/* GC.UG..GC */
+{{  DEF, -499, -499, -499, -569},
+{ -609,-1058,-1058,-1058,-1128},
+{ -359, -808, -808, -808, -878},
+{ -669,-1118,-1118,-1118,-1188},
+{ -549, -998, -998, -998,-1068}},
+/* GC.UU..GC */
+{{  DEF, -499, -499, -499, -569},
+{ -929,-1378,-1378,-1378,-1448},
+{ -439, -888, -888, -888, -958},
+{ -789,-1238,-1238,-1238,-1308},
+{ -619,-1068,-1068,-1068,-1138}}}},
+/* GC.@@..GU */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GC.@A..GU */
+{{    0,    0,    0,    0,    0},
+{ -429, -429, -429, -429, -429},
+{ -259, -259, -259, -259, -259},
+{ -339, -339, -339, -339, -339},
+{ -329, -329, -329, -329, -329}},
+/* GC.@C..GU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* GC.@G..GU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* GC.@U..GU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}}},
+/* GC.A@..GU */
+{{{  DEF, -519, -879, -559, -879},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929}},
+/* GC.AA..GU */
+{{  DEF, -519, -879, -559, -879},
+{ -479, -948,-1308, -988,-1308},
+{ -309, -778,-1138, -818,-1138},
+{ -389, -858,-1218, -898,-1218},
+{ -379, -848,-1208, -888,-1208}},
+/* GC.AC..GU */
+{{  DEF, -519, -879, -559, -879},
+{ -649,-1118,-1478,-1158,-1478},
+{ -289, -758,-1118, -798,-1118},
+{ -739,-1208,-1568,-1248,-1568},
+{ -379, -848,-1208, -888,-1208}},
+/* GC.AG..GU */
+{{  DEF, -519, -879, -559, -879},
+{ -649,-1118,-1478,-1158,-1478},
+{ -289, -758,-1118, -798,-1118},
+{ -739,-1208,-1568,-1248,-1568},
+{ -379, -848,-1208, -888,-1208}},
+/* GC.AU..GU */
+{{  DEF, -519, -879, -559, -879},
+{ -649,-1118,-1478,-1158,-1478},
+{ -289, -758,-1118, -798,-1118},
+{ -739,-1208,-1568,-1248,-1568},
+{ -379, -848,-1208, -888,-1208}}},
+/* GC.C@..GU */
+{{{  DEF, -719, -309, -309, -389},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439}},
+/* GC.CA..GU */
+{{  DEF, -719, -309, -309, -389},
+{ -479,-1148, -738, -738, -818},
+{ -309, -978, -568, -568, -648},
+{ -389,-1058, -648, -648, -728},
+{ -379,-1048, -638, -638, -718}},
+/* GC.CC..GU */
+{{  DEF, -719, -309, -309, -389},
+{ -649,-1318, -908, -908, -988},
+{ -289, -958, -548, -548, -628},
+{ -739,-1408, -998, -998,-1078},
+{ -379,-1048, -638, -638, -718}},
+/* GC.CG..GU */
+{{  DEF, -719, -309, -309, -389},
+{ -649,-1318, -908, -908, -988},
+{ -289, -958, -548, -548, -628},
+{ -739,-1408, -998, -998,-1078},
+{ -379,-1048, -638, -638, -718}},
+/* GC.CU..GU */
+{{  DEF, -719, -309, -309, -389},
+{ -649,-1318, -908, -908, -988},
+{ -289, -958, -548, -548, -628},
+{ -739,-1408, -998, -998,-1078},
+{ -379,-1048, -638, -638, -718}}},
+/* GC.G@..GU */
+{{{  DEF, -709, -739, -619, -739},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789}},
+/* GC.GA..GU */
+{{  DEF, -709, -739, -619, -739},
+{ -479,-1138,-1168,-1048,-1168},
+{ -309, -968, -998, -878, -998},
+{ -389,-1048,-1078, -958,-1078},
+{ -379,-1038,-1068, -948,-1068}},
+/* GC.GC..GU */
+{{  DEF, -709, -739, -619, -739},
+{ -649,-1308,-1338,-1218,-1338},
+{ -289, -948, -978, -858, -978},
+{ -739,-1398,-1428,-1308,-1428},
+{ -379,-1038,-1068, -948,-1068}},
+/* GC.GG..GU */
+{{  DEF, -709, -739, -619, -739},
+{ -649,-1308,-1338,-1218,-1338},
+{ -289, -948, -978, -858, -978},
+{ -739,-1398,-1428,-1308,-1428},
+{ -379,-1038,-1068, -948,-1068}},
+/* GC.GU..GU */
+{{  DEF, -709, -739, -619, -739},
+{ -649,-1308,-1338,-1218,-1338},
+{ -289, -948, -978, -858, -978},
+{ -739,-1398,-1428,-1308,-1428},
+{ -379,-1038,-1068, -948,-1068}}},
+/* GC.U@..GU */
+{{{  DEF, -499, -499, -499, -569},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619}},
+/* GC.UA..GU */
+{{  DEF, -499, -499, -499, -569},
+{ -479, -928, -928, -928, -998},
+{ -309, -758, -758, -758, -828},
+{ -389, -838, -838, -838, -908},
+{ -379, -828, -828, -828, -898}},
+/* GC.UC..GU */
+{{  DEF, -499, -499, -499, -569},
+{ -649,-1098,-1098,-1098,-1168},
+{ -289, -738, -738, -738, -808},
+{ -739,-1188,-1188,-1188,-1258},
+{ -379, -828, -828, -828, -898}},
+/* GC.UG..GU */
+{{  DEF, -499, -499, -499, -569},
+{ -649,-1098,-1098,-1098,-1168},
+{ -289, -738, -738, -738, -808},
+{ -739,-1188,-1188,-1188,-1258},
+{ -379, -828, -828, -828, -898}},
+/* GC.UU..GU */
+{{  DEF, -499, -499, -499, -569},
+{ -649,-1098,-1098,-1098,-1168},
+{ -289, -738, -738, -738, -808},
+{ -739,-1188,-1188,-1188,-1258},
+{ -379, -828, -828, -828, -898}}}},
+/* GC.@@..UG */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GC.@A..UG */
+{{    0,    0,    0,    0,    0},
+{ -719, -719, -719, -719, -719},
+{ -479, -479, -479, -479, -479},
+{ -659, -659, -659, -659, -659},
+{ -549, -549, -549, -549, -549}},
+/* GC.@C..UG */
+{{    0,    0,    0,    0,    0},
+{ -789, -789, -789, -789, -789},
+{ -479, -479, -479, -479, -479},
+{ -809, -809, -809, -809, -809},
+{ -439, -439, -439, -439, -439}},
+/* GC.@G..UG */
+{{    0,    0,    0,    0,    0},
+{ -959, -959, -959, -959, -959},
+{ -359, -359, -359, -359, -359},
+{ -919, -919, -919, -919, -919},
+{ -549, -549, -549, -549, -549}},
+/* GC.@U..UG */
+{{    0,    0,    0,    0,    0},
+{ -809, -809, -809, -809, -809},
+{ -479, -479, -479, -479, -479},
+{ -809, -809, -809, -809, -809},
+{ -359, -359, -359, -359, -359}}},
+/* GC.A@..UG */
+{{{  DEF, -519, -879, -559, -879},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929}},
+/* GC.AA..UG */
+{{  DEF, -519, -879, -559, -879},
+{ -769,-1238,-1598,-1278,-1598},
+{ -529, -998,-1358,-1038,-1358},
+{ -709,-1178,-1538,-1218,-1538},
+{ -599,-1068,-1428,-1108,-1428}},
+/* GC.AC..UG */
+{{  DEF, -519, -879, -559, -879},
+{ -839,-1308,-1668,-1348,-1668},
+{ -529, -998,-1358,-1038,-1358},
+{ -859,-1328,-1688,-1368,-1688},
+{ -489, -958,-1318, -998,-1318}},
+/* GC.AG..UG */
+{{  DEF, -519, -879, -559, -879},
+{-1009,-1478,-1838,-1518,-1838},
+{ -409, -878,-1238, -918,-1238},
+{ -969,-1438,-1798,-1478,-1798},
+{ -599,-1068,-1428,-1108,-1428}},
+/* GC.AU..UG */
+{{  DEF, -519, -879, -559, -879},
+{ -859,-1328,-1688,-1368,-1688},
+{ -529, -998,-1358,-1038,-1358},
+{ -859,-1328,-1688,-1368,-1688},
+{ -409, -878,-1238, -918,-1238}}},
+/* GC.C@..UG */
+{{{  DEF, -719, -309, -309, -389},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439}},
+/* GC.CA..UG */
+{{  DEF, -719, -309, -309, -389},
+{ -769,-1438,-1028,-1028,-1108},
+{ -529,-1198, -788, -788, -868},
+{ -709,-1378, -968, -968,-1048},
+{ -599,-1268, -858, -858, -938}},
+/* GC.CC..UG */
+{{  DEF, -719, -309, -309, -389},
+{ -839,-1508,-1098,-1098,-1178},
+{ -529,-1198, -788, -788, -868},
+{ -859,-1528,-1118,-1118,-1198},
+{ -489,-1158, -748, -748, -828}},
+/* GC.CG..UG */
+{{  DEF, -719, -309, -309, -389},
+{-1009,-1678,-1268,-1268,-1348},
+{ -409,-1078, -668, -668, -748},
+{ -969,-1638,-1228,-1228,-1308},
+{ -599,-1268, -858, -858, -938}},
+/* GC.CU..UG */
+{{  DEF, -719, -309, -309, -389},
+{ -859,-1528,-1118,-1118,-1198},
+{ -529,-1198, -788, -788, -868},
+{ -859,-1528,-1118,-1118,-1198},
+{ -409,-1078, -668, -668, -748}}},
+/* GC.G@..UG */
+{{{  DEF, -709, -739, -619, -739},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789}},
+/* GC.GA..UG */
+{{  DEF, -709, -739, -619, -739},
+{ -769,-1428,-1458,-1338,-1458},
+{ -529,-1188,-1218,-1098,-1218},
+{ -709,-1368,-1398,-1278,-1398},
+{ -599,-1258,-1288,-1168,-1288}},
+/* GC.GC..UG */
+{{  DEF, -709, -739, -619, -739},
+{ -839,-1498,-1528,-1408,-1528},
+{ -529,-1188,-1218,-1098,-1218},
+{ -859,-1518,-1548,-1428,-1548},
+{ -489,-1148,-1178,-1058,-1178}},
+/* GC.GG..UG */
+{{  DEF, -709, -739, -619, -739},
+{-1009,-1668,-1698,-1578,-1698},
+{ -409,-1068,-1098, -978,-1098},
+{ -969,-1628,-1658,-1538,-1658},
+{ -599,-1258,-1288,-1168,-1288}},
+/* GC.GU..UG */
+{{  DEF, -709, -739, -619, -739},
+{ -859,-1518,-1548,-1428,-1548},
+{ -529,-1188,-1218,-1098,-1218},
+{ -859,-1518,-1548,-1428,-1548},
+{ -409,-1068,-1098, -978,-1098}}},
+/* GC.U@..UG */
+{{{  DEF, -499, -499, -499, -569},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619}},
+/* GC.UA..UG */
+{{  DEF, -499, -499, -499, -569},
+{ -769,-1218,-1218,-1218,-1288},
+{ -529, -978, -978, -978,-1048},
+{ -709,-1158,-1158,-1158,-1228},
+{ -599,-1048,-1048,-1048,-1118}},
+/* GC.UC..UG */
+{{  DEF, -499, -499, -499, -569},
+{ -839,-1288,-1288,-1288,-1358},
+{ -529, -978, -978, -978,-1048},
+{ -859,-1308,-1308,-1308,-1378},
+{ -489, -938, -938, -938,-1008}},
+/* GC.UG..UG */
+{{  DEF, -499, -499, -499, -569},
+{-1009,-1458,-1458,-1458,-1528},
+{ -409, -858, -858, -858, -928},
+{ -969,-1418,-1418,-1418,-1488},
+{ -599,-1048,-1048,-1048,-1118}},
+/* GC.UU..UG */
+{{  DEF, -499, -499, -499, -569},
+{ -859,-1308,-1308,-1308,-1378},
+{ -529, -978, -978, -978,-1048},
+{ -859,-1308,-1308,-1308,-1378},
+{ -409, -858, -858, -858, -928}}}},
+/* GC.@@..AU */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GC.@A..AU */
+{{    0,    0,    0,    0,    0},
+{ -429, -429, -429, -429, -429},
+{ -259, -259, -259, -259, -259},
+{ -339, -339, -339, -339, -339},
+{ -329, -329, -329, -329, -329}},
+/* GC.@C..AU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* GC.@G..AU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* GC.@U..AU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}}},
+/* GC.A@..AU */
+{{{  DEF, -519, -879, -559, -879},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929}},
+/* GC.AA..AU */
+{{  DEF, -519, -879, -559, -879},
+{ -479, -948,-1308, -988,-1308},
+{ -309, -778,-1138, -818,-1138},
+{ -389, -858,-1218, -898,-1218},
+{ -379, -848,-1208, -888,-1208}},
+/* GC.AC..AU */
+{{  DEF, -519, -879, -559, -879},
+{ -649,-1118,-1478,-1158,-1478},
+{ -289, -758,-1118, -798,-1118},
+{ -739,-1208,-1568,-1248,-1568},
+{ -379, -848,-1208, -888,-1208}},
+/* GC.AG..AU */
+{{  DEF, -519, -879, -559, -879},
+{ -649,-1118,-1478,-1158,-1478},
+{ -289, -758,-1118, -798,-1118},
+{ -739,-1208,-1568,-1248,-1568},
+{ -379, -848,-1208, -888,-1208}},
+/* GC.AU..AU */
+{{  DEF, -519, -879, -559, -879},
+{ -649,-1118,-1478,-1158,-1478},
+{ -289, -758,-1118, -798,-1118},
+{ -739,-1208,-1568,-1248,-1568},
+{ -379, -848,-1208, -888,-1208}}},
+/* GC.C@..AU */
+{{{  DEF, -719, -309, -309, -389},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439}},
+/* GC.CA..AU */
+{{  DEF, -719, -309, -309, -389},
+{ -479,-1148, -738, -738, -818},
+{ -309, -978, -568, -568, -648},
+{ -389,-1058, -648, -648, -728},
+{ -379,-1048, -638, -638, -718}},
+/* GC.CC..AU */
+{{  DEF, -719, -309, -309, -389},
+{ -649,-1318, -908, -908, -988},
+{ -289, -958, -548, -548, -628},
+{ -739,-1408, -998, -998,-1078},
+{ -379,-1048, -638, -638, -718}},
+/* GC.CG..AU */
+{{  DEF, -719, -309, -309, -389},
+{ -649,-1318, -908, -908, -988},
+{ -289, -958, -548, -548, -628},
+{ -739,-1408, -998, -998,-1078},
+{ -379,-1048, -638, -638, -718}},
+/* GC.CU..AU */
+{{  DEF, -719, -309, -309, -389},
+{ -649,-1318, -908, -908, -988},
+{ -289, -958, -548, -548, -628},
+{ -739,-1408, -998, -998,-1078},
+{ -379,-1048, -638, -638, -718}}},
+/* GC.G@..AU */
+{{{  DEF, -709, -739, -619, -739},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789}},
+/* GC.GA..AU */
+{{  DEF, -709, -739, -619, -739},
+{ -479,-1138,-1168,-1048,-1168},
+{ -309, -968, -998, -878, -998},
+{ -389,-1048,-1078, -958,-1078},
+{ -379,-1038,-1068, -948,-1068}},
+/* GC.GC..AU */
+{{  DEF, -709, -739, -619, -739},
+{ -649,-1308,-1338,-1218,-1338},
+{ -289, -948, -978, -858, -978},
+{ -739,-1398,-1428,-1308,-1428},
+{ -379,-1038,-1068, -948,-1068}},
+/* GC.GG..AU */
+{{  DEF, -709, -739, -619, -739},
+{ -649,-1308,-1338,-1218,-1338},
+{ -289, -948, -978, -858, -978},
+{ -739,-1398,-1428,-1308,-1428},
+{ -379,-1038,-1068, -948,-1068}},
+/* GC.GU..AU */
+{{  DEF, -709, -739, -619, -739},
+{ -649,-1308,-1338,-1218,-1338},
+{ -289, -948, -978, -858, -978},
+{ -739,-1398,-1428,-1308,-1428},
+{ -379,-1038,-1068, -948,-1068}}},
+/* GC.U@..AU */
+{{{  DEF, -499, -499, -499, -569},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619}},
+/* GC.UA..AU */
+{{  DEF, -499, -499, -499, -569},
+{ -479, -928, -928, -928, -998},
+{ -309, -758, -758, -758, -828},
+{ -389, -838, -838, -838, -908},
+{ -379, -828, -828, -828, -898}},
+/* GC.UC..AU */
+{{  DEF, -499, -499, -499, -569},
+{ -649,-1098,-1098,-1098,-1168},
+{ -289, -738, -738, -738, -808},
+{ -739,-1188,-1188,-1188,-1258},
+{ -379, -828, -828, -828, -898}},
+/* GC.UG..AU */
+{{  DEF, -499, -499, -499, -569},
+{ -649,-1098,-1098,-1098,-1168},
+{ -289, -738, -738, -738, -808},
+{ -739,-1188,-1188,-1188,-1258},
+{ -379, -828, -828, -828, -898}},
+/* GC.UU..AU */
+{{  DEF, -499, -499, -499, -569},
+{ -649,-1098,-1098,-1098,-1168},
+{ -289, -738, -738, -738, -808},
+{ -739,-1188,-1188,-1188,-1258},
+{ -379, -828, -828, -828, -898}}}},
+/* GC.@@..UA */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GC.@A..UA */
+{{    0,    0,    0,    0,    0},
+{ -399, -399, -399, -399, -399},
+{ -429, -429, -429, -429, -429},
+{ -379, -379, -379, -379, -379},
+{ -279, -279, -279, -279, -279}},
+/* GC.@C..UA */
+{{    0,    0,    0,    0,    0},
+{ -629, -629, -629, -629, -629},
+{ -509, -509, -509, -509, -509},
+{ -679, -679, -679, -679, -679},
+{ -139, -139, -139, -139, -139}},
+/* GC.@G..UA */
+{{    0,    0,    0,    0,    0},
+{ -889, -889, -889, -889, -889},
+{ -199, -199, -199, -199, -199},
+{ -889, -889, -889, -889, -889},
+{ -279, -279, -279, -279, -279}},
+/* GC.@U..UA */
+{{    0,    0,    0,    0,    0},
+{ -589, -589, -589, -589, -589},
+{ -179, -179, -179, -179, -179},
+{ -679, -679, -679, -679, -679},
+{ -140, -140, -140, -140, -140}}},
+/* GC.A@..UA */
+{{{  DEF, -519, -879, -559, -879},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929}},
+/* GC.AA..UA */
+{{  DEF, -519, -879, -559, -879},
+{ -449, -918,-1278, -958,-1278},
+{ -479, -948,-1308, -988,-1308},
+{ -429, -898,-1258, -938,-1258},
+{ -329, -798,-1158, -838,-1158}},
+/* GC.AC..UA */
+{{  DEF, -519, -879, -559, -879},
+{ -679,-1148,-1508,-1188,-1508},
+{ -559,-1028,-1388,-1068,-1388},
+{ -729,-1198,-1558,-1238,-1558},
+{ -189, -658,-1018, -698,-1018}},
+/* GC.AG..UA */
+{{  DEF, -519, -879, -559, -879},
+{ -939,-1408,-1768,-1448,-1768},
+{ -249, -718,-1078, -758,-1078},
+{ -939,-1408,-1768,-1448,-1768},
+{ -329, -798,-1158, -838,-1158}},
+/* GC.AU..UA */
+{{  DEF, -519, -879, -559, -879},
+{ -639,-1108,-1468,-1148,-1468},
+{ -229, -698,-1058, -738,-1058},
+{ -729,-1198,-1558,-1238,-1558},
+{ -190, -659,-1019, -699,-1019}}},
+/* GC.C@..UA */
+{{{  DEF, -719, -309, -309, -389},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439}},
+/* GC.CA..UA */
+{{  DEF, -719, -309, -309, -389},
+{ -449,-1118, -708, -708, -788},
+{ -479,-1148, -738, -738, -818},
+{ -429,-1098, -688, -688, -768},
+{ -329, -998, -588, -588, -668}},
+/* GC.CC..UA */
+{{  DEF, -719, -309, -309, -389},
+{ -679,-1348, -938, -938,-1018},
+{ -559,-1228, -818, -818, -898},
+{ -729,-1398, -988, -988,-1068},
+{ -189, -858, -448, -448, -528}},
+/* GC.CG..UA */
+{{  DEF, -719, -309, -309, -389},
+{ -939,-1608,-1198,-1198,-1278},
+{ -249, -918, -508, -508, -588},
+{ -939,-1608,-1198,-1198,-1278},
+{ -329, -998, -588, -588, -668}},
+/* GC.CU..UA */
+{{  DEF, -719, -309, -309, -389},
+{ -639,-1308, -898, -898, -978},
+{ -229, -898, -488, -488, -568},
+{ -729,-1398, -988, -988,-1068},
+{ -190, -859, -449, -449, -529}}},
+/* GC.G@..UA */
+{{{  DEF, -709, -739, -619, -739},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789}},
+/* GC.GA..UA */
+{{  DEF, -709, -739, -619, -739},
+{ -449,-1108,-1138,-1018,-1138},
+{ -479,-1138,-1168,-1048,-1168},
+{ -429,-1088,-1118, -998,-1118},
+{ -329, -988,-1018, -898,-1018}},
+/* GC.GC..UA */
+{{  DEF, -709, -739, -619, -739},
+{ -679,-1338,-1368,-1248,-1368},
+{ -559,-1218,-1248,-1128,-1248},
+{ -729,-1388,-1418,-1298,-1418},
+{ -189, -848, -878, -758, -878}},
+/* GC.GG..UA */
+{{  DEF, -709, -739, -619, -739},
+{ -939,-1598,-1628,-1508,-1628},
+{ -249, -908, -938, -818, -938},
+{ -939,-1598,-1628,-1508,-1628},
+{ -329, -988,-1018, -898,-1018}},
+/* GC.GU..UA */
+{{  DEF, -709, -739, -619, -739},
+{ -639,-1298,-1328,-1208,-1328},
+{ -229, -888, -918, -798, -918},
+{ -729,-1388,-1418,-1298,-1418},
+{ -190, -849, -879, -759, -879}}},
+/* GC.U@..UA */
+{{{  DEF, -499, -499, -499, -569},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619}},
+/* GC.UA..UA */
+{{  DEF, -499, -499, -499, -569},
+{ -449, -898, -898, -898, -968},
+{ -479, -928, -928, -928, -998},
+{ -429, -878, -878, -878, -948},
+{ -329, -778, -778, -778, -848}},
+/* GC.UC..UA */
+{{  DEF, -499, -499, -499, -569},
+{ -679,-1128,-1128,-1128,-1198},
+{ -559,-1008,-1008,-1008,-1078},
+{ -729,-1178,-1178,-1178,-1248},
+{ -189, -638, -638, -638, -708}},
+/* GC.UG..UA */
+{{  DEF, -499, -499, -499, -569},
+{ -939,-1388,-1388,-1388,-1458},
+{ -249, -698, -698, -698, -768},
+{ -939,-1388,-1388,-1388,-1458},
+{ -329, -778, -778, -778, -848}},
+/* GC.UU..UA */
+{{  DEF, -499, -499, -499, -569},
+{ -639,-1088,-1088,-1088,-1158},
+{ -229, -678, -678, -678, -748},
+{ -729,-1178,-1178,-1178,-1248},
+{ -190, -639, -639, -639, -709}}}},
+/* GC.@@.. @ */
+{{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GC.@A.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GC.@C.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GC.@G.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GC.@U.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}}},
+/* GC.A@.. @ */
+{{{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929}},
+/* GC.AA.. @ */
+{{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929}},
+/* GC.AC.. @ */
+{{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929}},
+/* GC.AG.. @ */
+{{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929}},
+/* GC.AU.. @ */
+{{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929},
+{ -100, -569, -929, -609, -929}}},
+/* GC.C@.. @ */
+{{{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439}},
+/* GC.CA.. @ */
+{{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439}},
+/* GC.CC.. @ */
+{{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439}},
+/* GC.CG.. @ */
+{{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439}},
+/* GC.CU.. @ */
+{{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439},
+{ -100, -769, -359, -359, -439}}},
+/* GC.G@.. @ */
+{{{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789}},
+/* GC.GA.. @ */
+{{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789}},
+/* GC.GC.. @ */
+{{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789}},
+/* GC.GG.. @ */
+{{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789}},
+/* GC.GU.. @ */
+{{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789},
+{ -100, -759, -789, -669, -789}}},
+/* GC.U@.. @ */
+{{{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619}},
+/* GC.UA.. @ */
+{{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619}},
+/* GC.UC.. @ */
+{{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619}},
+/* GC.UG.. @ */
+{{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619}},
+/* GC.UU.. @ */
+{{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619},
+{ -100, -549, -549, -549, -619}}}}},
+{ /* noPair */ {{{{0}}}},
+/* GU.@@..CG */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GU.@A..CG */
+{{    0,    0,    0,    0,    0},
+{-1029,-1029,-1029,-1029,-1029},
+{ -519, -519, -519, -519, -519},
+{ -939, -939, -939, -939, -939},
+{ -809, -809, -809, -809, -809}},
+/* GU.@C..CG */
+{{    0,    0,    0,    0,    0},
+{ -949, -949, -949, -949, -949},
+{ -449, -449, -449, -449, -449},
+{ -939, -939, -939, -939, -939},
+{ -739, -739, -739, -739, -739}},
+/* GU.@G..CG */
+{{    0,    0,    0,    0,    0},
+{-1029,-1029,-1029,-1029,-1029},
+{ -519, -519, -519, -519, -519},
+{ -939, -939, -939, -939, -939},
+{ -809, -809, -809, -809, -809}},
+/* GU.@U..CG */
+{{    0,    0,    0,    0,    0},
+{-1029,-1029,-1029,-1029,-1029},
+{ -669, -669, -669, -669, -669},
+{ -939, -939, -939, -939, -939},
+{ -859, -859, -859, -859, -859}}},
+/* GU.A@..CG */
+{{{  DEF, -429, -599, -599, -599},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* GU.AA..CG */
+{{  DEF, -429, -599, -599, -599},
+{-1079,-1458,-1628,-1628,-1628},
+{ -569, -948,-1118,-1118,-1118},
+{ -989,-1368,-1538,-1538,-1538},
+{ -859,-1238,-1408,-1408,-1408}},
+/* GU.AC..CG */
+{{  DEF, -429, -599, -599, -599},
+{ -999,-1378,-1548,-1548,-1548},
+{ -499, -878,-1048,-1048,-1048},
+{ -989,-1368,-1538,-1538,-1538},
+{ -789,-1168,-1338,-1338,-1338}},
+/* GU.AG..CG */
+{{  DEF, -429, -599, -599, -599},
+{-1079,-1458,-1628,-1628,-1628},
+{ -569, -948,-1118,-1118,-1118},
+{ -989,-1368,-1538,-1538,-1538},
+{ -859,-1238,-1408,-1408,-1408}},
+/* GU.AU..CG */
+{{  DEF, -429, -599, -599, -599},
+{-1079,-1458,-1628,-1628,-1628},
+{ -719,-1098,-1268,-1268,-1268},
+{ -989,-1368,-1538,-1538,-1538},
+{ -909,-1288,-1458,-1458,-1458}}},
+/* GU.C@..CG */
+{{{  DEF, -259, -239, -239, -239},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* GU.CA..CG */
+{{  DEF, -259, -239, -239, -239},
+{-1079,-1288,-1268,-1268,-1268},
+{ -569, -778, -758, -758, -758},
+{ -989,-1198,-1178,-1178,-1178},
+{ -859,-1068,-1048,-1048,-1048}},
+/* GU.CC..CG */
+{{  DEF, -259, -239, -239, -239},
+{ -999,-1208,-1188,-1188,-1188},
+{ -499, -708, -688, -688, -688},
+{ -989,-1198,-1178,-1178,-1178},
+{ -789, -998, -978, -978, -978}},
+/* GU.CG..CG */
+{{  DEF, -259, -239, -239, -239},
+{-1079,-1288,-1268,-1268,-1268},
+{ -569, -778, -758, -758, -758},
+{ -989,-1198,-1178,-1178,-1178},
+{ -859,-1068,-1048,-1048,-1048}},
+/* GU.CU..CG */
+{{  DEF, -259, -239, -239, -239},
+{-1079,-1288,-1268,-1268,-1268},
+{ -719, -928, -908, -908, -908},
+{ -989,-1198,-1178,-1178,-1178},
+{ -909,-1118,-1098,-1098,-1098}}},
+/* GU.G@..CG */
+{{{  DEF, -339, -689, -689, -689},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* GU.GA..CG */
+{{  DEF, -339, -689, -689, -689},
+{-1079,-1368,-1718,-1718,-1718},
+{ -569, -858,-1208,-1208,-1208},
+{ -989,-1278,-1628,-1628,-1628},
+{ -859,-1148,-1498,-1498,-1498}},
+/* GU.GC..CG */
+{{  DEF, -339, -689, -689, -689},
+{ -999,-1288,-1638,-1638,-1638},
+{ -499, -788,-1138,-1138,-1138},
+{ -989,-1278,-1628,-1628,-1628},
+{ -789,-1078,-1428,-1428,-1428}},
+/* GU.GG..CG */
+{{  DEF, -339, -689, -689, -689},
+{-1079,-1368,-1718,-1718,-1718},
+{ -569, -858,-1208,-1208,-1208},
+{ -989,-1278,-1628,-1628,-1628},
+{ -859,-1148,-1498,-1498,-1498}},
+/* GU.GU..CG */
+{{  DEF, -339, -689, -689, -689},
+{-1079,-1368,-1718,-1718,-1718},
+{ -719,-1008,-1358,-1358,-1358},
+{ -989,-1278,-1628,-1628,-1628},
+{ -909,-1198,-1548,-1548,-1548}}},
+/* GU.U@..CG */
+{{{  DEF, -329, -329, -329, -329},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* GU.UA..CG */
+{{  DEF, -329, -329, -329, -329},
+{-1079,-1358,-1358,-1358,-1358},
+{ -569, -848, -848, -848, -848},
+{ -989,-1268,-1268,-1268,-1268},
+{ -859,-1138,-1138,-1138,-1138}},
+/* GU.UC..CG */
+{{  DEF, -329, -329, -329, -329},
+{ -999,-1278,-1278,-1278,-1278},
+{ -499, -778, -778, -778, -778},
+{ -989,-1268,-1268,-1268,-1268},
+{ -789,-1068,-1068,-1068,-1068}},
+/* GU.UG..CG */
+{{  DEF, -329, -329, -329, -329},
+{-1079,-1358,-1358,-1358,-1358},
+{ -569, -848, -848, -848, -848},
+{ -989,-1268,-1268,-1268,-1268},
+{ -859,-1138,-1138,-1138,-1138}},
+/* GU.UU..CG */
+{{  DEF, -329, -329, -329, -329},
+{-1079,-1358,-1358,-1358,-1358},
+{ -719, -998, -998, -998, -998},
+{ -989,-1268,-1268,-1268,-1268},
+{ -909,-1188,-1188,-1188,-1188}}}},
+/* GU.@@..GC */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GU.@A..GC */
+{{    0,    0,    0,    0,    0},
+{ -519, -519, -519, -519, -519},
+{ -719, -719, -719, -719, -719},
+{ -709, -709, -709, -709, -709},
+{ -499, -499, -499, -499, -499}},
+/* GU.@C..GC */
+{{    0,    0,    0,    0,    0},
+{ -879, -879, -879, -879, -879},
+{ -309, -309, -309, -309, -309},
+{ -739, -739, -739, -739, -739},
+{ -499, -499, -499, -499, -499}},
+/* GU.@G..GC */
+{{    0,    0,    0,    0,    0},
+{ -559, -559, -559, -559, -559},
+{ -309, -309, -309, -309, -309},
+{ -619, -619, -619, -619, -619},
+{ -499, -499, -499, -499, -499}},
+/* GU.@U..GC */
+{{    0,    0,    0,    0,    0},
+{ -879, -879, -879, -879, -879},
+{ -389, -389, -389, -389, -389},
+{ -739, -739, -739, -739, -739},
+{ -569, -569, -569, -569, -569}}},
+/* GU.A@..GC */
+{{{  DEF, -429, -599, -599, -599},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* GU.AA..GC */
+{{  DEF, -429, -599, -599, -599},
+{ -569, -948,-1118,-1118,-1118},
+{ -769,-1148,-1318,-1318,-1318},
+{ -759,-1138,-1308,-1308,-1308},
+{ -549, -928,-1098,-1098,-1098}},
+/* GU.AC..GC */
+{{  DEF, -429, -599, -599, -599},
+{ -929,-1308,-1478,-1478,-1478},
+{ -359, -738, -908, -908, -908},
+{ -789,-1168,-1338,-1338,-1338},
+{ -549, -928,-1098,-1098,-1098}},
+/* GU.AG..GC */
+{{  DEF, -429, -599, -599, -599},
+{ -609, -988,-1158,-1158,-1158},
+{ -359, -738, -908, -908, -908},
+{ -669,-1048,-1218,-1218,-1218},
+{ -549, -928,-1098,-1098,-1098}},
+/* GU.AU..GC */
+{{  DEF, -429, -599, -599, -599},
+{ -929,-1308,-1478,-1478,-1478},
+{ -439, -818, -988, -988, -988},
+{ -789,-1168,-1338,-1338,-1338},
+{ -619, -998,-1168,-1168,-1168}}},
+/* GU.C@..GC */
+{{{  DEF, -259, -239, -239, -239},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* GU.CA..GC */
+{{  DEF, -259, -239, -239, -239},
+{ -569, -778, -758, -758, -758},
+{ -769, -978, -958, -958, -958},
+{ -759, -968, -948, -948, -948},
+{ -549, -758, -738, -738, -738}},
+/* GU.CC..GC */
+{{  DEF, -259, -239, -239, -239},
+{ -929,-1138,-1118,-1118,-1118},
+{ -359, -568, -548, -548, -548},
+{ -789, -998, -978, -978, -978},
+{ -549, -758, -738, -738, -738}},
+/* GU.CG..GC */
+{{  DEF, -259, -239, -239, -239},
+{ -609, -818, -798, -798, -798},
+{ -359, -568, -548, -548, -548},
+{ -669, -878, -858, -858, -858},
+{ -549, -758, -738, -738, -738}},
+/* GU.CU..GC */
+{{  DEF, -259, -239, -239, -239},
+{ -929,-1138,-1118,-1118,-1118},
+{ -439, -648, -628, -628, -628},
+{ -789, -998, -978, -978, -978},
+{ -619, -828, -808, -808, -808}}},
+/* GU.G@..GC */
+{{{  DEF, -339, -689, -689, -689},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* GU.GA..GC */
+{{  DEF, -339, -689, -689, -689},
+{ -569, -858,-1208,-1208,-1208},
+{ -769,-1058,-1408,-1408,-1408},
+{ -759,-1048,-1398,-1398,-1398},
+{ -549, -838,-1188,-1188,-1188}},
+/* GU.GC..GC */
+{{  DEF, -339, -689, -689, -689},
+{ -929,-1218,-1568,-1568,-1568},
+{ -359, -648, -998, -998, -998},
+{ -789,-1078,-1428,-1428,-1428},
+{ -549, -838,-1188,-1188,-1188}},
+/* GU.GG..GC */
+{{  DEF, -339, -689, -689, -689},
+{ -609, -898,-1248,-1248,-1248},
+{ -359, -648, -998, -998, -998},
+{ -669, -958,-1308,-1308,-1308},
+{ -549, -838,-1188,-1188,-1188}},
+/* GU.GU..GC */
+{{  DEF, -339, -689, -689, -689},
+{ -929,-1218,-1568,-1568,-1568},
+{ -439, -728,-1078,-1078,-1078},
+{ -789,-1078,-1428,-1428,-1428},
+{ -619, -908,-1258,-1258,-1258}}},
+/* GU.U@..GC */
+{{{  DEF, -329, -329, -329, -329},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* GU.UA..GC */
+{{  DEF, -329, -329, -329, -329},
+{ -569, -848, -848, -848, -848},
+{ -769,-1048,-1048,-1048,-1048},
+{ -759,-1038,-1038,-1038,-1038},
+{ -549, -828, -828, -828, -828}},
+/* GU.UC..GC */
+{{  DEF, -329, -329, -329, -329},
+{ -929,-1208,-1208,-1208,-1208},
+{ -359, -638, -638, -638, -638},
+{ -789,-1068,-1068,-1068,-1068},
+{ -549, -828, -828, -828, -828}},
+/* GU.UG..GC */
+{{  DEF, -329, -329, -329, -329},
+{ -609, -888, -888, -888, -888},
+{ -359, -638, -638, -638, -638},
+{ -669, -948, -948, -948, -948},
+{ -549, -828, -828, -828, -828}},
+/* GU.UU..GC */
+{{  DEF, -329, -329, -329, -329},
+{ -929,-1208,-1208,-1208,-1208},
+{ -439, -718, -718, -718, -718},
+{ -789,-1068,-1068,-1068,-1068},
+{ -619, -898, -898, -898, -898}}}},
+/* GU.@@..GU */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GU.@A..GU */
+{{    0,    0,    0,    0,    0},
+{ -429, -429, -429, -429, -429},
+{ -259, -259, -259, -259, -259},
+{ -339, -339, -339, -339, -339},
+{ -329, -329, -329, -329, -329}},
+/* GU.@C..GU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* GU.@G..GU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* GU.@U..GU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}}},
+/* GU.A@..GU */
+{{{  DEF, -429, -599, -599, -599},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* GU.AA..GU */
+{{  DEF, -429, -599, -599, -599},
+{ -479, -858,-1028,-1028,-1028},
+{ -309, -688, -858, -858, -858},
+{ -389, -768, -938, -938, -938},
+{ -379, -758, -928, -928, -928}},
+/* GU.AC..GU */
+{{  DEF, -429, -599, -599, -599},
+{ -649,-1028,-1198,-1198,-1198},
+{ -289, -668, -838, -838, -838},
+{ -739,-1118,-1288,-1288,-1288},
+{ -379, -758, -928, -928, -928}},
+/* GU.AG..GU */
+{{  DEF, -429, -599, -599, -599},
+{ -649,-1028,-1198,-1198,-1198},
+{ -289, -668, -838, -838, -838},
+{ -739,-1118,-1288,-1288,-1288},
+{ -379, -758, -928, -928, -928}},
+/* GU.AU..GU */
+{{  DEF, -429, -599, -599, -599},
+{ -649,-1028,-1198,-1198,-1198},
+{ -289, -668, -838, -838, -838},
+{ -739,-1118,-1288,-1288,-1288},
+{ -379, -758, -928, -928, -928}}},
+/* GU.C@..GU */
+{{{  DEF, -259, -239, -239, -239},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* GU.CA..GU */
+{{  DEF, -259, -239, -239, -239},
+{ -479, -688, -668, -668, -668},
+{ -309, -518, -498, -498, -498},
+{ -389, -598, -578, -578, -578},
+{ -379, -588, -568, -568, -568}},
+/* GU.CC..GU */
+{{  DEF, -259, -239, -239, -239},
+{ -649, -858, -838, -838, -838},
+{ -289, -498, -478, -478, -478},
+{ -739, -948, -928, -928, -928},
+{ -379, -588, -568, -568, -568}},
+/* GU.CG..GU */
+{{  DEF, -259, -239, -239, -239},
+{ -649, -858, -838, -838, -838},
+{ -289, -498, -478, -478, -478},
+{ -739, -948, -928, -928, -928},
+{ -379, -588, -568, -568, -568}},
+/* GU.CU..GU */
+{{  DEF, -259, -239, -239, -239},
+{ -649, -858, -838, -838, -838},
+{ -289, -498, -478, -478, -478},
+{ -739, -948, -928, -928, -928},
+{ -379, -588, -568, -568, -568}}},
+/* GU.G@..GU */
+{{{  DEF, -339, -689, -689, -689},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* GU.GA..GU */
+{{  DEF, -339, -689, -689, -689},
+{ -479, -768,-1118,-1118,-1118},
+{ -309, -598, -948, -948, -948},
+{ -389, -678,-1028,-1028,-1028},
+{ -379, -668,-1018,-1018,-1018}},
+/* GU.GC..GU */
+{{  DEF, -339, -689, -689, -689},
+{ -649, -938,-1288,-1288,-1288},
+{ -289, -578, -928, -928, -928},
+{ -739,-1028,-1378,-1378,-1378},
+{ -379, -668,-1018,-1018,-1018}},
+/* GU.GG..GU */
+{{  DEF, -339, -689, -689, -689},
+{ -649, -938,-1288,-1288,-1288},
+{ -289, -578, -928, -928, -928},
+{ -739,-1028,-1378,-1378,-1378},
+{ -379, -668,-1018,-1018,-1018}},
+/* GU.GU..GU */
+{{  DEF, -339, -689, -689, -689},
+{ -649, -938,-1288,-1288,-1288},
+{ -289, -578, -928, -928, -928},
+{ -739,-1028,-1378,-1378,-1378},
+{ -379, -668,-1018,-1018,-1018}}},
+/* GU.U@..GU */
+{{{  DEF, -329, -329, -329, -329},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* GU.UA..GU */
+{{  DEF, -329, -329, -329, -329},
+{ -479, -758, -758, -758, -758},
+{ -309, -588, -588, -588, -588},
+{ -389, -668, -668, -668, -668},
+{ -379, -658, -658, -658, -658}},
+/* GU.UC..GU */
+{{  DEF, -329, -329, -329, -329},
+{ -649, -928, -928, -928, -928},
+{ -289, -568, -568, -568, -568},
+{ -739,-1018,-1018,-1018,-1018},
+{ -379, -658, -658, -658, -658}},
+/* GU.UG..GU */
+{{  DEF, -329, -329, -329, -329},
+{ -649, -928, -928, -928, -928},
+{ -289, -568, -568, -568, -568},
+{ -739,-1018,-1018,-1018,-1018},
+{ -379, -658, -658, -658, -658}},
+/* GU.UU..GU */
+{{  DEF, -329, -329, -329, -329},
+{ -649, -928, -928, -928, -928},
+{ -289, -568, -568, -568, -568},
+{ -739,-1018,-1018,-1018,-1018},
+{ -379, -658, -658, -658, -658}}}},
+/* GU.@@..UG */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GU.@A..UG */
+{{    0,    0,    0,    0,    0},
+{ -719, -719, -719, -719, -719},
+{ -479, -479, -479, -479, -479},
+{ -659, -659, -659, -659, -659},
+{ -549, -549, -549, -549, -549}},
+/* GU.@C..UG */
+{{    0,    0,    0,    0,    0},
+{ -789, -789, -789, -789, -789},
+{ -479, -479, -479, -479, -479},
+{ -809, -809, -809, -809, -809},
+{ -439, -439, -439, -439, -439}},
+/* GU.@G..UG */
+{{    0,    0,    0,    0,    0},
+{ -959, -959, -959, -959, -959},
+{ -359, -359, -359, -359, -359},
+{ -919, -919, -919, -919, -919},
+{ -549, -549, -549, -549, -549}},
+/* GU.@U..UG */
+{{    0,    0,    0,    0,    0},
+{ -809, -809, -809, -809, -809},
+{ -479, -479, -479, -479, -479},
+{ -809, -809, -809, -809, -809},
+{ -359, -359, -359, -359, -359}}},
+/* GU.A@..UG */
+{{{  DEF, -429, -599, -599, -599},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* GU.AA..UG */
+{{  DEF, -429, -599, -599, -599},
+{ -769,-1148,-1318,-1318,-1318},
+{ -529, -908,-1078,-1078,-1078},
+{ -709,-1088,-1258,-1258,-1258},
+{ -599, -978,-1148,-1148,-1148}},
+/* GU.AC..UG */
+{{  DEF, -429, -599, -599, -599},
+{ -839,-1218,-1388,-1388,-1388},
+{ -529, -908,-1078,-1078,-1078},
+{ -859,-1238,-1408,-1408,-1408},
+{ -489, -868,-1038,-1038,-1038}},
+/* GU.AG..UG */
+{{  DEF, -429, -599, -599, -599},
+{-1009,-1388,-1558,-1558,-1558},
+{ -409, -788, -958, -958, -958},
+{ -969,-1348,-1518,-1518,-1518},
+{ -599, -978,-1148,-1148,-1148}},
+/* GU.AU..UG */
+{{  DEF, -429, -599, -599, -599},
+{ -859,-1238,-1408,-1408,-1408},
+{ -529, -908,-1078,-1078,-1078},
+{ -859,-1238,-1408,-1408,-1408},
+{ -409, -788, -958, -958, -958}}},
+/* GU.C@..UG */
+{{{  DEF, -259, -239, -239, -239},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* GU.CA..UG */
+{{  DEF, -259, -239, -239, -239},
+{ -769, -978, -958, -958, -958},
+{ -529, -738, -718, -718, -718},
+{ -709, -918, -898, -898, -898},
+{ -599, -808, -788, -788, -788}},
+/* GU.CC..UG */
+{{  DEF, -259, -239, -239, -239},
+{ -839,-1048,-1028,-1028,-1028},
+{ -529, -738, -718, -718, -718},
+{ -859,-1068,-1048,-1048,-1048},
+{ -489, -698, -678, -678, -678}},
+/* GU.CG..UG */
+{{  DEF, -259, -239, -239, -239},
+{-1009,-1218,-1198,-1198,-1198},
+{ -409, -618, -598, -598, -598},
+{ -969,-1178,-1158,-1158,-1158},
+{ -599, -808, -788, -788, -788}},
+/* GU.CU..UG */
+{{  DEF, -259, -239, -239, -239},
+{ -859,-1068,-1048,-1048,-1048},
+{ -529, -738, -718, -718, -718},
+{ -859,-1068,-1048,-1048,-1048},
+{ -409, -618, -598, -598, -598}}},
+/* GU.G@..UG */
+{{{  DEF, -339, -689, -689, -689},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* GU.GA..UG */
+{{  DEF, -339, -689, -689, -689},
+{ -769,-1058,-1408,-1408,-1408},
+{ -529, -818,-1168,-1168,-1168},
+{ -709, -998,-1348,-1348,-1348},
+{ -599, -888,-1238,-1238,-1238}},
+/* GU.GC..UG */
+{{  DEF, -339, -689, -689, -689},
+{ -839,-1128,-1478,-1478,-1478},
+{ -529, -818,-1168,-1168,-1168},
+{ -859,-1148,-1498,-1498,-1498},
+{ -489, -778,-1128,-1128,-1128}},
+/* GU.GG..UG */
+{{  DEF, -339, -689, -689, -689},
+{-1009,-1298,-1648,-1648,-1648},
+{ -409, -698,-1048,-1048,-1048},
+{ -969,-1258,-1608,-1608,-1608},
+{ -599, -888,-1238,-1238,-1238}},
+/* GU.GU..UG */
+{{  DEF, -339, -689, -689, -689},
+{ -859,-1148,-1498,-1498,-1498},
+{ -529, -818,-1168,-1168,-1168},
+{ -859,-1148,-1498,-1498,-1498},
+{ -409, -698,-1048,-1048,-1048}}},
+/* GU.U@..UG */
+{{{  DEF, -329, -329, -329, -329},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* GU.UA..UG */
+{{  DEF, -329, -329, -329, -329},
+{ -769,-1048,-1048,-1048,-1048},
+{ -529, -808, -808, -808, -808},
+{ -709, -988, -988, -988, -988},
+{ -599, -878, -878, -878, -878}},
+/* GU.UC..UG */
+{{  DEF, -329, -329, -329, -329},
+{ -839,-1118,-1118,-1118,-1118},
+{ -529, -808, -808, -808, -808},
+{ -859,-1138,-1138,-1138,-1138},
+{ -489, -768, -768, -768, -768}},
+/* GU.UG..UG */
+{{  DEF, -329, -329, -329, -329},
+{-1009,-1288,-1288,-1288,-1288},
+{ -409, -688, -688, -688, -688},
+{ -969,-1248,-1248,-1248,-1248},
+{ -599, -878, -878, -878, -878}},
+/* GU.UU..UG */
+{{  DEF, -329, -329, -329, -329},
+{ -859,-1138,-1138,-1138,-1138},
+{ -529, -808, -808, -808, -808},
+{ -859,-1138,-1138,-1138,-1138},
+{ -409, -688, -688, -688, -688}}}},
+/* GU.@@..AU */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GU.@A..AU */
+{{    0,    0,    0,    0,    0},
+{ -429, -429, -429, -429, -429},
+{ -259, -259, -259, -259, -259},
+{ -339, -339, -339, -339, -339},
+{ -329, -329, -329, -329, -329}},
+/* GU.@C..AU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* GU.@G..AU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* GU.@U..AU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}}},
+/* GU.A@..AU */
+{{{  DEF, -429, -599, -599, -599},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* GU.AA..AU */
+{{  DEF, -429, -599, -599, -599},
+{ -479, -858,-1028,-1028,-1028},
+{ -309, -688, -858, -858, -858},
+{ -389, -768, -938, -938, -938},
+{ -379, -758, -928, -928, -928}},
+/* GU.AC..AU */
+{{  DEF, -429, -599, -599, -599},
+{ -649,-1028,-1198,-1198,-1198},
+{ -289, -668, -838, -838, -838},
+{ -739,-1118,-1288,-1288,-1288},
+{ -379, -758, -928, -928, -928}},
+/* GU.AG..AU */
+{{  DEF, -429, -599, -599, -599},
+{ -649,-1028,-1198,-1198,-1198},
+{ -289, -668, -838, -838, -838},
+{ -739,-1118,-1288,-1288,-1288},
+{ -379, -758, -928, -928, -928}},
+/* GU.AU..AU */
+{{  DEF, -429, -599, -599, -599},
+{ -649,-1028,-1198,-1198,-1198},
+{ -289, -668, -838, -838, -838},
+{ -739,-1118,-1288,-1288,-1288},
+{ -379, -758, -928, -928, -928}}},
+/* GU.C@..AU */
+{{{  DEF, -259, -239, -239, -239},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* GU.CA..AU */
+{{  DEF, -259, -239, -239, -239},
+{ -479, -688, -668, -668, -668},
+{ -309, -518, -498, -498, -498},
+{ -389, -598, -578, -578, -578},
+{ -379, -588, -568, -568, -568}},
+/* GU.CC..AU */
+{{  DEF, -259, -239, -239, -239},
+{ -649, -858, -838, -838, -838},
+{ -289, -498, -478, -478, -478},
+{ -739, -948, -928, -928, -928},
+{ -379, -588, -568, -568, -568}},
+/* GU.CG..AU */
+{{  DEF, -259, -239, -239, -239},
+{ -649, -858, -838, -838, -838},
+{ -289, -498, -478, -478, -478},
+{ -739, -948, -928, -928, -928},
+{ -379, -588, -568, -568, -568}},
+/* GU.CU..AU */
+{{  DEF, -259, -239, -239, -239},
+{ -649, -858, -838, -838, -838},
+{ -289, -498, -478, -478, -478},
+{ -739, -948, -928, -928, -928},
+{ -379, -588, -568, -568, -568}}},
+/* GU.G@..AU */
+{{{  DEF, -339, -689, -689, -689},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* GU.GA..AU */
+{{  DEF, -339, -689, -689, -689},
+{ -479, -768,-1118,-1118,-1118},
+{ -309, -598, -948, -948, -948},
+{ -389, -678,-1028,-1028,-1028},
+{ -379, -668,-1018,-1018,-1018}},
+/* GU.GC..AU */
+{{  DEF, -339, -689, -689, -689},
+{ -649, -938,-1288,-1288,-1288},
+{ -289, -578, -928, -928, -928},
+{ -739,-1028,-1378,-1378,-1378},
+{ -379, -668,-1018,-1018,-1018}},
+/* GU.GG..AU */
+{{  DEF, -339, -689, -689, -689},
+{ -649, -938,-1288,-1288,-1288},
+{ -289, -578, -928, -928, -928},
+{ -739,-1028,-1378,-1378,-1378},
+{ -379, -668,-1018,-1018,-1018}},
+/* GU.GU..AU */
+{{  DEF, -339, -689, -689, -689},
+{ -649, -938,-1288,-1288,-1288},
+{ -289, -578, -928, -928, -928},
+{ -739,-1028,-1378,-1378,-1378},
+{ -379, -668,-1018,-1018,-1018}}},
+/* GU.U@..AU */
+{{{  DEF, -329, -329, -329, -329},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* GU.UA..AU */
+{{  DEF, -329, -329, -329, -329},
+{ -479, -758, -758, -758, -758},
+{ -309, -588, -588, -588, -588},
+{ -389, -668, -668, -668, -668},
+{ -379, -658, -658, -658, -658}},
+/* GU.UC..AU */
+{{  DEF, -329, -329, -329, -329},
+{ -649, -928, -928, -928, -928},
+{ -289, -568, -568, -568, -568},
+{ -739,-1018,-1018,-1018,-1018},
+{ -379, -658, -658, -658, -658}},
+/* GU.UG..AU */
+{{  DEF, -329, -329, -329, -329},
+{ -649, -928, -928, -928, -928},
+{ -289, -568, -568, -568, -568},
+{ -739,-1018,-1018,-1018,-1018},
+{ -379, -658, -658, -658, -658}},
+/* GU.UU..AU */
+{{  DEF, -329, -329, -329, -329},
+{ -649, -928, -928, -928, -928},
+{ -289, -568, -568, -568, -568},
+{ -739,-1018,-1018,-1018,-1018},
+{ -379, -658, -658, -658, -658}}}},
+/* GU.@@..UA */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GU.@A..UA */
+{{    0,    0,    0,    0,    0},
+{ -399, -399, -399, -399, -399},
+{ -429, -429, -429, -429, -429},
+{ -379, -379, -379, -379, -379},
+{ -279, -279, -279, -279, -279}},
+/* GU.@C..UA */
+{{    0,    0,    0,    0,    0},
+{ -629, -629, -629, -629, -629},
+{ -509, -509, -509, -509, -509},
+{ -679, -679, -679, -679, -679},
+{ -139, -139, -139, -139, -139}},
+/* GU.@G..UA */
+{{    0,    0,    0,    0,    0},
+{ -889, -889, -889, -889, -889},
+{ -199, -199, -199, -199, -199},
+{ -889, -889, -889, -889, -889},
+{ -279, -279, -279, -279, -279}},
+/* GU.@U..UA */
+{{    0,    0,    0,    0,    0},
+{ -589, -589, -589, -589, -589},
+{ -179, -179, -179, -179, -179},
+{ -679, -679, -679, -679, -679},
+{ -140, -140, -140, -140, -140}}},
+/* GU.A@..UA */
+{{{  DEF, -429, -599, -599, -599},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* GU.AA..UA */
+{{  DEF, -429, -599, -599, -599},
+{ -449, -828, -998, -998, -998},
+{ -479, -858,-1028,-1028,-1028},
+{ -429, -808, -978, -978, -978},
+{ -329, -708, -878, -878, -878}},
+/* GU.AC..UA */
+{{  DEF, -429, -599, -599, -599},
+{ -679,-1058,-1228,-1228,-1228},
+{ -559, -938,-1108,-1108,-1108},
+{ -729,-1108,-1278,-1278,-1278},
+{ -189, -568, -738, -738, -738}},
+/* GU.AG..UA */
+{{  DEF, -429, -599, -599, -599},
+{ -939,-1318,-1488,-1488,-1488},
+{ -249, -628, -798, -798, -798},
+{ -939,-1318,-1488,-1488,-1488},
+{ -329, -708, -878, -878, -878}},
+/* GU.AU..UA */
+{{  DEF, -429, -599, -599, -599},
+{ -639,-1018,-1188,-1188,-1188},
+{ -229, -608, -778, -778, -778},
+{ -729,-1108,-1278,-1278,-1278},
+{ -190, -569, -739, -739, -739}}},
+/* GU.C@..UA */
+{{{  DEF, -259, -239, -239, -239},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* GU.CA..UA */
+{{  DEF, -259, -239, -239, -239},
+{ -449, -658, -638, -638, -638},
+{ -479, -688, -668, -668, -668},
+{ -429, -638, -618, -618, -618},
+{ -329, -538, -518, -518, -518}},
+/* GU.CC..UA */
+{{  DEF, -259, -239, -239, -239},
+{ -679, -888, -868, -868, -868},
+{ -559, -768, -748, -748, -748},
+{ -729, -938, -918, -918, -918},
+{ -189, -398, -378, -378, -378}},
+/* GU.CG..UA */
+{{  DEF, -259, -239, -239, -239},
+{ -939,-1148,-1128,-1128,-1128},
+{ -249, -458, -438, -438, -438},
+{ -939,-1148,-1128,-1128,-1128},
+{ -329, -538, -518, -518, -518}},
+/* GU.CU..UA */
+{{  DEF, -259, -239, -239, -239},
+{ -639, -848, -828, -828, -828},
+{ -229, -438, -418, -418, -418},
+{ -729, -938, -918, -918, -918},
+{ -190, -399, -379, -379, -379}}},
+/* GU.G@..UA */
+{{{  DEF, -339, -689, -689, -689},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* GU.GA..UA */
+{{  DEF, -339, -689, -689, -689},
+{ -449, -738,-1088,-1088,-1088},
+{ -479, -768,-1118,-1118,-1118},
+{ -429, -718,-1068,-1068,-1068},
+{ -329, -618, -968, -968, -968}},
+/* GU.GC..UA */
+{{  DEF, -339, -689, -689, -689},
+{ -679, -968,-1318,-1318,-1318},
+{ -559, -848,-1198,-1198,-1198},
+{ -729,-1018,-1368,-1368,-1368},
+{ -189, -478, -828, -828, -828}},
+/* GU.GG..UA */
+{{  DEF, -339, -689, -689, -689},
+{ -939,-1228,-1578,-1578,-1578},
+{ -249, -538, -888, -888, -888},
+{ -939,-1228,-1578,-1578,-1578},
+{ -329, -618, -968, -968, -968}},
+/* GU.GU..UA */
+{{  DEF, -339, -689, -689, -689},
+{ -639, -928,-1278,-1278,-1278},
+{ -229, -518, -868, -868, -868},
+{ -729,-1018,-1368,-1368,-1368},
+{ -190, -479, -829, -829, -829}}},
+/* GU.U@..UA */
+{{{  DEF, -329, -329, -329, -329},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* GU.UA..UA */
+{{  DEF, -329, -329, -329, -329},
+{ -449, -728, -728, -728, -728},
+{ -479, -758, -758, -758, -758},
+{ -429, -708, -708, -708, -708},
+{ -329, -608, -608, -608, -608}},
+/* GU.UC..UA */
+{{  DEF, -329, -329, -329, -329},
+{ -679, -958, -958, -958, -958},
+{ -559, -838, -838, -838, -838},
+{ -729,-1008,-1008,-1008,-1008},
+{ -189, -468, -468, -468, -468}},
+/* GU.UG..UA */
+{{  DEF, -329, -329, -329, -329},
+{ -939,-1218,-1218,-1218,-1218},
+{ -249, -528, -528, -528, -528},
+{ -939,-1218,-1218,-1218,-1218},
+{ -329, -608, -608, -608, -608}},
+/* GU.UU..UA */
+{{  DEF, -329, -329, -329, -329},
+{ -639, -918, -918, -918, -918},
+{ -229, -508, -508, -508, -508},
+{ -729,-1008,-1008,-1008,-1008},
+{ -190, -469, -469, -469, -469}}}},
+/* GU.@@.. @ */
+{{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GU.@A.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GU.@C.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GU.@G.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* GU.@U.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}}},
+/* GU.A@.. @ */
+{{{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* GU.AA.. @ */
+{{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* GU.AC.. @ */
+{{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* GU.AG.. @ */
+{{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* GU.AU.. @ */
+{{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}}},
+/* GU.C@.. @ */
+{{{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* GU.CA.. @ */
+{{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* GU.CC.. @ */
+{{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* GU.CG.. @ */
+{{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* GU.CU.. @ */
+{{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}}},
+/* GU.G@.. @ */
+{{{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* GU.GA.. @ */
+{{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* GU.GC.. @ */
+{{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* GU.GG.. @ */
+{{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* GU.GU.. @ */
+{{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}}},
+/* GU.U@.. @ */
+{{{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* GU.UA.. @ */
+{{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* GU.UC.. @ */
+{{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* GU.UG.. @ */
+{{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* GU.UU.. @ */
+{{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}}}}},
+{ /* noPair */ {{{{0}}}},
+/* UG.@@..CG */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UG.@A..CG */
+{{    0,    0,    0,    0,    0},
+{-1029,-1029,-1029,-1029,-1029},
+{ -519, -519, -519, -519, -519},
+{ -939, -939, -939, -939, -939},
+{ -809, -809, -809, -809, -809}},
+/* UG.@C..CG */
+{{    0,    0,    0,    0,    0},
+{ -949, -949, -949, -949, -949},
+{ -449, -449, -449, -449, -449},
+{ -939, -939, -939, -939, -939},
+{ -739, -739, -739, -739, -739}},
+/* UG.@G..CG */
+{{    0,    0,    0,    0,    0},
+{-1029,-1029,-1029,-1029,-1029},
+{ -519, -519, -519, -519, -519},
+{ -939, -939, -939, -939, -939},
+{ -809, -809, -809, -809, -809}},
+/* UG.@U..CG */
+{{    0,    0,    0,    0,    0},
+{-1029,-1029,-1029,-1029,-1029},
+{ -669, -669, -669, -669, -669},
+{ -939, -939, -939, -939, -939},
+{ -859, -859, -859, -859, -859}}},
+/* UG.A@..CG */
+{{{  DEF, -719, -789, -959, -809},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859}},
+/* UG.AA..CG */
+{{  DEF, -719, -789, -959, -809},
+{-1079,-1748,-1818,-1988,-1838},
+{ -569,-1238,-1308,-1478,-1328},
+{ -989,-1658,-1728,-1898,-1748},
+{ -859,-1528,-1598,-1768,-1618}},
+/* UG.AC..CG */
+{{  DEF, -719, -789, -959, -809},
+{ -999,-1668,-1738,-1908,-1758},
+{ -499,-1168,-1238,-1408,-1258},
+{ -989,-1658,-1728,-1898,-1748},
+{ -789,-1458,-1528,-1698,-1548}},
+/* UG.AG..CG */
+{{  DEF, -719, -789, -959, -809},
+{-1079,-1748,-1818,-1988,-1838},
+{ -569,-1238,-1308,-1478,-1328},
+{ -989,-1658,-1728,-1898,-1748},
+{ -859,-1528,-1598,-1768,-1618}},
+/* UG.AU..CG */
+{{  DEF, -719, -789, -959, -809},
+{-1079,-1748,-1818,-1988,-1838},
+{ -719,-1388,-1458,-1628,-1478},
+{ -989,-1658,-1728,-1898,-1748},
+{ -909,-1578,-1648,-1818,-1668}}},
+/* UG.C@..CG */
+{{{  DEF, -479, -479, -359, -479},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529}},
+/* UG.CA..CG */
+{{  DEF, -479, -479, -359, -479},
+{-1079,-1508,-1508,-1388,-1508},
+{ -569, -998, -998, -878, -998},
+{ -989,-1418,-1418,-1298,-1418},
+{ -859,-1288,-1288,-1168,-1288}},
+/* UG.CC..CG */
+{{  DEF, -479, -479, -359, -479},
+{ -999,-1428,-1428,-1308,-1428},
+{ -499, -928, -928, -808, -928},
+{ -989,-1418,-1418,-1298,-1418},
+{ -789,-1218,-1218,-1098,-1218}},
+/* UG.CG..CG */
+{{  DEF, -479, -479, -359, -479},
+{-1079,-1508,-1508,-1388,-1508},
+{ -569, -998, -998, -878, -998},
+{ -989,-1418,-1418,-1298,-1418},
+{ -859,-1288,-1288,-1168,-1288}},
+/* UG.CU..CG */
+{{  DEF, -479, -479, -359, -479},
+{-1079,-1508,-1508,-1388,-1508},
+{ -719,-1148,-1148,-1028,-1148},
+{ -989,-1418,-1418,-1298,-1418},
+{ -909,-1338,-1338,-1218,-1338}}},
+/* UG.G@..CG */
+{{{  DEF, -659, -809, -919, -809},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859}},
+/* UG.GA..CG */
+{{  DEF, -659, -809, -919, -809},
+{-1079,-1688,-1838,-1948,-1838},
+{ -569,-1178,-1328,-1438,-1328},
+{ -989,-1598,-1748,-1858,-1748},
+{ -859,-1468,-1618,-1728,-1618}},
+/* UG.GC..CG */
+{{  DEF, -659, -809, -919, -809},
+{ -999,-1608,-1758,-1868,-1758},
+{ -499,-1108,-1258,-1368,-1258},
+{ -989,-1598,-1748,-1858,-1748},
+{ -789,-1398,-1548,-1658,-1548}},
+/* UG.GG..CG */
+{{  DEF, -659, -809, -919, -809},
+{-1079,-1688,-1838,-1948,-1838},
+{ -569,-1178,-1328,-1438,-1328},
+{ -989,-1598,-1748,-1858,-1748},
+{ -859,-1468,-1618,-1728,-1618}},
+/* UG.GU..CG */
+{{  DEF, -659, -809, -919, -809},
+{-1079,-1688,-1838,-1948,-1838},
+{ -719,-1328,-1478,-1588,-1478},
+{ -989,-1598,-1748,-1858,-1748},
+{ -909,-1518,-1668,-1778,-1668}}},
+/* UG.U@..CG */
+{{{  DEF, -549, -439, -549, -359},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409}},
+/* UG.UA..CG */
+{{  DEF, -549, -439, -549, -359},
+{-1079,-1578,-1468,-1578,-1388},
+{ -569,-1068, -958,-1068, -878},
+{ -989,-1488,-1378,-1488,-1298},
+{ -859,-1358,-1248,-1358,-1168}},
+/* UG.UC..CG */
+{{  DEF, -549, -439, -549, -359},
+{ -999,-1498,-1388,-1498,-1308},
+{ -499, -998, -888, -998, -808},
+{ -989,-1488,-1378,-1488,-1298},
+{ -789,-1288,-1178,-1288,-1098}},
+/* UG.UG..CG */
+{{  DEF, -549, -439, -549, -359},
+{-1079,-1578,-1468,-1578,-1388},
+{ -569,-1068, -958,-1068, -878},
+{ -989,-1488,-1378,-1488,-1298},
+{ -859,-1358,-1248,-1358,-1168}},
+/* UG.UU..CG */
+{{  DEF, -549, -439, -549, -359},
+{-1079,-1578,-1468,-1578,-1388},
+{ -719,-1218,-1108,-1218,-1028},
+{ -989,-1488,-1378,-1488,-1298},
+{ -909,-1408,-1298,-1408,-1218}}}},
+/* UG.@@..GC */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UG.@A..GC */
+{{    0,    0,    0,    0,    0},
+{ -519, -519, -519, -519, -519},
+{ -719, -719, -719, -719, -719},
+{ -709, -709, -709, -709, -709},
+{ -499, -499, -499, -499, -499}},
+/* UG.@C..GC */
+{{    0,    0,    0,    0,    0},
+{ -879, -879, -879, -879, -879},
+{ -309, -309, -309, -309, -309},
+{ -739, -739, -739, -739, -739},
+{ -499, -499, -499, -499, -499}},
+/* UG.@G..GC */
+{{    0,    0,    0,    0,    0},
+{ -559, -559, -559, -559, -559},
+{ -309, -309, -309, -309, -309},
+{ -619, -619, -619, -619, -619},
+{ -499, -499, -499, -499, -499}},
+/* UG.@U..GC */
+{{    0,    0,    0,    0,    0},
+{ -879, -879, -879, -879, -879},
+{ -389, -389, -389, -389, -389},
+{ -739, -739, -739, -739, -739},
+{ -569, -569, -569, -569, -569}}},
+/* UG.A@..GC */
+{{{  DEF, -719, -789, -959, -809},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859}},
+/* UG.AA..GC */
+{{  DEF, -719, -789, -959, -809},
+{ -569,-1238,-1308,-1478,-1328},
+{ -769,-1438,-1508,-1678,-1528},
+{ -759,-1428,-1498,-1668,-1518},
+{ -549,-1218,-1288,-1458,-1308}},
+/* UG.AC..GC */
+{{  DEF, -719, -789, -959, -809},
+{ -929,-1598,-1668,-1838,-1688},
+{ -359,-1028,-1098,-1268,-1118},
+{ -789,-1458,-1528,-1698,-1548},
+{ -549,-1218,-1288,-1458,-1308}},
+/* UG.AG..GC */
+{{  DEF, -719, -789, -959, -809},
+{ -609,-1278,-1348,-1518,-1368},
+{ -359,-1028,-1098,-1268,-1118},
+{ -669,-1338,-1408,-1578,-1428},
+{ -549,-1218,-1288,-1458,-1308}},
+/* UG.AU..GC */
+{{  DEF, -719, -789, -959, -809},
+{ -929,-1598,-1668,-1838,-1688},
+{ -439,-1108,-1178,-1348,-1198},
+{ -789,-1458,-1528,-1698,-1548},
+{ -619,-1288,-1358,-1528,-1378}}},
+/* UG.C@..GC */
+{{{  DEF, -479, -479, -359, -479},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529}},
+/* UG.CA..GC */
+{{  DEF, -479, -479, -359, -479},
+{ -569, -998, -998, -878, -998},
+{ -769,-1198,-1198,-1078,-1198},
+{ -759,-1188,-1188,-1068,-1188},
+{ -549, -978, -978, -858, -978}},
+/* UG.CC..GC */
+{{  DEF, -479, -479, -359, -479},
+{ -929,-1358,-1358,-1238,-1358},
+{ -359, -788, -788, -668, -788},
+{ -789,-1218,-1218,-1098,-1218},
+{ -549, -978, -978, -858, -978}},
+/* UG.CG..GC */
+{{  DEF, -479, -479, -359, -479},
+{ -609,-1038,-1038, -918,-1038},
+{ -359, -788, -788, -668, -788},
+{ -669,-1098,-1098, -978,-1098},
+{ -549, -978, -978, -858, -978}},
+/* UG.CU..GC */
+{{  DEF, -479, -479, -359, -479},
+{ -929,-1358,-1358,-1238,-1358},
+{ -439, -868, -868, -748, -868},
+{ -789,-1218,-1218,-1098,-1218},
+{ -619,-1048,-1048, -928,-1048}}},
+/* UG.G@..GC */
+{{{  DEF, -659, -809, -919, -809},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859}},
+/* UG.GA..GC */
+{{  DEF, -659, -809, -919, -809},
+{ -569,-1178,-1328,-1438,-1328},
+{ -769,-1378,-1528,-1638,-1528},
+{ -759,-1368,-1518,-1628,-1518},
+{ -549,-1158,-1308,-1418,-1308}},
+/* UG.GC..GC */
+{{  DEF, -659, -809, -919, -809},
+{ -929,-1538,-1688,-1798,-1688},
+{ -359, -968,-1118,-1228,-1118},
+{ -789,-1398,-1548,-1658,-1548},
+{ -549,-1158,-1308,-1418,-1308}},
+/* UG.GG..GC */
+{{  DEF, -659, -809, -919, -809},
+{ -609,-1218,-1368,-1478,-1368},
+{ -359, -968,-1118,-1228,-1118},
+{ -669,-1278,-1428,-1538,-1428},
+{ -549,-1158,-1308,-1418,-1308}},
+/* UG.GU..GC */
+{{  DEF, -659, -809, -919, -809},
+{ -929,-1538,-1688,-1798,-1688},
+{ -439,-1048,-1198,-1308,-1198},
+{ -789,-1398,-1548,-1658,-1548},
+{ -619,-1228,-1378,-1488,-1378}}},
+/* UG.U@..GC */
+{{{  DEF, -549, -439, -549, -359},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409}},
+/* UG.UA..GC */
+{{  DEF, -549, -439, -549, -359},
+{ -569,-1068, -958,-1068, -878},
+{ -769,-1268,-1158,-1268,-1078},
+{ -759,-1258,-1148,-1258,-1068},
+{ -549,-1048, -938,-1048, -858}},
+/* UG.UC..GC */
+{{  DEF, -549, -439, -549, -359},
+{ -929,-1428,-1318,-1428,-1238},
+{ -359, -858, -748, -858, -668},
+{ -789,-1288,-1178,-1288,-1098},
+{ -549,-1048, -938,-1048, -858}},
+/* UG.UG..GC */
+{{  DEF, -549, -439, -549, -359},
+{ -609,-1108, -998,-1108, -918},
+{ -359, -858, -748, -858, -668},
+{ -669,-1168,-1058,-1168, -978},
+{ -549,-1048, -938,-1048, -858}},
+/* UG.UU..GC */
+{{  DEF, -549, -439, -549, -359},
+{ -929,-1428,-1318,-1428,-1238},
+{ -439, -938, -828, -938, -748},
+{ -789,-1288,-1178,-1288,-1098},
+{ -619,-1118,-1008,-1118, -928}}}},
+/* UG.@@..GU */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UG.@A..GU */
+{{    0,    0,    0,    0,    0},
+{ -429, -429, -429, -429, -429},
+{ -259, -259, -259, -259, -259},
+{ -339, -339, -339, -339, -339},
+{ -329, -329, -329, -329, -329}},
+/* UG.@C..GU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* UG.@G..GU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* UG.@U..GU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}}},
+/* UG.A@..GU */
+{{{  DEF, -719, -789, -959, -809},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859}},
+/* UG.AA..GU */
+{{  DEF, -719, -789, -959, -809},
+{ -479,-1148,-1218,-1388,-1238},
+{ -309, -978,-1048,-1218,-1068},
+{ -389,-1058,-1128,-1298,-1148},
+{ -379,-1048,-1118,-1288,-1138}},
+/* UG.AC..GU */
+{{  DEF, -719, -789, -959, -809},
+{ -649,-1318,-1388,-1558,-1408},
+{ -289, -958,-1028,-1198,-1048},
+{ -739,-1408,-1478,-1648,-1498},
+{ -379,-1048,-1118,-1288,-1138}},
+/* UG.AG..GU */
+{{  DEF, -719, -789, -959, -809},
+{ -649,-1318,-1388,-1558,-1408},
+{ -289, -958,-1028,-1198,-1048},
+{ -739,-1408,-1478,-1648,-1498},
+{ -379,-1048,-1118,-1288,-1138}},
+/* UG.AU..GU */
+{{  DEF, -719, -789, -959, -809},
+{ -649,-1318,-1388,-1558,-1408},
+{ -289, -958,-1028,-1198,-1048},
+{ -739,-1408,-1478,-1648,-1498},
+{ -379,-1048,-1118,-1288,-1138}}},
+/* UG.C@..GU */
+{{{  DEF, -479, -479, -359, -479},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529}},
+/* UG.CA..GU */
+{{  DEF, -479, -479, -359, -479},
+{ -479, -908, -908, -788, -908},
+{ -309, -738, -738, -618, -738},
+{ -389, -818, -818, -698, -818},
+{ -379, -808, -808, -688, -808}},
+/* UG.CC..GU */
+{{  DEF, -479, -479, -359, -479},
+{ -649,-1078,-1078, -958,-1078},
+{ -289, -718, -718, -598, -718},
+{ -739,-1168,-1168,-1048,-1168},
+{ -379, -808, -808, -688, -808}},
+/* UG.CG..GU */
+{{  DEF, -479, -479, -359, -479},
+{ -649,-1078,-1078, -958,-1078},
+{ -289, -718, -718, -598, -718},
+{ -739,-1168,-1168,-1048,-1168},
+{ -379, -808, -808, -688, -808}},
+/* UG.CU..GU */
+{{  DEF, -479, -479, -359, -479},
+{ -649,-1078,-1078, -958,-1078},
+{ -289, -718, -718, -598, -718},
+{ -739,-1168,-1168,-1048,-1168},
+{ -379, -808, -808, -688, -808}}},
+/* UG.G@..GU */
+{{{  DEF, -659, -809, -919, -809},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859}},
+/* UG.GA..GU */
+{{  DEF, -659, -809, -919, -809},
+{ -479,-1088,-1238,-1348,-1238},
+{ -309, -918,-1068,-1178,-1068},
+{ -389, -998,-1148,-1258,-1148},
+{ -379, -988,-1138,-1248,-1138}},
+/* UG.GC..GU */
+{{  DEF, -659, -809, -919, -809},
+{ -649,-1258,-1408,-1518,-1408},
+{ -289, -898,-1048,-1158,-1048},
+{ -739,-1348,-1498,-1608,-1498},
+{ -379, -988,-1138,-1248,-1138}},
+/* UG.GG..GU */
+{{  DEF, -659, -809, -919, -809},
+{ -649,-1258,-1408,-1518,-1408},
+{ -289, -898,-1048,-1158,-1048},
+{ -739,-1348,-1498,-1608,-1498},
+{ -379, -988,-1138,-1248,-1138}},
+/* UG.GU..GU */
+{{  DEF, -659, -809, -919, -809},
+{ -649,-1258,-1408,-1518,-1408},
+{ -289, -898,-1048,-1158,-1048},
+{ -739,-1348,-1498,-1608,-1498},
+{ -379, -988,-1138,-1248,-1138}}},
+/* UG.U@..GU */
+{{{  DEF, -549, -439, -549, -359},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409}},
+/* UG.UA..GU */
+{{  DEF, -549, -439, -549, -359},
+{ -479, -978, -868, -978, -788},
+{ -309, -808, -698, -808, -618},
+{ -389, -888, -778, -888, -698},
+{ -379, -878, -768, -878, -688}},
+/* UG.UC..GU */
+{{  DEF, -549, -439, -549, -359},
+{ -649,-1148,-1038,-1148, -958},
+{ -289, -788, -678, -788, -598},
+{ -739,-1238,-1128,-1238,-1048},
+{ -379, -878, -768, -878, -688}},
+/* UG.UG..GU */
+{{  DEF, -549, -439, -549, -359},
+{ -649,-1148,-1038,-1148, -958},
+{ -289, -788, -678, -788, -598},
+{ -739,-1238,-1128,-1238,-1048},
+{ -379, -878, -768, -878, -688}},
+/* UG.UU..GU */
+{{  DEF, -549, -439, -549, -359},
+{ -649,-1148,-1038,-1148, -958},
+{ -289, -788, -678, -788, -598},
+{ -739,-1238,-1128,-1238,-1048},
+{ -379, -878, -768, -878, -688}}}},
+/* UG.@@..UG */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UG.@A..UG */
+{{    0,    0,    0,    0,    0},
+{ -719, -719, -719, -719, -719},
+{ -479, -479, -479, -479, -479},
+{ -659, -659, -659, -659, -659},
+{ -549, -549, -549, -549, -549}},
+/* UG.@C..UG */
+{{    0,    0,    0,    0,    0},
+{ -789, -789, -789, -789, -789},
+{ -479, -479, -479, -479, -479},
+{ -809, -809, -809, -809, -809},
+{ -439, -439, -439, -439, -439}},
+/* UG.@G..UG */
+{{    0,    0,    0,    0,    0},
+{ -959, -959, -959, -959, -959},
+{ -359, -359, -359, -359, -359},
+{ -919, -919, -919, -919, -919},
+{ -549, -549, -549, -549, -549}},
+/* UG.@U..UG */
+{{    0,    0,    0,    0,    0},
+{ -809, -809, -809, -809, -809},
+{ -479, -479, -479, -479, -479},
+{ -809, -809, -809, -809, -809},
+{ -359, -359, -359, -359, -359}}},
+/* UG.A@..UG */
+{{{  DEF, -719, -789, -959, -809},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859}},
+/* UG.AA..UG */
+{{  DEF, -719, -789, -959, -809},
+{ -769,-1438,-1508,-1678,-1528},
+{ -529,-1198,-1268,-1438,-1288},
+{ -709,-1378,-1448,-1618,-1468},
+{ -599,-1268,-1338,-1508,-1358}},
+/* UG.AC..UG */
+{{  DEF, -719, -789, -959, -809},
+{ -839,-1508,-1578,-1748,-1598},
+{ -529,-1198,-1268,-1438,-1288},
+{ -859,-1528,-1598,-1768,-1618},
+{ -489,-1158,-1228,-1398,-1248}},
+/* UG.AG..UG */
+{{  DEF, -719, -789, -959, -809},
+{-1009,-1678,-1748,-1918,-1768},
+{ -409,-1078,-1148,-1318,-1168},
+{ -969,-1638,-1708,-1878,-1728},
+{ -599,-1268,-1338,-1508,-1358}},
+/* UG.AU..UG */
+{{  DEF, -719, -789, -959, -809},
+{ -859,-1528,-1598,-1768,-1618},
+{ -529,-1198,-1268,-1438,-1288},
+{ -859,-1528,-1598,-1768,-1618},
+{ -409,-1078,-1148,-1318,-1168}}},
+/* UG.C@..UG */
+{{{  DEF, -479, -479, -359, -479},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529}},
+/* UG.CA..UG */
+{{  DEF, -479, -479, -359, -479},
+{ -769,-1198,-1198,-1078,-1198},
+{ -529, -958, -958, -838, -958},
+{ -709,-1138,-1138,-1018,-1138},
+{ -599,-1028,-1028, -908,-1028}},
+/* UG.CC..UG */
+{{  DEF, -479, -479, -359, -479},
+{ -839,-1268,-1268,-1148,-1268},
+{ -529, -958, -958, -838, -958},
+{ -859,-1288,-1288,-1168,-1288},
+{ -489, -918, -918, -798, -918}},
+/* UG.CG..UG */
+{{  DEF, -479, -479, -359, -479},
+{-1009,-1438,-1438,-1318,-1438},
+{ -409, -838, -838, -718, -838},
+{ -969,-1398,-1398,-1278,-1398},
+{ -599,-1028,-1028, -908,-1028}},
+/* UG.CU..UG */
+{{  DEF, -479, -479, -359, -479},
+{ -859,-1288,-1288,-1168,-1288},
+{ -529, -958, -958, -838, -958},
+{ -859,-1288,-1288,-1168,-1288},
+{ -409, -838, -838, -718, -838}}},
+/* UG.G@..UG */
+{{{  DEF, -659, -809, -919, -809},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859}},
+/* UG.GA..UG */
+{{  DEF, -659, -809, -919, -809},
+{ -769,-1378,-1528,-1638,-1528},
+{ -529,-1138,-1288,-1398,-1288},
+{ -709,-1318,-1468,-1578,-1468},
+{ -599,-1208,-1358,-1468,-1358}},
+/* UG.GC..UG */
+{{  DEF, -659, -809, -919, -809},
+{ -839,-1448,-1598,-1708,-1598},
+{ -529,-1138,-1288,-1398,-1288},
+{ -859,-1468,-1618,-1728,-1618},
+{ -489,-1098,-1248,-1358,-1248}},
+/* UG.GG..UG */
+{{  DEF, -659, -809, -919, -809},
+{-1009,-1618,-1768,-1878,-1768},
+{ -409,-1018,-1168,-1278,-1168},
+{ -969,-1578,-1728,-1838,-1728},
+{ -599,-1208,-1358,-1468,-1358}},
+/* UG.GU..UG */
+{{  DEF, -659, -809, -919, -809},
+{ -859,-1468,-1618,-1728,-1618},
+{ -529,-1138,-1288,-1398,-1288},
+{ -859,-1468,-1618,-1728,-1618},
+{ -409,-1018,-1168,-1278,-1168}}},
+/* UG.U@..UG */
+{{{  DEF, -549, -439, -549, -359},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409}},
+/* UG.UA..UG */
+{{  DEF, -549, -439, -549, -359},
+{ -769,-1268,-1158,-1268,-1078},
+{ -529,-1028, -918,-1028, -838},
+{ -709,-1208,-1098,-1208,-1018},
+{ -599,-1098, -988,-1098, -908}},
+/* UG.UC..UG */
+{{  DEF, -549, -439, -549, -359},
+{ -839,-1338,-1228,-1338,-1148},
+{ -529,-1028, -918,-1028, -838},
+{ -859,-1358,-1248,-1358,-1168},
+{ -489, -988, -878, -988, -798}},
+/* UG.UG..UG */
+{{  DEF, -549, -439, -549, -359},
+{-1009,-1508,-1398,-1508,-1318},
+{ -409, -908, -798, -908, -718},
+{ -969,-1468,-1358,-1468,-1278},
+{ -599,-1098, -988,-1098, -908}},
+/* UG.UU..UG */
+{{  DEF, -549, -439, -549, -359},
+{ -859,-1358,-1248,-1358,-1168},
+{ -529,-1028, -918,-1028, -838},
+{ -859,-1358,-1248,-1358,-1168},
+{ -409, -908, -798, -908, -718}}}},
+/* UG.@@..AU */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UG.@A..AU */
+{{    0,    0,    0,    0,    0},
+{ -429, -429, -429, -429, -429},
+{ -259, -259, -259, -259, -259},
+{ -339, -339, -339, -339, -339},
+{ -329, -329, -329, -329, -329}},
+/* UG.@C..AU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* UG.@G..AU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* UG.@U..AU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}}},
+/* UG.A@..AU */
+{{{  DEF, -719, -789, -959, -809},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859}},
+/* UG.AA..AU */
+{{  DEF, -719, -789, -959, -809},
+{ -479,-1148,-1218,-1388,-1238},
+{ -309, -978,-1048,-1218,-1068},
+{ -389,-1058,-1128,-1298,-1148},
+{ -379,-1048,-1118,-1288,-1138}},
+/* UG.AC..AU */
+{{  DEF, -719, -789, -959, -809},
+{ -649,-1318,-1388,-1558,-1408},
+{ -289, -958,-1028,-1198,-1048},
+{ -739,-1408,-1478,-1648,-1498},
+{ -379,-1048,-1118,-1288,-1138}},
+/* UG.AG..AU */
+{{  DEF, -719, -789, -959, -809},
+{ -649,-1318,-1388,-1558,-1408},
+{ -289, -958,-1028,-1198,-1048},
+{ -739,-1408,-1478,-1648,-1498},
+{ -379,-1048,-1118,-1288,-1138}},
+/* UG.AU..AU */
+{{  DEF, -719, -789, -959, -809},
+{ -649,-1318,-1388,-1558,-1408},
+{ -289, -958,-1028,-1198,-1048},
+{ -739,-1408,-1478,-1648,-1498},
+{ -379,-1048,-1118,-1288,-1138}}},
+/* UG.C@..AU */
+{{{  DEF, -479, -479, -359, -479},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529}},
+/* UG.CA..AU */
+{{  DEF, -479, -479, -359, -479},
+{ -479, -908, -908, -788, -908},
+{ -309, -738, -738, -618, -738},
+{ -389, -818, -818, -698, -818},
+{ -379, -808, -808, -688, -808}},
+/* UG.CC..AU */
+{{  DEF, -479, -479, -359, -479},
+{ -649,-1078,-1078, -958,-1078},
+{ -289, -718, -718, -598, -718},
+{ -739,-1168,-1168,-1048,-1168},
+{ -379, -808, -808, -688, -808}},
+/* UG.CG..AU */
+{{  DEF, -479, -479, -359, -479},
+{ -649,-1078,-1078, -958,-1078},
+{ -289, -718, -718, -598, -718},
+{ -739,-1168,-1168,-1048,-1168},
+{ -379, -808, -808, -688, -808}},
+/* UG.CU..AU */
+{{  DEF, -479, -479, -359, -479},
+{ -649,-1078,-1078, -958,-1078},
+{ -289, -718, -718, -598, -718},
+{ -739,-1168,-1168,-1048,-1168},
+{ -379, -808, -808, -688, -808}}},
+/* UG.G@..AU */
+{{{  DEF, -659, -809, -919, -809},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859}},
+/* UG.GA..AU */
+{{  DEF, -659, -809, -919, -809},
+{ -479,-1088,-1238,-1348,-1238},
+{ -309, -918,-1068,-1178,-1068},
+{ -389, -998,-1148,-1258,-1148},
+{ -379, -988,-1138,-1248,-1138}},
+/* UG.GC..AU */
+{{  DEF, -659, -809, -919, -809},
+{ -649,-1258,-1408,-1518,-1408},
+{ -289, -898,-1048,-1158,-1048},
+{ -739,-1348,-1498,-1608,-1498},
+{ -379, -988,-1138,-1248,-1138}},
+/* UG.GG..AU */
+{{  DEF, -659, -809, -919, -809},
+{ -649,-1258,-1408,-1518,-1408},
+{ -289, -898,-1048,-1158,-1048},
+{ -739,-1348,-1498,-1608,-1498},
+{ -379, -988,-1138,-1248,-1138}},
+/* UG.GU..AU */
+{{  DEF, -659, -809, -919, -809},
+{ -649,-1258,-1408,-1518,-1408},
+{ -289, -898,-1048,-1158,-1048},
+{ -739,-1348,-1498,-1608,-1498},
+{ -379, -988,-1138,-1248,-1138}}},
+/* UG.U@..AU */
+{{{  DEF, -549, -439, -549, -359},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409}},
+/* UG.UA..AU */
+{{  DEF, -549, -439, -549, -359},
+{ -479, -978, -868, -978, -788},
+{ -309, -808, -698, -808, -618},
+{ -389, -888, -778, -888, -698},
+{ -379, -878, -768, -878, -688}},
+/* UG.UC..AU */
+{{  DEF, -549, -439, -549, -359},
+{ -649,-1148,-1038,-1148, -958},
+{ -289, -788, -678, -788, -598},
+{ -739,-1238,-1128,-1238,-1048},
+{ -379, -878, -768, -878, -688}},
+/* UG.UG..AU */
+{{  DEF, -549, -439, -549, -359},
+{ -649,-1148,-1038,-1148, -958},
+{ -289, -788, -678, -788, -598},
+{ -739,-1238,-1128,-1238,-1048},
+{ -379, -878, -768, -878, -688}},
+/* UG.UU..AU */
+{{  DEF, -549, -439, -549, -359},
+{ -649,-1148,-1038,-1148, -958},
+{ -289, -788, -678, -788, -598},
+{ -739,-1238,-1128,-1238,-1048},
+{ -379, -878, -768, -878, -688}}}},
+/* UG.@@..UA */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UG.@A..UA */
+{{    0,    0,    0,    0,    0},
+{ -399, -399, -399, -399, -399},
+{ -429, -429, -429, -429, -429},
+{ -379, -379, -379, -379, -379},
+{ -279, -279, -279, -279, -279}},
+/* UG.@C..UA */
+{{    0,    0,    0,    0,    0},
+{ -629, -629, -629, -629, -629},
+{ -509, -509, -509, -509, -509},
+{ -679, -679, -679, -679, -679},
+{ -139, -139, -139, -139, -139}},
+/* UG.@G..UA */
+{{    0,    0,    0,    0,    0},
+{ -889, -889, -889, -889, -889},
+{ -199, -199, -199, -199, -199},
+{ -889, -889, -889, -889, -889},
+{ -279, -279, -279, -279, -279}},
+/* UG.@U..UA */
+{{    0,    0,    0,    0,    0},
+{ -589, -589, -589, -589, -589},
+{ -179, -179, -179, -179, -179},
+{ -679, -679, -679, -679, -679},
+{ -140, -140, -140, -140, -140}}},
+/* UG.A@..UA */
+{{{  DEF, -719, -789, -959, -809},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859}},
+/* UG.AA..UA */
+{{  DEF, -719, -789, -959, -809},
+{ -449,-1118,-1188,-1358,-1208},
+{ -479,-1148,-1218,-1388,-1238},
+{ -429,-1098,-1168,-1338,-1188},
+{ -329, -998,-1068,-1238,-1088}},
+/* UG.AC..UA */
+{{  DEF, -719, -789, -959, -809},
+{ -679,-1348,-1418,-1588,-1438},
+{ -559,-1228,-1298,-1468,-1318},
+{ -729,-1398,-1468,-1638,-1488},
+{ -189, -858, -928,-1098, -948}},
+/* UG.AG..UA */
+{{  DEF, -719, -789, -959, -809},
+{ -939,-1608,-1678,-1848,-1698},
+{ -249, -918, -988,-1158,-1008},
+{ -939,-1608,-1678,-1848,-1698},
+{ -329, -998,-1068,-1238,-1088}},
+/* UG.AU..UA */
+{{  DEF, -719, -789, -959, -809},
+{ -639,-1308,-1378,-1548,-1398},
+{ -229, -898, -968,-1138, -988},
+{ -729,-1398,-1468,-1638,-1488},
+{ -190, -859, -929,-1099, -949}}},
+/* UG.C@..UA */
+{{{  DEF, -479, -479, -359, -479},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529}},
+/* UG.CA..UA */
+{{  DEF, -479, -479, -359, -479},
+{ -449, -878, -878, -758, -878},
+{ -479, -908, -908, -788, -908},
+{ -429, -858, -858, -738, -858},
+{ -329, -758, -758, -638, -758}},
+/* UG.CC..UA */
+{{  DEF, -479, -479, -359, -479},
+{ -679,-1108,-1108, -988,-1108},
+{ -559, -988, -988, -868, -988},
+{ -729,-1158,-1158,-1038,-1158},
+{ -189, -618, -618, -498, -618}},
+/* UG.CG..UA */
+{{  DEF, -479, -479, -359, -479},
+{ -939,-1368,-1368,-1248,-1368},
+{ -249, -678, -678, -558, -678},
+{ -939,-1368,-1368,-1248,-1368},
+{ -329, -758, -758, -638, -758}},
+/* UG.CU..UA */
+{{  DEF, -479, -479, -359, -479},
+{ -639,-1068,-1068, -948,-1068},
+{ -229, -658, -658, -538, -658},
+{ -729,-1158,-1158,-1038,-1158},
+{ -190, -619, -619, -499, -619}}},
+/* UG.G@..UA */
+{{{  DEF, -659, -809, -919, -809},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859}},
+/* UG.GA..UA */
+{{  DEF, -659, -809, -919, -809},
+{ -449,-1058,-1208,-1318,-1208},
+{ -479,-1088,-1238,-1348,-1238},
+{ -429,-1038,-1188,-1298,-1188},
+{ -329, -938,-1088,-1198,-1088}},
+/* UG.GC..UA */
+{{  DEF, -659, -809, -919, -809},
+{ -679,-1288,-1438,-1548,-1438},
+{ -559,-1168,-1318,-1428,-1318},
+{ -729,-1338,-1488,-1598,-1488},
+{ -189, -798, -948,-1058, -948}},
+/* UG.GG..UA */
+{{  DEF, -659, -809, -919, -809},
+{ -939,-1548,-1698,-1808,-1698},
+{ -249, -858,-1008,-1118,-1008},
+{ -939,-1548,-1698,-1808,-1698},
+{ -329, -938,-1088,-1198,-1088}},
+/* UG.GU..UA */
+{{  DEF, -659, -809, -919, -809},
+{ -639,-1248,-1398,-1508,-1398},
+{ -229, -838, -988,-1098, -988},
+{ -729,-1338,-1488,-1598,-1488},
+{ -190, -799, -949,-1059, -949}}},
+/* UG.U@..UA */
+{{{  DEF, -549, -439, -549, -359},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409}},
+/* UG.UA..UA */
+{{  DEF, -549, -439, -549, -359},
+{ -449, -948, -838, -948, -758},
+{ -479, -978, -868, -978, -788},
+{ -429, -928, -818, -928, -738},
+{ -329, -828, -718, -828, -638}},
+/* UG.UC..UA */
+{{  DEF, -549, -439, -549, -359},
+{ -679,-1178,-1068,-1178, -988},
+{ -559,-1058, -948,-1058, -868},
+{ -729,-1228,-1118,-1228,-1038},
+{ -189, -688, -578, -688, -498}},
+/* UG.UG..UA */
+{{  DEF, -549, -439, -549, -359},
+{ -939,-1438,-1328,-1438,-1248},
+{ -249, -748, -638, -748, -558},
+{ -939,-1438,-1328,-1438,-1248},
+{ -329, -828, -718, -828, -638}},
+/* UG.UU..UA */
+{{  DEF, -549, -439, -549, -359},
+{ -639,-1138,-1028,-1138, -948},
+{ -229, -728, -618, -728, -538},
+{ -729,-1228,-1118,-1228,-1038},
+{ -190, -689, -579, -689, -499}}}},
+/* UG.@@.. @ */
+{{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UG.@A.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UG.@C.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UG.@G.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UG.@U.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}}},
+/* UG.A@.. @ */
+{{{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859}},
+/* UG.AA.. @ */
+{{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859}},
+/* UG.AC.. @ */
+{{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859}},
+/* UG.AG.. @ */
+{{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859}},
+/* UG.AU.. @ */
+{{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859},
+{ -100, -769, -839,-1009, -859}}},
+/* UG.C@.. @ */
+{{{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529}},
+/* UG.CA.. @ */
+{{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529}},
+/* UG.CC.. @ */
+{{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529}},
+/* UG.CG.. @ */
+{{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529}},
+/* UG.CU.. @ */
+{{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529},
+{ -100, -529, -529, -409, -529}}},
+/* UG.G@.. @ */
+{{{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859}},
+/* UG.GA.. @ */
+{{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859}},
+/* UG.GC.. @ */
+{{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859}},
+/* UG.GG.. @ */
+{{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859}},
+/* UG.GU.. @ */
+{{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859},
+{ -100, -709, -859, -969, -859}}},
+/* UG.U@.. @ */
+{{{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409}},
+/* UG.UA.. @ */
+{{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409}},
+/* UG.UC.. @ */
+{{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409}},
+/* UG.UG.. @ */
+{{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409}},
+/* UG.UU.. @ */
+{{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409},
+{ -100, -599, -489, -599, -409}}}}},
+{ /* noPair */ {{{{0}}}},
+/* AU.@@..CG */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* AU.@A..CG */
+{{    0,    0,    0,    0,    0},
+{-1029,-1029,-1029,-1029,-1029},
+{ -519, -519, -519, -519, -519},
+{ -939, -939, -939, -939, -939},
+{ -809, -809, -809, -809, -809}},
+/* AU.@C..CG */
+{{    0,    0,    0,    0,    0},
+{ -949, -949, -949, -949, -949},
+{ -449, -449, -449, -449, -449},
+{ -939, -939, -939, -939, -939},
+{ -739, -739, -739, -739, -739}},
+/* AU.@G..CG */
+{{    0,    0,    0,    0,    0},
+{-1029,-1029,-1029,-1029,-1029},
+{ -519, -519, -519, -519, -519},
+{ -939, -939, -939, -939, -939},
+{ -809, -809, -809, -809, -809}},
+/* AU.@U..CG */
+{{    0,    0,    0,    0,    0},
+{-1029,-1029,-1029,-1029,-1029},
+{ -669, -669, -669, -669, -669},
+{ -939, -939, -939, -939, -939},
+{ -859, -859, -859, -859, -859}}},
+/* AU.A@..CG */
+{{{  DEF, -429, -599, -599, -599},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* AU.AA..CG */
+{{  DEF, -429, -599, -599, -599},
+{-1079,-1458,-1628,-1628,-1628},
+{ -569, -948,-1118,-1118,-1118},
+{ -989,-1368,-1538,-1538,-1538},
+{ -859,-1238,-1408,-1408,-1408}},
+/* AU.AC..CG */
+{{  DEF, -429, -599, -599, -599},
+{ -999,-1378,-1548,-1548,-1548},
+{ -499, -878,-1048,-1048,-1048},
+{ -989,-1368,-1538,-1538,-1538},
+{ -789,-1168,-1338,-1338,-1338}},
+/* AU.AG..CG */
+{{  DEF, -429, -599, -599, -599},
+{-1079,-1458,-1628,-1628,-1628},
+{ -569, -948,-1118,-1118,-1118},
+{ -989,-1368,-1538,-1538,-1538},
+{ -859,-1238,-1408,-1408,-1408}},
+/* AU.AU..CG */
+{{  DEF, -429, -599, -599, -599},
+{-1079,-1458,-1628,-1628,-1628},
+{ -719,-1098,-1268,-1268,-1268},
+{ -989,-1368,-1538,-1538,-1538},
+{ -909,-1288,-1458,-1458,-1458}}},
+/* AU.C@..CG */
+{{{  DEF, -259, -239, -239, -239},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* AU.CA..CG */
+{{  DEF, -259, -239, -239, -239},
+{-1079,-1288,-1268,-1268,-1268},
+{ -569, -778, -758, -758, -758},
+{ -989,-1198,-1178,-1178,-1178},
+{ -859,-1068,-1048,-1048,-1048}},
+/* AU.CC..CG */
+{{  DEF, -259, -239, -239, -239},
+{ -999,-1208,-1188,-1188,-1188},
+{ -499, -708, -688, -688, -688},
+{ -989,-1198,-1178,-1178,-1178},
+{ -789, -998, -978, -978, -978}},
+/* AU.CG..CG */
+{{  DEF, -259, -239, -239, -239},
+{-1079,-1288,-1268,-1268,-1268},
+{ -569, -778, -758, -758, -758},
+{ -989,-1198,-1178,-1178,-1178},
+{ -859,-1068,-1048,-1048,-1048}},
+/* AU.CU..CG */
+{{  DEF, -259, -239, -239, -239},
+{-1079,-1288,-1268,-1268,-1268},
+{ -719, -928, -908, -908, -908},
+{ -989,-1198,-1178,-1178,-1178},
+{ -909,-1118,-1098,-1098,-1098}}},
+/* AU.G@..CG */
+{{{  DEF, -339, -689, -689, -689},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* AU.GA..CG */
+{{  DEF, -339, -689, -689, -689},
+{-1079,-1368,-1718,-1718,-1718},
+{ -569, -858,-1208,-1208,-1208},
+{ -989,-1278,-1628,-1628,-1628},
+{ -859,-1148,-1498,-1498,-1498}},
+/* AU.GC..CG */
+{{  DEF, -339, -689, -689, -689},
+{ -999,-1288,-1638,-1638,-1638},
+{ -499, -788,-1138,-1138,-1138},
+{ -989,-1278,-1628,-1628,-1628},
+{ -789,-1078,-1428,-1428,-1428}},
+/* AU.GG..CG */
+{{  DEF, -339, -689, -689, -689},
+{-1079,-1368,-1718,-1718,-1718},
+{ -569, -858,-1208,-1208,-1208},
+{ -989,-1278,-1628,-1628,-1628},
+{ -859,-1148,-1498,-1498,-1498}},
+/* AU.GU..CG */
+{{  DEF, -339, -689, -689, -689},
+{-1079,-1368,-1718,-1718,-1718},
+{ -719,-1008,-1358,-1358,-1358},
+{ -989,-1278,-1628,-1628,-1628},
+{ -909,-1198,-1548,-1548,-1548}}},
+/* AU.U@..CG */
+{{{  DEF, -329, -329, -329, -329},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* AU.UA..CG */
+{{  DEF, -329, -329, -329, -329},
+{-1079,-1358,-1358,-1358,-1358},
+{ -569, -848, -848, -848, -848},
+{ -989,-1268,-1268,-1268,-1268},
+{ -859,-1138,-1138,-1138,-1138}},
+/* AU.UC..CG */
+{{  DEF, -329, -329, -329, -329},
+{ -999,-1278,-1278,-1278,-1278},
+{ -499, -778, -778, -778, -778},
+{ -989,-1268,-1268,-1268,-1268},
+{ -789,-1068,-1068,-1068,-1068}},
+/* AU.UG..CG */
+{{  DEF, -329, -329, -329, -329},
+{-1079,-1358,-1358,-1358,-1358},
+{ -569, -848, -848, -848, -848},
+{ -989,-1268,-1268,-1268,-1268},
+{ -859,-1138,-1138,-1138,-1138}},
+/* AU.UU..CG */
+{{  DEF, -329, -329, -329, -329},
+{-1079,-1358,-1358,-1358,-1358},
+{ -719, -998, -998, -998, -998},
+{ -989,-1268,-1268,-1268,-1268},
+{ -909,-1188,-1188,-1188,-1188}}}},
+/* AU.@@..GC */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* AU.@A..GC */
+{{    0,    0,    0,    0,    0},
+{ -519, -519, -519, -519, -519},
+{ -719, -719, -719, -719, -719},
+{ -709, -709, -709, -709, -709},
+{ -499, -499, -499, -499, -499}},
+/* AU.@C..GC */
+{{    0,    0,    0,    0,    0},
+{ -879, -879, -879, -879, -879},
+{ -309, -309, -309, -309, -309},
+{ -739, -739, -739, -739, -739},
+{ -499, -499, -499, -499, -499}},
+/* AU.@G..GC */
+{{    0,    0,    0,    0,    0},
+{ -559, -559, -559, -559, -559},
+{ -309, -309, -309, -309, -309},
+{ -619, -619, -619, -619, -619},
+{ -499, -499, -499, -499, -499}},
+/* AU.@U..GC */
+{{    0,    0,    0,    0,    0},
+{ -879, -879, -879, -879, -879},
+{ -389, -389, -389, -389, -389},
+{ -739, -739, -739, -739, -739},
+{ -569, -569, -569, -569, -569}}},
+/* AU.A@..GC */
+{{{  DEF, -429, -599, -599, -599},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* AU.AA..GC */
+{{  DEF, -429, -599, -599, -599},
+{ -569, -948,-1118,-1118,-1118},
+{ -769,-1148,-1318,-1318,-1318},
+{ -759,-1138,-1308,-1308,-1308},
+{ -549, -928,-1098,-1098,-1098}},
+/* AU.AC..GC */
+{{  DEF, -429, -599, -599, -599},
+{ -929,-1308,-1478,-1478,-1478},
+{ -359, -738, -908, -908, -908},
+{ -789,-1168,-1338,-1338,-1338},
+{ -549, -928,-1098,-1098,-1098}},
+/* AU.AG..GC */
+{{  DEF, -429, -599, -599, -599},
+{ -609, -988,-1158,-1158,-1158},
+{ -359, -738, -908, -908, -908},
+{ -669,-1048,-1218,-1218,-1218},
+{ -549, -928,-1098,-1098,-1098}},
+/* AU.AU..GC */
+{{  DEF, -429, -599, -599, -599},
+{ -929,-1308,-1478,-1478,-1478},
+{ -439, -818, -988, -988, -988},
+{ -789,-1168,-1338,-1338,-1338},
+{ -619, -998,-1168,-1168,-1168}}},
+/* AU.C@..GC */
+{{{  DEF, -259, -239, -239, -239},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* AU.CA..GC */
+{{  DEF, -259, -239, -239, -239},
+{ -569, -778, -758, -758, -758},
+{ -769, -978, -958, -958, -958},
+{ -759, -968, -948, -948, -948},
+{ -549, -758, -738, -738, -738}},
+/* AU.CC..GC */
+{{  DEF, -259, -239, -239, -239},
+{ -929,-1138,-1118,-1118,-1118},
+{ -359, -568, -548, -548, -548},
+{ -789, -998, -978, -978, -978},
+{ -549, -758, -738, -738, -738}},
+/* AU.CG..GC */
+{{  DEF, -259, -239, -239, -239},
+{ -609, -818, -798, -798, -798},
+{ -359, -568, -548, -548, -548},
+{ -669, -878, -858, -858, -858},
+{ -549, -758, -738, -738, -738}},
+/* AU.CU..GC */
+{{  DEF, -259, -239, -239, -239},
+{ -929,-1138,-1118,-1118,-1118},
+{ -439, -648, -628, -628, -628},
+{ -789, -998, -978, -978, -978},
+{ -619, -828, -808, -808, -808}}},
+/* AU.G@..GC */
+{{{  DEF, -339, -689, -689, -689},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* AU.GA..GC */
+{{  DEF, -339, -689, -689, -689},
+{ -569, -858,-1208,-1208,-1208},
+{ -769,-1058,-1408,-1408,-1408},
+{ -759,-1048,-1398,-1398,-1398},
+{ -549, -838,-1188,-1188,-1188}},
+/* AU.GC..GC */
+{{  DEF, -339, -689, -689, -689},
+{ -929,-1218,-1568,-1568,-1568},
+{ -359, -648, -998, -998, -998},
+{ -789,-1078,-1428,-1428,-1428},
+{ -549, -838,-1188,-1188,-1188}},
+/* AU.GG..GC */
+{{  DEF, -339, -689, -689, -689},
+{ -609, -898,-1248,-1248,-1248},
+{ -359, -648, -998, -998, -998},
+{ -669, -958,-1308,-1308,-1308},
+{ -549, -838,-1188,-1188,-1188}},
+/* AU.GU..GC */
+{{  DEF, -339, -689, -689, -689},
+{ -929,-1218,-1568,-1568,-1568},
+{ -439, -728,-1078,-1078,-1078},
+{ -789,-1078,-1428,-1428,-1428},
+{ -619, -908,-1258,-1258,-1258}}},
+/* AU.U@..GC */
+{{{  DEF, -329, -329, -329, -329},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* AU.UA..GC */
+{{  DEF, -329, -329, -329, -329},
+{ -569, -848, -848, -848, -848},
+{ -769,-1048,-1048,-1048,-1048},
+{ -759,-1038,-1038,-1038,-1038},
+{ -549, -828, -828, -828, -828}},
+/* AU.UC..GC */
+{{  DEF, -329, -329, -329, -329},
+{ -929,-1208,-1208,-1208,-1208},
+{ -359, -638, -638, -638, -638},
+{ -789,-1068,-1068,-1068,-1068},
+{ -549, -828, -828, -828, -828}},
+/* AU.UG..GC */
+{{  DEF, -329, -329, -329, -329},
+{ -609, -888, -888, -888, -888},
+{ -359, -638, -638, -638, -638},
+{ -669, -948, -948, -948, -948},
+{ -549, -828, -828, -828, -828}},
+/* AU.UU..GC */
+{{  DEF, -329, -329, -329, -329},
+{ -929,-1208,-1208,-1208,-1208},
+{ -439, -718, -718, -718, -718},
+{ -789,-1068,-1068,-1068,-1068},
+{ -619, -898, -898, -898, -898}}}},
+/* AU.@@..GU */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* AU.@A..GU */
+{{    0,    0,    0,    0,    0},
+{ -429, -429, -429, -429, -429},
+{ -259, -259, -259, -259, -259},
+{ -339, -339, -339, -339, -339},
+{ -329, -329, -329, -329, -329}},
+/* AU.@C..GU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* AU.@G..GU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* AU.@U..GU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}}},
+/* AU.A@..GU */
+{{{  DEF, -429, -599, -599, -599},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* AU.AA..GU */
+{{  DEF, -429, -599, -599, -599},
+{ -479, -858,-1028,-1028,-1028},
+{ -309, -688, -858, -858, -858},
+{ -389, -768, -938, -938, -938},
+{ -379, -758, -928, -928, -928}},
+/* AU.AC..GU */
+{{  DEF, -429, -599, -599, -599},
+{ -649,-1028,-1198,-1198,-1198},
+{ -289, -668, -838, -838, -838},
+{ -739,-1118,-1288,-1288,-1288},
+{ -379, -758, -928, -928, -928}},
+/* AU.AG..GU */
+{{  DEF, -429, -599, -599, -599},
+{ -649,-1028,-1198,-1198,-1198},
+{ -289, -668, -838, -838, -838},
+{ -739,-1118,-1288,-1288,-1288},
+{ -379, -758, -928, -928, -928}},
+/* AU.AU..GU */
+{{  DEF, -429, -599, -599, -599},
+{ -649,-1028,-1198,-1198,-1198},
+{ -289, -668, -838, -838, -838},
+{ -739,-1118,-1288,-1288,-1288},
+{ -379, -758, -928, -928, -928}}},
+/* AU.C@..GU */
+{{{  DEF, -259, -239, -239, -239},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* AU.CA..GU */
+{{  DEF, -259, -239, -239, -239},
+{ -479, -688, -668, -668, -668},
+{ -309, -518, -498, -498, -498},
+{ -389, -598, -578, -578, -578},
+{ -379, -588, -568, -568, -568}},
+/* AU.CC..GU */
+{{  DEF, -259, -239, -239, -239},
+{ -649, -858, -838, -838, -838},
+{ -289, -498, -478, -478, -478},
+{ -739, -948, -928, -928, -928},
+{ -379, -588, -568, -568, -568}},
+/* AU.CG..GU */
+{{  DEF, -259, -239, -239, -239},
+{ -649, -858, -838, -838, -838},
+{ -289, -498, -478, -478, -478},
+{ -739, -948, -928, -928, -928},
+{ -379, -588, -568, -568, -568}},
+/* AU.CU..GU */
+{{  DEF, -259, -239, -239, -239},
+{ -649, -858, -838, -838, -838},
+{ -289, -498, -478, -478, -478},
+{ -739, -948, -928, -928, -928},
+{ -379, -588, -568, -568, -568}}},
+/* AU.G@..GU */
+{{{  DEF, -339, -689, -689, -689},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* AU.GA..GU */
+{{  DEF, -339, -689, -689, -689},
+{ -479, -768,-1118,-1118,-1118},
+{ -309, -598, -948, -948, -948},
+{ -389, -678,-1028,-1028,-1028},
+{ -379, -668,-1018,-1018,-1018}},
+/* AU.GC..GU */
+{{  DEF, -339, -689, -689, -689},
+{ -649, -938,-1288,-1288,-1288},
+{ -289, -578, -928, -928, -928},
+{ -739,-1028,-1378,-1378,-1378},
+{ -379, -668,-1018,-1018,-1018}},
+/* AU.GG..GU */
+{{  DEF, -339, -689, -689, -689},
+{ -649, -938,-1288,-1288,-1288},
+{ -289, -578, -928, -928, -928},
+{ -739,-1028,-1378,-1378,-1378},
+{ -379, -668,-1018,-1018,-1018}},
+/* AU.GU..GU */
+{{  DEF, -339, -689, -689, -689},
+{ -649, -938,-1288,-1288,-1288},
+{ -289, -578, -928, -928, -928},
+{ -739,-1028,-1378,-1378,-1378},
+{ -379, -668,-1018,-1018,-1018}}},
+/* AU.U@..GU */
+{{{  DEF, -329, -329, -329, -329},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* AU.UA..GU */
+{{  DEF, -329, -329, -329, -329},
+{ -479, -758, -758, -758, -758},
+{ -309, -588, -588, -588, -588},
+{ -389, -668, -668, -668, -668},
+{ -379, -658, -658, -658, -658}},
+/* AU.UC..GU */
+{{  DEF, -329, -329, -329, -329},
+{ -649, -928, -928, -928, -928},
+{ -289, -568, -568, -568, -568},
+{ -739,-1018,-1018,-1018,-1018},
+{ -379, -658, -658, -658, -658}},
+/* AU.UG..GU */
+{{  DEF, -329, -329, -329, -329},
+{ -649, -928, -928, -928, -928},
+{ -289, -568, -568, -568, -568},
+{ -739,-1018,-1018,-1018,-1018},
+{ -379, -658, -658, -658, -658}},
+/* AU.UU..GU */
+{{  DEF, -329, -329, -329, -329},
+{ -649, -928, -928, -928, -928},
+{ -289, -568, -568, -568, -568},
+{ -739,-1018,-1018,-1018,-1018},
+{ -379, -658, -658, -658, -658}}}},
+/* AU.@@..UG */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* AU.@A..UG */
+{{    0,    0,    0,    0,    0},
+{ -719, -719, -719, -719, -719},
+{ -479, -479, -479, -479, -479},
+{ -659, -659, -659, -659, -659},
+{ -549, -549, -549, -549, -549}},
+/* AU.@C..UG */
+{{    0,    0,    0,    0,    0},
+{ -789, -789, -789, -789, -789},
+{ -479, -479, -479, -479, -479},
+{ -809, -809, -809, -809, -809},
+{ -439, -439, -439, -439, -439}},
+/* AU.@G..UG */
+{{    0,    0,    0,    0,    0},
+{ -959, -959, -959, -959, -959},
+{ -359, -359, -359, -359, -359},
+{ -919, -919, -919, -919, -919},
+{ -549, -549, -549, -549, -549}},
+/* AU.@U..UG */
+{{    0,    0,    0,    0,    0},
+{ -809, -809, -809, -809, -809},
+{ -479, -479, -479, -479, -479},
+{ -809, -809, -809, -809, -809},
+{ -359, -359, -359, -359, -359}}},
+/* AU.A@..UG */
+{{{  DEF, -429, -599, -599, -599},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* AU.AA..UG */
+{{  DEF, -429, -599, -599, -599},
+{ -769,-1148,-1318,-1318,-1318},
+{ -529, -908,-1078,-1078,-1078},
+{ -709,-1088,-1258,-1258,-1258},
+{ -599, -978,-1148,-1148,-1148}},
+/* AU.AC..UG */
+{{  DEF, -429, -599, -599, -599},
+{ -839,-1218,-1388,-1388,-1388},
+{ -529, -908,-1078,-1078,-1078},
+{ -859,-1238,-1408,-1408,-1408},
+{ -489, -868,-1038,-1038,-1038}},
+/* AU.AG..UG */
+{{  DEF, -429, -599, -599, -599},
+{-1009,-1388,-1558,-1558,-1558},
+{ -409, -788, -958, -958, -958},
+{ -969,-1348,-1518,-1518,-1518},
+{ -599, -978,-1148,-1148,-1148}},
+/* AU.AU..UG */
+{{  DEF, -429, -599, -599, -599},
+{ -859,-1238,-1408,-1408,-1408},
+{ -529, -908,-1078,-1078,-1078},
+{ -859,-1238,-1408,-1408,-1408},
+{ -409, -788, -958, -958, -958}}},
+/* AU.C@..UG */
+{{{  DEF, -259, -239, -239, -239},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* AU.CA..UG */
+{{  DEF, -259, -239, -239, -239},
+{ -769, -978, -958, -958, -958},
+{ -529, -738, -718, -718, -718},
+{ -709, -918, -898, -898, -898},
+{ -599, -808, -788, -788, -788}},
+/* AU.CC..UG */
+{{  DEF, -259, -239, -239, -239},
+{ -839,-1048,-1028,-1028,-1028},
+{ -529, -738, -718, -718, -718},
+{ -859,-1068,-1048,-1048,-1048},
+{ -489, -698, -678, -678, -678}},
+/* AU.CG..UG */
+{{  DEF, -259, -239, -239, -239},
+{-1009,-1218,-1198,-1198,-1198},
+{ -409, -618, -598, -598, -598},
+{ -969,-1178,-1158,-1158,-1158},
+{ -599, -808, -788, -788, -788}},
+/* AU.CU..UG */
+{{  DEF, -259, -239, -239, -239},
+{ -859,-1068,-1048,-1048,-1048},
+{ -529, -738, -718, -718, -718},
+{ -859,-1068,-1048,-1048,-1048},
+{ -409, -618, -598, -598, -598}}},
+/* AU.G@..UG */
+{{{  DEF, -339, -689, -689, -689},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* AU.GA..UG */
+{{  DEF, -339, -689, -689, -689},
+{ -769,-1058,-1408,-1408,-1408},
+{ -529, -818,-1168,-1168,-1168},
+{ -709, -998,-1348,-1348,-1348},
+{ -599, -888,-1238,-1238,-1238}},
+/* AU.GC..UG */
+{{  DEF, -339, -689, -689, -689},
+{ -839,-1128,-1478,-1478,-1478},
+{ -529, -818,-1168,-1168,-1168},
+{ -859,-1148,-1498,-1498,-1498},
+{ -489, -778,-1128,-1128,-1128}},
+/* AU.GG..UG */
+{{  DEF, -339, -689, -689, -689},
+{-1009,-1298,-1648,-1648,-1648},
+{ -409, -698,-1048,-1048,-1048},
+{ -969,-1258,-1608,-1608,-1608},
+{ -599, -888,-1238,-1238,-1238}},
+/* AU.GU..UG */
+{{  DEF, -339, -689, -689, -689},
+{ -859,-1148,-1498,-1498,-1498},
+{ -529, -818,-1168,-1168,-1168},
+{ -859,-1148,-1498,-1498,-1498},
+{ -409, -698,-1048,-1048,-1048}}},
+/* AU.U@..UG */
+{{{  DEF, -329, -329, -329, -329},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* AU.UA..UG */
+{{  DEF, -329, -329, -329, -329},
+{ -769,-1048,-1048,-1048,-1048},
+{ -529, -808, -808, -808, -808},
+{ -709, -988, -988, -988, -988},
+{ -599, -878, -878, -878, -878}},
+/* AU.UC..UG */
+{{  DEF, -329, -329, -329, -329},
+{ -839,-1118,-1118,-1118,-1118},
+{ -529, -808, -808, -808, -808},
+{ -859,-1138,-1138,-1138,-1138},
+{ -489, -768, -768, -768, -768}},
+/* AU.UG..UG */
+{{  DEF, -329, -329, -329, -329},
+{-1009,-1288,-1288,-1288,-1288},
+{ -409, -688, -688, -688, -688},
+{ -969,-1248,-1248,-1248,-1248},
+{ -599, -878, -878, -878, -878}},
+/* AU.UU..UG */
+{{  DEF, -329, -329, -329, -329},
+{ -859,-1138,-1138,-1138,-1138},
+{ -529, -808, -808, -808, -808},
+{ -859,-1138,-1138,-1138,-1138},
+{ -409, -688, -688, -688, -688}}}},
+/* AU.@@..AU */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* AU.@A..AU */
+{{    0,    0,    0,    0,    0},
+{ -429, -429, -429, -429, -429},
+{ -259, -259, -259, -259, -259},
+{ -339, -339, -339, -339, -339},
+{ -329, -329, -329, -329, -329}},
+/* AU.@C..AU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* AU.@G..AU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* AU.@U..AU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}}},
+/* AU.A@..AU */
+{{{  DEF, -429, -599, -599, -599},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* AU.AA..AU */
+{{  DEF, -429, -599, -599, -599},
+{ -479, -858,-1028,-1028,-1028},
+{ -309, -688, -858, -858, -858},
+{ -389, -768, -938, -938, -938},
+{ -379, -758, -928, -928, -928}},
+/* AU.AC..AU */
+{{  DEF, -429, -599, -599, -599},
+{ -649,-1028,-1198,-1198,-1198},
+{ -289, -668, -838, -838, -838},
+{ -739,-1118,-1288,-1288,-1288},
+{ -379, -758, -928, -928, -928}},
+/* AU.AG..AU */
+{{  DEF, -429, -599, -599, -599},
+{ -649,-1028,-1198,-1198,-1198},
+{ -289, -668, -838, -838, -838},
+{ -739,-1118,-1288,-1288,-1288},
+{ -379, -758, -928, -928, -928}},
+/* AU.AU..AU */
+{{  DEF, -429, -599, -599, -599},
+{ -649,-1028,-1198,-1198,-1198},
+{ -289, -668, -838, -838, -838},
+{ -739,-1118,-1288,-1288,-1288},
+{ -379, -758, -928, -928, -928}}},
+/* AU.C@..AU */
+{{{  DEF, -259, -239, -239, -239},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* AU.CA..AU */
+{{  DEF, -259, -239, -239, -239},
+{ -479, -688, -668, -668, -668},
+{ -309, -518, -498, -498, -498},
+{ -389, -598, -578, -578, -578},
+{ -379, -588, -568, -568, -568}},
+/* AU.CC..AU */
+{{  DEF, -259, -239, -239, -239},
+{ -649, -858, -838, -838, -838},
+{ -289, -498, -478, -478, -478},
+{ -739, -948, -928, -928, -928},
+{ -379, -588, -568, -568, -568}},
+/* AU.CG..AU */
+{{  DEF, -259, -239, -239, -239},
+{ -649, -858, -838, -838, -838},
+{ -289, -498, -478, -478, -478},
+{ -739, -948, -928, -928, -928},
+{ -379, -588, -568, -568, -568}},
+/* AU.CU..AU */
+{{  DEF, -259, -239, -239, -239},
+{ -649, -858, -838, -838, -838},
+{ -289, -498, -478, -478, -478},
+{ -739, -948, -928, -928, -928},
+{ -379, -588, -568, -568, -568}}},
+/* AU.G@..AU */
+{{{  DEF, -339, -689, -689, -689},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* AU.GA..AU */
+{{  DEF, -339, -689, -689, -689},
+{ -479, -768,-1118,-1118,-1118},
+{ -309, -598, -948, -948, -948},
+{ -389, -678,-1028,-1028,-1028},
+{ -379, -668,-1018,-1018,-1018}},
+/* AU.GC..AU */
+{{  DEF, -339, -689, -689, -689},
+{ -649, -938,-1288,-1288,-1288},
+{ -289, -578, -928, -928, -928},
+{ -739,-1028,-1378,-1378,-1378},
+{ -379, -668,-1018,-1018,-1018}},
+/* AU.GG..AU */
+{{  DEF, -339, -689, -689, -689},
+{ -649, -938,-1288,-1288,-1288},
+{ -289, -578, -928, -928, -928},
+{ -739,-1028,-1378,-1378,-1378},
+{ -379, -668,-1018,-1018,-1018}},
+/* AU.GU..AU */
+{{  DEF, -339, -689, -689, -689},
+{ -649, -938,-1288,-1288,-1288},
+{ -289, -578, -928, -928, -928},
+{ -739,-1028,-1378,-1378,-1378},
+{ -379, -668,-1018,-1018,-1018}}},
+/* AU.U@..AU */
+{{{  DEF, -329, -329, -329, -329},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* AU.UA..AU */
+{{  DEF, -329, -329, -329, -329},
+{ -479, -758, -758, -758, -758},
+{ -309, -588, -588, -588, -588},
+{ -389, -668, -668, -668, -668},
+{ -379, -658, -658, -658, -658}},
+/* AU.UC..AU */
+{{  DEF, -329, -329, -329, -329},
+{ -649, -928, -928, -928, -928},
+{ -289, -568, -568, -568, -568},
+{ -739,-1018,-1018,-1018,-1018},
+{ -379, -658, -658, -658, -658}},
+/* AU.UG..AU */
+{{  DEF, -329, -329, -329, -329},
+{ -649, -928, -928, -928, -928},
+{ -289, -568, -568, -568, -568},
+{ -739,-1018,-1018,-1018,-1018},
+{ -379, -658, -658, -658, -658}},
+/* AU.UU..AU */
+{{  DEF, -329, -329, -329, -329},
+{ -649, -928, -928, -928, -928},
+{ -289, -568, -568, -568, -568},
+{ -739,-1018,-1018,-1018,-1018},
+{ -379, -658, -658, -658, -658}}}},
+/* AU.@@..UA */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* AU.@A..UA */
+{{    0,    0,    0,    0,    0},
+{ -399, -399, -399, -399, -399},
+{ -429, -429, -429, -429, -429},
+{ -379, -379, -379, -379, -379},
+{ -279, -279, -279, -279, -279}},
+/* AU.@C..UA */
+{{    0,    0,    0,    0,    0},
+{ -629, -629, -629, -629, -629},
+{ -509, -509, -509, -509, -509},
+{ -679, -679, -679, -679, -679},
+{ -139, -139, -139, -139, -139}},
+/* AU.@G..UA */
+{{    0,    0,    0,    0,    0},
+{ -889, -889, -889, -889, -889},
+{ -199, -199, -199, -199, -199},
+{ -889, -889, -889, -889, -889},
+{ -279, -279, -279, -279, -279}},
+/* AU.@U..UA */
+{{    0,    0,    0,    0,    0},
+{ -589, -589, -589, -589, -589},
+{ -179, -179, -179, -179, -179},
+{ -679, -679, -679, -679, -679},
+{ -140, -140, -140, -140, -140}}},
+/* AU.A@..UA */
+{{{  DEF, -429, -599, -599, -599},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* AU.AA..UA */
+{{  DEF, -429, -599, -599, -599},
+{ -449, -828, -998, -998, -998},
+{ -479, -858,-1028,-1028,-1028},
+{ -429, -808, -978, -978, -978},
+{ -329, -708, -878, -878, -878}},
+/* AU.AC..UA */
+{{  DEF, -429, -599, -599, -599},
+{ -679,-1058,-1228,-1228,-1228},
+{ -559, -938,-1108,-1108,-1108},
+{ -729,-1108,-1278,-1278,-1278},
+{ -189, -568, -738, -738, -738}},
+/* AU.AG..UA */
+{{  DEF, -429, -599, -599, -599},
+{ -939,-1318,-1488,-1488,-1488},
+{ -249, -628, -798, -798, -798},
+{ -939,-1318,-1488,-1488,-1488},
+{ -329, -708, -878, -878, -878}},
+/* AU.AU..UA */
+{{  DEF, -429, -599, -599, -599},
+{ -639,-1018,-1188,-1188,-1188},
+{ -229, -608, -778, -778, -778},
+{ -729,-1108,-1278,-1278,-1278},
+{ -190, -569, -739, -739, -739}}},
+/* AU.C@..UA */
+{{{  DEF, -259, -239, -239, -239},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* AU.CA..UA */
+{{  DEF, -259, -239, -239, -239},
+{ -449, -658, -638, -638, -638},
+{ -479, -688, -668, -668, -668},
+{ -429, -638, -618, -618, -618},
+{ -329, -538, -518, -518, -518}},
+/* AU.CC..UA */
+{{  DEF, -259, -239, -239, -239},
+{ -679, -888, -868, -868, -868},
+{ -559, -768, -748, -748, -748},
+{ -729, -938, -918, -918, -918},
+{ -189, -398, -378, -378, -378}},
+/* AU.CG..UA */
+{{  DEF, -259, -239, -239, -239},
+{ -939,-1148,-1128,-1128,-1128},
+{ -249, -458, -438, -438, -438},
+{ -939,-1148,-1128,-1128,-1128},
+{ -329, -538, -518, -518, -518}},
+/* AU.CU..UA */
+{{  DEF, -259, -239, -239, -239},
+{ -639, -848, -828, -828, -828},
+{ -229, -438, -418, -418, -418},
+{ -729, -938, -918, -918, -918},
+{ -190, -399, -379, -379, -379}}},
+/* AU.G@..UA */
+{{{  DEF, -339, -689, -689, -689},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* AU.GA..UA */
+{{  DEF, -339, -689, -689, -689},
+{ -449, -738,-1088,-1088,-1088},
+{ -479, -768,-1118,-1118,-1118},
+{ -429, -718,-1068,-1068,-1068},
+{ -329, -618, -968, -968, -968}},
+/* AU.GC..UA */
+{{  DEF, -339, -689, -689, -689},
+{ -679, -968,-1318,-1318,-1318},
+{ -559, -848,-1198,-1198,-1198},
+{ -729,-1018,-1368,-1368,-1368},
+{ -189, -478, -828, -828, -828}},
+/* AU.GG..UA */
+{{  DEF, -339, -689, -689, -689},
+{ -939,-1228,-1578,-1578,-1578},
+{ -249, -538, -888, -888, -888},
+{ -939,-1228,-1578,-1578,-1578},
+{ -329, -618, -968, -968, -968}},
+/* AU.GU..UA */
+{{  DEF, -339, -689, -689, -689},
+{ -639, -928,-1278,-1278,-1278},
+{ -229, -518, -868, -868, -868},
+{ -729,-1018,-1368,-1368,-1368},
+{ -190, -479, -829, -829, -829}}},
+/* AU.U@..UA */
+{{{  DEF, -329, -329, -329, -329},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* AU.UA..UA */
+{{  DEF, -329, -329, -329, -329},
+{ -449, -728, -728, -728, -728},
+{ -479, -758, -758, -758, -758},
+{ -429, -708, -708, -708, -708},
+{ -329, -608, -608, -608, -608}},
+/* AU.UC..UA */
+{{  DEF, -329, -329, -329, -329},
+{ -679, -958, -958, -958, -958},
+{ -559, -838, -838, -838, -838},
+{ -729,-1008,-1008,-1008,-1008},
+{ -189, -468, -468, -468, -468}},
+/* AU.UG..UA */
+{{  DEF, -329, -329, -329, -329},
+{ -939,-1218,-1218,-1218,-1218},
+{ -249, -528, -528, -528, -528},
+{ -939,-1218,-1218,-1218,-1218},
+{ -329, -608, -608, -608, -608}},
+/* AU.UU..UA */
+{{  DEF, -329, -329, -329, -329},
+{ -639, -918, -918, -918, -918},
+{ -229, -508, -508, -508, -508},
+{ -729,-1008,-1008,-1008,-1008},
+{ -190, -469, -469, -469, -469}}}},
+/* AU.@@.. @ */
+{{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* AU.@A.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* AU.@C.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* AU.@G.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* AU.@U.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}}},
+/* AU.A@.. @ */
+{{{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* AU.AA.. @ */
+{{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* AU.AC.. @ */
+{{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* AU.AG.. @ */
+{{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}},
+/* AU.AU.. @ */
+{{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649},
+{ -100, -479, -649, -649, -649}}},
+/* AU.C@.. @ */
+{{{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* AU.CA.. @ */
+{{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* AU.CC.. @ */
+{{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* AU.CG.. @ */
+{{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}},
+/* AU.CU.. @ */
+{{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289},
+{ -100, -309, -289, -289, -289}}},
+/* AU.G@.. @ */
+{{{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* AU.GA.. @ */
+{{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* AU.GC.. @ */
+{{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* AU.GG.. @ */
+{{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}},
+/* AU.GU.. @ */
+{{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739},
+{ -100, -389, -739, -739, -739}}},
+/* AU.U@.. @ */
+{{{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* AU.UA.. @ */
+{{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* AU.UC.. @ */
+{{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* AU.UG.. @ */
+{{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}},
+/* AU.UU.. @ */
+{{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379},
+{ -100, -379, -379, -379, -379}}}}},
+{ /* noPair */ {{{{0}}}},
+/* UA.@@..CG */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UA.@A..CG */
+{{    0,    0,    0,    0,    0},
+{-1029,-1029,-1029,-1029,-1029},
+{ -519, -519, -519, -519, -519},
+{ -939, -939, -939, -939, -939},
+{ -809, -809, -809, -809, -809}},
+/* UA.@C..CG */
+{{    0,    0,    0,    0,    0},
+{ -949, -949, -949, -949, -949},
+{ -449, -449, -449, -449, -449},
+{ -939, -939, -939, -939, -939},
+{ -739, -739, -739, -739, -739}},
+/* UA.@G..CG */
+{{    0,    0,    0,    0,    0},
+{-1029,-1029,-1029,-1029,-1029},
+{ -519, -519, -519, -519, -519},
+{ -939, -939, -939, -939, -939},
+{ -809, -809, -809, -809, -809}},
+/* UA.@U..CG */
+{{    0,    0,    0,    0,    0},
+{-1029,-1029,-1029,-1029,-1029},
+{ -669, -669, -669, -669, -669},
+{ -939, -939, -939, -939, -939},
+{ -859, -859, -859, -859, -859}}},
+/* UA.A@..CG */
+{{{  DEF, -399, -629, -889, -589},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639}},
+/* UA.AA..CG */
+{{  DEF, -399, -629, -889, -589},
+{-1079,-1428,-1658,-1918,-1618},
+{ -569, -918,-1148,-1408,-1108},
+{ -989,-1338,-1568,-1828,-1528},
+{ -859,-1208,-1438,-1698,-1398}},
+/* UA.AC..CG */
+{{  DEF, -399, -629, -889, -589},
+{ -999,-1348,-1578,-1838,-1538},
+{ -499, -848,-1078,-1338,-1038},
+{ -989,-1338,-1568,-1828,-1528},
+{ -789,-1138,-1368,-1628,-1328}},
+/* UA.AG..CG */
+{{  DEF, -399, -629, -889, -589},
+{-1079,-1428,-1658,-1918,-1618},
+{ -569, -918,-1148,-1408,-1108},
+{ -989,-1338,-1568,-1828,-1528},
+{ -859,-1208,-1438,-1698,-1398}},
+/* UA.AU..CG */
+{{  DEF, -399, -629, -889, -589},
+{-1079,-1428,-1658,-1918,-1618},
+{ -719,-1068,-1298,-1558,-1258},
+{ -989,-1338,-1568,-1828,-1528},
+{ -909,-1258,-1488,-1748,-1448}}},
+/* UA.C@..CG */
+{{{  DEF, -429, -509, -199, -179},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229}},
+/* UA.CA..CG */
+{{  DEF, -429, -509, -199, -179},
+{-1079,-1458,-1538,-1228,-1208},
+{ -569, -948,-1028, -718, -698},
+{ -989,-1368,-1448,-1138,-1118},
+{ -859,-1238,-1318,-1008, -988}},
+/* UA.CC..CG */
+{{  DEF, -429, -509, -199, -179},
+{ -999,-1378,-1458,-1148,-1128},
+{ -499, -878, -958, -648, -628},
+{ -989,-1368,-1448,-1138,-1118},
+{ -789,-1168,-1248, -938, -918}},
+/* UA.CG..CG */
+{{  DEF, -429, -509, -199, -179},
+{-1079,-1458,-1538,-1228,-1208},
+{ -569, -948,-1028, -718, -698},
+{ -989,-1368,-1448,-1138,-1118},
+{ -859,-1238,-1318,-1008, -988}},
+/* UA.CU..CG */
+{{  DEF, -429, -509, -199, -179},
+{-1079,-1458,-1538,-1228,-1208},
+{ -719,-1098,-1178, -868, -848},
+{ -989,-1368,-1448,-1138,-1118},
+{ -909,-1288,-1368,-1058,-1038}}},
+/* UA.G@..CG */
+{{{  DEF, -379, -679, -889, -679},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729}},
+/* UA.GA..CG */
+{{  DEF, -379, -679, -889, -679},
+{-1079,-1408,-1708,-1918,-1708},
+{ -569, -898,-1198,-1408,-1198},
+{ -989,-1318,-1618,-1828,-1618},
+{ -859,-1188,-1488,-1698,-1488}},
+/* UA.GC..CG */
+{{  DEF, -379, -679, -889, -679},
+{ -999,-1328,-1628,-1838,-1628},
+{ -499, -828,-1128,-1338,-1128},
+{ -989,-1318,-1618,-1828,-1618},
+{ -789,-1118,-1418,-1628,-1418}},
+/* UA.GG..CG */
+{{  DEF, -379, -679, -889, -679},
+{-1079,-1408,-1708,-1918,-1708},
+{ -569, -898,-1198,-1408,-1198},
+{ -989,-1318,-1618,-1828,-1618},
+{ -859,-1188,-1488,-1698,-1488}},
+/* UA.GU..CG */
+{{  DEF, -379, -679, -889, -679},
+{-1079,-1408,-1708,-1918,-1708},
+{ -719,-1048,-1348,-1558,-1348},
+{ -989,-1318,-1618,-1828,-1618},
+{ -909,-1238,-1538,-1748,-1538}}},
+/* UA.U@..CG */
+{{{  DEF, -279, -139, -279, -140},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190}},
+/* UA.UA..CG */
+{{  DEF, -279, -139, -279, -140},
+{-1079,-1308,-1168,-1308,-1169},
+{ -569, -798, -658, -798, -659},
+{ -989,-1218,-1078,-1218,-1079},
+{ -859,-1088, -948,-1088, -949}},
+/* UA.UC..CG */
+{{  DEF, -279, -139, -279, -140},
+{ -999,-1228,-1088,-1228,-1089},
+{ -499, -728, -588, -728, -589},
+{ -989,-1218,-1078,-1218,-1079},
+{ -789,-1018, -878,-1018, -879}},
+/* UA.UG..CG */
+{{  DEF, -279, -139, -279, -140},
+{-1079,-1308,-1168,-1308,-1169},
+{ -569, -798, -658, -798, -659},
+{ -989,-1218,-1078,-1218,-1079},
+{ -859,-1088, -948,-1088, -949}},
+/* UA.UU..CG */
+{{  DEF, -279, -139, -279, -140},
+{-1079,-1308,-1168,-1308,-1169},
+{ -719, -948, -808, -948, -809},
+{ -989,-1218,-1078,-1218,-1079},
+{ -909,-1138, -998,-1138, -999}}}},
+/* UA.@@..GC */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UA.@A..GC */
+{{    0,    0,    0,    0,    0},
+{ -519, -519, -519, -519, -519},
+{ -719, -719, -719, -719, -719},
+{ -709, -709, -709, -709, -709},
+{ -499, -499, -499, -499, -499}},
+/* UA.@C..GC */
+{{    0,    0,    0,    0,    0},
+{ -879, -879, -879, -879, -879},
+{ -309, -309, -309, -309, -309},
+{ -739, -739, -739, -739, -739},
+{ -499, -499, -499, -499, -499}},
+/* UA.@G..GC */
+{{    0,    0,    0,    0,    0},
+{ -559, -559, -559, -559, -559},
+{ -309, -309, -309, -309, -309},
+{ -619, -619, -619, -619, -619},
+{ -499, -499, -499, -499, -499}},
+/* UA.@U..GC */
+{{    0,    0,    0,    0,    0},
+{ -879, -879, -879, -879, -879},
+{ -389, -389, -389, -389, -389},
+{ -739, -739, -739, -739, -739},
+{ -569, -569, -569, -569, -569}}},
+/* UA.A@..GC */
+{{{  DEF, -399, -629, -889, -589},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639}},
+/* UA.AA..GC */
+{{  DEF, -399, -629, -889, -589},
+{ -569, -918,-1148,-1408,-1108},
+{ -769,-1118,-1348,-1608,-1308},
+{ -759,-1108,-1338,-1598,-1298},
+{ -549, -898,-1128,-1388,-1088}},
+/* UA.AC..GC */
+{{  DEF, -399, -629, -889, -589},
+{ -929,-1278,-1508,-1768,-1468},
+{ -359, -708, -938,-1198, -898},
+{ -789,-1138,-1368,-1628,-1328},
+{ -549, -898,-1128,-1388,-1088}},
+/* UA.AG..GC */
+{{  DEF, -399, -629, -889, -589},
+{ -609, -958,-1188,-1448,-1148},
+{ -359, -708, -938,-1198, -898},
+{ -669,-1018,-1248,-1508,-1208},
+{ -549, -898,-1128,-1388,-1088}},
+/* UA.AU..GC */
+{{  DEF, -399, -629, -889, -589},
+{ -929,-1278,-1508,-1768,-1468},
+{ -439, -788,-1018,-1278, -978},
+{ -789,-1138,-1368,-1628,-1328},
+{ -619, -968,-1198,-1458,-1158}}},
+/* UA.C@..GC */
+{{{  DEF, -429, -509, -199, -179},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229}},
+/* UA.CA..GC */
+{{  DEF, -429, -509, -199, -179},
+{ -569, -948,-1028, -718, -698},
+{ -769,-1148,-1228, -918, -898},
+{ -759,-1138,-1218, -908, -888},
+{ -549, -928,-1008, -698, -678}},
+/* UA.CC..GC */
+{{  DEF, -429, -509, -199, -179},
+{ -929,-1308,-1388,-1078,-1058},
+{ -359, -738, -818, -508, -488},
+{ -789,-1168,-1248, -938, -918},
+{ -549, -928,-1008, -698, -678}},
+/* UA.CG..GC */
+{{  DEF, -429, -509, -199, -179},
+{ -609, -988,-1068, -758, -738},
+{ -359, -738, -818, -508, -488},
+{ -669,-1048,-1128, -818, -798},
+{ -549, -928,-1008, -698, -678}},
+/* UA.CU..GC */
+{{  DEF, -429, -509, -199, -179},
+{ -929,-1308,-1388,-1078,-1058},
+{ -439, -818, -898, -588, -568},
+{ -789,-1168,-1248, -938, -918},
+{ -619, -998,-1078, -768, -748}}},
+/* UA.G@..GC */
+{{{  DEF, -379, -679, -889, -679},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729}},
+/* UA.GA..GC */
+{{  DEF, -379, -679, -889, -679},
+{ -569, -898,-1198,-1408,-1198},
+{ -769,-1098,-1398,-1608,-1398},
+{ -759,-1088,-1388,-1598,-1388},
+{ -549, -878,-1178,-1388,-1178}},
+/* UA.GC..GC */
+{{  DEF, -379, -679, -889, -679},
+{ -929,-1258,-1558,-1768,-1558},
+{ -359, -688, -988,-1198, -988},
+{ -789,-1118,-1418,-1628,-1418},
+{ -549, -878,-1178,-1388,-1178}},
+/* UA.GG..GC */
+{{  DEF, -379, -679, -889, -679},
+{ -609, -938,-1238,-1448,-1238},
+{ -359, -688, -988,-1198, -988},
+{ -669, -998,-1298,-1508,-1298},
+{ -549, -878,-1178,-1388,-1178}},
+/* UA.GU..GC */
+{{  DEF, -379, -679, -889, -679},
+{ -929,-1258,-1558,-1768,-1558},
+{ -439, -768,-1068,-1278,-1068},
+{ -789,-1118,-1418,-1628,-1418},
+{ -619, -948,-1248,-1458,-1248}}},
+/* UA.U@..GC */
+{{{  DEF, -279, -139, -279, -140},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190}},
+/* UA.UA..GC */
+{{  DEF, -279, -139, -279, -140},
+{ -569, -798, -658, -798, -659},
+{ -769, -998, -858, -998, -859},
+{ -759, -988, -848, -988, -849},
+{ -549, -778, -638, -778, -639}},
+/* UA.UC..GC */
+{{  DEF, -279, -139, -279, -140},
+{ -929,-1158,-1018,-1158,-1019},
+{ -359, -588, -448, -588, -449},
+{ -789,-1018, -878,-1018, -879},
+{ -549, -778, -638, -778, -639}},
+/* UA.UG..GC */
+{{  DEF, -279, -139, -279, -140},
+{ -609, -838, -698, -838, -699},
+{ -359, -588, -448, -588, -449},
+{ -669, -898, -758, -898, -759},
+{ -549, -778, -638, -778, -639}},
+/* UA.UU..GC */
+{{  DEF, -279, -139, -279, -140},
+{ -929,-1158,-1018,-1158,-1019},
+{ -439, -668, -528, -668, -529},
+{ -789,-1018, -878,-1018, -879},
+{ -619, -848, -708, -848, -709}}}},
+/* UA.@@..GU */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UA.@A..GU */
+{{    0,    0,    0,    0,    0},
+{ -429, -429, -429, -429, -429},
+{ -259, -259, -259, -259, -259},
+{ -339, -339, -339, -339, -339},
+{ -329, -329, -329, -329, -329}},
+/* UA.@C..GU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* UA.@G..GU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* UA.@U..GU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}}},
+/* UA.A@..GU */
+{{{  DEF, -399, -629, -889, -589},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639}},
+/* UA.AA..GU */
+{{  DEF, -399, -629, -889, -589},
+{ -479, -828,-1058,-1318,-1018},
+{ -309, -658, -888,-1148, -848},
+{ -389, -738, -968,-1228, -928},
+{ -379, -728, -958,-1218, -918}},
+/* UA.AC..GU */
+{{  DEF, -399, -629, -889, -589},
+{ -649, -998,-1228,-1488,-1188},
+{ -289, -638, -868,-1128, -828},
+{ -739,-1088,-1318,-1578,-1278},
+{ -379, -728, -958,-1218, -918}},
+/* UA.AG..GU */
+{{  DEF, -399, -629, -889, -589},
+{ -649, -998,-1228,-1488,-1188},
+{ -289, -638, -868,-1128, -828},
+{ -739,-1088,-1318,-1578,-1278},
+{ -379, -728, -958,-1218, -918}},
+/* UA.AU..GU */
+{{  DEF, -399, -629, -889, -589},
+{ -649, -998,-1228,-1488,-1188},
+{ -289, -638, -868,-1128, -828},
+{ -739,-1088,-1318,-1578,-1278},
+{ -379, -728, -958,-1218, -918}}},
+/* UA.C@..GU */
+{{{  DEF, -429, -509, -199, -179},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229}},
+/* UA.CA..GU */
+{{  DEF, -429, -509, -199, -179},
+{ -479, -858, -938, -628, -608},
+{ -309, -688, -768, -458, -438},
+{ -389, -768, -848, -538, -518},
+{ -379, -758, -838, -528, -508}},
+/* UA.CC..GU */
+{{  DEF, -429, -509, -199, -179},
+{ -649,-1028,-1108, -798, -778},
+{ -289, -668, -748, -438, -418},
+{ -739,-1118,-1198, -888, -868},
+{ -379, -758, -838, -528, -508}},
+/* UA.CG..GU */
+{{  DEF, -429, -509, -199, -179},
+{ -649,-1028,-1108, -798, -778},
+{ -289, -668, -748, -438, -418},
+{ -739,-1118,-1198, -888, -868},
+{ -379, -758, -838, -528, -508}},
+/* UA.CU..GU */
+{{  DEF, -429, -509, -199, -179},
+{ -649,-1028,-1108, -798, -778},
+{ -289, -668, -748, -438, -418},
+{ -739,-1118,-1198, -888, -868},
+{ -379, -758, -838, -528, -508}}},
+/* UA.G@..GU */
+{{{  DEF, -379, -679, -889, -679},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729}},
+/* UA.GA..GU */
+{{  DEF, -379, -679, -889, -679},
+{ -479, -808,-1108,-1318,-1108},
+{ -309, -638, -938,-1148, -938},
+{ -389, -718,-1018,-1228,-1018},
+{ -379, -708,-1008,-1218,-1008}},
+/* UA.GC..GU */
+{{  DEF, -379, -679, -889, -679},
+{ -649, -978,-1278,-1488,-1278},
+{ -289, -618, -918,-1128, -918},
+{ -739,-1068,-1368,-1578,-1368},
+{ -379, -708,-1008,-1218,-1008}},
+/* UA.GG..GU */
+{{  DEF, -379, -679, -889, -679},
+{ -649, -978,-1278,-1488,-1278},
+{ -289, -618, -918,-1128, -918},
+{ -739,-1068,-1368,-1578,-1368},
+{ -379, -708,-1008,-1218,-1008}},
+/* UA.GU..GU */
+{{  DEF, -379, -679, -889, -679},
+{ -649, -978,-1278,-1488,-1278},
+{ -289, -618, -918,-1128, -918},
+{ -739,-1068,-1368,-1578,-1368},
+{ -379, -708,-1008,-1218,-1008}}},
+/* UA.U@..GU */
+{{{  DEF, -279, -139, -279, -140},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190}},
+/* UA.UA..GU */
+{{  DEF, -279, -139, -279, -140},
+{ -479, -708, -568, -708, -569},
+{ -309, -538, -398, -538, -399},
+{ -389, -618, -478, -618, -479},
+{ -379, -608, -468, -608, -469}},
+/* UA.UC..GU */
+{{  DEF, -279, -139, -279, -140},
+{ -649, -878, -738, -878, -739},
+{ -289, -518, -378, -518, -379},
+{ -739, -968, -828, -968, -829},
+{ -379, -608, -468, -608, -469}},
+/* UA.UG..GU */
+{{  DEF, -279, -139, -279, -140},
+{ -649, -878, -738, -878, -739},
+{ -289, -518, -378, -518, -379},
+{ -739, -968, -828, -968, -829},
+{ -379, -608, -468, -608, -469}},
+/* UA.UU..GU */
+{{  DEF, -279, -139, -279, -140},
+{ -649, -878, -738, -878, -739},
+{ -289, -518, -378, -518, -379},
+{ -739, -968, -828, -968, -829},
+{ -379, -608, -468, -608, -469}}}},
+/* UA.@@..UG */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UA.@A..UG */
+{{    0,    0,    0,    0,    0},
+{ -719, -719, -719, -719, -719},
+{ -479, -479, -479, -479, -479},
+{ -659, -659, -659, -659, -659},
+{ -549, -549, -549, -549, -549}},
+/* UA.@C..UG */
+{{    0,    0,    0,    0,    0},
+{ -789, -789, -789, -789, -789},
+{ -479, -479, -479, -479, -479},
+{ -809, -809, -809, -809, -809},
+{ -439, -439, -439, -439, -439}},
+/* UA.@G..UG */
+{{    0,    0,    0,    0,    0},
+{ -959, -959, -959, -959, -959},
+{ -359, -359, -359, -359, -359},
+{ -919, -919, -919, -919, -919},
+{ -549, -549, -549, -549, -549}},
+/* UA.@U..UG */
+{{    0,    0,    0,    0,    0},
+{ -809, -809, -809, -809, -809},
+{ -479, -479, -479, -479, -479},
+{ -809, -809, -809, -809, -809},
+{ -359, -359, -359, -359, -359}}},
+/* UA.A@..UG */
+{{{  DEF, -399, -629, -889, -589},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639}},
+/* UA.AA..UG */
+{{  DEF, -399, -629, -889, -589},
+{ -769,-1118,-1348,-1608,-1308},
+{ -529, -878,-1108,-1368,-1068},
+{ -709,-1058,-1288,-1548,-1248},
+{ -599, -948,-1178,-1438,-1138}},
+/* UA.AC..UG */
+{{  DEF, -399, -629, -889, -589},
+{ -839,-1188,-1418,-1678,-1378},
+{ -529, -878,-1108,-1368,-1068},
+{ -859,-1208,-1438,-1698,-1398},
+{ -489, -838,-1068,-1328,-1028}},
+/* UA.AG..UG */
+{{  DEF, -399, -629, -889, -589},
+{-1009,-1358,-1588,-1848,-1548},
+{ -409, -758, -988,-1248, -948},
+{ -969,-1318,-1548,-1808,-1508},
+{ -599, -948,-1178,-1438,-1138}},
+/* UA.AU..UG */
+{{  DEF, -399, -629, -889, -589},
+{ -859,-1208,-1438,-1698,-1398},
+{ -529, -878,-1108,-1368,-1068},
+{ -859,-1208,-1438,-1698,-1398},
+{ -409, -758, -988,-1248, -948}}},
+/* UA.C@..UG */
+{{{  DEF, -429, -509, -199, -179},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229}},
+/* UA.CA..UG */
+{{  DEF, -429, -509, -199, -179},
+{ -769,-1148,-1228, -918, -898},
+{ -529, -908, -988, -678, -658},
+{ -709,-1088,-1168, -858, -838},
+{ -599, -978,-1058, -748, -728}},
+/* UA.CC..UG */
+{{  DEF, -429, -509, -199, -179},
+{ -839,-1218,-1298, -988, -968},
+{ -529, -908, -988, -678, -658},
+{ -859,-1238,-1318,-1008, -988},
+{ -489, -868, -948, -638, -618}},
+/* UA.CG..UG */
+{{  DEF, -429, -509, -199, -179},
+{-1009,-1388,-1468,-1158,-1138},
+{ -409, -788, -868, -558, -538},
+{ -969,-1348,-1428,-1118,-1098},
+{ -599, -978,-1058, -748, -728}},
+/* UA.CU..UG */
+{{  DEF, -429, -509, -199, -179},
+{ -859,-1238,-1318,-1008, -988},
+{ -529, -908, -988, -678, -658},
+{ -859,-1238,-1318,-1008, -988},
+{ -409, -788, -868, -558, -538}}},
+/* UA.G@..UG */
+{{{  DEF, -379, -679, -889, -679},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729}},
+/* UA.GA..UG */
+{{  DEF, -379, -679, -889, -679},
+{ -769,-1098,-1398,-1608,-1398},
+{ -529, -858,-1158,-1368,-1158},
+{ -709,-1038,-1338,-1548,-1338},
+{ -599, -928,-1228,-1438,-1228}},
+/* UA.GC..UG */
+{{  DEF, -379, -679, -889, -679},
+{ -839,-1168,-1468,-1678,-1468},
+{ -529, -858,-1158,-1368,-1158},
+{ -859,-1188,-1488,-1698,-1488},
+{ -489, -818,-1118,-1328,-1118}},
+/* UA.GG..UG */
+{{  DEF, -379, -679, -889, -679},
+{-1009,-1338,-1638,-1848,-1638},
+{ -409, -738,-1038,-1248,-1038},
+{ -969,-1298,-1598,-1808,-1598},
+{ -599, -928,-1228,-1438,-1228}},
+/* UA.GU..UG */
+{{  DEF, -379, -679, -889, -679},
+{ -859,-1188,-1488,-1698,-1488},
+{ -529, -858,-1158,-1368,-1158},
+{ -859,-1188,-1488,-1698,-1488},
+{ -409, -738,-1038,-1248,-1038}}},
+/* UA.U@..UG */
+{{{  DEF, -279, -139, -279, -140},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190}},
+/* UA.UA..UG */
+{{  DEF, -279, -139, -279, -140},
+{ -769, -998, -858, -998, -859},
+{ -529, -758, -618, -758, -619},
+{ -709, -938, -798, -938, -799},
+{ -599, -828, -688, -828, -689}},
+/* UA.UC..UG */
+{{  DEF, -279, -139, -279, -140},
+{ -839,-1068, -928,-1068, -929},
+{ -529, -758, -618, -758, -619},
+{ -859,-1088, -948,-1088, -949},
+{ -489, -718, -578, -718, -579}},
+/* UA.UG..UG */
+{{  DEF, -279, -139, -279, -140},
+{-1009,-1238,-1098,-1238,-1099},
+{ -409, -638, -498, -638, -499},
+{ -969,-1198,-1058,-1198,-1059},
+{ -599, -828, -688, -828, -689}},
+/* UA.UU..UG */
+{{  DEF, -279, -139, -279, -140},
+{ -859,-1088, -948,-1088, -949},
+{ -529, -758, -618, -758, -619},
+{ -859,-1088, -948,-1088, -949},
+{ -409, -638, -498, -638, -499}}}},
+/* UA.@@..AU */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UA.@A..AU */
+{{    0,    0,    0,    0,    0},
+{ -429, -429, -429, -429, -429},
+{ -259, -259, -259, -259, -259},
+{ -339, -339, -339, -339, -339},
+{ -329, -329, -329, -329, -329}},
+/* UA.@C..AU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* UA.@G..AU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}},
+/* UA.@U..AU */
+{{    0,    0,    0,    0,    0},
+{ -599, -599, -599, -599, -599},
+{ -239, -239, -239, -239, -239},
+{ -689, -689, -689, -689, -689},
+{ -329, -329, -329, -329, -329}}},
+/* UA.A@..AU */
+{{{  DEF, -399, -629, -889, -589},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639}},
+/* UA.AA..AU */
+{{  DEF, -399, -629, -889, -589},
+{ -479, -828,-1058,-1318,-1018},
+{ -309, -658, -888,-1148, -848},
+{ -389, -738, -968,-1228, -928},
+{ -379, -728, -958,-1218, -918}},
+/* UA.AC..AU */
+{{  DEF, -399, -629, -889, -589},
+{ -649, -998,-1228,-1488,-1188},
+{ -289, -638, -868,-1128, -828},
+{ -739,-1088,-1318,-1578,-1278},
+{ -379, -728, -958,-1218, -918}},
+/* UA.AG..AU */
+{{  DEF, -399, -629, -889, -589},
+{ -649, -998,-1228,-1488,-1188},
+{ -289, -638, -868,-1128, -828},
+{ -739,-1088,-1318,-1578,-1278},
+{ -379, -728, -958,-1218, -918}},
+/* UA.AU..AU */
+{{  DEF, -399, -629, -889, -589},
+{ -649, -998,-1228,-1488,-1188},
+{ -289, -638, -868,-1128, -828},
+{ -739,-1088,-1318,-1578,-1278},
+{ -379, -728, -958,-1218, -918}}},
+/* UA.C@..AU */
+{{{  DEF, -429, -509, -199, -179},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229}},
+/* UA.CA..AU */
+{{  DEF, -429, -509, -199, -179},
+{ -479, -858, -938, -628, -608},
+{ -309, -688, -768, -458, -438},
+{ -389, -768, -848, -538, -518},
+{ -379, -758, -838, -528, -508}},
+/* UA.CC..AU */
+{{  DEF, -429, -509, -199, -179},
+{ -649,-1028,-1108, -798, -778},
+{ -289, -668, -748, -438, -418},
+{ -739,-1118,-1198, -888, -868},
+{ -379, -758, -838, -528, -508}},
+/* UA.CG..AU */
+{{  DEF, -429, -509, -199, -179},
+{ -649,-1028,-1108, -798, -778},
+{ -289, -668, -748, -438, -418},
+{ -739,-1118,-1198, -888, -868},
+{ -379, -758, -838, -528, -508}},
+/* UA.CU..AU */
+{{  DEF, -429, -509, -199, -179},
+{ -649,-1028,-1108, -798, -778},
+{ -289, -668, -748, -438, -418},
+{ -739,-1118,-1198, -888, -868},
+{ -379, -758, -838, -528, -508}}},
+/* UA.G@..AU */
+{{{  DEF, -379, -679, -889, -679},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729}},
+/* UA.GA..AU */
+{{  DEF, -379, -679, -889, -679},
+{ -479, -808,-1108,-1318,-1108},
+{ -309, -638, -938,-1148, -938},
+{ -389, -718,-1018,-1228,-1018},
+{ -379, -708,-1008,-1218,-1008}},
+/* UA.GC..AU */
+{{  DEF, -379, -679, -889, -679},
+{ -649, -978,-1278,-1488,-1278},
+{ -289, -618, -918,-1128, -918},
+{ -739,-1068,-1368,-1578,-1368},
+{ -379, -708,-1008,-1218,-1008}},
+/* UA.GG..AU */
+{{  DEF, -379, -679, -889, -679},
+{ -649, -978,-1278,-1488,-1278},
+{ -289, -618, -918,-1128, -918},
+{ -739,-1068,-1368,-1578,-1368},
+{ -379, -708,-1008,-1218,-1008}},
+/* UA.GU..AU */
+{{  DEF, -379, -679, -889, -679},
+{ -649, -978,-1278,-1488,-1278},
+{ -289, -618, -918,-1128, -918},
+{ -739,-1068,-1368,-1578,-1368},
+{ -379, -708,-1008,-1218,-1008}}},
+/* UA.U@..AU */
+{{{  DEF, -279, -139, -279, -140},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190}},
+/* UA.UA..AU */
+{{  DEF, -279, -139, -279, -140},
+{ -479, -708, -568, -708, -569},
+{ -309, -538, -398, -538, -399},
+{ -389, -618, -478, -618, -479},
+{ -379, -608, -468, -608, -469}},
+/* UA.UC..AU */
+{{  DEF, -279, -139, -279, -140},
+{ -649, -878, -738, -878, -739},
+{ -289, -518, -378, -518, -379},
+{ -739, -968, -828, -968, -829},
+{ -379, -608, -468, -608, -469}},
+/* UA.UG..AU */
+{{  DEF, -279, -139, -279, -140},
+{ -649, -878, -738, -878, -739},
+{ -289, -518, -378, -518, -379},
+{ -739, -968, -828, -968, -829},
+{ -379, -608, -468, -608, -469}},
+/* UA.UU..AU */
+{{  DEF, -279, -139, -279, -140},
+{ -649, -878, -738, -878, -739},
+{ -289, -518, -378, -518, -379},
+{ -739, -968, -828, -968, -829},
+{ -379, -608, -468, -608, -469}}}},
+/* UA.@@..UA */
+{{{{    0,    0,    0,    0,    0},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UA.@A..UA */
+{{    0,    0,    0,    0,    0},
+{ -399, -399, -399, -399, -399},
+{ -429, -429, -429, -429, -429},
+{ -379, -379, -379, -379, -379},
+{ -279, -279, -279, -279, -279}},
+/* UA.@C..UA */
+{{    0,    0,    0,    0,    0},
+{ -629, -629, -629, -629, -629},
+{ -509, -509, -509, -509, -509},
+{ -679, -679, -679, -679, -679},
+{ -139, -139, -139, -139, -139}},
+/* UA.@G..UA */
+{{    0,    0,    0,    0,    0},
+{ -889, -889, -889, -889, -889},
+{ -199, -199, -199, -199, -199},
+{ -889, -889, -889, -889, -889},
+{ -279, -279, -279, -279, -279}},
+/* UA.@U..UA */
+{{    0,    0,    0,    0,    0},
+{ -589, -589, -589, -589, -589},
+{ -179, -179, -179, -179, -179},
+{ -679, -679, -679, -679, -679},
+{ -140, -140, -140, -140, -140}}},
+/* UA.A@..UA */
+{{{  DEF, -399, -629, -889, -589},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639}},
+/* UA.AA..UA */
+{{  DEF, -399, -629, -889, -589},
+{ -449, -798,-1028,-1288, -988},
+{ -479, -828,-1058,-1318,-1018},
+{ -429, -778,-1008,-1268, -968},
+{ -329, -678, -908,-1168, -868}},
+/* UA.AC..UA */
+{{  DEF, -399, -629, -889, -589},
+{ -679,-1028,-1258,-1518,-1218},
+{ -559, -908,-1138,-1398,-1098},
+{ -729,-1078,-1308,-1568,-1268},
+{ -189, -538, -768,-1028, -728}},
+/* UA.AG..UA */
+{{  DEF, -399, -629, -889, -589},
+{ -939,-1288,-1518,-1778,-1478},
+{ -249, -598, -828,-1088, -788},
+{ -939,-1288,-1518,-1778,-1478},
+{ -329, -678, -908,-1168, -868}},
+/* UA.AU..UA */
+{{  DEF, -399, -629, -889, -589},
+{ -639, -988,-1218,-1478,-1178},
+{ -229, -578, -808,-1068, -768},
+{ -729,-1078,-1308,-1568,-1268},
+{ -190, -539, -769,-1029, -729}}},
+/* UA.C@..UA */
+{{{  DEF, -429, -509, -199, -179},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229}},
+/* UA.CA..UA */
+{{  DEF, -429, -509, -199, -179},
+{ -449, -828, -908, -598, -578},
+{ -479, -858, -938, -628, -608},
+{ -429, -808, -888, -578, -558},
+{ -329, -708, -788, -478, -458}},
+/* UA.CC..UA */
+{{  DEF, -429, -509, -199, -179},
+{ -679,-1058,-1138, -828, -808},
+{ -559, -938,-1018, -708, -688},
+{ -729,-1108,-1188, -878, -858},
+{ -189, -568, -648, -338, -318}},
+/* UA.CG..UA */
+{{  DEF, -429, -509, -199, -179},
+{ -939,-1318,-1398,-1088,-1068},
+{ -249, -628, -708, -398, -378},
+{ -939,-1318,-1398,-1088,-1068},
+{ -329, -708, -788, -478, -458}},
+/* UA.CU..UA */
+{{  DEF, -429, -509, -199, -179},
+{ -639,-1018,-1098, -788, -768},
+{ -229, -608, -688, -378, -358},
+{ -729,-1108,-1188, -878, -858},
+{ -190, -569, -649, -339, -319}}},
+/* UA.G@..UA */
+{{{  DEF, -379, -679, -889, -679},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729}},
+/* UA.GA..UA */
+{{  DEF, -379, -679, -889, -679},
+{ -449, -778,-1078,-1288,-1078},
+{ -479, -808,-1108,-1318,-1108},
+{ -429, -758,-1058,-1268,-1058},
+{ -329, -658, -958,-1168, -958}},
+/* UA.GC..UA */
+{{  DEF, -379, -679, -889, -679},
+{ -679,-1008,-1308,-1518,-1308},
+{ -559, -888,-1188,-1398,-1188},
+{ -729,-1058,-1358,-1568,-1358},
+{ -189, -518, -818,-1028, -818}},
+/* UA.GG..UA */
+{{  DEF, -379, -679, -889, -679},
+{ -939,-1268,-1568,-1778,-1568},
+{ -249, -578, -878,-1088, -878},
+{ -939,-1268,-1568,-1778,-1568},
+{ -329, -658, -958,-1168, -958}},
+/* UA.GU..UA */
+{{  DEF, -379, -679, -889, -679},
+{ -639, -968,-1268,-1478,-1268},
+{ -229, -558, -858,-1068, -858},
+{ -729,-1058,-1358,-1568,-1358},
+{ -190, -519, -819,-1029, -819}}},
+/* UA.U@..UA */
+{{{  DEF, -279, -139, -279, -140},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190}},
+/* UA.UA..UA */
+{{  DEF, -279, -139, -279, -140},
+{ -449, -678, -538, -678, -539},
+{ -479, -708, -568, -708, -569},
+{ -429, -658, -518, -658, -519},
+{ -329, -558, -418, -558, -419}},
+/* UA.UC..UA */
+{{  DEF, -279, -139, -279, -140},
+{ -679, -908, -768, -908, -769},
+{ -559, -788, -648, -788, -649},
+{ -729, -958, -818, -958, -819},
+{ -189, -418, -278, -418, -279}},
+/* UA.UG..UA */
+{{  DEF, -279, -139, -279, -140},
+{ -939,-1168,-1028,-1168,-1029},
+{ -249, -478, -338, -478, -339},
+{ -939,-1168,-1028,-1168,-1029},
+{ -329, -558, -418, -558, -419}},
+/* UA.UU..UA */
+{{  DEF, -279, -139, -279, -140},
+{ -639, -868, -728, -868, -729},
+{ -229, -458, -318, -458, -319},
+{ -729, -958, -818, -958, -819},
+{ -190, -419, -279, -419, -280}}}},
+/* UA.@@.. @ */
+{{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UA.@A.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UA.@C.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UA.@G.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}},
+/* UA.@U.. @ */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF},
+{  DEF,  DEF,  DEF,  DEF,  DEF}}},
+/* UA.A@.. @ */
+{{{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639}},
+/* UA.AA.. @ */
+{{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639}},
+/* UA.AC.. @ */
+{{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639}},
+/* UA.AG.. @ */
+{{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639}},
+/* UA.AU.. @ */
+{{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639},
+{ -100, -449, -679, -939, -639}}},
+/* UA.C@.. @ */
+{{{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229}},
+/* UA.CA.. @ */
+{{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229}},
+/* UA.CC.. @ */
+{{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229}},
+/* UA.CG.. @ */
+{{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229}},
+/* UA.CU.. @ */
+{{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229},
+{ -100, -479, -559, -249, -229}}},
+/* UA.G@.. @ */
+{{{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729}},
+/* UA.GA.. @ */
+{{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729}},
+/* UA.GC.. @ */
+{{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729}},
+/* UA.GG.. @ */
+{{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729}},
+/* UA.GU.. @ */
+{{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729},
+{ -100, -429, -729, -939, -729}}},
+/* UA.U@.. @ */
+{{{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190}},
+/* UA.UA.. @ */
+{{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190}},
+/* UA.UC.. @ */
+{{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190}},
+/* UA.UG.. @ */
+{{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190}},
+/* UA.UU.. @ */
+{{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190},
+{ -100, -329, -189, -329, -190}}}}},
+{ /* noPair */ {{{{0}}}},
+/*  @.@@..CG */
+{{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.@A..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1079,-1079,-1079,-1079,-1079},
+{ -569, -569, -569, -569, -569},
+{ -989, -989, -989, -989, -989},
+{ -859, -859, -859, -859, -859}},
+/*  @.@C..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -999, -999, -999, -999, -999},
+{ -499, -499, -499, -499, -499},
+{ -989, -989, -989, -989, -989},
+{ -789, -789, -789, -789, -789}},
+/*  @.@G..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1079,-1079,-1079,-1079,-1079},
+{ -569, -569, -569, -569, -569},
+{ -989, -989, -989, -989, -989},
+{ -859, -859, -859, -859, -859}},
+/*  @.@U..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1079,-1079,-1079,-1079,-1079},
+{ -719, -719, -719, -719, -719},
+{ -989, -989, -989, -989, -989},
+{ -909, -909, -909, -909, -909}}},
+/*  @.A@..CG */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.AA..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1079,-1079,-1079,-1079,-1079},
+{ -569, -569, -569, -569, -569},
+{ -989, -989, -989, -989, -989},
+{ -859, -859, -859, -859, -859}},
+/*  @.AC..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -999, -999, -999, -999, -999},
+{ -499, -499, -499, -499, -499},
+{ -989, -989, -989, -989, -989},
+{ -789, -789, -789, -789, -789}},
+/*  @.AG..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1079,-1079,-1079,-1079,-1079},
+{ -569, -569, -569, -569, -569},
+{ -989, -989, -989, -989, -989},
+{ -859, -859, -859, -859, -859}},
+/*  @.AU..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1079,-1079,-1079,-1079,-1079},
+{ -719, -719, -719, -719, -719},
+{ -989, -989, -989, -989, -989},
+{ -909, -909, -909, -909, -909}}},
+/*  @.C@..CG */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.CA..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1079,-1079,-1079,-1079,-1079},
+{ -569, -569, -569, -569, -569},
+{ -989, -989, -989, -989, -989},
+{ -859, -859, -859, -859, -859}},
+/*  @.CC..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -999, -999, -999, -999, -999},
+{ -499, -499, -499, -499, -499},
+{ -989, -989, -989, -989, -989},
+{ -789, -789, -789, -789, -789}},
+/*  @.CG..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1079,-1079,-1079,-1079,-1079},
+{ -569, -569, -569, -569, -569},
+{ -989, -989, -989, -989, -989},
+{ -859, -859, -859, -859, -859}},
+/*  @.CU..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1079,-1079,-1079,-1079,-1079},
+{ -719, -719, -719, -719, -719},
+{ -989, -989, -989, -989, -989},
+{ -909, -909, -909, -909, -909}}},
+/*  @.G@..CG */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.GA..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1079,-1079,-1079,-1079,-1079},
+{ -569, -569, -569, -569, -569},
+{ -989, -989, -989, -989, -989},
+{ -859, -859, -859, -859, -859}},
+/*  @.GC..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -999, -999, -999, -999, -999},
+{ -499, -499, -499, -499, -499},
+{ -989, -989, -989, -989, -989},
+{ -789, -789, -789, -789, -789}},
+/*  @.GG..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1079,-1079,-1079,-1079,-1079},
+{ -569, -569, -569, -569, -569},
+{ -989, -989, -989, -989, -989},
+{ -859, -859, -859, -859, -859}},
+/*  @.GU..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1079,-1079,-1079,-1079,-1079},
+{ -719, -719, -719, -719, -719},
+{ -989, -989, -989, -989, -989},
+{ -909, -909, -909, -909, -909}}},
+/*  @.U@..CG */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.UA..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1079,-1079,-1079,-1079,-1079},
+{ -569, -569, -569, -569, -569},
+{ -989, -989, -989, -989, -989},
+{ -859, -859, -859, -859, -859}},
+/*  @.UC..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -999, -999, -999, -999, -999},
+{ -499, -499, -499, -499, -499},
+{ -989, -989, -989, -989, -989},
+{ -789, -789, -789, -789, -789}},
+/*  @.UG..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1079,-1079,-1079,-1079,-1079},
+{ -569, -569, -569, -569, -569},
+{ -989, -989, -989, -989, -989},
+{ -859, -859, -859, -859, -859}},
+/*  @.UU..CG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1079,-1079,-1079,-1079,-1079},
+{ -719, -719, -719, -719, -719},
+{ -989, -989, -989, -989, -989},
+{ -909, -909, -909, -909, -909}}}},
+/*  @.@@..GC */
+{{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.@A..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -569, -569, -569, -569, -569},
+{ -769, -769, -769, -769, -769},
+{ -759, -759, -759, -759, -759},
+{ -549, -549, -549, -549, -549}},
+/*  @.@C..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -929, -929, -929, -929, -929},
+{ -359, -359, -359, -359, -359},
+{ -789, -789, -789, -789, -789},
+{ -549, -549, -549, -549, -549}},
+/*  @.@G..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -609, -609, -609, -609, -609},
+{ -359, -359, -359, -359, -359},
+{ -669, -669, -669, -669, -669},
+{ -549, -549, -549, -549, -549}},
+/*  @.@U..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -929, -929, -929, -929, -929},
+{ -439, -439, -439, -439, -439},
+{ -789, -789, -789, -789, -789},
+{ -619, -619, -619, -619, -619}}},
+/*  @.A@..GC */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.AA..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -569, -569, -569, -569, -569},
+{ -769, -769, -769, -769, -769},
+{ -759, -759, -759, -759, -759},
+{ -549, -549, -549, -549, -549}},
+/*  @.AC..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -929, -929, -929, -929, -929},
+{ -359, -359, -359, -359, -359},
+{ -789, -789, -789, -789, -789},
+{ -549, -549, -549, -549, -549}},
+/*  @.AG..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -609, -609, -609, -609, -609},
+{ -359, -359, -359, -359, -359},
+{ -669, -669, -669, -669, -669},
+{ -549, -549, -549, -549, -549}},
+/*  @.AU..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -929, -929, -929, -929, -929},
+{ -439, -439, -439, -439, -439},
+{ -789, -789, -789, -789, -789},
+{ -619, -619, -619, -619, -619}}},
+/*  @.C@..GC */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.CA..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -569, -569, -569, -569, -569},
+{ -769, -769, -769, -769, -769},
+{ -759, -759, -759, -759, -759},
+{ -549, -549, -549, -549, -549}},
+/*  @.CC..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -929, -929, -929, -929, -929},
+{ -359, -359, -359, -359, -359},
+{ -789, -789, -789, -789, -789},
+{ -549, -549, -549, -549, -549}},
+/*  @.CG..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -609, -609, -609, -609, -609},
+{ -359, -359, -359, -359, -359},
+{ -669, -669, -669, -669, -669},
+{ -549, -549, -549, -549, -549}},
+/*  @.CU..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -929, -929, -929, -929, -929},
+{ -439, -439, -439, -439, -439},
+{ -789, -789, -789, -789, -789},
+{ -619, -619, -619, -619, -619}}},
+/*  @.G@..GC */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.GA..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -569, -569, -569, -569, -569},
+{ -769, -769, -769, -769, -769},
+{ -759, -759, -759, -759, -759},
+{ -549, -549, -549, -549, -549}},
+/*  @.GC..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -929, -929, -929, -929, -929},
+{ -359, -359, -359, -359, -359},
+{ -789, -789, -789, -789, -789},
+{ -549, -549, -549, -549, -549}},
+/*  @.GG..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -609, -609, -609, -609, -609},
+{ -359, -359, -359, -359, -359},
+{ -669, -669, -669, -669, -669},
+{ -549, -549, -549, -549, -549}},
+/*  @.GU..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -929, -929, -929, -929, -929},
+{ -439, -439, -439, -439, -439},
+{ -789, -789, -789, -789, -789},
+{ -619, -619, -619, -619, -619}}},
+/*  @.U@..GC */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.UA..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -569, -569, -569, -569, -569},
+{ -769, -769, -769, -769, -769},
+{ -759, -759, -759, -759, -759},
+{ -549, -549, -549, -549, -549}},
+/*  @.UC..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -929, -929, -929, -929, -929},
+{ -359, -359, -359, -359, -359},
+{ -789, -789, -789, -789, -789},
+{ -549, -549, -549, -549, -549}},
+/*  @.UG..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -609, -609, -609, -609, -609},
+{ -359, -359, -359, -359, -359},
+{ -669, -669, -669, -669, -669},
+{ -549, -549, -549, -549, -549}},
+/*  @.UU..GC */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -929, -929, -929, -929, -929},
+{ -439, -439, -439, -439, -439},
+{ -789, -789, -789, -789, -789},
+{ -619, -619, -619, -619, -619}}}},
+/*  @.@@..GU */
+{{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.@A..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -479, -479, -479, -479, -479},
+{ -309, -309, -309, -309, -309},
+{ -389, -389, -389, -389, -389},
+{ -379, -379, -379, -379, -379}},
+/*  @.@C..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.@G..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.@U..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}}},
+/*  @.A@..GU */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.AA..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -479, -479, -479, -479, -479},
+{ -309, -309, -309, -309, -309},
+{ -389, -389, -389, -389, -389},
+{ -379, -379, -379, -379, -379}},
+/*  @.AC..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.AG..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.AU..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}}},
+/*  @.C@..GU */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.CA..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -479, -479, -479, -479, -479},
+{ -309, -309, -309, -309, -309},
+{ -389, -389, -389, -389, -389},
+{ -379, -379, -379, -379, -379}},
+/*  @.CC..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.CG..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.CU..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}}},
+/*  @.G@..GU */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.GA..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -479, -479, -479, -479, -479},
+{ -309, -309, -309, -309, -309},
+{ -389, -389, -389, -389, -389},
+{ -379, -379, -379, -379, -379}},
+/*  @.GC..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.GG..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.GU..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}}},
+/*  @.U@..GU */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.UA..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -479, -479, -479, -479, -479},
+{ -309, -309, -309, -309, -309},
+{ -389, -389, -389, -389, -389},
+{ -379, -379, -379, -379, -379}},
+/*  @.UC..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.UG..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.UU..GU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}}}},
+/*  @.@@..UG */
+{{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.@A..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -769, -769, -769, -769, -769},
+{ -529, -529, -529, -529, -529},
+{ -709, -709, -709, -709, -709},
+{ -599, -599, -599, -599, -599}},
+/*  @.@C..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -839, -839, -839, -839, -839},
+{ -529, -529, -529, -529, -529},
+{ -859, -859, -859, -859, -859},
+{ -489, -489, -489, -489, -489}},
+/*  @.@G..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1009,-1009,-1009,-1009,-1009},
+{ -409, -409, -409, -409, -409},
+{ -969, -969, -969, -969, -969},
+{ -599, -599, -599, -599, -599}},
+/*  @.@U..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -859, -859, -859, -859, -859},
+{ -529, -529, -529, -529, -529},
+{ -859, -859, -859, -859, -859},
+{ -409, -409, -409, -409, -409}}},
+/*  @.A@..UG */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.AA..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -769, -769, -769, -769, -769},
+{ -529, -529, -529, -529, -529},
+{ -709, -709, -709, -709, -709},
+{ -599, -599, -599, -599, -599}},
+/*  @.AC..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -839, -839, -839, -839, -839},
+{ -529, -529, -529, -529, -529},
+{ -859, -859, -859, -859, -859},
+{ -489, -489, -489, -489, -489}},
+/*  @.AG..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1009,-1009,-1009,-1009,-1009},
+{ -409, -409, -409, -409, -409},
+{ -969, -969, -969, -969, -969},
+{ -599, -599, -599, -599, -599}},
+/*  @.AU..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -859, -859, -859, -859, -859},
+{ -529, -529, -529, -529, -529},
+{ -859, -859, -859, -859, -859},
+{ -409, -409, -409, -409, -409}}},
+/*  @.C@..UG */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.CA..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -769, -769, -769, -769, -769},
+{ -529, -529, -529, -529, -529},
+{ -709, -709, -709, -709, -709},
+{ -599, -599, -599, -599, -599}},
+/*  @.CC..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -839, -839, -839, -839, -839},
+{ -529, -529, -529, -529, -529},
+{ -859, -859, -859, -859, -859},
+{ -489, -489, -489, -489, -489}},
+/*  @.CG..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1009,-1009,-1009,-1009,-1009},
+{ -409, -409, -409, -409, -409},
+{ -969, -969, -969, -969, -969},
+{ -599, -599, -599, -599, -599}},
+/*  @.CU..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -859, -859, -859, -859, -859},
+{ -529, -529, -529, -529, -529},
+{ -859, -859, -859, -859, -859},
+{ -409, -409, -409, -409, -409}}},
+/*  @.G@..UG */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.GA..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -769, -769, -769, -769, -769},
+{ -529, -529, -529, -529, -529},
+{ -709, -709, -709, -709, -709},
+{ -599, -599, -599, -599, -599}},
+/*  @.GC..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -839, -839, -839, -839, -839},
+{ -529, -529, -529, -529, -529},
+{ -859, -859, -859, -859, -859},
+{ -489, -489, -489, -489, -489}},
+/*  @.GG..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1009,-1009,-1009,-1009,-1009},
+{ -409, -409, -409, -409, -409},
+{ -969, -969, -969, -969, -969},
+{ -599, -599, -599, -599, -599}},
+/*  @.GU..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -859, -859, -859, -859, -859},
+{ -529, -529, -529, -529, -529},
+{ -859, -859, -859, -859, -859},
+{ -409, -409, -409, -409, -409}}},
+/*  @.U@..UG */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.UA..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -769, -769, -769, -769, -769},
+{ -529, -529, -529, -529, -529},
+{ -709, -709, -709, -709, -709},
+{ -599, -599, -599, -599, -599}},
+/*  @.UC..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -839, -839, -839, -839, -839},
+{ -529, -529, -529, -529, -529},
+{ -859, -859, -859, -859, -859},
+{ -489, -489, -489, -489, -489}},
+/*  @.UG..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{-1009,-1009,-1009,-1009,-1009},
+{ -409, -409, -409, -409, -409},
+{ -969, -969, -969, -969, -969},
+{ -599, -599, -599, -599, -599}},
+/*  @.UU..UG */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -859, -859, -859, -859, -859},
+{ -529, -529, -529, -529, -529},
+{ -859, -859, -859, -859, -859},
+{ -409, -409, -409, -409, -409}}}},
+/*  @.@@..AU */
+{{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.@A..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -479, -479, -479, -479, -479},
+{ -309, -309, -309, -309, -309},
+{ -389, -389, -389, -389, -389},
+{ -379, -379, -379, -379, -379}},
+/*  @.@C..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.@G..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.@U..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}}},
+/*  @.A@..AU */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.AA..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -479, -479, -479, -479, -479},
+{ -309, -309, -309, -309, -309},
+{ -389, -389, -389, -389, -389},
+{ -379, -379, -379, -379, -379}},
+/*  @.AC..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.AG..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.AU..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}}},
+/*  @.C@..AU */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.CA..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -479, -479, -479, -479, -479},
+{ -309, -309, -309, -309, -309},
+{ -389, -389, -389, -389, -389},
+{ -379, -379, -379, -379, -379}},
+/*  @.CC..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.CG..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.CU..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}}},
+/*  @.G@..AU */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.GA..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -479, -479, -479, -479, -479},
+{ -309, -309, -309, -309, -309},
+{ -389, -389, -389, -389, -389},
+{ -379, -379, -379, -379, -379}},
+/*  @.GC..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.GG..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.GU..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}}},
+/*  @.U@..AU */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.UA..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -479, -479, -479, -479, -479},
+{ -309, -309, -309, -309, -309},
+{ -389, -389, -389, -389, -389},
+{ -379, -379, -379, -379, -379}},
+/*  @.UC..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.UG..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}},
+/*  @.UU..AU */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -649, -649, -649, -649, -649},
+{ -289, -289, -289, -289, -289},
+{ -739, -739, -739, -739, -739},
+{ -379, -379, -379, -379, -379}}}},
+/*  @.@@..UA */
+{{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.@A..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -449, -449, -449, -449, -449},
+{ -479, -479, -479, -479, -479},
+{ -429, -429, -429, -429, -429},
+{ -329, -329, -329, -329, -329}},
+/*  @.@C..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -679, -679, -679, -679, -679},
+{ -559, -559, -559, -559, -559},
+{ -729, -729, -729, -729, -729},
+{ -189, -189, -189, -189, -189}},
+/*  @.@G..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -939, -939, -939, -939, -939},
+{ -249, -249, -249, -249, -249},
+{ -939, -939, -939, -939, -939},
+{ -329, -329, -329, -329, -329}},
+/*  @.@U..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -639, -639, -639, -639, -639},
+{ -229, -229, -229, -229, -229},
+{ -729, -729, -729, -729, -729},
+{ -190, -190, -190, -190, -190}}},
+/*  @.A@..UA */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.AA..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -449, -449, -449, -449, -449},
+{ -479, -479, -479, -479, -479},
+{ -429, -429, -429, -429, -429},
+{ -329, -329, -329, -329, -329}},
+/*  @.AC..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -679, -679, -679, -679, -679},
+{ -559, -559, -559, -559, -559},
+{ -729, -729, -729, -729, -729},
+{ -189, -189, -189, -189, -189}},
+/*  @.AG..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -939, -939, -939, -939, -939},
+{ -249, -249, -249, -249, -249},
+{ -939, -939, -939, -939, -939},
+{ -329, -329, -329, -329, -329}},
+/*  @.AU..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -639, -639, -639, -639, -639},
+{ -229, -229, -229, -229, -229},
+{ -729, -729, -729, -729, -729},
+{ -190, -190, -190, -190, -190}}},
+/*  @.C@..UA */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.CA..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -449, -449, -449, -449, -449},
+{ -479, -479, -479, -479, -479},
+{ -429, -429, -429, -429, -429},
+{ -329, -329, -329, -329, -329}},
+/*  @.CC..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -679, -679, -679, -679, -679},
+{ -559, -559, -559, -559, -559},
+{ -729, -729, -729, -729, -729},
+{ -189, -189, -189, -189, -189}},
+/*  @.CG..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -939, -939, -939, -939, -939},
+{ -249, -249, -249, -249, -249},
+{ -939, -939, -939, -939, -939},
+{ -329, -329, -329, -329, -329}},
+/*  @.CU..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -639, -639, -639, -639, -639},
+{ -229, -229, -229, -229, -229},
+{ -729, -729, -729, -729, -729},
+{ -190, -190, -190, -190, -190}}},
+/*  @.G@..UA */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.GA..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -449, -449, -449, -449, -449},
+{ -479, -479, -479, -479, -479},
+{ -429, -429, -429, -429, -429},
+{ -329, -329, -329, -329, -329}},
+/*  @.GC..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -679, -679, -679, -679, -679},
+{ -559, -559, -559, -559, -559},
+{ -729, -729, -729, -729, -729},
+{ -189, -189, -189, -189, -189}},
+/*  @.GG..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -939, -939, -939, -939, -939},
+{ -249, -249, -249, -249, -249},
+{ -939, -939, -939, -939, -939},
+{ -329, -329, -329, -329, -329}},
+/*  @.GU..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -639, -639, -639, -639, -639},
+{ -229, -229, -229, -229, -229},
+{ -729, -729, -729, -729, -729},
+{ -190, -190, -190, -190, -190}}},
+/*  @.U@..UA */
+{{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.UA..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -449, -449, -449, -449, -449},
+{ -479, -479, -479, -479, -479},
+{ -429, -429, -429, -429, -429},
+{ -329, -329, -329, -329, -329}},
+/*  @.UC..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -679, -679, -679, -679, -679},
+{ -559, -559, -559, -559, -559},
+{ -729, -729, -729, -729, -729},
+{ -189, -189, -189, -189, -189}},
+/*  @.UG..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -939, -939, -939, -939, -939},
+{ -249, -249, -249, -249, -249},
+{ -939, -939, -939, -939, -939},
+{ -329, -329, -329, -329, -329}},
+/*  @.UU..UA */
+{{  DEF,  DEF,  DEF,  DEF,  DEF},
+{ -639, -639, -639, -639, -639},
+{ -229, -229, -229, -229, -229},
+{ -729, -729, -729, -729, -729},
+{ -190, -190, -190, -190, -190}}}},
+/*  @.@@.. @ */
+{{{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.@A.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.@C.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.@G.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.@U.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}}},
+/*  @.A@.. @ */
+{{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.AA.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.AC.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.AG.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.AU.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}}},
+/*  @.C@.. @ */
+{{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.CA.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.CC.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.CG.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.CU.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}}},
+/*  @.G@.. @ */
+{{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.GA.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.GC.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.GG.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.GU.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}}},
+/*  @.U@.. @ */
+{{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.UA.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.UC.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.UG.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}},
+/*  @.UU.. @ */
+{{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100},
+{ -100, -100, -100, -100, -100}}}}}};
+
+
diff --git a/include/PS_dot.h b/include/PS_dot.h
new file mode 100644
--- /dev/null
+++ b/include/PS_dot.h
@@ -0,0 +1,197 @@
+#ifndef __VIENNA_RNA_PACKAGE_PS_DOT_H__
+#define __VIENNA_RNA_PACKAGE_PS_DOT_H__
+
+#include "data_structures.h"
+#include "plot_layouts.h"
+
+#ifdef __GNUC__
+#define DEPRECATED(func) func __attribute__ ((deprecated))
+#else
+#define DEPRECATED(func) func
+#endif
+
+/**
+ *  \file PS_dot.h
+ *  \brief Various functions for plotting RNA secondary structures, dot-plots and other
+ *  visualizations
+ */
+
+/* write PostScript drawing of structure to file with annotation */
+int PS_rna_plot_snoop_a(char *string,
+                        char *structure,
+                        char *ssfile,
+                        int *relative_access,
+                        const char *seqs[]);
+
+/**
+ *  \brief Produce a secondary structure graph in PostScript and write it to 'filename'.
+ *
+ *  Note that this function has changed from previous versions
+ *  and now expects the structure to be plotted in dot-bracket notation as an
+ *  argument. It does not make use of the global #base_pair array anymore.
+ *
+ *  \param string     The RNA sequence
+ *  \param structure  The secondary structure in dot-bracket notation
+ *  \param file       The filename of the postscript output
+ *  \return           1 on success, 0 otherwise
+ */
+int PS_rna_plot(char *string,
+                char *structure,
+                char *file);
+
+/**
+ *  \brief Produce a secondary structure graph in PostScript including additional
+ *  annotation macros and write it to 'filename'
+ *
+ *  Same as PS_rna_plot() but adds extra PostScript macros for various
+ *  annotations (see generated PS code). The 'pre' and 'post'
+ *  variables contain PostScript code that is verbatim copied in the
+ *  resulting PS file just before and after the structure plot.
+ *  If both arguments ('pre' and 'post') are NULL, no additional macros will
+ *  be printed into the PostScript.
+ *
+ *  \param string     The RNA sequence
+ *  \param structure  The secondary structure in dot-bracket notation
+ *  \param file       The filename of the postscript output
+ *  \param pre        PostScript code to appear before the secondary structure plot
+ *  \param post       PostScript code to appear after the secondary structure plot
+ *  \return           1 on success, 0 otherwise
+ */
+int PS_rna_plot_a(char *string,
+                  char *structure,
+                  char *file,
+                  char *pre,
+                  char *post);
+
+int PS_rna_plot_a_gquad(char *string,
+                        char *structure,
+                        char *ssfile,
+                        char *pre,
+                        char *post);
+
+/**
+ *  \brief Produce a secondary structure graph in Graph Meta Language (gml) and write it to a file
+ *
+ *  If 'option' is an uppercase letter the RNA sequence is used to label nodes, if 'option' equals
+ *  \a 'X' or \a 'x' the resulting file will coordinates for an initial layout of the graph.
+ *
+ *  \param  string    The RNA sequence
+ *  \param  structure The secondary structure in dot-bracket notation
+ *  \param  ssfile    The filename of the gml output
+ *  \param  option    The option flag
+ *  \return           1 on success, 0 otherwise
+ */
+int gmlRNA( char *string,
+            char *structure,
+            char *ssfile,
+            char option);
+
+/**
+ *  \brief  Produce a secondary structure graph in SStructView format
+ *
+ *  Write coord file for SStructView
+ *
+ *  \param  string    The RNA sequence
+ *  \param  structure The secondary structure in dot-bracket notation
+ *  \param  ssfile    The filename of the ssv output
+ *  \return           1 on success, 0 otherwise
+ */
+int ssv_rna_plot( char *string,
+                  char *structure,
+                  char *ssfile);
+
+/**
+ *  \brief Produce a secondary structure plot in SVG format and write it to a file
+ *
+ *  \param string     The RNA sequence
+ *  \param structure  The secondary structure in dot-bracket notation
+ *  \param ssfile     The filename of the svg output
+ *  \return           1 on success, 0 otherwise
+ */
+int svg_rna_plot( char *string,
+                  char *structure,
+                  char *ssfile);
+
+/**
+ *  \brief Produce a secondary structure plot for further editing in XRNA
+ *
+ *  \param string     The RNA sequence
+ *  \param structure  The secondary structure in dot-bracket notation
+ *  \param ssfile     The filename of the xrna output
+ *  \return           1 on success, 0 otherwise
+ */
+int xrna_plot(char *string,
+              char *structure,
+              char *ssfile);
+
+int PS_color_dot_plot(char *string,
+                      cpair *pi,
+                      char *filename);
+
+int PS_color_dot_plot_turn( char *seq,
+                            cpair *pi,
+                            char *filename,
+                            int winSize);
+
+/**
+ *  \brief Produce a postscript dot-plot from two pair lists
+ *
+ *  This function reads two plist structures (e.g. base pair probabilities and a secondary structure)
+ *  as produced by assign_plist_from_pr() and assign_plist_from_db() and produces a postscript
+ *  "dot plot" that is written to 'filename'.\n
+ *  Using base pair probabilities in the first and mfe structure in the second plist, the resulting
+ *  "dot plot" represents each base pairing probability by a square of corresponding area in a upper
+ *  triangle matrix. The lower part of the matrix contains the minimum free energy structure.
+ *
+ *  \see assign_plist_from_pr(), assign_plist_from_db()
+ *
+ *  \param seq      The RNA sequence
+ *  \param filename A filename for the postscript output
+ *  \param pl       The base pair probability pairlist
+ *  \param mf       The mfe secondary structure pairlist
+ *  \param comment  A comment
+ *  \return         1 if postscript was successfully written, 0 otherwise
+ */
+int PS_dot_plot_list( char *seq,
+                      char *filename,
+                      plist *pl,
+                      plist *mf,
+                      char *comment);
+
+int PS_dot_plot_turn( char *seq,
+                      struct plist *pl,
+                      char *filename,
+                      int winSize);
+
+int PS_color_aln( const char *structure,
+                  const char *filename,
+                  const char *seqs[],
+                  const char *names[]);
+
+/**
+ * 	PS_color_aln for duplexes
+*/
+int aliPS_color_aln(const char *structure,
+                    const char *filename, 
+                    const char *seqs[],
+                    const char *names[]); 
+
+
+/**
+ *  Wrapper to PS_dot_plot_list
+ *
+ *  \brief Produce postscript dot-plot
+ *
+ *  Reads base pair probabilities produced by pf_fold() from the
+ *  global array #pr and the pair list #base_pair produced by
+ *  fold() and produces a postscript "dot plot" that is written to
+ *  'filename'. The "dot plot" represents each base pairing
+ *  probability by a square of corresponding area in a upper triangle
+ *  matrix. The lower part of the matrix contains the minimum free energy
+ *  \note DO NOT USE THIS FUNCTION ANYMORE SINCE IT IS NOT THREADSAFE
+ *
+ *  \deprecated This function is deprecated and will be removed soon! Use \ref PS_dot_plot_list() instead!
+ */
+DEPRECATED(int PS_dot_plot( char *string,
+                            char *file));
+#endif
diff --git a/include/aln_util.h b/include/aln_util.h
new file mode 100644
--- /dev/null
+++ b/include/aln_util.h
@@ -0,0 +1,10 @@
+#ifndef __VIENNA_RNA_PACKAGE_ALN_UTIL_H__
+#define __VIENNA_RNA_PACKAGE_ALN_UTIL_H__
+
+int read_clustal( FILE *clust,
+                  char *AlignedSeqs[],
+                  char *names[]);
+/*@only@*/ /*@notnull@*/ char *consensus(const char *AS[]);
+/*@only@*/ /*@notnull@*/ char *consens_mis(const char *AS[]);
+
+#endif
diff --git a/include/cofold.h b/include/cofold.h
new file mode 100644
--- /dev/null
+++ b/include/cofold.h
@@ -0,0 +1,182 @@
+#ifndef __VIENNA_RNA_PACKAGE_COFOLD_H__
+#define __VIENNA_RNA_PACKAGE_COFOLD_H__
+
+#include "data_structures.h"
+
+#ifdef __GNUC__
+#define DEPRECATED(func) func __attribute__ ((deprecated))
+#else
+#define DEPRECATED(func) func
+#endif
+
+/**
+ *  \addtogroup cofold
+ *  \brief Predict structures formed by two molecules upon hybridization.
+ *
+ *  The function of an RNA molecule often depends on its interaction with
+ *  other RNAs. The following routines therefore allow to predict structures
+ *  formed by two RNA molecules upon hybridization.\n
+ *  One approach to co-folding two RNAs consists of concatenating the two
+ *  sequences and keeping track of the concatenation point in all energy
+ *  evaluations. Correspondingly, many of the cofold() and
+ *  co_pf_fold() routines below take one sequence string as argument
+ *  and use the the global variable #cut_point to mark the concatenation
+ *  point. Note that while the <i>RNAcofold</i> program uses the '&' character
+ *  to mark the chain break in its input, you should not use an '&' when using
+ *  the library routines (set #cut_point instead).\n
+ *  In a second approach to co-folding two RNAs, cofolding is seen as a
+ *  stepwise process. In the first step the probability of an unpaired region
+ *  is calculated and in a second step this probability of an unpaired region
+ *  is  multiplied with the probability of an interaction between the two RNAs.
+ *  This approach is implemented for the interaction between a long
+ *  target sequence and a short ligand RNA. Function pf_unstru() calculates
+ *  the partition function over all unpaired regions in the input
+ *  sequence. Function pf_interact(), which calculates the
+ *  partition function over all possible interactions between two
+ *  sequences, needs both sequence as separate strings as input.
+ *
+ */
+
+/**
+ *  \addtogroup mfe_cofold
+ *  @{
+ *  \file cofold.h
+ * 
+ *  \brief MFE version of cofolding routines
+ * 
+ *  This file includes (almost) all function declarations within the <b>RNAlib</b> that are related to
+ *  MFE Cofolding...
+ *  This also includes the Zuker suboptimals calculations, since they are implemented using the cofold
+ *  routines.
+ */
+
+/**
+ *  \brief Compute the minimum free energy of two interacting RNA molecules
+ * 
+ *  The code is analog to the fold() function. If #cut_point ==-1 results
+ *  should be the same as with fold().
+ * 
+ *  \ingroup mfe_cofold
+ *
+ *  \param    sequence  The two sequences concatenated
+ *  \param    structure Will hold the barcket dot structure of the dimer molecule
+ *  \return   minimum free energy of the structure
+ */
+float cofold( const char *sequence,
+              char *structure);
+
+/**
+ *  \brief Compute the minimum free energy of two interacting RNA molecules
+ * 
+ */
+float cofold_par( const char *string,
+                  char *structure,
+                  paramT *parameters,
+                  int is_constrained);
+
+/**
+ *  \brief Free memory occupied by cofold()
+ */
+void      free_co_arrays(void);
+
+/**
+ *  \brief Recalculate parameters
+ */
+void      update_cofold_params(void);
+
+void      update_cofold_params_par(paramT *parameters);
+
+
+/**
+ *  \brief Export the arrays of partition function cofold (with gquadruplex support)
+ * 
+ *  Export the cofold arrays for use e.g. in the concentration
+ *  Computations or suboptimal secondary structure backtracking
+ *
+ *  \param  f5_p    A pointer to the 'f5' array, i.e. array conatining best free energy in interval [1,j]
+ *  \param  c_p     A pointer to the 'c' array, i.e. array containing best free energy in interval [i,j] given that i pairs with j
+ *  \param  fML_p   A pointer to the 'M' array, i.e. array containing best free energy in interval [i,j] for any multiloop segment with at least one stem
+ *  \param  fM1_p   A pointer to the 'M1' array, i.e. array containing best free energy in interval [i,j] for multiloop segment with exactly one stem
+ *  \param  fc_p    A pointer to the 'fc' array, i.e. array ...
+ *  \param  ggg_p   A pointer to the 'ggg' array, i.e. array containing best free energy of a gquadruplex delimited by [i,j]
+ *  \param  indx_p  A pointer to the indexing array used for accessing the energy matrices
+ *  \param  ptype_p A pointer to the ptype array containing the base pair types for each possibility (i,j)
+ */
+void export_cofold_arrays_gq( int **f5_p,
+                              int **c_p,
+                              int **fML_p,
+                              int **fM1_p,
+                              int **fc_p,
+                              int **ggg_p,
+                              int **indx_p,
+                              char **ptype_p);
+
+/**
+ *  \brief Export the arrays of partition function cofold
+ * 
+ *  Export the cofold arrays for use e.g. in the concentration
+ *  Computations or suboptimal secondary structure backtracking
+ *
+ *  \param  f5_p    A pointer to the 'f5' array, i.e. array conatining best free energy in interval [1,j]
+ *  \param  c_p     A pointer to the 'c' array, i.e. array containing best free energy in interval [i,j] given that i pairs with j
+ *  \param  fML_p   A pointer to the 'M' array, i.e. array containing best free energy in interval [i,j] for any multiloop segment with at least one stem
+ *  \param  fM1_p   A pointer to the 'M1' array, i.e. array containing best free energy in interval [i,j] for multiloop segment with exactly one stem
+ *  \param  fc_p    A pointer to the 'fc' array, i.e. array ...
+ *  \param  indx_p  A pointer to the indexing array used for accessing the energy matrices
+ *  \param  ptype_p A pointer to the ptype array containing the base pair types for each possibility (i,j)
+ */
+void export_cofold_arrays(int **f5_p,
+                          int **c_p,
+                          int **fML_p,
+                          int **fM1_p,
+                          int **fc_p,
+                          int **indx_p,
+                          char **ptype_p);
+
+
+/**
+ *  @}
+ */
+
+/**
+ *  \brief Compute Zuker type suboptimal structures
+ *
+ *  Compute Suboptimal structures according to M. Zuker, i.e. for every 
+ *  possible base pair the minimum energy structure containing the resp. base pair. 
+ *  Returns a list of these structures and their energies.
+ *
+ *  \ingroup subopt_zuker
+ *
+ *  \param  string  RNA sequence
+ *  \return         List of zuker suboptimal structures
+ */
+SOLUTION  *zukersubopt(const char *string);
+
+/**
+ *  \brief Compute Zuker type suboptimal structures
+ *
+ *  \ingroup subopt_zuker
+ *
+ */
+SOLUTION  *zukersubopt_par( const char *string,
+                            paramT *parameters);
+
+/**
+ *  \brief get_monomer_free_energies
+ *
+ *  Export monomer free energies out of cofold arrays
+ * 
+ *  \param e1 A pointer to a variable where the energy of molecule A will be written to
+ *  \param e2 A pointer to a variable where the energy of molecule B will be written to
+ */
+void get_monomere_mfes( float *e1,
+                        float *e2);
+
+
+/**
+ *  allocate arrays for folding
+ *  \deprecated{This function is obsolete and will be removed soon!}
+ */
+DEPRECATED(void initialize_cofold(int length));
+
+#endif
diff --git a/include/config.h b/include/config.h
new file mode 100644
--- /dev/null
+++ b/include/config.h
@@ -0,0 +1,163 @@
+/* config.h.  Generated from config.h.in by configure.  */
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to 1 if you have the `erand48' function. */
+#define HAVE_ERAND48 1
+
+/* Define to 1 if you have the <float.h> header file. */
+#define HAVE_FLOAT_H 1
+
+/* Define to 1 if you have the `floor' function. */
+#define HAVE_FLOOR 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `m' library (-lm). */
+#define HAVE_LIBM 1
+
+/* Define to 1 if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
+   to 0 otherwise. */
+#define HAVE_MALLOC 1
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#define HAVE_MALLOC_H 1
+
+/* Define to 1 if you have the <math.h> header file. */
+#define HAVE_MATH_H 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `memset' function. */
+#define HAVE_MEMSET 1
+
+/* Define to 1 if you have the `pow' function. */
+#define HAVE_POW 1
+
+/* Define to 1 if your system has a GNU libc compatible `realloc' function,
+   and to 0 otherwise. */
+#define HAVE_REALLOC 1
+
+/* Define to 1 if you have the `rint' function. */
+#define HAVE_RINT 1
+
+/* Define to 1 if you have the `sqrt' function. */
+#define HAVE_SQRT 1
+
+/* Define to 1 if stdbool.h conforms to C99. */
+#define HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strrchr' function. */
+#define HAVE_STRRCHR 1
+
+/* Define to 1 if you have the `strstr' function. */
+#define HAVE_STRSTR 1
+
+/* Define to 1 if you have the `strtol' function. */
+#define HAVE_STRTOL 1
+
+/* Define to 1 if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if the system has the type `_Bool'. */
+#define HAVE__BOOL 1
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+/* #undef NO_MINUS_C_MINUS_O */
+
+/* Name of package */
+#define PACKAGE "ViennaRNA"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "rna@tbi.univie.ac.at"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "ViennaRNA"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "ViennaRNA 2.1.5"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "ViennaRNA"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL "http://www.tbi.univie.ac.a/~ivo/RNA"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "2.1.5"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* only for gcc */
+#define UNUSED __attribute__ ((unused))
+
+/* Compute z-scores for RNALfold */
+#define USE_SVM 1
+
+/* Version number of package */
+#define VERSION "2.1.5"
+
+/* Analyse{Dists,Seqs} */
+#define WITH_CLUSTER 1
+
+/* Define if using the dmalloc debugging malloc package */
+/* #undef WITH_DMALLOC */
+
+/* Create the perl interface to RNAlib */
+#define WITH_PERL_INTERFACE 1
+
+/* Create the python interface to RNAlib */
+/* #undef WITH_PYTHON_INTERFACE */
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+/* #undef inline */
+#endif
+
+/* Define to rpl_malloc if the replacement function should be used. */
+/* #undef malloc */
+
+/* Define to rpl_realloc if the replacement function should be used. */
+/* #undef realloc */
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+/* #undef size_t */
diff --git a/include/data_structures.h b/include/data_structures.h
new file mode 100644
--- /dev/null
+++ b/include/data_structures.h
@@ -0,0 +1,774 @@
+#ifndef __VIENNA_RNA_PACKAGE_DATA_STRUCTURES_H__
+#define __VIENNA_RNA_PACKAGE_DATA_STRUCTURES_H__
+
+#include "energy_const.h"
+/**
+ *  \file data_structures.h
+ *  \brief All datastructures and typedefs shared among the Vienna RNA Package can be found here
+ */
+
+/* to use floats instead of doubles in pf_fold() comment next line */
+#define LARGE_PF
+#ifdef  LARGE_PF
+#define FLT_OR_DBL double
+#else
+#define FLT_OR_DBL float
+#endif
+
+#ifndef NBASES
+#define NBASES 8
+#endif
+
+#ifndef MAXALPHA
+/**
+ *  \brief Maximal length of alphabet
+ */
+#define MAXALPHA              20
+#endif
+
+/**
+ *  \brief Maximum density of states discretization for subopt
+ */
+#define MAXDOS                1000
+
+#define   VRNA_GQUAD_MAX_STACK_SIZE     7
+#define   VRNA_GQUAD_MIN_STACK_SIZE     2
+#define   VRNA_GQUAD_MAX_LINKER_LENGTH  15
+#define   VRNA_GQUAD_MIN_LINKER_LENGTH  1
+#define   VRNA_GQUAD_MIN_BOX_SIZE       ((4*VRNA_GQUAD_MIN_STACK_SIZE)+(3*VRNA_GQUAD_MIN_LINKER_LENGTH))
+#define   VRNA_GQUAD_MAX_BOX_SIZE       ((4*VRNA_GQUAD_MAX_STACK_SIZE)+(3*VRNA_GQUAD_MAX_LINKER_LENGTH))
+
+
+/*
+* ############################################################
+* Here are the type definitions of various datastructures
+* shared among the Vienna RNA Package
+* ############################################################
+*/
+
+/**
+ *  \brief this datastructure is used as input parameter in functions of PS_dot.h and others
+ */
+typedef struct plist {
+  int i;
+  int j;
+  float p;
+  int type;
+} plist;
+
+/**
+ *  \brief this datastructure is used as input parameter in functions of PS_dot.c
+ */
+typedef struct cpair {
+  int i,j,mfe;
+  float p, hue, sat;
+} cpair;
+
+/**
+ *  \brief this is a workarround for the SWIG Perl Wrapper RNA plot function
+ *  that returns an array of type COORDINATE
+ */
+typedef struct {
+  float X; /* X coords */
+  float Y; /* Y coords */
+} COORDINATE;
+
+/**
+ *  \brief  Stack of partial structures for backtracking
+ */
+typedef struct sect {
+  int  i;
+  int  j;
+  int ml;
+} sect;
+
+/**
+ *  \brief  Base pair
+ */
+typedef struct bondT {
+   unsigned int i;
+   unsigned int j;
+} bondT;
+
+/**
+ *  \brief  Base pair with associated energy
+ */
+typedef struct bondTEn {
+   int i;
+   int j;
+   int energy;
+} bondTEn;
+
+/**
+ *  \brief The data structure that contains the complete model details used throughout the calculations
+ *
+ */
+typedef struct{
+  int     dangles;      /**<  \brief  Specifies the dangle model used in any energy evaluation (0,1,2 or 3)
+                              \note   Some function do not implement all dangle model but only a subset of
+                                      (0,1,2,3). Read the documentaion of the particular recurrences or
+                                      energy evaluation function for information about the provided dangle
+                                      model.
+                        */
+  int     special_hp;   /**<  \brief  Include special hairpin contributions for tri, tetra and hexaloops */
+  int     noLP;         /**<  \brief  Only consider canonical structures, i.e. no 'lonely' base pairs */
+  int     noGU;         /**<  \brief  Do not allow GU pairs */
+  int     noGUclosure;  /**<  \brief  Do not allow loops to be closed by GU pair */
+  int     logML;        /**<  \brief  Use logarithmic scaling for multi loops */
+  int     circ;         /**<  \brief  Assume molecule to be circular */
+  int     gquad;        /**<  \brief  Include G-quadruplexes in structure prediction */
+} model_detailsT;
+
+/**
+ *  \brief The datastructure that contains temperature scaled energy parameters.
+ */
+typedef struct{
+  int id;
+  int stack[NBPAIRS+1][NBPAIRS+1];
+  int hairpin[31];
+  int bulge[MAXLOOP+1];
+  int internal_loop[MAXLOOP+1];
+  int mismatchExt[NBPAIRS+1][5][5];
+  int mismatchI[NBPAIRS+1][5][5];
+  int mismatch1nI[NBPAIRS+1][5][5];
+  int mismatch23I[NBPAIRS+1][5][5];
+  int mismatchH[NBPAIRS+1][5][5];
+  int mismatchM[NBPAIRS+1][5][5];
+  int dangle5[NBPAIRS+1][5];
+  int dangle3[NBPAIRS+1][5];
+  int int11[NBPAIRS+1][NBPAIRS+1][5][5];
+  int int21[NBPAIRS+1][NBPAIRS+1][5][5][5];
+  int int22[NBPAIRS+1][NBPAIRS+1][5][5][5][5];
+  int ninio[5];
+  double  lxc;
+  int     MLbase;
+  int     MLintern[NBPAIRS+1];
+  int     MLclosing;
+  int     TerminalAU;
+  int     DuplexInit;
+  int     Tetraloop_E[200];
+  char    Tetraloops[1401];
+  int     Triloop_E[40];
+  char    Triloops[241];
+  int     Hexaloop_E[40];
+  char    Hexaloops[1801];
+  int     TripleC;
+  int     MultipleCA;
+  int     MultipleCB;
+  int     gquad [VRNA_GQUAD_MAX_STACK_SIZE + 1]
+                [3*VRNA_GQUAD_MAX_LINKER_LENGTH + 1];
+
+  double  temperature;            /**<  \brief  Temperature used for loop contribution scaling */
+
+  model_detailsT model_details;   /**<  \brief  Model details to be used in the recursions */
+
+}  paramT;
+
+/**
+ *  \brief  The datastructure that contains temperature scaled Boltzmann weights of the energy parameters.
+ */
+typedef struct{
+  int     id;
+  double  expstack[NBPAIRS+1][NBPAIRS+1];
+  double  exphairpin[31];
+  double  expbulge[MAXLOOP+1];
+  double  expinternal[MAXLOOP+1];
+  double  expmismatchExt[NBPAIRS+1][5][5];
+  double  expmismatchI[NBPAIRS+1][5][5];
+  double  expmismatch23I[NBPAIRS+1][5][5];
+  double  expmismatch1nI[NBPAIRS+1][5][5];
+  double  expmismatchH[NBPAIRS+1][5][5];
+  double  expmismatchM[NBPAIRS+1][5][5];
+  double  expdangle5[NBPAIRS+1][5];
+  double  expdangle3[NBPAIRS+1][5];
+  double  expint11[NBPAIRS+1][NBPAIRS+1][5][5];
+  double  expint21[NBPAIRS+1][NBPAIRS+1][5][5][5];
+  double  expint22[NBPAIRS+1][NBPAIRS+1][5][5][5][5];
+  double  expninio[5][MAXLOOP+1];
+  double  lxc;
+  double  expMLbase;
+  double  expMLintern[NBPAIRS+1];
+  double  expMLclosing;
+  double  expTermAU;
+  double  expDuplexInit;
+  double  exptetra[40];
+  double  exptri[40];
+  double  exphex[40];
+  char    Tetraloops[1401];
+  double  expTriloop[40];
+  char    Triloops[241];
+  char    Hexaloops[1801];
+  double  expTripleC;
+  double  expMultipleCA;
+  double  expMultipleCB;
+  double  expgquad[VRNA_GQUAD_MAX_STACK_SIZE + 1]
+                  [3*VRNA_GQUAD_MAX_LINKER_LENGTH + 1];
+
+  double  kT;
+  double  pf_scale;     /**<  \brief    Scaling factor to avoid over-/underflows */
+
+  double  temperature;  /**<  \brief    Temperature used for loop contribution scaling */
+  double  alpha;        /**<  \brief    Scaling factor for the thermodynamic temperature
+                              \details  This allows for temperature scaling in Boltzmann
+                                        factors independently from the energy contributions.
+                                        The resulting Boltzmann factors are then computed by
+                                        \f$ e^{-E/(\alpha \cdot K \cdot T)} \f$
+                        */
+
+  model_detailsT model_details; /**<  \brief  Model details to be used in the recursions */
+
+}  pf_paramT;
+
+
+
+/*
+* ############################################################
+* SUBOPT data structures
+* ############################################################
+*/
+
+
+/**
+ *  \brief  Base pair data structure used in subopt.c
+ */
+typedef struct {
+  int i;
+  int j;
+} PAIR;
+
+/**
+ *  \brief  Sequence interval stack element used in subopt.c
+ */
+typedef struct {
+    int i;
+    int j;
+    int array_flag;
+} INTERVAL;
+
+/**
+ *  \brief  Solution element from subopt.c
+ */
+typedef struct {
+  float energy;       /**< \brief Free Energy of structure in kcal/mol */
+  char *structure;    /**< \brief Structure in dot-bracket notation */
+} SOLUTION;
+
+/*
+* ############################################################
+* COFOLD data structures
+* ############################################################
+*/
+
+/**
+ *  \brief  
+ */
+typedef struct cofoldF {
+  /* free energies for: */
+  double F0AB;  /**< \brief Null model without DuplexInit */
+  double FAB;   /**< \brief all states with DuplexInit correction */
+  double FcAB;  /**< \brief true hybrid states only */
+  double FA;    /**< \brief monomer A */
+  double FB;    /**< \brief monomer B */
+} cofoldF;
+
+/**
+ *  \brief  
+ */
+typedef struct ConcEnt {
+  double A0;    /**< \brief start concentration A */
+  double B0;    /**< \brief start concentration B */
+  double ABc;   /**< \brief End concentration AB */
+  double AAc;
+  double BBc;
+  double Ac;
+  double Bc;
+} ConcEnt;
+
+/**
+ *  \brief  
+ */
+typedef struct pairpro{
+  struct plist *AB;
+  struct plist *AA;
+  struct plist *A;
+  struct plist *B;
+  struct plist *BB;
+}pairpro;
+
+/**
+ *  \brief A base pair info structure
+ *
+ *  For each base pair (i,j) with i,j in [0, n-1] the structure lists:
+ *  - its probability 'p'
+ *  - an entropy-like measure for its well-definedness 'ent'
+ *  - the frequency of each type of pair in 'bp[]'
+ *    + 'bp[0]' contains the number of non-compatible sequences
+ *    + 'bp[1]' the number of CG pairs, etc.
+ */
+typedef struct {
+   unsigned i;    /**<  \brief  nucleotide position i */ 
+   unsigned j;    /**<  \brief  nucleotide position j */
+   float p;       /**< \brief  Probability */
+   float ent;     /**< \brief  Pseudo entropy for \f$ p(i,j) = S_i + S_j - p_ij*ln(p_ij) \f$ */
+   short bp[8];   /**< \brief  Frequencies of pair_types */
+   char comp;     /**< \brief  1 iff pair is in mfe structure */
+} pair_info;
+
+
+/*
+* ############################################################
+* FINDPATH data structures
+* ############################################################
+*/
+
+/**
+ *  \brief  
+ */
+typedef struct move {
+  int i;  /* i,j>0 insert; i,j<0 delete */
+  int j;
+  int when;  /* 0 if still available, else resulting distance from start */
+  int E;
+} move_t;
+
+/**
+ *  \brief  
+ */
+typedef struct intermediate {
+  short *pt;      /**<  \brief  pair table */
+  int Sen;        /**<  \brief  saddle energy so far */
+  int curr_en;    /**<  \brief  current energy */
+  move_t *moves;  /**<  \brief  remaining moves to target */
+} intermediate_t;
+
+/**
+ *  \brief  
+ */
+typedef struct path {
+  double en;
+  char *s;
+} path_t;
+
+/*
+* ############################################################
+* RNAup data structures
+* ############################################################
+*/
+
+/**
+ *  \brief contributions to p_u
+ */
+typedef struct pu_contrib {
+  double **H; /**<  \brief  hairpin loops */
+  double **I; /**<  \brief  interior loops */
+  double **M; /**<  \brief  multi loops */
+  double **E; /**<  \brief  exterior loop */
+  int length; /**<  \brief  length of the input sequence */
+  int w;      /**<  \brief  longest unpaired region */
+} pu_contrib;
+
+/**
+ *  \brief  
+ */
+typedef struct interact {
+  double *Pi;       /**<  \brief  probabilities of interaction */
+  double *Gi;       /**<  \brief  free energies of interaction */
+  double Gikjl;     /**<  \brief  full free energy for interaction between [k,i] k<i
+                                  in longer seq and [j,l] j<l in shorter seq */
+  double Gikjl_wo;  /**<  \brief  Gikjl without contributions for prob_unpaired */
+  int i;            /**<  \brief  k<i in longer seq */
+  int k;            /**<  \brief  k<i in longer seq */
+  int j;            /**<  \brief  j<l in shorter seq */
+  int l;            /**<  \brief  j<l in shorter seq */
+  int length;       /**<  \brief  length of longer sequence */
+} interact;
+
+/**
+ *  \brief  Collection of all free_energy of beeing unpaired values for output
+ */
+typedef struct pu_out {
+  int len;            /**<  \brief  sequence length */
+  int u_vals;         /**<  \brief  number of different -u values */
+  int contribs;       /**<  \brief  [-c "SHIME"] */
+  char **header;      /**<  \brief  header line */
+  double **u_values;  /**<  \brief  (the -u values * [-c "SHIME"]) * seq len */
+} pu_out;
+
+/**
+ *  \brief  constraints for cofolding 
+ */
+typedef struct constrain{
+  int *indx;
+  char *ptype;
+} constrain;
+
+/*
+* ############################################################
+* RNAduplex data structures
+* ############################################################
+*/
+
+/**
+ *  \brief  
+ */
+typedef struct {
+  int i;
+  int j;
+  int end;
+  char *structure;
+  double energy;
+  double energy_backtrack;
+  double opening_backtrack_x;
+  double opening_backtrack_y;
+  int offset;
+  double dG1;
+  double dG2;
+  double ddG;
+  int tb;
+  int te;
+  int qb;
+  int qe;
+} duplexT;
+
+/*
+* ############################################################
+* RNAsnoop data structures
+* ############################################################
+*/
+
+/**
+ *  \brief  
+ */
+typedef struct node {
+  int k;
+  int energy;
+  struct node *next;
+} folden;
+
+/**
+ *  \brief  
+ */
+typedef struct {
+  int i;
+  int j;
+  int u;
+  char *structure;
+  float energy;
+  float Duplex_El;
+  float Duplex_Er;
+  float Loop_E;
+  float Loop_D;
+  float pscd;
+  float psct;
+  float pscg;
+  float Duplex_Ol;
+  float Duplex_Or;
+  float Duplex_Ot;
+  float fullStemEnergy;
+} snoopT;
+
+
+
+
+
+
+
+/*
+* ############################################################
+* PKplex data structures
+* ############################################################
+*/
+
+/**
+ *  \brief  
+ */
+typedef struct dupVar{
+  int i;
+  int j;
+  int end;
+  char *pk_helix;
+  char *structure;
+  double energy;
+  int offset;
+  double dG1;
+  double dG2;
+  double ddG;
+  int tb;
+  int te;
+  int qb;
+  int qe;
+  int inactive;
+  int processed;
+} dupVar;
+
+
+
+/*
+* ############################################################
+* 2Dfold data structures
+* ############################################################
+*/
+
+/**
+ *  \brief Solution element returned from TwoDfoldList
+ *
+ *  This element contains free energy and structure for the appropriate
+ *  kappa (k), lambda (l) neighborhood
+ *  The datastructure contains two integer attributes 'k' and 'l'
+ *  as well as an attribute 'en' of type float representing the free energy
+ *  in kcal/mol and an attribute 's' of type char* containg the secondary
+ *  structure representative,
+ *
+ *  A value of #INF in k denotes the end of a list
+ *
+ *  \see  TwoDfoldList()
+ */
+typedef struct{
+  int k;          /**<  \brief  Distance to first reference */
+  int l;          /**<  \brief  Distance to second reference */
+  float en;       /**<  \brief  Free energy in kcal/mol */
+  char *s;        /**<  \brief  MFE representative structure in dot-bracket notation */
+} TwoDfold_solution;
+
+/**
+ *  \brief Variables compound for 2Dfold MFE folding
+ *
+ *  \see get_TwoDfold_variables(), destroy_TwoDfold_variables(), TwoDfoldList()
+ */
+typedef struct{
+  paramT          *P;             /**<  \brief  Precomputed energy parameters and model details */
+  int             do_backtrack;   /**<  \brief  Flag whether to do backtracing of the structure(s) or not */
+  char            *ptype;         /**<  \brief  Precomputed array of pair types */
+  char            *sequence;      /**<  \brief  The input sequence  */
+  short           *S, *S1;        /**<  \brief  The input sequences in numeric form */
+  unsigned int    maxD1;          /**<  \brief  Maximum allowed base pair distance to first reference */
+  unsigned int    maxD2;          /**<  \brief  Maximum allowed base pair distance to second reference */
+
+
+  unsigned int    *mm1;           /**<  \brief  Maximum matching matrix, reference struct 1 disallowed */
+  unsigned int    *mm2;           /**<  \brief  Maximum matching matrix, reference struct 2 disallowed */
+
+  int             *my_iindx;      /**<  \brief  Index for moving in quadratic distancy dimensions */
+
+  double          temperature;
+
+  unsigned int    *referenceBPs1; /**<  \brief  Matrix containing number of basepairs of reference structure1 in interval [i,j] */
+  unsigned int    *referenceBPs2; /**<  \brief  Matrix containing number of basepairs of reference structure2 in interval [i,j] */
+  unsigned int    *bpdist;        /**<  \brief  Matrix containing base pair distance of reference structure 1 and 2 on interval [i,j] */
+
+  short           *reference_pt1;
+  short           *reference_pt2;
+  int             circ;
+  int             dangles;
+  unsigned int    seq_length;
+
+  int             ***E_F5;
+  int             ***E_F3;
+  int             ***E_C;
+  int             ***E_M;
+  int             ***E_M1;
+  int             ***E_M2;
+
+  int             **E_Fc;
+  int             **E_FcH;
+  int             **E_FcI;
+  int             **E_FcM;
+
+  int             **l_min_values;
+  int             **l_max_values;
+  int             *k_min_values;
+  int             *k_max_values;
+
+  int             **l_min_values_m;
+  int             **l_max_values_m;
+  int             *k_min_values_m;
+  int             *k_max_values_m;
+
+  int             **l_min_values_m1;
+  int             **l_max_values_m1;
+  int             *k_min_values_m1;
+  int             *k_max_values_m1;
+
+  int             **l_min_values_f;
+  int             **l_max_values_f;
+  int             *k_min_values_f;
+  int             *k_max_values_f;
+
+  int             **l_min_values_f3;
+  int             **l_max_values_f3;
+  int             *k_min_values_f3;
+  int             *k_max_values_f3;
+
+  int             **l_min_values_m2;
+  int             **l_max_values_m2;
+  int             *k_min_values_m2;
+  int             *k_max_values_m2;
+
+  int             *l_min_values_fc;
+  int             *l_max_values_fc;
+  int             k_min_values_fc;
+  int             k_max_values_fc;
+
+  int             *l_min_values_fcH;
+  int             *l_max_values_fcH;
+  int             k_min_values_fcH;
+  int             k_max_values_fcH;
+
+  int             *l_min_values_fcI;
+  int             *l_max_values_fcI;
+  int             k_min_values_fcI;
+  int             k_max_values_fcI;
+
+  int             *l_min_values_fcM;
+  int             *l_max_values_fcM;
+  int             k_min_values_fcM;
+  int             k_max_values_fcM;
+
+  /* auxilary arrays for remaining set of coarse graining (k,l) > (k_max, l_max) */
+  int             *E_F5_rem;
+  int             *E_F3_rem;
+  int             *E_C_rem;
+  int             *E_M_rem;
+  int             *E_M1_rem;
+  int             *E_M2_rem;
+
+  int             E_Fc_rem;
+  int             E_FcH_rem;
+  int             E_FcI_rem;
+  int             E_FcM_rem;
+
+#ifdef COUNT_STATES
+  unsigned long             ***N_F5;
+  unsigned long             ***N_C;
+  unsigned long             ***N_M;
+  unsigned long             ***N_M1;
+#endif
+} TwoDfold_vars;
+
+/**
+ *  \brief Solution element returned from TwoDpfoldList
+ *
+ *  This element contains the partition function for the appropriate
+ *  kappa (k), lambda (l) neighborhood
+ *  The datastructure contains two integer attributes 'k' and 'l'
+ *  as well as an attribute 'q' of type #FLT_OR_DBL
+ *
+ *  A value of #INF in k denotes the end of a list
+ *
+ *  \see  TwoDpfoldList()
+ */
+typedef struct{
+  int k;          /**<  \brief  Distance to first reference */
+  int l;          /**<  \brief  Distance to second reference */
+  FLT_OR_DBL  q;  /**<  \brief  partition function */
+} TwoDpfold_solution;
+
+/**
+ *  \brief  Variables compound for 2Dfold partition function folding
+ *
+ *  \see    get_TwoDpfold_variables(), get_TwoDpfold_variables_from_MFE(),
+ *          destroy_TwoDpfold_variables(), TwoDpfoldList()
+ */
+typedef struct{
+
+  unsigned int    alloc;
+  char            *ptype;         /**<  \brief  Precomputed array of pair types */
+  char            *sequence;      /**<  \brief  The input sequence  */
+  short           *S, *S1;        /**<  \brief  The input sequences in numeric form */
+  unsigned int    maxD1;          /**<  \brief  Maximum allowed base pair distance to first reference */
+  unsigned int    maxD2;          /**<  \brief  Maximum allowed base pair distance to second reference */
+
+  double          temperature;    /* temperature in last call to scale_pf_params */
+  double          init_temp;      /* temperature in last call to scale_pf_params */
+  FLT_OR_DBL      *scale;
+  FLT_OR_DBL      pf_scale;
+  pf_paramT       *pf_params;     /* holds all [unscaled] pf parameters */
+
+  int             *my_iindx;      /**<  \brief  Index for moving in quadratic distancy dimensions */
+  int             *jindx;         /**<  \brief  Index for moving in the triangular matrix qm1 */
+
+  short           *reference_pt1;
+  short           *reference_pt2;
+
+  unsigned int    *referenceBPs1; /**<  \brief  Matrix containing number of basepairs of reference structure1 in interval [i,j] */
+  unsigned int    *referenceBPs2; /**<  \brief  Matrix containing number of basepairs of reference structure2 in interval [i,j] */
+  unsigned int    *bpdist;        /**<  \brief  Matrix containing base pair distance of reference structure 1 and 2 on interval [i,j] */
+
+  unsigned int    *mm1;           /**<  \brief  Maximum matching matrix, reference struct 1 disallowed */
+  unsigned int    *mm2;           /**<  \brief  Maximum matching matrix, reference struct 2 disallowed */
+
+  int             circ;
+  int             dangles;
+  unsigned int    seq_length;
+
+  FLT_OR_DBL      ***Q;
+  FLT_OR_DBL      ***Q_B;
+  FLT_OR_DBL      ***Q_M;
+  FLT_OR_DBL      ***Q_M1;
+  FLT_OR_DBL      ***Q_M2;
+
+  FLT_OR_DBL      **Q_c;
+  FLT_OR_DBL      **Q_cH;
+  FLT_OR_DBL      **Q_cI;
+  FLT_OR_DBL      **Q_cM;
+
+  int             **l_min_values;
+  int             **l_max_values;
+  int             *k_min_values;
+  int             *k_max_values;
+
+  int             **l_min_values_b;
+  int             **l_max_values_b;
+  int             *k_min_values_b;
+  int             *k_max_values_b;
+
+  int             **l_min_values_m;
+  int             **l_max_values_m;
+  int             *k_min_values_m;
+  int             *k_max_values_m;
+
+  int             **l_min_values_m1;
+  int             **l_max_values_m1;
+  int             *k_min_values_m1;
+  int             *k_max_values_m1;
+
+  int             **l_min_values_m2;
+  int             **l_max_values_m2;
+  int             *k_min_values_m2;
+  int             *k_max_values_m2;
+
+  int             *l_min_values_qc;
+  int             *l_max_values_qc;
+  int             k_min_values_qc;
+  int             k_max_values_qc;
+
+  int             *l_min_values_qcH;
+  int             *l_max_values_qcH;
+  int             k_min_values_qcH;
+  int             k_max_values_qcH;
+
+  int             *l_min_values_qcI;
+  int             *l_max_values_qcI;
+  int             k_min_values_qcI;
+  int             k_max_values_qcI;
+
+  int             *l_min_values_qcM;
+  int             *l_max_values_qcM;
+  int             k_min_values_qcM;
+  int             k_max_values_qcM;
+
+  /* auxilary arrays for remaining set of coarse graining (k,l) > (k_max, l_max) */
+  FLT_OR_DBL      *Q_rem;
+  FLT_OR_DBL      *Q_B_rem;
+  FLT_OR_DBL      *Q_M_rem;
+  FLT_OR_DBL      *Q_M1_rem;
+  FLT_OR_DBL      *Q_M2_rem;
+
+  FLT_OR_DBL      Q_c_rem;
+  FLT_OR_DBL      Q_cH_rem;
+  FLT_OR_DBL      Q_cI_rem;
+  FLT_OR_DBL      Q_cM_rem;
+
+} TwoDpfold_vars;
+
+#endif
diff --git a/include/energy_const.h b/include/energy_const.h
new file mode 100644
--- /dev/null
+++ b/include/energy_const.h
@@ -0,0 +1,33 @@
+#ifndef __VIENNA_RNA_PACKAGE_ENERGY_CONST_H__
+#define __VIENNA_RNA_PACKAGE_ENERGY_CONST_H__
+
+#include <limits.h>
+
+/**
+ *  \file energy_const.h
+ *  energy constants
+ */
+
+/** The gas constant */
+#define GASCONST 1.98717  /* in [cal/K] */
+/** 0 deg Celsius in Kelvin */
+#define K0  273.15
+/** Infinity as used in minimization routines */
+#define INF 10000000 /* (INT_MAX/10) */
+
+#define EMAX (INF/10)
+/** forbidden */
+#define FORBIDDEN 9999
+/** bonus contribution */
+#define BONUS 10000
+/** The number of distinguishable base pairs */
+#define NBPAIRS 7
+/** The minimum loop length */
+#define TURN 3
+/** The maximum loop length */
+#define MAXLOOP 30
+
+#define   VRNA_GQUAD_MISMATCH_PENALTY   300   /* penalty for incompatible nucleotides in an alignment that destruct a gquad layer */
+#define   VRNA_GQUAD_MISMATCH_NUM_ALI   1   /* maximum number of mismatching sequences in the alignment when gquad should be formed */
+
+#endif
diff --git a/include/energy_par.h b/include/energy_par.h
new file mode 100644
--- /dev/null
+++ b/include/energy_par.h
@@ -0,0 +1,100 @@
+/*
+   prototypes for energy_par.c
+*/
+
+#ifndef __VIENNA_RNA_PACKAGE_ENERGY_PAR_H__
+#define __VIENNA_RNA_PACKAGE_ENERGY_PAR_H__
+
+#include "energy_const.h"
+
+#define PUBLIC
+
+
+extern double lxc37;   /* parameter for logarithmic loop
+			  energy extrapolation            */
+
+extern int stack37[NBPAIRS+1][NBPAIRS+1];
+extern int stackdH[NBPAIRS+1][NBPAIRS+1]; /* stack enthalpies */
+extern int entropies[NBPAIRS+1][NBPAIRS+1];  /* not used anymore */
+
+extern int hairpin37[31];
+extern int hairpindH[31];
+extern int bulge37[31];
+extern int bulgedH[31];
+extern int internal_loop37[31];
+extern int internal_loopdH[31];
+extern int internal2_energy;
+extern int old_mismatch_37[NBPAIRS+1][5][5];
+extern int mismatchI37[NBPAIRS+1][5][5];  /* interior loop mismatches */
+extern int mismatchIdH[NBPAIRS+1][5][5];  /* interior loop mismatches */
+extern int mismatch1nI37[NBPAIRS+1][5][5];  /* interior loop mismatches */
+extern int mismatch23I37[NBPAIRS+1][5][5];  /* interior loop mismatches */
+extern int mismatch1nIdH[NBPAIRS+1][5][5];  /* interior loop mismatches */
+extern int mismatch23IdH[NBPAIRS+1][5][5];  /* interior loop mismatches */
+extern int mismatchH37[NBPAIRS+1][5][5];  /* same for hairpins */
+extern int mismatchM37[NBPAIRS+1][5][5];  /* same for multiloops */
+extern int mismatchHdH[NBPAIRS+1][5][5];  /* same for hairpins */
+extern int mismatchMdH[NBPAIRS+1][5][5];  /* same for multiloops */
+extern int mismatchExt37[NBPAIRS+1][5][5];
+extern int mismatchExtdH[NBPAIRS+1][5][5];
+
+extern int dangle5_37[NBPAIRS+1][5];      /* 5' dangle exterior of pair */
+extern int dangle3_37[NBPAIRS+1][5];      /* 3' dangle */
+extern int dangle3_dH[NBPAIRS+1][5];       /* corresponding enthalpies */
+extern int dangle5_dH[NBPAIRS+1][5];
+
+extern int int11_37[NBPAIRS+1][NBPAIRS+1][5][5]; /* 1x1 interior loops */
+extern int int11_dH[NBPAIRS+1][NBPAIRS+1][5][5];
+
+extern int int21_37[NBPAIRS+1][NBPAIRS+1][5][5][5]; /* 2x1 interior loops */
+extern int int21_dH[NBPAIRS+1][NBPAIRS+1][5][5][5];
+
+extern int int22_37[NBPAIRS+1][NBPAIRS+1][5][5][5][5]; /* 2x2 interior loops */
+extern int int22_dH[NBPAIRS+1][NBPAIRS+1][5][5][5][5];
+
+/* constants for linearly destabilizing contributions for multi-loops
+   F = ML_closing + ML_intern*(k-1) + ML_BASE*u  */
+extern int ML_BASE37;
+extern int ML_BASEdH;
+extern int ML_closing37;
+extern int ML_closingdH;
+extern int ML_intern37;
+extern int ML_interndH;
+
+extern int TripleC37;
+extern int TripleCdH;
+extern int MultipleCA37;
+extern int MultipleCAdH;
+extern int MultipleCB37;
+extern int MultipleCBdH;
+
+/* Ninio-correction for asymmetric internal loops with branches n1 and n2 */
+/*    ninio_energy = min{max_ninio, |n1-n2|*F_ninio[min{4.0, n1, n2}] } */
+extern int  MAX_NINIO;                   /* maximum correction */
+extern int ninio37;
+extern int niniodH;
+/* penalty for helices terminated by AU (actually not GC) */
+extern int TerminalAU37;
+extern int TerminalAUdH;
+/* penalty for forming bi-molecular duplex */
+extern int DuplexInit37;
+extern int DuplexInitdH;
+/* stabilizing contribution due to special hairpins of size 4 (tetraloops) */
+extern char Tetraloops[];  /* string containing the special tetraloops */
+extern int  Tetraloop37[];  /* Bonus energy for special tetraloops */
+extern int  TetraloopdH[];
+extern char Triloops[];    /* string containing the special triloops */
+extern int  Triloop37[]; /* Bonus energy for special Triloops */
+extern int  TriloopdH[]; /* Bonus energy for special Triloops */
+extern char Hexaloops[];    /* string containing the special triloops */
+extern int  Hexaloop37[]; /* Bonus energy for special Triloops */
+extern int  HexaloopdH[]; /* Bonus energy for special Triloops */
+
+extern int GQuadAlpha37;
+extern int GQuadAlphadH;
+extern int GQuadBeta37;
+extern int GQuadBetadH;
+
+extern double Tmeasure;       /* temperature of param measurements */
+
+#endif
diff --git a/include/fold.h b/include/fold.h
new file mode 100644
--- /dev/null
+++ b/include/fold.h
@@ -0,0 +1,604 @@
+#ifndef __VIENNA_RNA_PACKAGE_FOLD_H__
+#define __VIENNA_RNA_PACKAGE_FOLD_H__
+
+#include "data_structures.h"
+
+#ifdef __GNUC__
+#define DEPRECATED(func) func __attribute__ ((deprecated))
+#else
+#define DEPRECATED(func) func
+#endif
+
+/**
+ *  \addtogroup mfe_fold
+ *  \ingroup folding_routines
+ *  \brief This section covers all functions and variables related to the calculation
+ *  of minimum free energy (MFE) structures.
+ *
+ *  The library provides a fast dynamic programming minimum free energy
+ *  folding algorithm as described in \cite zuker:1981.
+ *  All relevant parts that directly implement the "Zuker & Stiegler" algorithm for single
+ *  sequences are described in this section.
+ *
+ *  Folding of circular RNA sequences is handled as a post-processing step of the forward
+ *  recursions. See \cite hofacker:2006 for further details.
+ *
+ *  Nevertheless, the RNAlib also
+ *  provides interfaces for the prediction of consensus MFE structures of sequence alignments,
+ *  MFE structure for two hybridized sequences, local optimal structures and many more. For
+ *  those more specialized variants of MFE folding routines, please consult the appropriate
+ *  subsections (Modules) as listed above.
+ *  
+ *  \file fold.h
+ *  \brief MFE calculations and energy evaluations for single RNA sequences
+ * 
+ *  This file includes (almost) all function declarations within the RNAlib that are related to
+ *  MFE folding...
+ */
+
+/**
+ *  \defgroup eval Energy evaluation
+ *  @{
+ *    \brief This module contains all functions and variables related to energy evaluation
+ *    of sequence/structure pairs.
+ *
+ *
+ *  @}
+ */
+
+/**
+ *  \defgroup mfe_fold Calculating Minimum Free Energy Structures
+ *  @{
+ *    \brief This module contains all functions and variables related to the calculation
+ *    of global minimum free energy structures for single sequences.
+ *
+ *    The library provides a fast dynamic programming minimum free energy
+ *    folding algorithm as described by \ref zuker_81 "Zuker & Stiegler (1981)".
+ *  @}
+ */
+
+/** \brief if nonzero use logarithmic ML energy in energy_of_struct  */
+extern  int logML;
+
+/** \brief do ML decomposition uniquely (for subopt)  */
+extern  int uniq_ML;
+
+/** \brief set to first pos of second seq for cofolding  */
+extern  int cut_point;
+
+/**
+ *  \brief verbose info from energy_of_struct
+ *  \ingroup eval
+ */
+extern  int eos_debug;
+
+
+/**
+ *  \brief Compute minimum free energy and an appropriate secondary
+ *  structure of an RNA sequence
+ * 
+ *  The first parameter given, the RNA sequence, must be \a uppercase and should only contain
+ *  an alphabet \f$\Sigma\f$ that is understood by the RNAlib\n
+ *  (e.g. \f$ \Sigma = \{A,U,C,G\} \f$)\n
+ *
+ *  The second parameter, \a structure, must always point to an allocated
+ *  block of memory with a size of at least \f$\mathrm{strlen}(\mathrm{sequence})+1\f$
+ *
+ *  If the third parameter is NULL, global model detail settings are assumed for the folding
+ *  recursions. Otherwise, the provided parameters are used.
+ *
+ *  The fourth parameter indicates whether a secondary structure constraint in enhanced dot-bracket
+ *  notation is passed through the structure parameter or not. If so, the characters " | x < > " are
+ *  recognized to mark bases that are paired, unpaired, paired upstream, or downstream, respectively.
+ *  Matching brackets " ( ) " denote base pairs, dots "." are used for unconstrained bases.
+ *
+ *  To indicate that the RNA sequence is circular and thus has to be post-processed, set the last
+ *  parameter to non-zero
+ *
+ *  After a successful call of fold_par(), a backtracked secondary structure (in dot-bracket notation)
+ *  that exhibits the minimum of free energy will be written to the memory \a structure is pointing to.
+ *  The function returns the minimum of free energy for any fold of the sequence given.
+ *
+ *  \note OpenMP: Passing NULL to the 'parameters' argument involves access to several global model
+ *        detail variables and thus is not to be considered threadsafe
+ *
+ *  \ingroup mfe_fold
+ *
+ *  \see fold(), circfold(), #model_detailsT, set_energy_model(), get_scaled_parameters()
+ *
+ *  \param sequence       RNA sequence
+ *  \param structure      A pointer to the character array where the
+ *                        secondary structure in dot-bracket notation will be written to
+ *  \param parameters     A data structure containing the prescaled energy contributions
+ *                        and the model details. (NULL may be passed, see OpenMP notes above)
+ *  \param is_constrained Switch to indicate that a structure contraint is passed via the structure argument (0==off)
+ *  \param is_circular    Switch to (de-)activate postprocessing steps in case RNA sequence is circular (0==off)
+ *
+ *  \return the minimum free energy (MFE) in kcal/mol
+ */
+float fold_par( const char *sequence,
+                char *structure,
+                paramT *parameters,
+                int is_constrained,
+                int is_circular);
+
+/**
+ *  \brief Compute minimum free energy and an appropriate secondary structure of an RNA sequence
+ *
+ *  This function essentially does the same thing as fold_par(). However, it takes its model details,
+ *  i.e. #temperature, #dangles, #tetra_loop, #noGU, #no_closingGU, #fold_constrained, #noLonelyPairs
+ *  from the current global settings within the library
+ *
+ *  Use fold_par() for a completely threadsafe variant
+ *
+ *  \ingroup mfe_fold
+ *
+ *  \see fold_par(), circfold()
+ *
+ *  \param sequence RNA sequence
+ *  \param structure A pointer to the character array where the
+ *         secondary structure in dot-bracket notation will be written to
+ *  \return the minimum free energy (MFE) in kcal/mol
+ */
+float fold( const char *sequence,
+            char *structure);
+
+/**
+ *  \brief Compute minimum free energy and an appropriate secondary structure of a circular RNA sequence
+ *
+ *  This function essentially does the same thing as fold_par(). However, it takes its model details,
+ *  i.e. #temperature, #dangles, #tetra_loop, #noGU, #no_closingGU, #fold_constrained, #noLonelyPairs
+ *  from the current global settings within the library
+ *
+ *  Use fold_par() for a completely threadsafe variant
+ *
+ *  \ingroup mfe_fold
+ *
+ *  \see fold_par(), circfold()
+ *
+ *  \param sequence RNA sequence
+ *  \param structure A pointer to the character array where the
+ *         secondary structure in dot-bracket notation will be written to
+ *  \return the minimum free energy (MFE) in kcal/mol
+ */
+float circfold( const char *sequence,
+                char *structure);
+
+
+/**
+ *  \addtogroup eval Energy evaluation
+ *  \ingroup folding_routines
+ *  @{
+ *    \brief This module contains all functions and variables related to energy evaluation
+ *    of sequence/structure pairs.
+ *  @}
+ */
+
+/**
+ *  \brief Calculate the free energy of an already folded RNA using global model detail settings
+ *
+ *  If verbosity level is set to a value >0, energies of structure elements are printed to stdout
+ *
+ *  \note OpenMP: This function relies on several global model settings variables and thus is
+ *        not to be considered threadsafe. See energy_of_struct_par() for a completely threadsafe
+ *        implementation.
+ *
+ *  \ingroup eval
+ *
+ *  \see energy_of_struct_par(), energy_of_circ_structure()
+ *
+ *  \param string     RNA sequence
+ *  \param structure  secondary structure in dot-bracket notation
+ *  \param verbosity_level a flag to turn verbose output on/off
+ *  \return          the free energy of the input structure given the input sequence in kcal/mol
+ */
+float energy_of_structure(const char *string,
+                          const char *structure,
+                          int verbosity_level);
+
+/**
+ *  \brief Calculate the free energy of an already folded RNA
+ *
+ *  If verbosity level is set to a value >0, energies of structure elements are printed to stdout
+ *
+ *  \ingroup eval
+ *
+ *  \see energy_of_circ_structure(), energy_of_structure_pt(), get_scaled_parameters()
+ *
+ *  \param string           RNA sequence in uppercase letters
+ *  \param structure        Secondary structure in dot-bracket notation
+ *  \param parameters       A data structure containing the prescaled energy contributions and the model details.
+ *  \param verbosity_level  A flag to turn verbose output on/off
+ *  \return                The free energy of the input structure given the input sequence in kcal/mol
+ */
+float energy_of_struct_par( const char *string,
+                            const char *structure,
+                            paramT *parameters,
+                            int verbosity_level);
+
+/**
+ *  \brief Calculate the free energy of an already folded  circular RNA
+ *
+ *  \note OpenMP: This function relies on several global model settings variables and thus is
+ *        not to be considered threadsafe. See energy_of_circ_struct_par() for a completely threadsafe
+ *        implementation.
+ *
+ *  If verbosity level is set to a value >0, energies of structure elements are printed to stdout
+ *
+ *  \ingroup eval
+ *
+ *  \see energy_of_circ_struct_par(), energy_of_struct_par()
+ *
+ *  \param string           RNA sequence
+ *  \param structure        Secondary structure in dot-bracket notation
+ *  \param verbosity_level  A flag to turn verbose output on/off
+ *  \return                The free energy of the input structure given the input sequence in kcal/mol
+ */
+float energy_of_circ_structure( const char *string,
+                                const char *structure,
+                                int verbosity_level);
+
+/**
+ *  \brief Calculate the free energy of an already folded circular RNA
+ *
+ *  If verbosity level is set to a value >0, energies of structure elements are printed to stdout
+ *
+ *  \ingroup eval
+ *
+ *  \see energy_of_struct_par(), get_scaled_parameters()
+ *
+ *  \param string           RNA sequence
+ *  \param structure        Secondary structure in dot-bracket notation
+ *  \param parameters       A data structure containing the prescaled energy contributions and the model details.
+ *  \param verbosity_level  A flag to turn verbose output on/off
+ *  \return                The free energy of the input structure given the input sequence in kcal/mol
+ */
+float energy_of_circ_struct_par(const char *string,
+                                const char *structure,
+                                paramT *parameters,
+                                int verbosity_level);
+
+
+float energy_of_gquad_structure(const char *string,
+                                const char *structure,
+                                int verbosity_level);
+
+float energy_of_gquad_struct_par( const char *string,
+                                  const char *structure,
+                                  paramT *parameters,
+                                  int verbosity_level);
+
+/**
+ *  \brief Calculate the free energy of an already folded RNA
+ *
+ *  If verbosity level is set to a value >0, energies of structure elements are printed to stdout
+ *
+ *  \note OpenMP: This function relies on several global model settings variables and thus is
+ *        not to be considered threadsafe. See energy_of_struct_pt_par() for a completely threadsafe
+ *        implementation.
+ *
+ *  \ingroup eval
+ *
+ *  \see make_pair_table(), energy_of_struct_pt_par()
+ *
+ *  \param string     RNA sequence
+ *  \param ptable     the pair table of the secondary structure
+ *  \param s          encoded RNA sequence
+ *  \param s1         encoded RNA sequence
+ *  \param verbosity_level a flag to turn verbose output on/off
+ *  \return          the free energy of the input structure given the input sequence in 10kcal/mol
+ */
+int energy_of_structure_pt( const char *string,
+                            short *ptable,
+                            short *s,
+                            short *s1,
+                            int verbosity_level);
+
+/**
+ *  \brief Calculate the free energy of an already folded RNA
+ *
+ *  If verbosity level is set to a value >0, energies of structure elements are printed to stdout
+ *
+ *  \ingroup eval
+ *
+ *  \see make_pair_table(), energy_of_struct_par(), get_scaled_parameters()
+ *
+ *  \param string           RNA sequence in uppercase letters
+ *  \param ptable           The pair table of the secondary structure
+ *  \param s                Encoded RNA sequence
+ *  \param s1               Encoded RNA sequence
+ *  \param parameters       A data structure containing the prescaled energy contributions and the model details.
+ *  \param verbosity_level  A flag to turn verbose output on/off
+ *  \return                The free energy of the input structure given the input sequence in 10kcal/mol
+ */
+int energy_of_struct_pt_par(const char *string,
+                            short *ptable,
+                            short *s,
+                            short *s1,
+                            paramT *parameters,
+                            int verbosity_level);
+
+/**
+ *  \brief Free arrays for mfe folding
+ *
+ *  \ingroup mfe_fold
+ *
+ */
+void  free_arrays(void);
+
+
+/**
+ *  \brief Create a dot-backet/parenthesis structure from backtracking stack
+ * 
+ *  \note This function is threadsafe
+ */
+void  parenthesis_structure(char *structure,
+                            bondT *bp,
+                            int length);
+
+/**
+ *  \brief Create a dot-backet/parenthesis structure from backtracking stack
+ *  obtained by zuker suboptimal calculation in cofold.c
+ * 
+ *  \note This function is threadsafe
+ */
+void parenthesis_zuker( char *structure,
+                        bondT *bp,
+                        int length);
+
+void letter_structure(char *structure,
+                      bondT *bp,
+                      int length);
+
+
+/**
+ *  \brief Recalculate energy parameters
+ *
+ *  \ingroup mfe_fold
+ */
+void  update_fold_params(void);
+
+/**
+ *
+ *  \ingroup mfe_fold
+ * 
+ */
+void update_fold_params_par(paramT *parameters);
+
+/**
+ *
+ *  \ingroup mfe_fold
+ * 
+ */
+char  *backtrack_fold_from_pair(char *sequence,
+                                int i,
+                                int j);
+
+/** 
+ * \brief Calculate energy of a move (closing or opening of a base pair)
+ *
+ *  If the parameters m1 and m2 are negative, it is deletion (opening)
+ *  of a base pair, otherwise it is insertion (opening).
+ *
+ *  \see              make_pair_table(), energy_of_move()
+ *  \param string     RNA sequence
+ *  \param structure  secondary structure in dot-bracket notation
+ *  \param m1         first coordinate of base pair
+ *  \param m2         second coordinate of base pair
+ *  \returns          energy change of the move in kcal/mol
+ */
+float energy_of_move( const char *string,
+                      const char *structure,
+                      int m1,
+                      int m2);
+
+
+/**
+ * 
+ * \brief Calculate energy of a move (closing or opening of a base pair)
+ *
+ *  If the parameters m1 and m2 are negative, it is deletion (opening)
+ *  of a base pair, otherwise it is insertion (opening).
+ *
+ *  \see              make_pair_table(), energy_of_move()
+ *  \param pt         the pair table of the secondary structure
+ *  \param s          encoded RNA sequence
+ *  \param s1         encoded RNA sequence
+ *  \param m1         first coordinate of base pair
+ *  \param m2         second coordinate of base pair
+ *  \returns          energy change of the move in 10cal/mol
+ */
+int energy_of_move_pt(short *pt,
+                   short *s,
+                   short *s1,
+                   int m1,
+                   int m2);
+
+/**
+ * \brief Calculate energy of a loop
+ *
+ *  \param ptable     the pair table of the secondary structure
+ *  \param s          encoded RNA sequence
+ *  \param s1         encoded RNA sequence
+ *  \param i          position of covering base pair
+ *  \returns          free energy of the loop in 10cal/mol
+ */
+int   loop_energy(short *ptable,
+                  short *s,
+                  short *s1,
+                  int i);
+
+/**
+ *
+ *  \ingroup mfe_fold
+ * 
+ */
+void export_fold_arrays(int **f5_p,
+                        int **c_p,
+                        int **fML_p,
+                        int **fM1_p,
+                        int **indx_p,
+                        char **ptype_p);
+
+/**
+ *
+ *  \ingroup mfe_fold
+ * 
+ */
+void export_fold_arrays_par(int **f5_p,
+                            int **c_p,
+                            int **fML_p,
+                            int **fM1_p,
+                            int **indx_p,
+                            char **ptype_p,
+                            paramT **P_p);
+
+/**
+ *
+ *  \ingroup mfe_fold
+ * 
+ */
+void export_circfold_arrays(int *Fc_p,
+                            int *FcH_p,
+                            int *FcI_p,
+                            int *FcM_p,
+                            int **fM2_p,
+                            int **f5_p,
+                            int **c_p,
+                            int **fML_p,
+                            int **fM1_p,
+                            int **indx_p,
+                            char **ptype_p);
+
+/**
+ *
+ *  \ingroup mfe_fold
+ * 
+ */
+void export_circfold_arrays_par(int *Fc_p,
+                                int *FcH_p,
+                                int *FcI_p,
+                                int *FcM_p,
+                                int **fM2_p,
+                                int **f5_p,
+                                int **c_p,
+                                int **fML_p,
+                                int **fM1_p,
+                                int **indx_p,
+                                char **ptype_p,
+                                paramT **P_p);
+
+
+/**
+ *  \brief Create a plist from a dot-bracket string
+ * 
+ *  The dot-bracket string is parsed and for each base pair an
+ *  entry in the plist is created. The probability of each pair in
+ *  the list is set by a function parameter.
+ * 
+ *  The end of the plist is marked by sequence positions i as well as j
+ *  equal to 0. This condition should be used to stop looping over its
+ *  entries
+ * 
+ *  This function is threadsafe
+ * 
+ *  \param pl     A pointer to the plist that is to be created
+ *  \param struc  The secondary structure in dot-bracket notation
+ *  \param pr     The probability for each base pair
+ */
+void assign_plist_from_db(plist **pl,
+                          const char *struc,
+                          float pr);
+
+/* finally moved the loop energy function declarations to this header...  */
+/* BUT: The functions only exist for backward compatibility reasons!      */
+/* You better include "loop_energies.h" and call the functions:           */
+/* E_Hairpin() and E_IntLoop() which are (almost) threadsafe as they get  */
+/* a pointer to the energy parameter datastructure as additional argument */
+
+/**
+ *  \deprecated {This function is deprecated and will be removed soon.
+ *  Use \ref E_IntLoop() instead!}
+ */
+DEPRECATED(int LoopEnergy(int n1,
+                          int n2,
+                          int type,
+                          int type_2,
+                          int si1,
+                          int sj1,
+                          int sp1,
+                          int sq1));
+
+/**
+ *  \deprecated {This function is deprecated and will be removed soon.
+ *  Use \ref E_Hairpin() instead!}
+ */
+DEPRECATED(int HairpinE(int size,
+                        int type,
+                        int si1,
+                        int sj1,
+                        const char *string));
+
+/**
+ *  Allocate arrays for folding\n
+ *  \deprecated {This function is deprecated and will be removed soon!}
+ * 
+ */
+DEPRECATED(void initialize_fold(int length));
+
+/**
+ *  Calculate the free energy of an already folded RNA
+ * 
+ *  \note This function is not entirely threadsafe! Depending on the state of the global
+ *  variable \ref eos_debug it prints energy information to stdout or not...\n
+ * 
+ *  \deprecated This function is deprecated and should not be used in future programs!
+ *  Use \ref energy_of_structure() instead!
+ * 
+ *  \see              energy_of_structure, energy_of_circ_struct(), energy_of_struct_pt()
+ *  \param string     RNA sequence
+ *  \param structure  secondary structure in dot-bracket notation
+ *  \return          the free energy of the input structure given the input sequence in kcal/mol
+ */
+DEPRECATED(float energy_of_struct(const char *string,
+                                  const char *structure));
+
+/**
+ *  Calculate the free energy of an already folded RNA
+ * 
+ *  \note This function is not entirely threadsafe! Depending on the state of the global
+ *  variable \ref eos_debug it prints energy information to stdout or not...\n
+ * 
+ *  \deprecated This function is deprecated and should not be used in future programs!
+ *  Use \ref energy_of_structure_pt() instead!
+ * 
+ *  \see              make_pair_table(), energy_of_structure()
+ *  \param string     RNA sequence
+ *  \param ptable     the pair table of the secondary structure
+ *  \param s          encoded RNA sequence
+ *  \param s1         encoded RNA sequence
+ *  \return          the free energy of the input structure given the input sequence in 10kcal/mol
+ */
+DEPRECATED(int energy_of_struct_pt( const char *string,
+                                    short *ptable,
+                                    short *s,
+                                    short *s1));
+
+/**
+ *  Calculate the free energy of an already folded  circular RNA
+ * 
+ *  \note This function is not entirely threadsafe! Depending on the state of the global
+ *  variable \ref eos_debug it prints energy information to stdout or not...\n
+ * 
+ *  \deprecated This function is deprecated and should not be used in future programs
+ *  Use \ref energy_of_circ_structure() instead!
+ * 
+ *  \see              energy_of_circ_structure(), energy_of_struct(), energy_of_struct_pt()
+ *  \param string     RNA sequence
+ *  \param structure  secondary structure in dot-bracket notation
+ *  \return          the free energy of the input structure given the input sequence in kcal/mol
+ */
+DEPRECATED(float energy_of_circ_struct( const char *string,
+                                        const char *structure));
+
+#endif
diff --git a/include/fold_vars.h b/include/fold_vars.h
new file mode 100644
--- /dev/null
+++ b/include/fold_vars.h
@@ -0,0 +1,217 @@
+#ifndef __VIENNA_RNA_PACKAGE_FOLD_VARS_H__
+#define __VIENNA_RNA_PACKAGE_FOLD_VARS_H__
+
+#include "data_structures.h"
+
+/**
+ *  \file fold_vars.h
+ *  \brief Here all all declarations of the global variables used throughout RNAlib
+ */
+
+
+#define PUBLIC
+#define PRIVATE static
+
+/**
+ *  \brief Global switch to activate/deactivate folding with structure constraints
+ */
+extern int    fold_constrained;
+
+/**
+ *  \brief Global switch to avoid/allow helices of length 1
+ * 
+ *  Disallow all pairs which can only occur as lonely pairs (i.e. as helix
+ *  of length 1). This avoids lonely base pairs in the predicted structures in
+ *  most cases.
+ */
+extern int    noLonelyPairs;
+
+/**
+ *  \brief Switch the energy model for dangling end contributions (0, 1, 2, 3)
+ * 
+ *  If set to 0 no stabilizing energies are assigned to bases adjacent to
+ *  helices in free ends and multiloops (so called dangling ends). Normally
+ *  (dangles = 1) dangling end energies are assigned only to unpaired
+ *  bases and a base cannot participate simultaneously in two dangling ends. In
+ *  the partition function algorithm pf_fold() these checks are neglected.
+ *  If #dangles is set to 2, all folding routines will follow this convention.
+ *  This treatment of dangling ends gives more favorable energies to helices
+ *  directly adjacent to one another, which can be beneficial since such
+ *  helices often do engage in stabilizing interactions through co-axial
+ *  stacking.\n
+ *  If dangles = 3 co-axial stacking is explicitly included for
+ *  adjacent helices in mutli-loops. The option affects only mfe folding
+ *  and energy evaluation (fold() and energy_of_structure()), as
+ *  well as suboptimal folding (subopt()) via re-evaluation of energies.
+ *  Co-axial stacking with one intervening mismatch is not considered so far.
+ * 
+ *  Default is 2 in most algorithms, partition function algorithms can only handle 0 and 2
+ */
+extern int  dangles;
+
+/**
+ *  \brief Global switch to forbid/allow GU base pairs at all
+ */
+extern int  noGU;
+
+/**
+ *  \brief GU allowed only inside stacks if set to 1
+ */
+extern int  no_closingGU;
+
+/**
+ *  \brief Include special stabilizing energies for some tri-, tetra- and hexa-loops;
+ * 
+ *  default is 1.
+ */
+extern int  tetra_loop;
+
+/**
+ *  \brief 0 = BP; 1=any mit GC; 2=any mit AU-parameter
+ * 
+ *  If set to 1 or 2: fold sequences from an artificial alphabet ABCD..., where A
+ *  pairs B, C pairs D, etc. using either GC (1) or AU parameters (2);
+ *  default is 0, you probably don't want to change it.
+ */
+extern int  energy_set;
+
+/**
+ *  \brief backward compatibility variable.. this does not effect anything
+ */
+extern int  circ;
+
+/**
+ *  \brief generate comma seperated output
+ */
+extern int  csv;
+
+/**
+ *  use old alifold energies (with gaps)
+ */
+extern int oldAliEn;
+/**
+ *  use ribosum matrices
+ */
+extern int ribo;            
+
+/**
+ *  warning this variable will vanish in the future
+ *  ribosums will be compiled in instead
+ */
+extern char *RibosumFile;   
+
+/**
+ *  \brief contains allowed non standard base pairs
+ * 
+ *  Lists additional base pairs that will be allowed to form in addition to
+ *  GC, CG, AU, UA, GU and UG. Nonstandard base pairs are given a stacking
+ *  energy of 0.
+ */
+extern char *nonstandards;
+
+/**
+ *  \brief Rescale energy parameters to a temperature in degC.
+ * 
+ *  Default is 37C. You have to call the update_..._params() functions after
+ *  changing this parameter.
+ */
+extern double temperature;
+
+/**
+ *  interior loops of size 2 get energy 0.8Kcal and
+ *  no mismatches, default 1
+ */
+extern int  james_rule;
+
+/**
+ *  use logarithmic multiloop energy function
+ */
+extern int  logML;
+
+/**
+ *  \brief Marks the position (starting from 1) of the first
+ *  nucleotide of the second molecule within the concatenated sequence.
+ * 
+ *  To evaluate the energy of a duplex structure (a structure formed by two
+ *  strands), concatenate the to sequences and set it to the
+ *  first base of the second strand in the concatenated sequence.
+ *  The default value of -1 stands for single molecule folding. The
+ *  cut_point variable is also used by PS_rna_plot() and
+ *  PS_dot_plot() to mark the chain break in postscript plots.
+ */
+extern int  cut_point;
+
+/**
+ *  \brief Contains a list of base pairs after a call to fold().
+ * 
+ *  base_pair[0].i contains the total number of pairs.
+ *  \deprecated Do not use this variable anymore!
+ */
+extern bondT  *base_pair;
+
+/**
+ *  \brief A pointer to the base pair probability matrix
+ * 
+ *  \deprecated Do not use this variable anymore!
+ */
+extern FLT_OR_DBL *pr;
+
+/**
+ *  \brief index array to move through pr.
+ * 
+ *  The probability for base i and j to form a pair is in pr[iindx[i]-j].
+ *  \deprecated Do not use this variable anymore!
+ */
+extern int   *iindx;
+
+/**
+ *  \brief A scaling factor used by pf_fold() to avoid overflows.
+ * 
+ *  Should be set to approximately \f$exp{((-F/kT)/length)}\f$, where \f$F\f$ is an estimate
+ *  for the ensemble free energy, for example the minimum free energy. You must
+ *  call update_pf_params() after changing this parameter.\n
+ *  If pf_scale is -1 (the default) , an estimate will be provided
+ *  automatically when computing partition functions, e.g. pf_fold()
+ *  The automatic estimate is usually insufficient for sequences more
+ *  than a few hundred bases long.
+ */
+extern double pf_scale;
+
+/**
+ *  \brief do backtracking, i.e. compute secondary structures or base pair probabilities
+ * 
+ *  If 0, do not calculate pair probabilities in pf_fold(); this is about
+ *  twice as fast. Default is 1.
+ */
+extern int    do_backtrack;
+
+/**
+ *  \brief A backtrack array marker for inverse_fold()
+ * 
+ *  If set to 'C': force (1,N) to be paired,
+ *  'M' fold as if the sequence were inside a multi-loop. Otherwise ('F') the
+ *  usual mfe structure is computed.
+ */
+extern char backtrack_type;
+
+/**
+ *  \brief Allow G-quadruplex formation
+ */
+extern int gquad;
+
+
+char * option_string(void);
+
+/**
+ * \brief Set default model details
+ *
+ *  Use this function if you wish to initialize a #model_detailsT data structure with
+ *  its default values, i.e. the global model settings
+ *
+ *  \see
+ *
+ *  \param md A pointer to the data structure that shall be initialized
+ */
+void set_model_details(model_detailsT *md);
+
+#endif
diff --git a/include/gquad.h b/include/gquad.h
new file mode 100644
--- /dev/null
+++ b/include/gquad.h
@@ -0,0 +1,725 @@
+#ifndef __VIENNA_RNA_PACKAGE_GQUAD_H__
+#define __VIENNA_RNA_PACKAGE_GQUAD_H__
+
+#include "data_structures.h"
+
+#ifndef INLINE
+#ifdef __GNUC__
+# define INLINE inline
+#else
+# define INLINE
+#endif
+#endif
+
+/**
+ *  \file gquad.h
+ *  \brief Various functions related to G-quadruplex computations
+ */
+
+
+int         E_gquad(int L,
+                    int l[3],
+                    paramT *P);
+
+FLT_OR_DBL exp_E_gquad( int L,
+                        int l[3],
+                        pf_paramT *pf);
+
+int         E_gquad_ali(int i,
+                        int L,
+                        int l[3],
+                        const short **S,
+                        int n_seq,
+                        paramT *P);
+
+
+void        E_gquad_ali_en( int i,
+                            int L,
+                            int l[3],
+                            const short **S,
+                            int n_seq,
+                            int en[2],
+                            paramT *P);
+
+/**
+ *  \brief Get a triangular matrix prefilled with minimum free energy
+ *  contributions of G-quadruplexes.
+ *
+ *  At each position ij in the matrix, the minimum free energy of any
+ *  G-quadruplex delimited by i and j is stored. If no G-quadruplex formation
+ *  is possible, the matrix element is set to INF.
+ *  Access the elements in the matrix via matrix[indx[j]+i]. To get
+ *  the integer array indx see get_jindx().
+ *
+ *  \see get_jindx(), encode_sequence()
+ *
+ *  \param S  The encoded sequence
+ *  \param P  A pointer to the data structure containing the precomputed energy contributions
+ *  \return   A pointer to the G-quadruplex contribution matrix
+*/
+int         *get_gquad_matrix(short *S, paramT *P);
+
+int         *get_gquad_ali_matrix(short *S_cons,
+                                  short **S,
+                                  int n_seq,
+                                  paramT *P);
+
+FLT_OR_DBL  *get_gquad_pf_matrix( short *S,
+                                  FLT_OR_DBL *scale,
+                                  pf_paramT *pf);
+
+int         **get_gquad_L_matrix( short *S,
+                                  int start,
+                                  int maxdist,
+                                  int **g,
+                                  paramT *P);
+
+void        get_gquad_pattern_mfe(short *S,
+                                  int i,
+                                  int j,
+                                  paramT *P,
+                                  int *L,
+                                  int l[3]);
+
+void
+get_gquad_pattern_exhaustive( short *S,
+                              int i,
+                              int j,
+                              paramT *P,
+                              int *L,
+                              int *l,
+                              int threshold);
+
+void        get_gquad_pattern_pf( short *S,
+                                  int i,
+                                  int j,
+                                  pf_paramT *pf,
+                                  int *L,
+                                  int l[3]);
+
+plist       *get_plist_gquad_from_pr( short *S,
+                                      int gi,
+                                      int gj,
+                                      FLT_OR_DBL *G,
+                                      FLT_OR_DBL *probs,
+                                      FLT_OR_DBL *scale,
+                                      pf_paramT *pf);
+plist       *get_plist_gquad_from_pr_max(short *S,
+                                      int gi,
+                                      int gj,
+                                      FLT_OR_DBL *G,
+                                      FLT_OR_DBL *probs,
+                                      FLT_OR_DBL *scale,
+                                      int *L,
+                                      int l[3],
+                                      pf_paramT *pf);
+
+plist       *get_plist_gquad_from_db( const char *structure,
+                                      float pr);
+
+int         get_gquad_count(short *S,
+                            int i,
+                            int j);
+
+int         get_gquad_layer_count(short *S,
+                            int i,
+                            int j);
+
+
+/**
+ *  given a dot-bracket structure (possibly) containing gquads encoded
+ *  by '+' signs, find first gquad, return end position or 0 if none found
+ *  Upon return L and l[] contain the number of stacked layers, as well as
+ *  the lengths of the linker regions.  
+ *  To parse a string with many gquads, call parse_gquad repeatedly e.g.
+ *  end1 = parse_gquad(struc, &L, l); ... ;
+ *  end2 = parse_gquad(struc+end1, &L, l); end2+=end1; ... ;
+ *  end3 = parse_gquad(struc+end2, &L, l); end3+=end2; ... ; 
+ */
+int         parse_gquad(const char *struc, int *L, int l[3]);
+
+
+
+/**
+ *  backtrack an interior loop like enclosed g-quadruplex
+ *  with closing pair (i,j)
+ *
+ *  \param c      The total contribution the loop should resemble
+ *  \param i      position i of enclosing pair
+ *  \param j      position j of enclosing pair
+ *  \param type   base pair type of enclosing pair (must be reverse type)
+ *  \param S      integer encoded sequence
+ *  \param ggg    triangular matrix containing g-quadruplex contributions
+ *  \param index  the index for accessing the triangular matrix
+ *  \param p      here the 5' position of the gquad is stored
+ *  \param q      here the 3' position of the gquad is stored
+ *  \param P      the datastructure containing the precalculated contibutions
+ *
+ *  \return       1 on success, 0 if no gquad found
+ */
+INLINE  PRIVATE int backtrack_GQuad_IntLoop(int c,
+                                            int i,
+                                            int j,
+                                            int type,
+                                            short *S,
+                                            int *ggg,
+                                            int *index,
+                                            int *p,
+                                            int *q,
+                                            paramT *P){
+
+  int energy, dangles, k, l, maxl, minl, c0, l1;
+  short si, sj;
+
+  dangles = P->model_details.dangles;
+  si      = S[i + 1];
+  sj      = S[j - 1];
+  energy  = 0;
+
+  if(dangles == 2)
+    energy += P->mismatchI[type][si][sj];
+
+  if(type > 2)
+    energy += P->TerminalAU;
+
+  k = i + 1;
+  if(S[k] == 3){
+    if(k < j - VRNA_GQUAD_MIN_BOX_SIZE){
+      minl  = j - i + k - MAXLOOP - 2;
+      c0    = k + VRNA_GQUAD_MIN_BOX_SIZE - 1;
+      minl  = MAX2(c0, minl);
+      c0    = j - 3;
+      maxl  = k + VRNA_GQUAD_MAX_BOX_SIZE + 1;
+      maxl  = MIN2(c0, maxl);
+      for(l = minl; l < maxl; l++){
+        if(S[l] != 3) continue;
+        if(c == energy + ggg[index[l] + k] + P->internal_loop[j - l - 1]){
+          *p = k; *q = l;
+          return 1;
+        }
+      }
+    }
+  }
+
+  for(k = i + 2;
+      k < j - VRNA_GQUAD_MIN_BOX_SIZE;
+      k++){
+    l1    = k - i - 1;
+    if(l1>MAXLOOP) break;
+    if(S[k] != 3) continue;
+    minl  = j - i + k - MAXLOOP - 2;
+    c0    = k + VRNA_GQUAD_MIN_BOX_SIZE - 1;
+    minl  = MAX2(c0, minl);
+    c0    = j - 1;
+    maxl  = k + VRNA_GQUAD_MAX_BOX_SIZE + 1;
+    maxl  = MIN2(c0, maxl);
+    for(l = minl; l < maxl; l++){
+      if(S[l] != 3) continue;
+      if(c == energy + ggg[index[l] + k] + P->internal_loop[l1 + j - l - 1]){
+        *p = k; *q = l;
+        return 1;
+      }
+    }
+  }
+
+  l = j - 1;
+  if(S[l] == 3)
+    for(k = i + 4;
+        k < j - VRNA_GQUAD_MIN_BOX_SIZE;
+        k++){
+      l1    = k - i - 1;
+      if(l1>MAXLOOP) break;
+      if(S[k] != 3) continue;
+      if(c == energy + ggg[index[l] + k] + P->internal_loop[l1]){
+        *p = k; *q = l;
+        return 1;
+      }
+    }
+
+  return 0;
+}
+
+/**
+ *  backtrack an interior loop like enclosed g-quadruplex
+ *  with closing pair (i,j) with underlying Lfold matrix
+ *
+ *  \param c      The total contribution the loop should resemble
+ *  \param i      position i of enclosing pair
+ *  \param j      position j of enclosing pair
+ *  \param type   base pair type of enclosing pair (must be reverse type)
+ *  \param S      integer encoded sequence
+ *  \param ggg    triangular matrix containing g-quadruplex contributions
+ *  \param p      here the 5' position of the gquad is stored
+ *  \param q      here the 3' position of the gquad is stored
+ *  \param P      the datastructure containing the precalculated contibutions
+ *
+ *  \return       1 on success, 0 if no gquad found
+ */
+INLINE  PRIVATE int backtrack_GQuad_IntLoop_L(int c,
+                                              int i,
+                                              int j,
+                                              int type,
+                                              short *S,
+                                              int **ggg,
+                                              int maxdist,
+                                              int *p,
+                                              int *q,
+                                              paramT *P){
+
+  int energy, dangles, k, l, maxl, minl, c0, l1;
+  short si, sj;
+
+  dangles = P->model_details.dangles;
+  si      = S[i + 1];
+  sj      = S[j - 1];
+  energy  = 0;
+
+  if(dangles == 2)
+    energy += P->mismatchI[type][si][sj];
+
+  if(type > 2)
+    energy += P->TerminalAU;
+
+  k = i + 1;
+  if(S[k] == 3){
+    if(k < j - VRNA_GQUAD_MIN_BOX_SIZE){
+      minl  = j - i + k - MAXLOOP - 2;
+      c0    = k + VRNA_GQUAD_MIN_BOX_SIZE - 1;
+      minl  = MAX2(c0, minl);
+      c0    = j - 3;
+      maxl  = k + VRNA_GQUAD_MAX_BOX_SIZE + 1;
+      maxl  = MIN2(c0, maxl);
+      for(l = minl; l < maxl; l++){
+        if(S[l] != 3) continue;
+        if(c == energy + ggg[k][l - k] + P->internal_loop[j - l - 1]){
+          *p = k; *q = l;
+          return 1;
+        }
+      }
+    }
+  }
+
+  for(k = i + 2;
+      k < j - VRNA_GQUAD_MIN_BOX_SIZE;
+      k++){
+    l1    = k - i - 1;
+    if(l1>MAXLOOP) break;
+    if(S[k] != 3) continue;
+    minl  = j - i + k - MAXLOOP - 2;
+    c0    = k + VRNA_GQUAD_MIN_BOX_SIZE - 1;
+    minl  = MAX2(c0, minl);
+    c0    = j - 1;
+    maxl  = k + VRNA_GQUAD_MAX_BOX_SIZE + 1;
+    maxl  = MIN2(c0, maxl);
+    for(l = minl; l < maxl; l++){
+      if(S[l] != 3) continue;
+      if(c == energy + ggg[k][l - k] + P->internal_loop[l1 + j - l - 1]){
+        *p = k; *q = l;
+        return 1;
+      }
+    }
+  }
+
+  l = j - 1;
+  if(S[l] == 3)
+    for(k = i + 4;
+        k < j - VRNA_GQUAD_MIN_BOX_SIZE;
+        k++){
+      l1    = k - i - 1;
+      if(l1>MAXLOOP) break;
+      if(S[k] != 3) continue;
+      if(c == energy + ggg[k][l - k] + P->internal_loop[l1]){
+        *p = k; *q = l;
+        return 1;
+      }
+    }
+
+  return 0;
+}
+
+INLINE PRIVATE
+int
+E_GQuad_IntLoop(int i,
+                int j,
+                int type,
+                short *S,
+                int *ggg,
+                int *index,
+                paramT *P){
+
+  int energy, ge, en1, en2, dangles, p, q, l1, minq, maxq;
+  int c0, c1, c2, c3, up, d53, d5, d3;
+  short si, sj;
+
+  dangles = P->model_details.dangles;
+  si      = S[i + 1];
+  sj      = S[j - 1];
+  energy  = 0;
+
+  if(dangles == 2)
+    energy += P->mismatchI[type][si][sj];
+
+  if(type > 2)
+    energy += P->TerminalAU;
+
+  ge = INF;
+
+  p = i + 1;
+  if(S[p] == 3){
+    if(p < j - VRNA_GQUAD_MIN_BOX_SIZE){
+      minq  = j - i + p - MAXLOOP - 2;
+      c0    = p + VRNA_GQUAD_MIN_BOX_SIZE - 1;
+      minq  = MAX2(c0, minq);
+      c0    = j - 3;
+      maxq  = p + VRNA_GQUAD_MAX_BOX_SIZE + 1;
+      maxq  = MIN2(c0, maxq);
+      for(q = minq; q < maxq; q++){
+        if(S[q] != 3) continue;
+        c0  = energy + ggg[index[q] + p] + P->internal_loop[j - q - 1];
+        ge  = MIN2(ge, c0);
+      }
+    }
+  }
+
+  for(p = i + 2;
+      p < j - VRNA_GQUAD_MIN_BOX_SIZE;
+      p++){
+    l1    = p - i - 1;
+    if(l1>MAXLOOP) break;
+    if(S[p] != 3) continue;
+    minq  = j - i + p - MAXLOOP - 2;
+    c0    = p + VRNA_GQUAD_MIN_BOX_SIZE - 1;
+    minq  = MAX2(c0, minq);
+    c0    = j - 1;
+    maxq  = p + VRNA_GQUAD_MAX_BOX_SIZE + 1;
+    maxq  = MIN2(c0, maxq);
+    for(q = minq; q < maxq; q++){
+      if(S[q] != 3) continue;
+      c0  = energy + ggg[index[q] + p] + P->internal_loop[l1 + j - q - 1];
+      ge   = MIN2(ge, c0);
+    }
+  }
+
+  q = j - 1;
+  if(S[q] == 3)
+    for(p = i + 4;
+        p < j - VRNA_GQUAD_MIN_BOX_SIZE;
+        p++){
+      l1    = p - i - 1;
+      if(l1>MAXLOOP) break;
+      if(S[p] != 3) continue;
+      c0  = energy + ggg[index[q] + p] + P->internal_loop[l1];
+      ge  = MIN2(ge, c0);
+    }
+
+#if 0
+  /* here comes the additional stuff for the odd dangle models */
+  if(dangles % 1){
+    en1 = energy + P->dangle5[type][si];
+    en2 = energy + P->dangle5[type][sj];
+    en3 = energy + P->mismatchI[type][si][sj];
+
+    /* first case with 5' dangle (i.e. j-1) onto enclosing pair */
+    p = i + 1;
+    if(S[p] == 3){
+      if(p < j - VRNA_GQUAD_MIN_BOX_SIZE){
+        minq  = j - i + p - MAXLOOP - 2;
+        c0    = p + VRNA_GQUAD_MIN_BOX_SIZE - 1;
+        minq  = MAX2(c0, minq);
+        c0    = j - 4;
+        maxq  = p + VRNA_GQUAD_MAX_BOX_SIZE + 1;
+        maxq  = MIN2(c0, maxq);
+        for(q = minq; q < maxq; q++){
+          if(S[q] != 3) continue;
+          c0  = en1 + ggg[index[q] + p] + P->internal_loop[j - q - 1];
+          ge  = MIN2(ge, c0);
+        }
+      }
+    }
+
+    for(p = i + 2; p < j - VRNA_GQUAD_MIN_BOX_SIZE; p++){
+      l1    = p - i - 1;
+      if(l1>MAXLOOP) break;
+      if(S[p] != 3) continue;
+      minq  = j - i + p - MAXLOOP - 2;
+      c0    = p + VRNA_GQUAD_MIN_BOX_SIZE - 1;
+      minq  = MAX2(c0, minq);
+      c0    = j - 2;
+      maxq  = p + VRNA_GQUAD_MAX_BOX_SIZE + 1;
+      maxq  = MIN2(c0, maxq);
+      for(q = minq; q < maxq; q++){
+        if(S[q] != 3) continue;
+        c0  = en1 + ggg[index[q] + p] + P->internal_loop[l1 + j - q - 1];
+        ge   = MIN2(ge, c0);
+      }
+    }
+
+    q = j - 2;
+    if(S[q] == 3)
+      for(p = i + 4; p < j - VRNA_GQUAD_MIN_BOX_SIZE; p++){
+        l1    = p - i - 1;
+        if(l1>MAXLOOP) break;
+        if(S[p] != 3) continue;
+        c0  = en1 + ggg[index[q] + p] + P->internal_loop[l1 + 1];
+        ge  = MIN2(ge, c0);
+      }
+
+    /* second case with 3' dangle (i.e. i+1) onto enclosing pair */
+
+  }
+#endif
+  return ge;
+}
+
+INLINE PRIVATE
+int *
+E_GQuad_IntLoop_exhaustive( int i,
+                            int j,
+                            int **p_p,
+                            int **q_p,
+                            int type,
+                            short *S,
+                            int *ggg,
+                            int threshold,
+                            int *index,
+                            paramT *P){
+
+  int energy, *ge, en1, en2, dangles, p, q, l1, minq, maxq;
+  int c0, c1, c2, c3, up, d53, d5, d3;
+  short si, sj;
+  int cnt = 0;
+
+  dangles = P->model_details.dangles;
+  si      = S[i + 1];
+  sj      = S[j - 1];
+  energy  = 0;
+
+  if(dangles == 2)
+    energy += P->mismatchI[type][si][sj];
+
+  if(type > 2)
+    energy += P->TerminalAU;
+
+  /* guess how many gquads are possible in interval [i+1,j-1] */
+  *p_p  = (int *)space(sizeof(int) * 256);
+  *q_p  = (int *)space(sizeof(int) * 256);
+  ge    = (int *)space(sizeof(int) * 256);
+
+  p = i + 1;
+  if(S[p] == 3){
+    if(p < j - VRNA_GQUAD_MIN_BOX_SIZE){
+      minq  = j - i + p - MAXLOOP - 2;
+      c0    = p + VRNA_GQUAD_MIN_BOX_SIZE - 1;
+      minq  = MAX2(c0, minq);
+      c0    = j - 3;
+      maxq  = p + VRNA_GQUAD_MAX_BOX_SIZE + 1;
+      maxq  = MIN2(c0, maxq);
+      for(q = minq; q < maxq; q++){
+        if(S[q] != 3) continue;
+        c0  = energy + ggg[index[q] + p] + P->internal_loop[j - q - 1];
+        if(c0 <= threshold){
+          ge[cnt]       = energy + P->internal_loop[j - q - 1];
+          (*p_p)[cnt]   = p;
+          (*q_p)[cnt++] = q;
+        }
+      }
+    }
+  }
+
+  for(p = i + 2;
+      p < j - VRNA_GQUAD_MIN_BOX_SIZE;
+      p++){
+    l1    = p - i - 1;
+    if(l1>MAXLOOP) break;
+    if(S[p] != 3) continue;
+    minq  = j - i + p - MAXLOOP - 2;
+    c0    = p + VRNA_GQUAD_MIN_BOX_SIZE - 1;
+    minq  = MAX2(c0, minq);
+    c0    = j - 1;
+    maxq  = p + VRNA_GQUAD_MAX_BOX_SIZE + 1;
+    maxq  = MIN2(c0, maxq);
+    for(q = minq; q < maxq; q++){
+      if(S[q] != 3) continue;
+      c0  = energy + ggg[index[q] + p] + P->internal_loop[l1 + j - q - 1];
+        if(c0 <= threshold){
+          ge[cnt]       = energy + P->internal_loop[l1 + j - q - 1];
+          (*p_p)[cnt]   = p;
+          (*q_p)[cnt++] = q;
+        }
+    }
+  }
+
+  q = j - 1;
+  if(S[q] == 3)
+    for(p = i + 4;
+        p < j - VRNA_GQUAD_MIN_BOX_SIZE;
+        p++){
+      l1    = p - i - 1;
+      if(l1>MAXLOOP) break;
+      if(S[p] != 3) continue;
+      c0  = energy + ggg[index[q] + p] + P->internal_loop[l1];
+        if(c0 <= threshold){
+          ge[cnt]       = energy + P->internal_loop[l1];
+          (*p_p)[cnt]   = p;
+          (*q_p)[cnt++] = q;
+        }
+    }
+
+
+  (*p_p)[cnt] = -1;
+
+  return ge;
+}
+
+INLINE PRIVATE
+int
+E_GQuad_IntLoop_L(int i,
+                  int j,
+                  int type,
+                  short *S,
+                  int **ggg,
+                  int maxdist,
+                  paramT *P){
+
+  int energy, ge, en1, en2, dangles, p, q, l1, minq, maxq;
+  int c0, c1, c2, c3, up, d53, d5, d3;
+  short si, sj;
+
+  dangles = P->model_details.dangles;
+  si      = S[i + 1];
+  sj      = S[j - 1];
+  energy  = 0;
+
+  if(dangles == 2)
+    energy += P->mismatchI[type][si][sj];
+
+  if(type > 2)
+    energy += P->TerminalAU;
+
+  ge = INF;
+
+  p = i + 1;
+  if(S[p] == 3){
+    if(p < j - VRNA_GQUAD_MIN_BOX_SIZE){
+      minq  = j - i + p - MAXLOOP - 2;
+      c0    = p + VRNA_GQUAD_MIN_BOX_SIZE - 1;
+      minq  = MAX2(c0, minq);
+      c0    = j - 3;
+      maxq  = p + VRNA_GQUAD_MAX_BOX_SIZE + 1;
+      maxq  = MIN2(c0, maxq);
+      for(q = minq; q < maxq; q++){
+        if(S[q] != 3) continue;
+        c0  = energy + ggg[p][q-p] + P->internal_loop[j - q - 1];
+        ge  = MIN2(ge, c0);
+      }
+    }
+  }
+
+  for(p = i + 2;
+      p < j - VRNA_GQUAD_MIN_BOX_SIZE;
+      p++){
+    l1    = p - i - 1;
+    if(l1>MAXLOOP) break;
+    if(S[p] != 3) continue;
+    minq  = j - i + p - MAXLOOP - 2;
+    c0    = p + VRNA_GQUAD_MIN_BOX_SIZE - 1;
+    minq  = MAX2(c0, minq);
+    c0    = j - 1;
+    maxq  = p + VRNA_GQUAD_MAX_BOX_SIZE + 1;
+    maxq  = MIN2(c0, maxq);
+    for(q = minq; q < maxq; q++){
+      if(S[q] != 3) continue;
+      c0  = energy + ggg[p][q - p] + P->internal_loop[l1 + j - q - 1];
+      ge   = MIN2(ge, c0);
+    }
+  }
+
+  q = j - 1;
+  if(S[q] == 3)
+    for(p = i + 4;
+        p < j - VRNA_GQUAD_MIN_BOX_SIZE;
+        p++){
+      l1    = p - i - 1;
+      if(l1>MAXLOOP) break;
+      if(S[p] != 3) continue;
+      c0  = energy + ggg[p][q - p] + P->internal_loop[l1];
+      ge  = MIN2(ge, c0);
+    }
+
+  return ge;
+}
+
+INLINE PRIVATE
+FLT_OR_DBL
+exp_E_GQuad_IntLoop(int i,
+                    int j,
+                    int type,
+                    short *S,
+                    FLT_OR_DBL *G,
+                    int *index,
+                    pf_paramT *pf){
+
+  int k, l, minl, maxl, u, r;
+  FLT_OR_DBL q, qe, *expintern;
+  short si, sj;
+
+  q         = 0;
+  si        = S[i + 1];
+  sj        = S[j - 1];
+  qe        = pf->expmismatchI[type][si][sj];
+  expintern = pf->expinternal;
+
+  if(type > 2)
+    qe *= pf->expTermAU;
+
+  k = i + 1;
+  if(S[k] == 3){
+    if(k < j - VRNA_GQUAD_MIN_BOX_SIZE){
+      minl  = j - i + k - MAXLOOP - 2;
+      u     = k + VRNA_GQUAD_MIN_BOX_SIZE - 1;
+      minl  = MAX2(u, minl);
+      u     = j - 3;
+      maxl  = k + VRNA_GQUAD_MAX_BOX_SIZE + 1;
+      maxl  = MIN2(u, maxl);
+      for(l = minl; l < maxl; l++){
+        if(S[l] != 3) continue;
+        if(G[index[k]-l] == 0.) continue;
+        q += qe * G[index[k]-l] * expintern[j - l - 1];
+      }
+    }
+  }
+
+
+  for(k = i + 2;
+      k <= j - VRNA_GQUAD_MIN_BOX_SIZE;
+      k++){
+    u = k - i - 1;
+    if(u > MAXLOOP) break;
+    if(S[k] != 3) continue;
+    minl  = j - i + k - MAXLOOP - 2;
+    r     = k + VRNA_GQUAD_MIN_BOX_SIZE - 1;
+    minl  = MAX2(r, minl);
+    maxl  = k + VRNA_GQUAD_MAX_BOX_SIZE + 1;
+    r     = j - 1;
+    maxl  = MIN2(r, maxl);
+    for(l = minl; l < maxl; l++){
+      if(S[l] != 3) continue;
+      if(G[index[k]-l] == 0.) continue;
+      q += qe * G[index[k]-l] * expintern[u + j - l - 1];
+    }
+  }
+
+  l = j - 1;
+  if(S[l] == 3)
+    for(k = i + 4; k < j - VRNA_GQUAD_MIN_BOX_SIZE; k++){
+      u    = k - i - 1;
+      if(u>MAXLOOP) break;
+      if(S[k] != 3) continue;
+      if(G[index[k]-l] == 0.) continue;
+      q += qe * G[index[k]-l] * expintern[u];
+    }
+
+  return q;
+}
+
+#endif
diff --git a/include/intl11.h b/include/intl11.h
new file mode 100644
--- /dev/null
+++ b/include/intl11.h
@@ -0,0 +1,393 @@
+PUBLIC int int11_37[NBPAIRS+1][NBPAIRS+1][5][5] =
+{{{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ }
+,{{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{    90,    90,    50,    50,    50}
+  ,{    90,    90,    50,    50,    50}
+  ,{    50,    50,    50,    50,    50}
+  ,{    50,    50,    50,  -140,    50}
+  ,{    50,    50,    50,    50,    40}
+  }
+ ,{{    90,    90,    50,    50,    60}
+  ,{    90,    90,   -40,    50,    50}
+  ,{    60,    30,    50,    50,    60}
+  ,{    50,   -10,    50,  -220,    50}
+  ,{    50,    50,     0,    50,   -10}
+  }
+ ,{{   120,   120,   120,   120,   120}
+  ,{   120,    60,    50,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   -20,   120,  -140,   120}
+  ,{   120,   120,   100,   120,   110}
+  }
+ ,{{   220,   220,   170,   120,   120}
+  ,{   220,   220,   130,   120,   120}
+  ,{   170,   120,   170,   120,   120}
+  ,{   120,   120,   120,  -140,   120}
+  ,{   120,   120,   120,   120,   110}
+  }
+ ,{{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,  -140,   120}
+  ,{   120,   120,   120,   120,    80}
+  }
+ ,{{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,  -140,   120}
+  ,{   120,   120,   120,   120,   120}
+  }
+ ,{{   220,   220,   170,   120,   120}
+  ,{   220,   220,   130,   120,   120}
+  ,{   170,   120,   170,   120,   120}
+  ,{   120,   120,   120,  -140,   120}
+  ,{   120,   120,   120,   120,   120}
+  }
+ }
+,{{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{    90,    90,    60,    50,    50}
+  ,{    90,    90,    30,   -10,    50}
+  ,{    50,   -40,    50,    50,     0}
+  ,{    50,    50,    50,  -220,    50}
+  ,{    60,    50,    60,    50,   -10}
+  }
+ ,{{    80,    80,    50,    50,    50}
+  ,{    80,    80,    50,    50,    50}
+  ,{    50,    50,    50,    50,    50}
+  ,{    50,    50,    50,  -230,    50}
+  ,{    50,    50,    50,    50,   -60}
+  }
+ ,{{   190,   190,   120,   150,   150}
+  ,{   190,   190,   120,   150,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,  -140,   120}
+  ,{   150,   120,   120,   120,   150}
+  }
+ ,{{   160,   160,   120,   120,   120}
+  ,{   160,   160,   120,   100,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,  -140,   120}
+  ,{   120,   120,   120,   120,    70}
+  }
+ ,{{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,  -140,   120}
+  ,{   120,   120,   120,   120,    80}
+  }
+ ,{{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,  -140,   120}
+  ,{   120,   120,   120,   120,   120}
+  }
+ ,{{   190,   190,   120,   150,   150}
+  ,{   190,   190,   120,   150,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,  -140,   120}
+  ,{   150,   120,   120,   120,   150}
+  }
+ }
+,{{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   120,   120,   120,   120,   120}
+  ,{   120,    60,   120,   -20,   120}
+  ,{   120,    50,   120,   120,   100}
+  ,{   120,   120,   120,  -140,   120}
+  ,{   120,   120,   120,   120,   110}
+  }
+ ,{{   190,   190,   120,   120,   150}
+  ,{   190,   190,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   150,   150,   120,  -140,   120}
+  ,{   150,   120,   120,   120,   150}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   120}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   160}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   120}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   160}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   160}
+  }
+ }
+,{{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   220,   220,   170,   120,   120}
+  ,{   220,   220,   120,   120,   120}
+  ,{   170,   130,   170,   120,   120}
+  ,{   120,   120,   120,  -140,   120}
+  ,{   120,   120,   120,   120,   110}
+  }
+ ,{{   160,   160,   120,   120,   120}
+  ,{   160,   160,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   100,   120,  -140,   120}
+  ,{   120,   120,   120,   120,    70}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   160}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   190}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   160}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   190}
+  }
+ ,{{   220,   220,   190,   190,   190}
+  ,{   220,   220,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   190}
+  }
+ }
+,{{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,  -140,   120}
+  ,{   120,   120,   120,   120,    80}
+  }
+ ,{{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,  -140,   120}
+  ,{   120,   120,   120,   120,    80}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   120}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   160}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   120}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   150}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   160}
+  }
+ }
+,{{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,  -140,   120}
+  ,{   120,   120,   120,   120,   120}
+  }
+ ,{{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   120,   120,   120,  -140,   120}
+  ,{   120,   120,   120,   120,   120}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   160}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   190}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   150}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   170}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   190}
+  }
+ }
+,{{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   220,   220,   170,   120,   120}
+  ,{   220,   220,   120,   120,   120}
+  ,{   170,   130,   170,   120,   120}
+  ,{   120,   120,   120,  -140,   120}
+  ,{   120,   120,   120,   120,   120}
+  }
+ ,{{   190,   190,   120,   120,   150}
+  ,{   190,   190,   120,   120,   120}
+  ,{   120,   120,   120,   120,   120}
+  ,{   150,   150,   120,  -140,   120}
+  ,{   150,   120,   120,   120,   150}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   160}
+  }
+ ,{{   220,   220,   190,   190,   190}
+  ,{   220,   220,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   190}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   160}
+  }
+ ,{{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   190}
+  }
+ ,{{   220,   220,   190,   190,   190}
+  ,{   220,   220,   190,   190,   190}
+  ,{   190,   190,   190,   190,   190}
+  ,{   190,   190,   190,   -70,   190}
+  ,{   190,   190,   190,   190,   190}
+  }
+ }};
diff --git a/include/intl11dH.h b/include/intl11dH.h
new file mode 100644
--- /dev/null
+++ b/include/intl11dH.h
@@ -0,0 +1,393 @@
+PUBLIC int int11_dH[NBPAIRS+1][NBPAIRS+1][5][5] =
+{{{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ }
+,{{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{ -1050, -1050, -1050, -1050, -1050}
+  ,{ -1050, -1050, -1050, -1050, -1050}
+  ,{ -1050, -1050, -1050, -1050, -1050}
+  ,{ -1050, -1050, -1050, -1840, -1050}
+  ,{ -1050, -1050, -1050, -1050, -1050}
+  }
+ ,{{ -1050, -1050, -1050, -1050, -1050}
+  ,{ -1050, -1050, -1050, -1050, -1050}
+  ,{ -1050, -1050, -1050, -1050, -1050}
+  ,{ -1050, -1050, -1050, -1840, -1050}
+  ,{ -1050, -1050, -1050, -1050, -1390}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550,  -890}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550,  -890}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  }
+ }
+,{{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{ -1050, -1050, -1050, -1050, -1050}
+  ,{ -1050, -1050, -1050, -1050, -1050}
+  ,{ -1050, -1050, -1050, -1050, -1050}
+  ,{ -1050, -1050, -1050, -1840, -1050}
+  ,{ -1050, -1050, -1050, -1050, -1390}
+  }
+ ,{{ -1050, -1050, -1050, -1050, -1050}
+  ,{ -1050, -1050, -1050, -1050, -1050}
+  ,{ -1050, -1050, -1050, -1050, -1050}
+  ,{ -1050, -1050, -1050, -1840, -1050}
+  ,{ -1050, -1050, -1050, -1050, -1730}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550, -1230}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550,  -890}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550, -1230}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550,  -890}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550,  -890}
+  }
+ }
+,{{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550,  -890}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550, -1230}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,  -730}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,  -390}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,  -730}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,  -390}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,  -390}
+  }
+ }
+,{{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550,  -890}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,  -390}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,  -390}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  }
+ }
+,{{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550,  -890}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550, -1230}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,  -730}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,  -390}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,  -730}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,  -390}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,  -390}
+  }
+ }
+,{{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550,  -890}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,  -390}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,  -390}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  }
+ }
+,{{{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  ,{   INF,   INF,   INF,   INF,   INF}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  }
+ ,{{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550,  -550,  -550}
+  ,{  -550,  -550,  -550, -1340,  -550}
+  ,{  -550,  -550,  -550,  -550,  -890}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,  -390}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,  -390}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  }
+ ,{{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  ,{   -50,   -50,   -50,  -830,   -50}
+  ,{   -50,   -50,   -50,   -50,   -50}
+  }
+ }};
diff --git a/include/intl21.h b/include/intl21.h
new file mode 100644
--- /dev/null
+++ b/include/intl21.h
@@ -0,0 +1,1993 @@
+PUBLIC int int21_37[NBPAIRS+1][NBPAIRS+1][5][5][5] =
+{{{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ }
+,{{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   }
+  ,{{   230,   230,   230,   110,   230}
+   ,{   230,   230,   230,   110,   230}
+   ,{   230,   230,   230,   110,   230}
+   ,{   110,   110,   110,   110,   110}
+   ,{   230,   230,   230,   110,   230}
+   }
+  ,{{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   }
+  ,{{   230,   110,   230,   110,   230}
+   ,{   110,   110,   110,   110,   110}
+   ,{   230,   110,   230,   110,   230}
+   ,{   110,   110,   110,   110,   110}
+   ,{   230,   110,   230,   110,   230}
+   }
+  ,{{   230,   230,   230,   230,   150}
+   ,{   230,   230,   230,   230,   150}
+   ,{   230,   230,   230,   230,   150}
+   ,{   230,   230,   230,   230,   150}
+   ,{   150,   150,   150,   150,   150}
+   }
+  }
+ ,{{{   250,   250,   250,   230,   230}
+   ,{   250,   250,   230,   230,   230}
+   ,{   250,   230,   250,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   250,   250,   230,   230,   230}
+   }
+  ,{{   250,   250,   230,   110,   230}
+   ,{   250,   250,   230,   110,   230}
+   ,{   230,   230,   170,   110,   230}
+   ,{   110,    80,   110,   110,   110}
+   ,{   230,   230,   230,   110,   230}
+   }
+  ,{{   250,   250,   250,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   250,   230,   250,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   250,   250,   230,   230,   230}
+   }
+  ,{{   230,   170,   230,   110,   230}
+   ,{   230,   170,   230,    80,   230}
+   ,{   230,   110,   230,   110,   230}
+   ,{   120,   120,   110,   110,   110}
+   ,{   230,   110,   230,   110,   230}
+   }
+  ,{{   230,   230,   230,   230,   150}
+   ,{   230,   230,   230,   230,   150}
+   ,{   230,   230,   220,   230,   150}
+   ,{   230,   230,   230,   230,   150}
+   ,{   170,   150,   170,   150,   140}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   190,   300}
+   ,{   300,   300,   300,   190,   300}
+   ,{   300,   300,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   300,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   190,   300}
+   ,{   300,   300,   300,   190,   300}
+   ,{   300,   300,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   300,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   190,   300}
+   ,{   300,   300,   300,   190,   300}
+   ,{   300,   300,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   300,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   190,   300}
+   ,{   300,   300,   300,   190,   300}
+   ,{   300,   300,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   300,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   190,   300}
+   ,{   300,   300,   300,   190,   300}
+   ,{   300,   300,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   300,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ }
+,{{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   250,   250,   230,   230,   230}
+   ,{   250,   250,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   }
+  ,{{   250,   250,   230,   230,   230}
+   ,{   250,   250,   230,   210,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   120,   120,   110,   110,   110}
+   ,{   230,   230,   230,   230,   230}
+   }
+  ,{{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   230,   230,   190,   230,   230}
+   }
+  ,{{   230,   110,   230,   110,   230}
+   ,{   110,   110,   110,   110,   110}
+   ,{   230,   110,   230,   110,   230}
+   ,{   110,   110,   110,   110,   110}
+   ,{   230,   110,   230,   110,   230}
+   }
+  ,{{   230,   230,   230,   230,   150}
+   ,{   230,   230,   230,   230,   150}
+   ,{   230,   230,   230,   230,   150}
+   ,{   230,   230,   230,   230,   150}
+   ,{   150,   150,   150,   150,   150}
+   }
+  }
+ ,{{{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   }
+  ,{{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   110,   110,   110,   110,   110}
+   ,{   230,   230,   230,   230,   230}
+   }
+  ,{{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   ,{   230,   230,   230,   230,   230}
+   }
+  ,{{   230,   110,   230,   110,   230}
+   ,{   230,   110,   230,   110,   230}
+   ,{   230,   110,   230,   110,   230}
+   ,{   110,   110,   110,   110,   110}
+   ,{   230,   110,   230,   110,   230}
+   }
+  ,{{   230,   230,   230,   230,   150}
+   ,{   230,   230,   230,   230,   150}
+   ,{   230,   230,   230,   230,   150}
+   ,{   230,   230,   230,   230,   150}
+   ,{   150,   150,   150,   150,   150}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   250,   300,   210,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   190,   120,   190,   190,   190}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   190,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ }
+,{{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   250,   300,   210,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   190,   120,   190,   190,   190}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   190,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   250,   370,   210,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   260,   120,   260,   260,   260}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   190,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ }
+,{{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   190,   300}
+   ,{   300,   300,   300,   190,   300}
+   ,{   300,   300,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   300,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   190,   300}
+   ,{   300,   300,   300,   190,   300}
+   ,{   300,   300,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   300,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ }
+,{{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ }
+,{{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   190,   300}
+   ,{   300,   300,   300,   190,   300}
+   ,{   300,   300,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   300,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   190,   300}
+   ,{   300,   300,   300,   190,   300}
+   ,{   300,   300,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   300,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   370,   370,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ }
+,{{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ ,{{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  ,{{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   300,   190,   300,   190,   300}
+   ,{   190,   190,   190,   190,   190}
+   ,{   300,   190,   300,   190,   300}
+   }
+  ,{{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   300,   300,   300,   300,   220}
+   ,{   220,   220,   220,   220,   220}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ ,{{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   ,{   370,   370,   370,   370,   370}
+   }
+  ,{{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   370,   260,   370,   260,   370}
+   ,{   260,   260,   260,   260,   260}
+   ,{   370,   260,   370,   260,   370}
+   }
+  ,{{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   370,   370,   370,   370,   300}
+   ,{   300,   300,   300,   300,   300}
+   }
+  }
+ }};
diff --git a/include/intl21dH.h b/include/intl21dH.h
new file mode 100644
--- /dev/null
+++ b/include/intl21dH.h
@@ -0,0 +1,1993 @@
+PUBLIC int int21_dH[NBPAIRS+1][NBPAIRS+1][5][5][5] =
+{{{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ }
+,{{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   }
+  ,{{   350,   350,   350,  -230,   350}
+   ,{   350,   350,   350,  -230,   350}
+   ,{   350,   350,   350,  -230,   350}
+   ,{  -230,  -230,  -230,  -230,  -230}
+   ,{   350,   350,   350,  -230,   350}
+   }
+  ,{{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   }
+  ,{{   350,  -230,   350,  -230,   350}
+   ,{  -230,  -230,  -230,  -230,  -230}
+   ,{   350,  -230,   350,  -230,   350}
+   ,{  -230,  -230,  -230,  -230,  -230}
+   ,{   350,  -230,   350,  -230,   350}
+   }
+  ,{{   350,   350,   350,   350,  -670}
+   ,{   350,   350,   350,   350,  -670}
+   ,{   350,   350,   350,   350,  -670}
+   ,{   350,   350,   350,   350,  -670}
+   ,{  -670,  -670,  -670,  -670,  -670}
+   }
+  }
+ ,{{{   780,   640,   780,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   780,   350,   780,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   640,   640,   350,   350,   350}
+   }
+  ,{{   350,   350,   350,   250,   350}
+   ,{   350,   260,   350,   250,   350}
+   ,{   350,   350,  -250,  -230,   350}
+   ,{  -230,  -230,  -230,  -230,  -230}
+   ,{   350,   350,   350,  -230,   350}
+   }
+  ,{{   780,   640,   780,   350,   350}
+   ,{   350,   160,   350,   350,   350}
+   ,{   780,   350,   780,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   640,   640,   350,   350,   350}
+   }
+  ,{{   350,  -160,   350,  -230,   350}
+   ,{   350,  -160,   350,  -410,   350}
+   ,{   350,  -230,   350,  -230,   350}
+   ,{  -230,  -310,  -230,  -230,  -230}
+   ,{   350,  -230,   350,  -230,   350}
+   }
+  ,{{   580,   350,   580,   350,  -580}
+   ,{   350,   350,   350,   350,  -670}
+   ,{   580,   350,   580,   350,  -580}
+   ,{   350,   350,   350,   350,  -670}
+   ,{  -670,  -670,  -690,  -670,  -700}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   280,   850}
+   ,{   850,   850,   850,   280,   850}
+   ,{   850,   850,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   850,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   280,   850}
+   ,{   850,   850,   850,   280,   850}
+   ,{   850,   850,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   850,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   280,   850}
+   ,{   850,   850,   850,   280,   850}
+   ,{   850,   850,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   850,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   280,   850}
+   ,{   850,   850,   850,   280,   850}
+   ,{   850,   850,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   850,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   280,   850}
+   ,{   850,   850,   850,   280,   850}
+   ,{   850,   850,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   850,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ }
+,{{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   690,   690,   350,   350,   350}
+   ,{   690,   690,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   }
+  ,{{   690,   690,   350,   350,   350}
+   ,{   690,   690,   350,   240,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{  -230,  -500,  -230,  -230,  -230}
+   ,{   350,   350,   350,   350,   350}
+   }
+  ,{{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   350,   350,   130,   350,   350}
+   }
+  ,{{   350,  -230,   350,  -230,   350}
+   ,{  -230,  -230,  -230,  -230,  -230}
+   ,{   350,  -230,   350,  -230,   350}
+   ,{  -230,  -230,  -230,  -230,  -230}
+   ,{   350,  -230,   350,  -230,   350}
+   }
+  ,{{   350,   350,   350,   350,  -670}
+   ,{   350,   350,   350,   350,  -670}
+   ,{   350,   350,   350,   350,  -670}
+   ,{   350,   350,   350,   350,  -670}
+   ,{  -670,  -670,  -670,  -670,  -670}
+   }
+  }
+ ,{{{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   }
+  ,{{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{  -230,  -230,  -230,  -230,  -230}
+   ,{   350,   350,   350,   350,   350}
+   }
+  ,{{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   ,{   350,   350,   350,   350,   350}
+   }
+  ,{{   350,  -230,   350,  -230,   350}
+   ,{   350,  -230,   350,  -230,   350}
+   ,{   350,  -230,   350,  -230,   350}
+   ,{  -230,  -230,  -230,  -230,  -230}
+   ,{   350,  -230,   350,  -230,   350}
+   }
+  ,{{   350,   350,   350,   350,  -670}
+   ,{   350,   350,   350,   350,  -670}
+   ,{   350,   350,   350,   350,  -670}
+   ,{   350,   350,   350,   350,  -670}
+   ,{  -670,  -670,  -670,  -670,  -670}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   690,   850,   240,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   280,  -500,   280,   280,   280}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   130,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ }
+,{{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   690,   850,   240,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   280,  -500,   280,   280,   280}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   130,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,   690,  1350,   240,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{   780,  -500,   780,   780,   780}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,   130,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ }
+,{{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   280,   850}
+   ,{   850,   850,   850,   280,   850}
+   ,{   850,   850,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   850,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   280,   850}
+   ,{   850,   850,   850,   280,   850}
+   ,{   850,   850,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   850,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ }
+,{{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ }
+,{{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   280,   850}
+   ,{   850,   850,   850,   280,   850}
+   ,{   850,   850,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   850,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   280,   850}
+   ,{   850,   850,   850,   280,   850}
+   ,{   850,   850,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   850,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{  1350,  1350,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ }
+,{{{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  ,{{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   ,{   INF,   INF,   INF,   INF,   INF}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ ,{{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   ,{   850,   850,   850,   850,   850}
+   }
+  ,{{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   850,   280,   850,   280,   850}
+   ,{   280,   280,   280,   280,   280}
+   ,{   850,   280,   850,   280,   850}
+   }
+  ,{{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{   850,   850,   850,   850,  -160}
+   ,{  -160,  -160,  -160,  -160,  -160}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ ,{{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   ,{  1350,  1350,  1350,  1350,  1350}
+   }
+  ,{{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{  1350,   780,  1350,   780,  1350}
+   ,{   780,   780,   780,   780,   780}
+   ,{  1350,   780,  1350,   780,  1350}
+   }
+  ,{{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{  1350,  1350,  1350,  1350,   340}
+   ,{   340,   340,   340,   340,   340}
+   }
+  }
+ }};
diff --git a/include/intl22.h b/include/intl22.h
new file mode 100644
--- /dev/null
+++ b/include/intl22.h
@@ -0,0 +1,9993 @@
+PUBLIC int int22_37[NBPAIRS+1][NBPAIRS+1][5][5][5][5] =
+{{{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ }
+,{{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   200,   160,   200,   150,   200}
+    ,{   200,   160,   200,   150,   200}
+    ,{   180,   140,   180,   140,   180}
+    ,{   200,   160,   200,   150,   200}
+    ,{   170,   130,   170,   120,   170}
+    }
+   ,{{   160,   120,   160,   110,   160}
+    ,{   160,   120,   160,   110,   160}
+    ,{   150,   110,   150,   110,   150}
+    ,{   110,    20,   110,    20,    90}
+    ,{   150,   110,   150,   110,   150}
+    }
+   ,{{   200,   160,   200,   150,   200}
+    ,{   200,   160,   200,   150,   200}
+    ,{   180,   140,   180,   140,   180}
+    ,{   200,   160,   200,   150,   200}
+    ,{   170,   130,   170,   120,   170}
+    }
+   ,{{   150,   110,   150,   110,   150}
+    ,{   110,    20,   110,    20,    90}
+    ,{   150,   110,   150,   110,   150}
+    ,{    80,     0,    10,    80,    20}
+    ,{   150,   110,   150,   110,   150}
+    }
+   ,{{   200,   160,   200,   150,   200}
+    ,{   200,   160,   200,   150,   200}
+    ,{   170,   130,   170,   120,   170}
+    ,{   200,   160,   200,   150,   200}
+    ,{   100,   100,    80,    30,    80}
+    }
+   }
+  ,{{{   200,   160,   200,   110,   200}
+    ,{   200,   160,   200,    60,   200}
+    ,{   180,   140,   180,   110,   180}
+    ,{   200,   160,   200,    60,   200}
+    ,{   170,   130,   170,    90,   170}
+    }
+   ,{{   160,   120,   160,    20,   160}
+    ,{   160,   120,   160,    20,   160}
+    ,{   150,   110,   150,    20,   150}
+    ,{    60,    20,    60,   -70,    60}
+    ,{   150,   110,   150,    20,   150}
+    }
+   ,{{   200,   160,   200,   110,   200}
+    ,{   200,   160,   200,    60,   200}
+    ,{   180,   140,   180,   110,   180}
+    ,{   200,   160,   200,    60,   200}
+    ,{   170,   130,   170,    90,   170}
+    }
+   ,{{   150,   110,   150,    20,   150}
+    ,{    60,    20,    60,   -70,    60}
+    ,{   150,   110,   150,    20,   150}
+    ,{    10,   -30,    10,     0,    10}
+    ,{   150,   110,   150,    20,   150}
+    }
+   ,{{   200,   160,   200,    90,   200}
+    ,{   200,   160,   200,    60,   200}
+    ,{   170,   130,   170,    90,   170}
+    ,{   200,   160,   200,    60,   200}
+    ,{   100,   100,    80,   -50,    80}
+    }
+   }
+  ,{{{   180,   150,   180,   150,   170}
+    ,{   180,   150,   180,   150,   170}
+    ,{   170,   140,   170,   140,   150}
+    ,{   180,   150,   180,   150,   170}
+    ,{   150,   120,   150,   120,   140}
+    }
+   ,{{   140,   110,   140,   110,   130}
+    ,{   140,   110,   140,   110,   130}
+    ,{   140,   110,   140,   110,   120}
+    ,{   110,    20,   110,    20,    90}
+    ,{   140,   110,   140,   110,   120}
+    }
+   ,{{   180,   150,   180,   150,   170}
+    ,{   180,   150,   180,   150,   170}
+    ,{   170,   140,   170,   140,   150}
+    ,{   180,   150,   180,   150,   170}
+    ,{   150,   120,   150,   120,   140}
+    }
+   ,{{   140,   110,   140,   110,   120}
+    ,{   110,    20,   110,    20,    90}
+    ,{   140,   110,   140,   110,   120}
+    ,{   -10,   -40,   -10,   -40,   -20}
+    ,{   140,   110,   140,   110,   120}
+    }
+   ,{{   180,   150,   180,   150,   170}
+    ,{   180,   150,   180,   150,   170}
+    ,{   150,   120,   150,   120,   140}
+    ,{   180,   150,   180,   150,   170}
+    ,{    60,    30,    60,    30,    50}
+    }
+   }
+  ,{{{   200,   110,   200,    80,   200}
+    ,{   200,    60,   200,    10,   200}
+    ,{   180,   110,   180,   -10,   180}
+    ,{   200,    60,   200,    80,   200}
+    ,{   170,    90,   170,    20,   170}
+    }
+   ,{{   160,    20,   160,     0,   160}
+    ,{   160,    20,   160,   -30,   160}
+    ,{   150,    20,   150,   -40,   150}
+    ,{    60,   -70,    60,     0,    60}
+    ,{   150,    20,   150,   -40,   150}
+    }
+   ,{{   200,   110,   200,    10,   200}
+    ,{   200,    60,   200,    10,   200}
+    ,{   180,   110,   180,   -10,   180}
+    ,{   200,    60,   200,    10,   200}
+    ,{   170,    90,   170,   -20,   170}
+    }
+   ,{{   150,    20,   150,    80,   150}
+    ,{    60,   -70,    60,     0,    60}
+    ,{   150,    20,   150,   -40,   150}
+    ,{    80,     0,    10,    80,    10}
+    ,{   150,    20,   150,   -40,   150}
+    }
+   ,{{   200,    90,   200,    20,   200}
+    ,{   200,    60,   200,    10,   200}
+    ,{   170,    90,   170,   -20,   170}
+    ,{   200,    60,   200,    10,   200}
+    ,{    80,   -50,    80,    20,    80}
+    }
+   }
+  ,{{{   170,   150,   170,   150,   100}
+    ,{   170,   150,   170,   150,   100}
+    ,{   150,   140,   150,   140,    60}
+    ,{   170,   150,   170,   150,    80}
+    ,{   140,   120,   140,   120,    50}
+    }
+   ,{{   130,   110,   130,   110,   100}
+    ,{   130,   110,   130,   110,   100}
+    ,{   120,   110,   120,   110,    30}
+    ,{    90,    20,    90,    20,   -50}
+    ,{   120,   110,   120,   110,    30}
+    }
+   ,{{   170,   150,   170,   150,    80}
+    ,{   170,   150,   170,   150,    80}
+    ,{   150,   140,   150,   140,    60}
+    ,{   170,   150,   170,   150,    80}
+    ,{   140,   120,   140,   120,    50}
+    }
+   ,{{   120,   110,   120,   110,    30}
+    ,{    90,    20,    90,    20,   -50}
+    ,{   120,   110,   120,   110,    30}
+    ,{    20,   -40,   -20,   -40,    20}
+    ,{   120,   110,   120,   110,    30}
+    }
+   ,{{   170,   150,   170,   150,    80}
+    ,{   170,   150,   170,   150,    80}
+    ,{   140,   120,   140,   120,    50}
+    ,{   170,   150,   170,   150,    80}
+    ,{    50,    30,    50,    30,   -40}
+    }
+   }
+  }
+ ,{{{{   220,   150,   220,   140,   170}
+    ,{   220,   130,   220,   130,   170}
+    ,{   150,   110,   150,   110,   150}
+    ,{   140,   100,   140,   100,   140}
+    ,{   170,   150,   150,   140,   170}
+    }
+   ,{{   220,   130,   220,   130,   170}
+    ,{   220,   130,   220,   130,   170}
+    ,{   150,   110,   150,   100,   150}
+    ,{    70,   -30,    70,   -70,    50}
+    ,{   150,   110,   150,   100,   150}
+    }
+   ,{{   190,   110,   190,   100,   170}
+    ,{   190,   110,   190,   100,   140}
+    ,{   150,   110,   150,   100,   150}
+    ,{   140,   100,   140,   100,   140}
+    ,{   170,   110,   150,   100,   170}
+    }
+   ,{{   150,   110,   150,   100,   150}
+    ,{   140,    70,    70,   -10,   140}
+    ,{   150,   110,   150,   100,   150}
+    ,{    80,   -30,    10,    80,    70}
+    ,{   150,   110,   150,   100,   150}
+    }
+   ,{{   150,   150,   150,   140,   150}
+    ,{   140,   100,   140,   100,   140}
+    ,{   150,   110,   150,   110,   150}
+    ,{   140,   100,   140,   100,   140}
+    ,{   150,   150,    70,   140,    70}
+    }
+   }
+  ,{{{   170,   150,   150,    90,   170}
+    ,{   170,   130,   140,    10,   170}
+    ,{   150,   110,   150,    80,   150}
+    ,{   140,   100,   140,    10,   140}
+    ,{   150,   150,   150,    90,   150}
+    }
+   ,{{   170,   130,   150,    10,   170}
+    ,{   170,   130,    60,     0,   170}
+    ,{   150,   110,   150,   -70,   150}
+    ,{    10,   -30,    10,  -160,   -30}
+    ,{   150,   110,   150,    10,   150}
+    }
+   ,{{   150,   110,   150,    70,   150}
+    ,{   140,   100,    50,  -100,   140}
+    ,{   150,   110,   150,   -60,   150}
+    ,{   140,   100,   140,    10,   140}
+    ,{   150,   110,   150,    70,   150}
+    }
+   ,{{   150,   110,   150,    10,   150}
+    ,{    40,    40,    30,   -70,    30}
+    ,{   150,   110,   150,    10,   150}
+    ,{    10,   -30,   -30,     0,    10}
+    ,{   150,   110,   150,    10,   150}
+    }
+   ,{{   150,   150,   150,    90,   150}
+    ,{   140,   100,   140,    10,   140}
+    ,{   150,   110,   150,    80,   150}
+    ,{   140,   100,   140,    10,   140}
+    ,{   150,   150,     0,    90,    70}
+    }
+   }
+  ,{{{   220,   130,   220,   130,   170}
+    ,{   220,   130,   220,   130,   140}
+    ,{   140,   110,   140,   110,   120}
+    ,{   130,   100,   130,   100,   110}
+    ,{   170,   100,   130,   100,   170}
+    }
+   ,{{   220,   130,   220,   130,   140}
+    ,{   220,   130,   220,   130,   140}
+    ,{   130,   100,   130,   100,   120}
+    ,{    70,   -70,    70,   -70,     0}
+    ,{   130,   100,   130,   100,   120}
+    }
+   ,{{   190,   110,   190,   100,   170}
+    ,{   190,   110,   190,   100,   110}
+    ,{   130,   100,   130,   100,   120}
+    ,{   130,   100,   130,   100,   110}
+    ,{   170,   100,   130,   100,   170}
+    }
+   ,{{   130,   100,   130,   100,   120}
+    ,{    70,    70,    70,   -10,    60}
+    ,{   130,   100,   130,   100,   120}
+    ,{    20,   -40,   -10,   -40,    20}
+    ,{   130,   100,   130,   100,   120}
+    }
+   ,{{   140,   110,   140,   110,   120}
+    ,{   130,   100,   130,   100,   110}
+    ,{   140,   110,   140,   110,   120}
+    ,{   130,   100,   130,   100,   110}
+    ,{    30,   -20,   -10,    30,    20}
+    }
+   }
+  ,{{{   170,    90,   170,   140,   170}
+    ,{   170,    70,   170,   -10,   170}
+    ,{   150,    80,   150,   -40,   150}
+    ,{   140,    10,   140,    80,   140}
+    ,{   150,    90,   150,   140,   150}
+    }
+   ,{{   170,    10,   170,   -10,   170}
+    ,{   170,   -20,   170,   -10,   170}
+    ,{   150,   -40,   150,   -40,   150}
+    ,{   -30,  -170,   -30,   -90,   -30}
+    ,{   150,    10,   150,   -40,   150}
+    }
+   ,{{   150,    70,   150,    20,   150}
+    ,{   140,    70,   140,   -50,   140}
+    ,{   150,    70,   150,   -40,   150}
+    ,{   140,    10,   140,   -50,   140}
+    ,{   150,    70,   150,    20,   150}
+    }
+   ,{{   150,    10,   150,    80,   150}
+    ,{    30,   -50,    30,   -30,    30}
+    ,{   150,    10,   150,   -40,   150}
+    ,{    80,   -30,    10,    80,    10}
+    ,{   150,    10,   150,   -40,   150}
+    }
+   ,{{   150,    90,   150,   140,   150}
+    ,{   140,    10,   140,   -50,   140}
+    ,{   150,    80,   150,   -50,   150}
+    ,{   140,    10,   140,   -50,   140}
+    ,{   140,    90,    70,   140,    70}
+    }
+   }
+  ,{{{   140,   130,   140,   130,   140}
+    ,{   140,   130,   140,   130,   140}
+    ,{   120,   110,   120,   110,    30}
+    ,{   110,   100,   110,   100,    70}
+    ,{   120,   100,   120,   100,    30}
+    }
+   ,{{   140,   130,   140,   130,   140}
+    ,{   140,   130,   140,   130,   140}
+    ,{   120,   100,   120,   100,    30}
+    ,{    50,   -70,     0,   -70,    50}
+    ,{   120,   100,   120,   100,    30}
+    }
+   ,{{   120,   100,   120,   100,    30}
+    ,{   110,   100,   110,   100,    30}
+    ,{   120,   100,   120,   100,    30}
+    ,{   110,   100,   110,   100,    20}
+    ,{   120,   100,   120,   100,    30}
+    }
+   ,{{   140,   100,   120,   100,   140}
+    ,{   140,   -10,    50,   -10,   140}
+    ,{   120,   100,   120,   100,    30}
+    ,{    70,   -40,   -60,   -40,    70}
+    ,{   120,   100,   120,   100,    30}
+    }
+   ,{{   120,   110,   120,   110,    30}
+    ,{   110,   100,   110,   100,    20}
+    ,{   120,   110,   120,   110,    30}
+    ,{   110,   100,   110,   100,    20}
+    ,{    40,    30,    40,    30,   -60}
+    }
+   }
+  }
+ ,{{{{   300,   290,   300,   260,   300}
+    ,{   300,   270,   300,   260,   300}
+    ,{   270,   230,   270,   220,   270}
+    ,{   270,   230,   270,   220,   270}
+    ,{   290,   290,   270,   220,   270}
+    }
+   ,{{   300,   270,   300,   260,   300}
+    ,{   300,   270,   300,   260,   300}
+    ,{   270,   230,   270,   220,   270}
+    ,{   230,   150,   230,   140,   220}
+    ,{   270,   230,   270,   220,   270}
+    }
+   ,{{   270,   230,   270,   220,   270}
+    ,{   270,   230,   270,   220,   270}
+    ,{   270,   230,   270,   220,   270}
+    ,{   270,   230,   270,   220,   270}
+    ,{   270,   230,   270,   220,   270}
+    }
+   ,{{   270,   230,   270,   220,   270}
+    ,{   270,   190,   270,   180,   260}
+    ,{   270,   230,   270,   220,   270}
+    ,{   210,   130,   140,   210,   150}
+    ,{   270,   230,   270,   220,   270}
+    }
+   ,{{   290,   290,   270,   220,   270}
+    ,{   270,   230,   270,   220,   270}
+    ,{   270,   230,   270,   220,   270}
+    ,{   270,   230,   270,   220,   270}
+    ,{   290,   290,   270,   220,   270}
+    }
+   }
+  ,{{{   300,   290,   300,   190,   300}
+    ,{   300,   270,   300,   170,   300}
+    ,{   270,   230,   270,   190,   270}
+    ,{   270,   230,   270,   130,   270}
+    ,{   290,   290,   270,   190,   270}
+    }
+   ,{{   300,   270,   300,   170,   300}
+    ,{   300,   270,   300,   170,   300}
+    ,{   270,   230,   270,   130,   270}
+    ,{   190,   150,   190,    50,   190}
+    ,{   270,   230,   270,   130,   270}
+    }
+   ,{{   270,   230,   270,   190,   270}
+    ,{   270,   230,   270,   130,   270}
+    ,{   270,   230,   270,   190,   270}
+    ,{   270,   230,   270,   130,   270}
+    ,{   270,   230,   270,   190,   270}
+    }
+   ,{{   270,   230,   270,   130,   270}
+    ,{   230,   190,   230,    90,   230}
+    ,{   270,   230,   270,   130,   270}
+    ,{   140,   100,   140,   130,   140}
+    ,{   270,   230,   270,   130,   270}
+    }
+   ,{{   290,   290,   270,   190,   270}
+    ,{   270,   230,   270,   130,   270}
+    ,{   270,   230,   270,   190,   270}
+    ,{   270,   230,   270,   130,   270}
+    ,{   290,   290,   270,   130,   270}
+    }
+   }
+  ,{{{   290,   260,   290,   260,   270}
+    ,{   290,   260,   290,   260,   270}
+    ,{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    }
+   ,{{   290,   260,   290,   260,   270}
+    ,{   290,   260,   290,   260,   270}
+    ,{   250,   220,   250,   220,   240}
+    ,{   230,   140,   230,   140,   220}
+    ,{   250,   220,   250,   220,   240}
+    }
+   ,{{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    }
+   ,{{   270,   220,   270,   220,   260}
+    ,{   270,   180,   270,   180,   260}
+    ,{   250,   220,   250,   220,   240}
+    ,{   120,    90,   120,    90,   110}
+    ,{   250,   220,   250,   220,   240}
+    }
+   ,{{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    }
+   }
+  ,{{{   300,   190,   300,   210,   300}
+    ,{   300,   170,   300,   170,   300}
+    ,{   270,   190,   270,    80,   270}
+    ,{   270,   130,   270,   210,   270}
+    ,{   270,   190,   270,   210,   270}
+    }
+   ,{{   300,   170,   300,   130,   300}
+    ,{   300,   170,   300,   110,   300}
+    ,{   270,   130,   270,    80,   270}
+    ,{   190,    50,   190,   130,   190}
+    ,{   270,   130,   270,    80,   270}
+    }
+   ,{{   270,   190,   270,    80,   270}
+    ,{   270,   130,   270,    80,   270}
+    ,{   270,   190,   270,    80,   270}
+    ,{   270,   130,   270,    80,   270}
+    ,{   270,   190,   270,    80,   270}
+    }
+   ,{{   270,   130,   270,   210,   270}
+    ,{   230,    90,   230,   170,   230}
+    ,{   270,   130,   270,    80,   270}
+    ,{   210,   130,   140,   210,   140}
+    ,{   270,   130,   270,    80,   270}
+    }
+   ,{{   270,   190,   270,   210,   270}
+    ,{   270,   130,   270,    80,   270}
+    ,{   270,   190,   270,    80,   270}
+    ,{   270,   130,   270,    80,   270}
+    ,{   270,   130,   270,   210,   270}
+    }
+   }
+  ,{{{   270,   260,   270,   260,   240}
+    ,{   270,   260,   270,   260,   240}
+    ,{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    }
+   ,{{   270,   260,   270,   260,   240}
+    ,{   270,   260,   270,   260,   240}
+    ,{   240,   220,   240,   220,   150}
+    ,{   220,   140,   220,   140,    70}
+    ,{   240,   220,   240,   220,   150}
+    }
+   ,{{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    }
+   ,{{   260,   220,   260,   220,   150}
+    ,{   260,   180,   260,   180,   110}
+    ,{   240,   220,   240,   220,   150}
+    ,{   150,    90,   110,    90,   150}
+    ,{   240,   220,   240,   220,   150}
+    }
+   ,{{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    }
+   }
+  }
+ ,{{{{   310,   260,   310,   220,   300}
+    ,{   310,   230,   310,   220,   300}
+    ,{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    ,{   260,   260,   240,   190,   240}
+    }
+   ,{{   240,   200,   240,   190,   240}
+    ,{   200,   160,   200,   160,   200}
+    ,{   240,   200,   240,   190,   240}
+    ,{   150,    60,   150,    60,   130}
+    ,{   240,   200,   240,   190,   240}
+    }
+   ,{{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    }
+   ,{{   310,   230,   310,   220,   300}
+    ,{   310,   230,   310,   220,   300}
+    ,{   240,   200,   240,   190,   240}
+    ,{   180,   100,   110,   180,   120}
+    ,{   240,   200,   240,   190,   240}
+    }
+   ,{{   260,   260,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    ,{   260,   260,   240,   190,   240}
+    }
+   }
+  ,{{{   270,   260,   270,   160,   270}
+    ,{   270,   230,   270,   130,   270}
+    ,{   240,   200,   240,   160,   240}
+    ,{   240,   200,   240,   100,   240}
+    ,{   260,   260,   240,   160,   240}
+    }
+   ,{{   240,   200,   240,   100,   240}
+    ,{   200,   160,   200,    70,   200}
+    ,{   240,   200,   240,   100,   240}
+    ,{   100,    60,   100,   -30,   100}
+    ,{   240,   200,   240,   100,   240}
+    }
+   ,{{   240,   200,   240,   160,   240}
+    ,{   240,   200,   240,   100,   240}
+    ,{   240,   200,   240,   160,   240}
+    ,{   240,   200,   240,   100,   240}
+    ,{   240,   200,   240,   160,   240}
+    }
+   ,{{   270,   230,   270,   130,   270}
+    ,{   270,   230,   270,   130,   270}
+    ,{   240,   200,   240,   100,   240}
+    ,{   110,    70,   110,   100,   110}
+    ,{   240,   200,   240,   100,   240}
+    }
+   ,{{   260,   260,   240,   160,   240}
+    ,{   240,   200,   240,   100,   240}
+    ,{   240,   200,   240,   160,   240}
+    ,{   240,   200,   240,   100,   240}
+    ,{   260,   260,   240,   100,   240}
+    }
+   }
+  ,{{{   310,   220,   310,   220,   300}
+    ,{   310,   220,   310,   220,   300}
+    ,{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    }
+   ,{{   220,   190,   220,   190,   210}
+    ,{   190,   160,   190,   160,   170}
+    ,{   220,   190,   220,   190,   210}
+    ,{   150,    60,   150,    60,   130}
+    ,{   220,   190,   220,   190,   210}
+    }
+   ,{{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    }
+   ,{{   310,   220,   310,   220,   300}
+    ,{   310,   220,   310,   220,   300}
+    ,{   220,   190,   220,   190,   210}
+    ,{    90,    60,    90,    60,    80}
+    ,{   220,   190,   220,   190,   210}
+    }
+   ,{{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    }
+   }
+  ,{{{   270,   160,   270,   210,   270}
+    ,{   270,   130,   270,   210,   270}
+    ,{   240,   160,   240,    50,   240}
+    ,{   240,   100,   240,   180,   240}
+    ,{   240,   160,   240,   180,   240}
+    }
+   ,{{   240,   100,   240,    50,   240}
+    ,{   200,    70,   200,    10,   200}
+    ,{   240,   100,   240,    50,   240}
+    ,{   100,   -30,   100,    40,   100}
+    ,{   240,   100,   240,    50,   240}
+    }
+   ,{{   240,   160,   240,    50,   240}
+    ,{   240,   100,   240,    50,   240}
+    ,{   240,   160,   240,    50,   240}
+    ,{   240,   100,   240,    50,   240}
+    ,{   240,   160,   240,    50,   240}
+    }
+   ,{{   270,   130,   270,   210,   270}
+    ,{   270,   130,   270,   210,   270}
+    ,{   240,   100,   240,    50,   240}
+    ,{   180,   100,   110,   180,   110}
+    ,{   240,   100,   240,    50,   240}
+    }
+   ,{{   240,   160,   240,   180,   240}
+    ,{   240,   100,   240,    50,   240}
+    ,{   240,   160,   240,    50,   240}
+    ,{   240,   100,   240,    50,   240}
+    ,{   240,   100,   240,   180,   240}
+    }
+   }
+  ,{{{   300,   220,   300,   220,   150}
+    ,{   300,   220,   300,   220,   150}
+    ,{   210,   190,   210,   190,   120}
+    ,{   210,   190,   210,   190,   120}
+    ,{   210,   190,   210,   190,   120}
+    }
+   ,{{   210,   190,   210,   190,   140}
+    ,{   170,   160,   170,   160,   140}
+    ,{   210,   190,   210,   190,   120}
+    ,{   130,    60,   130,    60,   -10}
+    ,{   210,   190,   210,   190,   120}
+    }
+   ,{{   210,   190,   210,   190,   120}
+    ,{   210,   190,   210,   190,   120}
+    ,{   210,   190,   210,   190,   120}
+    ,{   210,   190,   210,   190,   120}
+    ,{   210,   190,   210,   190,   120}
+    }
+   ,{{   300,   220,   300,   220,   150}
+    ,{   300,   220,   300,   220,   150}
+    ,{   210,   190,   210,   190,   120}
+    ,{   120,    60,    80,    60,   120}
+    ,{   210,   190,   210,   190,   120}
+    }
+   ,{{   210,   190,   210,   190,   120}
+    ,{   210,   190,   210,   190,   120}
+    ,{   210,   190,   210,   190,   120}
+    ,{   210,   190,   210,   190,   120}
+    ,{   210,   190,   210,   190,   120}
+    }
+   }
+  }
+ ,{{{{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    ,{   220,   180,   220,   170,   220}
+    ,{   220,   180,   220,   180,   220}
+    ,{   220,   180,   220,   170,   220}
+    }
+   ,{{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    ,{   210,   170,   210,   170,   210}
+    ,{   160,    70,   160,    70,   140}
+    ,{   210,   170,   210,   170,   210}
+    }
+   ,{{   220,   180,   220,   180,   220}
+    ,{   220,   180,   220,   180,   220}
+    ,{   220,   180,   220,   170,   220}
+    ,{   220,   180,   220,   180,   220}
+    ,{   220,   180,   220,   170,   220}
+    }
+   ,{{   230,   170,   230,   170,   210}
+    ,{   230,   140,   230,   140,   210}
+    ,{   210,   170,   210,   170,   210}
+    ,{   130,    60,    60,   130,    70}
+    ,{   210,   170,   210,   170,   210}
+    }
+   ,{{   220,   180,   220,   180,   220}
+    ,{   220,   180,   220,   180,   220}
+    ,{   220,   180,   220,   170,   220}
+    ,{   220,   180,   220,   180,   220}
+    ,{   150,   150,   130,    80,   130}
+    }
+   }
+  ,{{{   240,   200,   240,   140,   240}
+    ,{   240,   200,   240,   100,   240}
+    ,{   220,   180,   220,   140,   220}
+    ,{   220,   180,   220,    90,   220}
+    ,{   220,   180,   220,   140,   220}
+    }
+   ,{{   240,   200,   240,   100,   240}
+    ,{   240,   200,   240,   100,   240}
+    ,{   210,   170,   210,    80,   210}
+    ,{   110,    70,   110,   -20,   110}
+    ,{   210,   170,   210,    80,   210}
+    }
+   ,{{   220,   180,   220,   140,   220}
+    ,{   220,   180,   220,    90,   220}
+    ,{   220,   180,   220,   140,   220}
+    ,{   220,   180,   220,    90,   220}
+    ,{   220,   180,   220,   140,   220}
+    }
+   ,{{   210,   170,   210,    80,   210}
+    ,{   180,   140,   180,    50,   180}
+    ,{   210,   170,   210,    80,   210}
+    ,{    60,    20,    60,    60,    60}
+    ,{   210,   170,   210,    80,   210}
+    }
+   ,{{   220,   180,   220,   140,   220}
+    ,{   220,   180,   220,    90,   220}
+    ,{   220,   180,   220,   140,   220}
+    ,{   220,   180,   220,    90,   220}
+    ,{   150,   150,   130,     0,   130}
+    }
+   }
+  ,{{{   230,   190,   230,   190,   210}
+    ,{   230,   190,   230,   190,   210}
+    ,{   200,   170,   200,   170,   190}
+    ,{   210,   180,   210,   180,   190}
+    ,{   200,   170,   200,   170,   190}
+    }
+   ,{{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    ,{   200,   170,   200,   170,   180}
+    ,{   160,    70,   160,    70,   140}
+    ,{   200,   170,   200,   170,   180}
+    }
+   ,{{   210,   180,   210,   180,   190}
+    ,{   210,   180,   210,   180,   190}
+    ,{   200,   170,   200,   170,   190}
+    ,{   210,   180,   210,   180,   190}
+    ,{   200,   170,   200,   170,   190}
+    }
+   ,{{   230,   170,   230,   170,   210}
+    ,{   230,   140,   230,   140,   210}
+    ,{   200,   170,   200,   170,   180}
+    ,{    50,    20,    50,    20,    30}
+    ,{   200,   170,   200,   170,   180}
+    }
+   ,{{   210,   180,   210,   180,   190}
+    ,{   210,   180,   210,   180,   190}
+    ,{   200,   170,   200,   170,   190}
+    ,{   210,   180,   210,   180,   190}
+    ,{   110,    80,   110,    80,   100}
+    }
+   }
+  ,{{{   240,   140,   240,   130,   240}
+    ,{   240,   100,   240,   120,   240}
+    ,{   220,   140,   220,    30,   220}
+    ,{   220,    90,   220,   130,   220}
+    ,{   220,   140,   220,    70,   220}
+    }
+   ,{{   240,   100,   240,    50,   240}
+    ,{   240,   100,   240,    50,   240}
+    ,{   210,    80,   210,    20,   210}
+    ,{   110,   -20,   110,    50,   110}
+    ,{   210,    80,   210,    20,   210}
+    }
+   ,{{   220,   140,   220,    30,   220}
+    ,{   220,    90,   220,    30,   220}
+    ,{   220,   140,   220,    30,   220}
+    ,{   220,    90,   220,    30,   220}
+    ,{   220,   140,   220,    30,   220}
+    }
+   ,{{   210,    80,   210,   130,   210}
+    ,{   180,    50,   180,   120,   180}
+    ,{   210,    80,   210,    20,   210}
+    ,{   130,    60,    60,   130,    60}
+    ,{   210,    80,   210,    20,   210}
+    }
+   ,{{   220,   140,   220,    70,   220}
+    ,{   220,    90,   220,    30,   220}
+    ,{   220,   140,   220,    30,   220}
+    ,{   220,    90,   220,    30,   220}
+    ,{   130,     0,   130,    70,   130}
+    }
+   }
+  ,{{{   210,   190,   210,   190,   180}
+    ,{   210,   190,   210,   190,   180}
+    ,{   190,   170,   190,   170,   100}
+    ,{   190,   180,   190,   180,   100}
+    ,{   190,   170,   190,   170,   100}
+    }
+   ,{{   210,   190,   210,   190,   180}
+    ,{   210,   190,   210,   190,   180}
+    ,{   180,   170,   180,   170,    90}
+    ,{   140,    70,   140,    70,     0}
+    ,{   180,   170,   180,   170,    90}
+    }
+   ,{{   190,   180,   190,   180,   100}
+    ,{   190,   180,   190,   180,   100}
+    ,{   190,   170,   190,   170,   100}
+    ,{   190,   180,   190,   180,   100}
+    ,{   190,   170,   190,   170,   100}
+    }
+   ,{{   210,   170,   210,   170,    90}
+    ,{   210,   140,   210,   140,    60}
+    ,{   180,   170,   180,   170,    90}
+    ,{    70,    20,    30,    20,    70}
+    ,{   180,   170,   180,   170,    90}
+    }
+   ,{{   190,   180,   190,   180,   100}
+    ,{   190,   180,   190,   180,   100}
+    ,{   190,   170,   190,   170,   100}
+    ,{   190,   180,   190,   180,   100}
+    ,{   100,    80,   100,    80,    10}
+    }
+   }
+  }
+ ,{{{{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    }
+   ,{{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    ,{   190,   150,   190,   150,   190}
+    ,{   180,    90,   180,    90,   160}
+    ,{   190,   150,   190,   150,   190}
+    }
+   ,{{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    }
+   ,{{   190,   150,   190,   150,   190}
+    ,{   190,   100,   190,   100,   170}
+    ,{   190,   150,   190,   150,   190}
+    ,{   150,    80,    80,   150,    90}
+    ,{   190,   150,   190,   150,   190}
+    }
+   ,{{   240,   200,   240,   190,   240}
+    ,{   240,   200,   240,   190,   240}
+    ,{   210,   170,   210,   160,   210}
+    ,{   240,   200,   240,   190,   240}
+    ,{   170,   170,   150,   110,   150}
+    }
+   }
+  ,{{{   240,   200,   240,   160,   240}
+    ,{   240,   200,   240,   100,   240}
+    ,{   240,   200,   240,   160,   240}
+    ,{   240,   200,   240,   100,   240}
+    ,{   240,   200,   240,   160,   240}
+    }
+   ,{{   240,   200,   240,   100,   240}
+    ,{   240,   200,   240,   100,   240}
+    ,{   190,   150,   190,    60,   190}
+    ,{   130,    90,   130,     0,   130}
+    ,{   190,   150,   190,    60,   190}
+    }
+   ,{{   240,   200,   240,   160,   240}
+    ,{   240,   200,   240,   100,   240}
+    ,{   240,   200,   240,   160,   240}
+    ,{   240,   200,   240,   100,   240}
+    ,{   240,   200,   240,   160,   240}
+    }
+   ,{{   190,   150,   190,    80,   190}
+    ,{   140,   100,   140,    10,   140}
+    ,{   190,   150,   190,    60,   190}
+    ,{    80,    40,    80,    80,    80}
+    ,{   190,   150,   190,    60,   190}
+    }
+   ,{{   240,   200,   240,   130,   240}
+    ,{   240,   200,   240,   100,   240}
+    ,{   210,   170,   210,   130,   210}
+    ,{   240,   200,   240,   100,   240}
+    ,{   170,   170,   150,    20,   150}
+    }
+   }
+  ,{{{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    }
+   ,{{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    ,{   180,   150,   180,   150,   160}
+    ,{   180,    90,   180,    90,   160}
+    ,{   180,   150,   180,   150,   160}
+    }
+   ,{{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    }
+   ,{{   190,   150,   190,   150,   170}
+    ,{   190,   100,   190,   100,   170}
+    ,{   180,   150,   180,   150,   160}
+    ,{    70,    40,    70,    40,    50}
+    ,{   180,   150,   180,   150,   160}
+    }
+   ,{{   220,   190,   220,   190,   210}
+    ,{   220,   190,   220,   190,   210}
+    ,{   190,   160,   190,   160,   180}
+    ,{   220,   190,   220,   190,   210}
+    ,{   140,   110,   140,   110,   120}
+    }
+   }
+  ,{{{   240,   160,   240,   150,   240}
+    ,{   240,   100,   240,    80,   240}
+    ,{   240,   160,   240,    50,   240}
+    ,{   240,   100,   240,   150,   240}
+    ,{   240,   160,   240,    90,   240}
+    }
+   ,{{   240,   100,   240,    70,   240}
+    ,{   240,   100,   240,    50,   240}
+    ,{   190,    60,   190,     0,   190}
+    ,{   130,     0,   130,    70,   130}
+    ,{   190,    60,   190,     0,   190}
+    }
+   ,{{   240,   160,   240,    50,   240}
+    ,{   240,   100,   240,    50,   240}
+    ,{   240,   160,   240,    50,   240}
+    ,{   240,   100,   240,    50,   240}
+    ,{   240,   160,   240,    50,   240}
+    }
+   ,{{   190,    80,   190,   150,   190}
+    ,{   140,    10,   140,    80,   140}
+    ,{   190,    60,   190,     0,   190}
+    ,{   150,    80,    80,   150,    80}
+    ,{   190,    60,   190,     0,   190}
+    }
+   ,{{   240,   130,   240,    90,   240}
+    ,{   240,   100,   240,    50,   240}
+    ,{   210,   130,   210,    20,   210}
+    ,{   240,   100,   240,    50,   240}
+    ,{   150,    20,   150,    90,   150}
+    }
+   }
+  ,{{{   210,   190,   210,   190,   180}
+    ,{   210,   190,   210,   190,   180}
+    ,{   210,   190,   210,   190,   120}
+    ,{   210,   190,   210,   190,   120}
+    ,{   210,   190,   210,   190,   120}
+    }
+   ,{{   210,   190,   210,   190,   180}
+    ,{   210,   190,   210,   190,   180}
+    ,{   160,   150,   160,   150,    70}
+    ,{   160,    90,   160,    90,    10}
+    ,{   160,   150,   160,   150,    70}
+    }
+   ,{{   210,   190,   210,   190,   120}
+    ,{   210,   190,   210,   190,   120}
+    ,{   210,   190,   210,   190,   120}
+    ,{   210,   190,   210,   190,   120}
+    ,{   210,   190,   210,   190,   120}
+    }
+   ,{{   170,   150,   170,   150,    90}
+    ,{   170,   100,   170,   100,    20}
+    ,{   160,   150,   160,   150,    70}
+    ,{    90,    40,    50,    40,    90}
+    ,{   160,   150,   160,   150,    70}
+    }
+   ,{{   210,   190,   210,   190,   120}
+    ,{   210,   190,   210,   190,   120}
+    ,{   180,   160,   180,   160,    90}
+    ,{   210,   190,   210,   190,   120}
+    ,{   120,   110,   120,   110,    30}
+    }
+   }
+  }
+ ,{{{{   310,   290,   310,   260,   300}
+    ,{   310,   270,   310,   260,   300}
+    ,{   270,   230,   270,   220,   270}
+    ,{   270,   230,   270,   220,   270}
+    ,{   290,   290,   270,   220,   270}
+    }
+   ,{{   300,   270,   300,   260,   300}
+    ,{   300,   270,   300,   260,   300}
+    ,{   270,   230,   270,   220,   270}
+    ,{   230,   150,   230,   140,   220}
+    ,{   270,   230,   270,   220,   270}
+    }
+   ,{{   270,   230,   270,   220,   270}
+    ,{   270,   230,   270,   220,   270}
+    ,{   270,   230,   270,   220,   270}
+    ,{   270,   230,   270,   220,   270}
+    ,{   270,   230,   270,   220,   270}
+    }
+   ,{{   310,   230,   310,   220,   300}
+    ,{   310,   230,   310,   220,   300}
+    ,{   270,   230,   270,   220,   270}
+    ,{   210,   130,   140,   210,   150}
+    ,{   270,   230,   270,   220,   270}
+    }
+   ,{{   290,   290,   270,   220,   270}
+    ,{   270,   230,   270,   220,   270}
+    ,{   270,   230,   270,   220,   270}
+    ,{   270,   230,   270,   220,   270}
+    ,{   290,   290,   270,   220,   270}
+    }
+   }
+  ,{{{   300,   290,   300,   190,   300}
+    ,{   300,   270,   300,   170,   300}
+    ,{   270,   230,   270,   190,   270}
+    ,{   270,   230,   270,   130,   270}
+    ,{   290,   290,   270,   190,   270}
+    }
+   ,{{   300,   270,   300,   170,   300}
+    ,{   300,   270,   300,   170,   300}
+    ,{   270,   230,   270,   130,   270}
+    ,{   190,   150,   190,    50,   190}
+    ,{   270,   230,   270,   130,   270}
+    }
+   ,{{   270,   230,   270,   190,   270}
+    ,{   270,   230,   270,   130,   270}
+    ,{   270,   230,   270,   190,   270}
+    ,{   270,   230,   270,   130,   270}
+    ,{   270,   230,   270,   190,   270}
+    }
+   ,{{   270,   230,   270,   130,   270}
+    ,{   270,   230,   270,   130,   270}
+    ,{   270,   230,   270,   130,   270}
+    ,{   140,   100,   140,   130,   140}
+    ,{   270,   230,   270,   130,   270}
+    }
+   ,{{   290,   290,   270,   190,   270}
+    ,{   270,   230,   270,   130,   270}
+    ,{   270,   230,   270,   190,   270}
+    ,{   270,   230,   270,   130,   270}
+    ,{   290,   290,   270,   130,   270}
+    }
+   }
+  ,{{{   310,   260,   310,   260,   300}
+    ,{   310,   260,   310,   260,   300}
+    ,{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    }
+   ,{{   290,   260,   290,   260,   270}
+    ,{   290,   260,   290,   260,   270}
+    ,{   250,   220,   250,   220,   240}
+    ,{   230,   140,   230,   140,   220}
+    ,{   250,   220,   250,   220,   240}
+    }
+   ,{{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    }
+   ,{{   310,   220,   310,   220,   300}
+    ,{   310,   220,   310,   220,   300}
+    ,{   250,   220,   250,   220,   240}
+    ,{   120,    90,   120,    90,   110}
+    ,{   250,   220,   250,   220,   240}
+    }
+   ,{{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    ,{   250,   220,   250,   220,   240}
+    }
+   }
+  ,{{{   300,   190,   300,   210,   300}
+    ,{   300,   170,   300,   210,   300}
+    ,{   270,   190,   270,    80,   270}
+    ,{   270,   130,   270,   210,   270}
+    ,{   270,   190,   270,   210,   270}
+    }
+   ,{{   300,   170,   300,   130,   300}
+    ,{   300,   170,   300,   110,   300}
+    ,{   270,   130,   270,    80,   270}
+    ,{   190,    50,   190,   130,   190}
+    ,{   270,   130,   270,    80,   270}
+    }
+   ,{{   270,   190,   270,    80,   270}
+    ,{   270,   130,   270,    80,   270}
+    ,{   270,   190,   270,    80,   270}
+    ,{   270,   130,   270,    80,   270}
+    ,{   270,   190,   270,    80,   270}
+    }
+   ,{{   270,   130,   270,   210,   270}
+    ,{   270,   130,   270,   210,   270}
+    ,{   270,   130,   270,    80,   270}
+    ,{   210,   130,   140,   210,   140}
+    ,{   270,   130,   270,    80,   270}
+    }
+   ,{{   270,   190,   270,   210,   270}
+    ,{   270,   130,   270,    80,   270}
+    ,{   270,   190,   270,    80,   270}
+    ,{   270,   130,   270,    80,   270}
+    ,{   270,   130,   270,   210,   270}
+    }
+   }
+  ,{{{   300,   260,   300,   260,   240}
+    ,{   300,   260,   300,   260,   240}
+    ,{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    }
+   ,{{   270,   260,   270,   260,   240}
+    ,{   270,   260,   270,   260,   240}
+    ,{   240,   220,   240,   220,   150}
+    ,{   220,   140,   220,   140,    70}
+    ,{   240,   220,   240,   220,   150}
+    }
+   ,{{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    }
+   ,{{   300,   220,   300,   220,   150}
+    ,{   300,   220,   300,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    ,{   150,    90,   110,    90,   150}
+    ,{   240,   220,   240,   220,   150}
+    }
+   ,{{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    ,{   240,   220,   240,   220,   150}
+    }
+   }
+  }
+ }
+,{{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   220,   220,   190,   150,   150}
+    ,{   170,   170,   150,   150,   150}
+    ,{   220,   220,   190,   130,   140}
+    ,{   170,   170,   150,   150,   150}
+    ,{   140,   140,   120,   140,   120}
+    }
+   ,{{   150,   130,   110,   110,   150}
+    ,{   150,   130,   110,   110,   150}
+    ,{   130,   130,   110,   100,   110}
+    ,{    90,    10,    70,    10,    90}
+    ,{   130,   130,   100,   100,   110}
+    }
+   ,{{   220,   220,   190,   150,   150}
+    ,{   150,   150,   150,   150,   150}
+    ,{   220,   220,   190,   130,   140}
+    ,{   170,   170,   150,   150,   150}
+    ,{   140,   140,   120,   120,   120}
+    }
+   ,{{   140,   130,   100,   100,   140}
+    ,{    90,    10,    70,    10,    90}
+    ,{   130,   130,   100,   100,   110}
+    ,{   140,   -10,    20,    80,   140}
+    ,{   130,   130,   100,   100,   110}
+    }
+   ,{{   170,   170,   170,   150,   150}
+    ,{   170,   170,   150,   150,   150}
+    ,{   170,   140,   170,   120,   120}
+    ,{   170,   170,   150,   150,   150}
+    ,{   140,   140,    30,   140,    30}
+    }
+   }
+  ,{{{   220,   220,   190,   140,   140}
+    ,{   170,   170,   140,    40,   140}
+    ,{   220,   220,   190,    70,   130}
+    ,{   170,   170,   140,    30,   140}
+    ,{   140,   140,   110,   140,   110}
+    }
+   ,{{   130,   130,   110,    70,   100}
+    ,{   130,   130,   100,    40,   100}
+    ,{   130,   130,   110,    70,   100}
+    ,{    70,   -20,    70,   -50,    10}
+    ,{   130,   130,   100,   -10,   100}
+    }
+   ,{{   220,   220,   190,    70,   140}
+    ,{   140,    60,    50,    30,   140}
+    ,{   220,   220,   190,    70,   130}
+    ,{   170,   170,   140,    30,   140}
+    ,{   140,   140,   110,    50,   110}
+    }
+   ,{{   130,   130,   100,   -10,   100}
+    ,{    10,     0,  -100,   -70,    10}
+    ,{   130,   130,   100,   -10,   100}
+    ,{   -10,   -10,   -50,   -30,   -50}
+    ,{   130,   130,   100,   -10,   100}
+    }
+   ,{{   170,   170,   140,   140,   140}
+    ,{   170,   170,   140,    30,   140}
+    ,{   140,   140,   110,    60,   110}
+    ,{   170,   170,   140,    30,   140}
+    ,{   140,   140,    30,   140,    20}
+    }
+   }
+  ,{{{   150,   150,   150,   150,   150}
+    ,{   150,   150,   150,   150,   150}
+    ,{   140,   130,   130,   130,   140}
+    ,{   150,   150,   150,   150,   150}
+    ,{   120,   120,   120,   120,   120}
+    }
+   ,{{   110,   110,   110,   110,   110}
+    ,{   110,   110,   110,   110,   110}
+    ,{   110,   100,   100,   100,   110}
+    ,{    80,   -40,    70,    10,    80}
+    ,{   110,   100,   100,   100,   110}
+    }
+   ,{{   150,   150,   150,   150,   150}
+    ,{   150,   150,   150,   150,   150}
+    ,{   140,   130,   130,   130,   140}
+    ,{   150,   150,   150,   150,   150}
+    ,{   120,   120,   120,   120,   120}
+    }
+   ,{{   110,   100,   100,   100,   110}
+    ,{    80,   -70,   -60,    10,    80}
+    ,{   110,   100,   100,   100,   110}
+    ,{   -40,   -40,   -40,   -40,   -50}
+    ,{   110,   100,   100,   100,   110}
+    }
+   ,{{   150,   150,   150,   150,   150}
+    ,{   150,   150,   150,   150,   150}
+    ,{   120,   120,   120,   120,   120}
+    ,{   150,   150,   150,   150,   150}
+    ,{    30,    30,    30,    30,    30}
+    }
+   }
+  ,{{{   140,    70,   140,    80,   140}
+    ,{   140,    10,   140,    10,   140}
+    ,{   130,    70,   130,    20,   130}
+    ,{   140,   -30,   140,    80,   140}
+    ,{   110,    50,   110,    70,   110}
+    }
+   ,{{   100,   -30,   100,   -30,   100}
+    ,{   100,   -30,   100,   -30,   100}
+    ,{   100,   -70,   100,   -40,   100}
+    ,{    10,  -170,    10,   -30,    10}
+    ,{   100,   -70,   100,   -40,   100}
+    }
+   ,{{   140,    70,   140,    10,   140}
+    ,{   140,    10,   140,   -30,   140}
+    ,{   130,    70,   130,   -10,   130}
+    ,{   140,   -30,   140,    10,   140}
+    ,{   110,     0,   110,   -60,   110}
+    }
+   ,{{   100,   -70,   100,    80,   100}
+    ,{    10,  -160,    10,     0,    10}
+    ,{   100,   -70,   100,   -40,   100}
+    ,{    80,   -90,   -50,    80,   -50}
+    ,{   100,   -70,   100,   -40,   100}
+    }
+   ,{{   140,    50,   140,    70,   140}
+    ,{   140,   -30,   140,    10,   140}
+    ,{   110,     0,   110,    20,   110}
+    ,{   140,   -30,   140,    10,   140}
+    ,{    70,    50,    20,    70,    20}
+    }
+   }
+  ,{{{   170,   150,   170,   150,   150}
+    ,{   150,   150,   150,   150,   150}
+    ,{   170,   130,   170,   130,    30}
+    ,{   150,   150,   150,   150,   140}
+    ,{   120,   120,   120,   120,    40}
+    }
+   ,{{   150,   110,   110,   110,   150}
+    ,{   150,   110,   110,   110,   150}
+    ,{   100,   100,   100,   100,   -20}
+    ,{    90,    10,    70,    10,    90}
+    ,{   100,   100,   100,   100,    30}
+    }
+   ,{{   150,   150,   150,   150,    70}
+    ,{   150,   150,   150,   150,     0}
+    ,{   130,   130,   130,   130,   -10}
+    ,{   150,   150,   150,   150,    70}
+    ,{   120,   120,   120,   120,    40}
+    }
+   ,{{   140,   100,   100,   100,   140}
+    ,{    90,    10,    70,    10,    90}
+    ,{   100,   100,   100,   100,    30}
+    ,{   140,   -40,    20,   -40,   140}
+    ,{   100,   100,   100,   100,    30}
+    }
+   ,{{   170,   150,   170,   150,    70}
+    ,{   150,   150,   150,   150,    70}
+    ,{   170,   120,   170,   120,    20}
+    ,{   150,   150,   150,   150,    70}
+    ,{    30,    30,    30,    30,   -60}
+    }
+   }
+  }
+ ,{{{{   150,   150,   120,   120,   130}
+    ,{   150,   150,   120,   120,   130}
+    ,{   130,   130,   100,   100,   110}
+    ,{   120,   120,    90,    90,   100}
+    ,{   120,   120,   100,   100,   100}
+    }
+   ,{{   150,   150,   120,   120,   130}
+    ,{   150,   150,   120,   120,   130}
+    ,{   120,   120,   100,   100,   100}
+    ,{   -10,   -50,   -20,   -80,   -10}
+    ,{   120,   120,   100,   100,   100}
+    }
+   ,{{   120,   120,   100,   100,   100}
+    ,{   120,   120,    90,    90,   100}
+    ,{   120,   120,   100,   100,   100}
+    ,{   120,   120,    90,    90,   100}
+    ,{   120,   120,   100,   100,   100}
+    }
+   ,{{   120,   120,   100,   100,   100}
+    ,{    50,    10,    50,   -10,    50}
+    ,{   120,   120,   100,   100,   100}
+    ,{    80,   -20,   -40,    80,    10}
+    ,{   120,   120,   100,   100,   100}
+    }
+   ,{{   130,   130,   100,   100,   110}
+    ,{   120,   120,    90,    90,   100}
+    ,{   130,   130,   100,   100,   110}
+    ,{   120,   120,    90,    90,   100}
+    ,{   110,   110,    20,    20,    30}
+    }
+   }
+  ,{{{   150,   150,   120,    50,   120}
+    ,{   150,   150,   120,    10,   120}
+    ,{   130,   130,   100,    50,   100}
+    ,{   120,   120,    90,   -20,    90}
+    ,{   120,   120,    90,    50,    90}
+    }
+   ,{{   150,   150,   120,    10,   120}
+    ,{   150,   150,   120,    10,   120}
+    ,{   120,   120,    90,   -10,    90}
+    ,{   -50,   -50,   -80,  -190,   -80}
+    ,{   120,   120,    90,   -10,    90}
+    }
+   ,{{   120,   120,    90,    50,    90}
+    ,{   120,   120,    90,   -20,    90}
+    ,{   120,   120,    90,    50,    90}
+    ,{   120,   120,    90,   -20,    90}
+    ,{   120,   120,    90,    50,    90}
+    }
+   ,{{   120,   120,    90,   -10,    90}
+    ,{    10,    10,   -20,  -130,   -20}
+    ,{   120,   120,    90,   -10,    90}
+    ,{   -20,   -20,   -50,   -20,   -50}
+    ,{   120,   120,    90,   -10,    90}
+    }
+   ,{{   130,   130,   100,    50,   100}
+    ,{   120,   120,    90,   -20,    90}
+    ,{   130,   130,   100,    50,   100}
+    ,{   120,   120,    90,   -20,    90}
+    ,{   110,   110,    20,   -90,    20}
+    }
+   }
+  ,{{{   130,   120,   120,   120,   130}
+    ,{   130,   120,   120,   120,   130}
+    ,{   110,   100,   100,   100,   110}
+    ,{   100,    90,    90,    90,   100}
+    ,{   100,   100,   100,   100,   100}
+    }
+   ,{{   130,   120,   120,   120,   130}
+    ,{   130,   120,   120,   120,   130}
+    ,{   100,   100,   100,   100,   100}
+    ,{   -10,   -80,   -20,   -80,   -10}
+    ,{   100,   100,   100,   100,   100}
+    }
+   ,{{   100,   100,   100,   100,   100}
+    ,{   100,    90,    90,    90,   100}
+    ,{   100,   100,   100,   100,   100}
+    ,{   100,    90,    90,    90,   100}
+    ,{   100,   100,   100,   100,   100}
+    }
+   ,{{   100,   100,   100,   100,   100}
+    ,{    50,   -10,    50,   -10,    50}
+    ,{   100,   100,   100,   100,   100}
+    ,{   -40,   -40,   -40,   -40,   -40}
+    ,{   100,   100,   100,   100,   100}
+    }
+   ,{{   110,   100,   100,   100,   110}
+    ,{   100,    90,    90,    90,   100}
+    ,{   110,   100,   100,   100,   110}
+    ,{   100,    90,    90,    90,   100}
+    ,{    30,    20,    20,    20,    30}
+    }
+   }
+  ,{{{   120,   -10,   120,    80,   120}
+    ,{   120,   -50,   120,   -20,   120}
+    ,{   100,   -10,   100,   -40,   100}
+    ,{    90,   -80,    90,    80,    90}
+    ,{    90,   -20,    90,    10,    90}
+    }
+   ,{{   120,   -50,   120,   -20,   120}
+    ,{   120,   -50,   120,   -20,   120}
+    ,{    90,   -80,    90,   -40,    90}
+    ,{   -80,  -260,   -80,   -90,   -80}
+    ,{    90,   -80,    90,   -40,    90}
+    }
+   ,{{    90,   -20,    90,   -40,    90}
+    ,{    90,   -80,    90,   -50,    90}
+    ,{    90,   -20,    90,   -40,    90}
+    ,{    90,   -80,    90,   -50,    90}
+    ,{    90,   -20,    90,   -40,    90}
+    }
+   ,{{    90,   -80,    90,    80,    90}
+    ,{   -20,  -190,   -20,   -20,   -20}
+    ,{    90,   -80,    90,   -40,    90}
+    ,{    80,   -90,   -50,    80,   -50}
+    ,{    90,   -80,    90,   -40,    90}
+    }
+   ,{{   100,   -10,   100,    10,   100}
+    ,{    90,   -80,    90,   -50,    90}
+    ,{   100,   -10,   100,   -40,   100}
+    ,{    90,   -80,    90,   -50,    90}
+    ,{    20,  -150,    20,    10,    20}
+    }
+   }
+  ,{{{   120,   120,   120,   120,   110}
+    ,{   120,   120,   120,   120,   110}
+    ,{   100,   100,   100,   100,    30}
+    ,{    90,    90,    90,    90,    20}
+    ,{   100,   100,   100,   100,    20}
+    }
+   ,{{   120,   120,   120,   120,   110}
+    ,{   120,   120,   120,   120,   110}
+    ,{   100,   100,   100,   100,    20}
+    ,{   -20,   -80,   -20,   -80,  -150}
+    ,{   100,   100,   100,   100,    20}
+    }
+   ,{{   100,   100,   100,   100,    20}
+    ,{    90,    90,    90,    90,    20}
+    ,{   100,   100,   100,   100,    20}
+    ,{    90,    90,    90,    90,    20}
+    ,{   100,   100,   100,   100,    20}
+    }
+   ,{{   100,   100,   100,   100,    20}
+    ,{    50,   -10,    50,   -10,   -90}
+    ,{   100,   100,   100,   100,    20}
+    ,{    10,   -40,   -40,   -40,    10}
+    ,{   100,   100,   100,   100,    20}
+    }
+   ,{{   100,   100,   100,   100,    30}
+    ,{    90,    90,    90,    90,    20}
+    ,{   100,   100,   100,   100,    30}
+    ,{    90,    90,    90,    90,    20}
+    ,{    20,    20,    20,    20,   -50}
+    }
+   }
+  }
+ ,{{{{   300,   300,   250,   250,   260}
+    ,{   280,   280,   250,   250,   260}
+    ,{   240,   240,   220,   220,   220}
+    ,{   240,   240,   220,   220,   220}
+    ,{   300,   300,   220,   220,   220}
+    }
+   ,{{   280,   280,   250,   250,   260}
+    ,{   280,   280,   250,   250,   260}
+    ,{   240,   240,   220,   220,   220}
+    ,{   200,   160,   200,   140,   200}
+    ,{   240,   240,   220,   220,   220}
+    }
+   ,{{   240,   240,   220,   220,   220}
+    ,{   240,   240,   220,   220,   220}
+    ,{   240,   240,   220,   220,   220}
+    ,{   240,   240,   220,   220,   220}
+    ,{   240,   240,   220,   220,   220}
+    }
+   ,{{   240,   240,   240,   220,   240}
+    ,{   240,   200,   240,   180,   240}
+    ,{   240,   240,   220,   220,   220}
+    ,{   210,   110,    90,   210,   140}
+    ,{   240,   240,   220,   220,   220}
+    }
+   ,{{   300,   300,   220,   220,   220}
+    ,{   240,   240,   220,   220,   220}
+    ,{   240,   240,   220,   220,   220}
+    ,{   240,   240,   220,   220,   220}
+    ,{   300,   300,   220,   220,   220}
+    }
+   }
+  ,{{{   300,   300,   250,   160,   250}
+    ,{   280,   280,   250,   140,   250}
+    ,{   240,   240,   210,   160,   210}
+    ,{   240,   240,   210,   100,   210}
+    ,{   300,   300,   210,   160,   210}
+    }
+   ,{{   280,   280,   250,   140,   250}
+    ,{   280,   280,   250,   140,   250}
+    ,{   240,   240,   210,   100,   210}
+    ,{   160,   160,   130,    20,   130}
+    ,{   240,   240,   210,   100,   210}
+    }
+   ,{{   240,   240,   210,   160,   210}
+    ,{   240,   240,   210,   100,   210}
+    ,{   240,   240,   210,   160,   210}
+    ,{   240,   240,   210,   100,   210}
+    ,{   240,   240,   210,   160,   210}
+    }
+   ,{{   240,   240,   210,   100,   210}
+    ,{   200,   200,   170,    60,   170}
+    ,{   240,   240,   210,   100,   210}
+    ,{   110,   110,    80,   100,    80}
+    ,{   240,   240,   210,   100,   210}
+    }
+   ,{{   300,   300,   210,   160,   210}
+    ,{   240,   240,   210,   100,   210}
+    ,{   240,   240,   210,   160,   210}
+    ,{   240,   240,   210,   100,   210}
+    ,{   300,   300,   210,   100,   210}
+    }
+   }
+  ,{{{   260,   250,   250,   250,   260}
+    ,{   260,   250,   250,   250,   260}
+    ,{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   260,   250,   250,   250,   260}
+    ,{   260,   250,   250,   250,   260}
+    ,{   220,   220,   220,   220,   220}
+    ,{   200,   140,   200,   140,   200}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   240,   220,   240,   220,   240}
+    ,{   240,   180,   240,   180,   240}
+    ,{   220,   220,   220,   220,   220}
+    ,{    90,    90,    90,    90,    90}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    }
+   }
+  ,{{{   250,   100,   250,   210,   250}
+    ,{   250,    70,   250,   170,   250}
+    ,{   210,   100,   210,    80,   210}
+    ,{   210,    40,   210,   210,   210}
+    ,{   210,   100,   210,   210,   210}
+    }
+   ,{{   250,    70,   250,   130,   250}
+    ,{   250,    70,   250,   110,   250}
+    ,{   210,    40,   210,    80,   210}
+    ,{   130,   -40,   130,   130,   130}
+    ,{   210,    40,   210,    80,   210}
+    }
+   ,{{   210,   100,   210,    80,   210}
+    ,{   210,    40,   210,    80,   210}
+    ,{   210,   100,   210,    80,   210}
+    ,{   210,    40,   210,    80,   210}
+    ,{   210,   100,   210,    80,   210}
+    }
+   ,{{   210,    40,   210,   210,   210}
+    ,{   170,     0,   170,   170,   170}
+    ,{   210,    40,   210,    80,   210}
+    ,{   210,    40,    80,   210,    80}
+    ,{   210,    40,   210,    80,   210}
+    }
+   ,{{   210,   100,   210,   210,   210}
+    ,{   210,    40,   210,    80,   210}
+    ,{   210,   100,   210,    80,   210}
+    ,{   210,    40,   210,    80,   210}
+    ,{   210,    40,   210,   210,   210}
+    }
+   }
+  ,{{{   250,   250,   250,   250,   240}
+    ,{   250,   250,   250,   250,   240}
+    ,{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    }
+   ,{{   250,   250,   250,   250,   240}
+    ,{   250,   250,   250,   250,   240}
+    ,{   220,   220,   220,   220,   140}
+    ,{   200,   140,   200,   140,    60}
+    ,{   220,   220,   220,   220,   140}
+    }
+   ,{{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    }
+   ,{{   240,   220,   240,   220,   140}
+    ,{   240,   180,   240,   180,   100}
+    ,{   220,   220,   220,   220,   140}
+    ,{   140,    90,    90,    90,   140}
+    ,{   220,   220,   220,   220,   140}
+    }
+   ,{{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    }
+   }
+  }
+ ,{{{{   280,   270,   280,   220,   280}
+    ,{   280,   240,   280,   220,   280}
+    ,{   210,   210,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    ,{   270,   270,   190,   190,   190}
+    }
+   ,{{   210,   210,   190,   190,   190}
+    ,{   190,   190,   150,   150,   160}
+    ,{   210,   210,   190,   190,   190}
+    ,{   120,    80,   110,    50,   120}
+    ,{   210,   210,   190,   190,   190}
+    }
+   ,{{   210,   210,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    }
+   ,{{   280,   240,   280,   220,   280}
+    ,{   280,   240,   280,   220,   280}
+    ,{   210,   210,   190,   190,   190}
+    ,{   180,    80,    60,   180,   110}
+    ,{   210,   210,   190,   190,   190}
+    }
+   ,{{   270,   270,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    ,{   270,   270,   190,   190,   190}
+    }
+   }
+  ,{{{   270,   270,   210,   130,   210}
+    ,{   240,   240,   210,   100,   210}
+    ,{   210,   210,   180,   130,   180}
+    ,{   210,   210,   180,    70,   180}
+    ,{   270,   270,   180,   130,   180}
+    }
+   ,{{   210,   210,   180,    70,   180}
+    ,{   190,   190,   150,    40,   150}
+    ,{   210,   210,   180,    70,   180}
+    ,{    80,    80,    50,   -60,    50}
+    ,{   210,   210,   180,    70,   180}
+    }
+   ,{{   210,   210,   180,   130,   180}
+    ,{   210,   210,   180,    70,   180}
+    ,{   210,   210,   180,   130,   180}
+    ,{   210,   210,   180,    70,   180}
+    ,{   210,   210,   180,   130,   180}
+    }
+   ,{{   240,   240,   210,   100,   210}
+    ,{   240,   240,   210,   100,   210}
+    ,{   210,   210,   180,    70,   180}
+    ,{    80,    80,    50,    70,    50}
+    ,{   210,   210,   180,    70,   180}
+    }
+   ,{{   270,   270,   180,   130,   180}
+    ,{   210,   210,   180,    70,   180}
+    ,{   210,   210,   180,   130,   180}
+    ,{   210,   210,   180,    70,   180}
+    ,{   270,   270,   180,    70,   180}
+    }
+   }
+  ,{{{   280,   220,   280,   220,   280}
+    ,{   280,   220,   280,   220,   280}
+    ,{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    }
+   ,{{   190,   190,   190,   190,   190}
+    ,{   160,   150,   150,   150,   160}
+    ,{   190,   190,   190,   190,   190}
+    ,{   120,    50,   110,    50,   120}
+    ,{   190,   190,   190,   190,   190}
+    }
+   ,{{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    }
+   ,{{   280,   220,   280,   220,   280}
+    ,{   280,   220,   280,   220,   280}
+    ,{   190,   190,   190,   190,   190}
+    ,{    60,    60,    60,    60,    60}
+    ,{   190,   190,   190,   190,   190}
+    }
+   ,{{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    }
+   }
+  ,{{{   210,    70,   210,   210,   210}
+    ,{   210,    40,   210,   210,   210}
+    ,{   180,    70,   180,    50,   180}
+    ,{   180,    10,   180,   180,   180}
+    ,{   180,    70,   180,   180,   180}
+    }
+   ,{{   180,    10,   180,    50,   180}
+    ,{   150,   -20,   150,    10,   150}
+    ,{   180,    10,   180,    50,   180}
+    ,{    50,  -120,    50,    40,    50}
+    ,{   180,    10,   180,    50,   180}
+    }
+   ,{{   180,    70,   180,    50,   180}
+    ,{   180,    10,   180,    50,   180}
+    ,{   180,    70,   180,    50,   180}
+    ,{   180,    10,   180,    50,   180}
+    ,{   180,    70,   180,    50,   180}
+    }
+   ,{{   210,    40,   210,   210,   210}
+    ,{   210,    40,   210,   210,   210}
+    ,{   180,    10,   180,    50,   180}
+    ,{   180,    10,    50,   180,    50}
+    ,{   180,    10,   180,    50,   180}
+    }
+   ,{{   180,    70,   180,   180,   180}
+    ,{   180,    10,   180,    50,   180}
+    ,{   180,    70,   180,    50,   180}
+    ,{   180,    10,   180,    50,   180}
+    ,{   180,    10,   180,   180,   180}
+    }
+   }
+  ,{{{   280,   220,   280,   220,   140}
+    ,{   280,   220,   280,   220,   140}
+    ,{   190,   190,   190,   190,   110}
+    ,{   190,   190,   190,   190,   110}
+    ,{   190,   190,   190,   190,   110}
+    }
+   ,{{   190,   190,   190,   190,   140}
+    ,{   150,   150,   150,   150,   140}
+    ,{   190,   190,   190,   190,   110}
+    ,{   110,    50,   110,    50,   -20}
+    ,{   190,   190,   190,   190,   110}
+    }
+   ,{{   190,   190,   190,   190,   110}
+    ,{   190,   190,   190,   190,   110}
+    ,{   190,   190,   190,   190,   110}
+    ,{   190,   190,   190,   190,   110}
+    ,{   190,   190,   190,   190,   110}
+    }
+   ,{{   280,   220,   280,   220,   140}
+    ,{   280,   220,   280,   220,   140}
+    ,{   190,   190,   190,   190,   110}
+    ,{   110,    60,    60,    60,   110}
+    ,{   190,   190,   190,   190,   110}
+    }
+   ,{{   190,   190,   190,   190,   110}
+    ,{   190,   190,   190,   190,   110}
+    ,{   190,   190,   190,   190,   110}
+    ,{   190,   190,   190,   190,   110}
+    ,{   190,   190,   190,   190,   110}
+    }
+   }
+  }
+ ,{{{{   210,   210,   190,   190,   200}
+    ,{   210,   210,   190,   190,   200}
+    ,{   190,   190,   170,   170,   170}
+    ,{   200,   200,   170,   170,   180}
+    ,{   190,   190,   170,   170,   170}
+    }
+   ,{{   210,   210,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    ,{   190,   190,   160,   160,   170}
+    ,{   130,    90,   120,    60,   130}
+    ,{   190,   190,   160,   160,   170}
+    }
+   ,{{   200,   200,   170,   170,   180}
+    ,{   200,   200,   170,   170,   180}
+    ,{   190,   190,   170,   170,   170}
+    ,{   200,   200,   170,   170,   180}
+    ,{   190,   190,   170,   170,   170}
+    }
+   ,{{   200,   190,   190,   160,   200}
+    ,{   200,   160,   190,   130,   200}
+    ,{   190,   190,   160,   160,   170}
+    ,{   130,    40,    10,   130,    70}
+    ,{   190,   190,   160,   160,   170}
+    }
+   ,{{   200,   200,   170,   170,   180}
+    ,{   200,   200,   170,   170,   180}
+    ,{   190,   190,   170,   170,   170}
+    ,{   200,   200,   170,   170,   180}
+    ,{   160,   160,    80,    80,    80}
+    }
+   }
+  ,{{{   210,   210,   180,   110,   180}
+    ,{   210,   210,   180,    70,   180}
+    ,{   190,   190,   160,   110,   160}
+    ,{   200,   200,   170,    60,   170}
+    ,{   190,   190,   160,   110,   160}
+    }
+   ,{{   210,   210,   180,    70,   180}
+    ,{   210,   210,   180,    70,   180}
+    ,{   190,   190,   160,    50,   160}
+    ,{    90,    90,    60,   -50,    60}
+    ,{   190,   190,   160,    50,   160}
+    }
+   ,{{   200,   200,   170,   110,   170}
+    ,{   200,   200,   170,    60,   170}
+    ,{   190,   190,   160,   110,   160}
+    ,{   200,   200,   170,    60,   170}
+    ,{   190,   190,   160,   110,   160}
+    }
+   ,{{   190,   190,   160,    50,   160}
+    ,{   160,   160,   130,    20,   130}
+    ,{   190,   190,   160,    50,   160}
+    ,{    40,    40,    10,    30,    10}
+    ,{   190,   190,   160,    50,   160}
+    }
+   ,{{   200,   200,   170,   110,   170}
+    ,{   200,   200,   170,    60,   170}
+    ,{   190,   190,   160,   110,   160}
+    ,{   200,   200,   170,    60,   170}
+    ,{   160,   160,    70,   -30,    70}
+    }
+   }
+  ,{{{   200,   190,   190,   190,   200}
+    ,{   200,   190,   190,   190,   200}
+    ,{   170,   170,   170,   170,   170}
+    ,{   180,   170,   170,   170,   180}
+    ,{   170,   170,   170,   170,   170}
+    }
+   ,{{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    ,{   170,   160,   160,   160,   170}
+    ,{   130,    60,   120,    60,   130}
+    ,{   170,   160,   160,   160,   170}
+    }
+   ,{{   180,   170,   170,   170,   180}
+    ,{   180,   170,   170,   170,   180}
+    ,{   170,   170,   170,   170,   170}
+    ,{   180,   170,   170,   170,   180}
+    ,{   170,   170,   170,   170,   170}
+    }
+   ,{{   200,   160,   190,   160,   200}
+    ,{   200,   130,   190,   130,   200}
+    ,{   170,   160,   160,   160,   170}
+    ,{    20,    10,    10,    10,    20}
+    ,{   170,   160,   160,   160,   170}
+    }
+   ,{{   180,   170,   170,   170,   180}
+    ,{   180,   170,   170,   170,   180}
+    ,{   170,   170,   170,   170,   170}
+    ,{   180,   170,   170,   170,   180}
+    ,{    80,    80,    80,    80,    80}
+    }
+   }
+  ,{{{   180,    50,   180,   130,   180}
+    ,{   180,    10,   180,   120,   180}
+    ,{   160,    50,   160,    30,   160}
+    ,{   170,     0,   170,   130,   170}
+    ,{   160,    50,   160,    70,   160}
+    }
+   ,{{   180,    10,   180,    50,   180}
+    ,{   180,    10,   180,    50,   180}
+    ,{   160,   -10,   160,    20,   160}
+    ,{    60,  -110,    60,    50,    60}
+    ,{   160,   -10,   160,    20,   160}
+    }
+   ,{{   170,    50,   170,    30,   170}
+    ,{   170,     0,   170,    30,   170}
+    ,{   160,    50,   160,    30,   160}
+    ,{   170,     0,   170,    30,   170}
+    ,{   160,    50,   160,    30,   160}
+    }
+   ,{{   160,   -10,   160,   130,   160}
+    ,{   130,   -40,   130,   120,   130}
+    ,{   160,   -10,   160,    20,   160}
+    ,{   130,   -30,    10,   130,    10}
+    ,{   160,   -10,   160,    20,   160}
+    }
+   ,{{   170,    50,   170,    70,   170}
+    ,{   170,     0,   170,    30,   170}
+    ,{   160,    50,   160,    30,   160}
+    ,{   170,     0,   170,    30,   170}
+    ,{    70,  -100,    70,    70,    70}
+    }
+   }
+  ,{{{   190,   190,   190,   190,   170}
+    ,{   190,   190,   190,   190,   170}
+    ,{   170,   170,   170,   170,    90}
+    ,{   170,   170,   170,   170,   100}
+    ,{   170,   170,   170,   170,    90}
+    }
+   ,{{   190,   190,   190,   190,   170}
+    ,{   190,   190,   190,   190,   170}
+    ,{   160,   160,   160,   160,    90}
+    ,{   120,    60,   120,    60,   -10}
+    ,{   160,   160,   160,   160,    90}
+    }
+   ,{{   170,   170,   170,   170,   100}
+    ,{   170,   170,   170,   170,   100}
+    ,{   170,   170,   170,   170,    90}
+    ,{   170,   170,   170,   170,   100}
+    ,{   170,   170,   170,   170,    90}
+    }
+   ,{{   190,   160,   190,   160,    90}
+    ,{   190,   130,   190,   130,    60}
+    ,{   160,   160,   160,   160,    90}
+    ,{    70,    10,    10,    10,    70}
+    ,{   160,   160,   160,   160,    90}
+    }
+   ,{{   170,   170,   170,   170,   100}
+    ,{   170,   170,   170,   170,   100}
+    ,{   170,   170,   170,   170,    90}
+    ,{   170,   170,   170,   170,   100}
+    ,{    80,    80,    80,    80,     0}
+    }
+   }
+  }
+ ,{{{{   210,   210,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    }
+   ,{{   210,   210,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    ,{   170,   170,   140,   140,   150}
+    ,{   150,   110,   140,    80,   150}
+    ,{   170,   170,   140,   140,   150}
+    }
+   ,{{   210,   210,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    }
+   ,{{   170,   170,   150,   150,   160}
+    ,{   160,   120,   150,    90,   160}
+    ,{   170,   170,   140,   140,   150}
+    ,{   150,    60,    30,   150,    90}
+    ,{   170,   170,   140,   140,   150}
+    }
+   ,{{   210,   210,   190,   190,   190}
+    ,{   210,   210,   190,   190,   190}
+    ,{   180,   180,   160,   160,   160}
+    ,{   210,   210,   190,   190,   190}
+    ,{   190,   190,   100,   100,   110}
+    }
+   }
+  ,{{{   210,   210,   180,   130,   180}
+    ,{   210,   210,   180,    70,   180}
+    ,{   210,   210,   180,   130,   180}
+    ,{   210,   210,   180,    70,   180}
+    ,{   210,   210,   180,   130,   180}
+    }
+   ,{{   210,   210,   180,    70,   180}
+    ,{   210,   210,   180,    70,   180}
+    ,{   170,   170,   140,    30,   140}
+    ,{   110,   110,    80,   -30,    80}
+    ,{   170,   170,   140,    30,   140}
+    }
+   ,{{   210,   210,   180,   130,   180}
+    ,{   210,   210,   180,    70,   180}
+    ,{   210,   210,   180,   130,   180}
+    ,{   210,   210,   180,    70,   180}
+    ,{   210,   210,   180,   130,   180}
+    }
+   ,{{   170,   170,   140,    50,   140}
+    ,{   120,   120,    90,   -20,    90}
+    ,{   170,   170,   140,    30,   140}
+    ,{    60,    60,    30,    50,    30}
+    ,{   170,   170,   140,    30,   140}
+    }
+   ,{{   210,   210,   180,   100,   180}
+    ,{   210,   210,   180,    70,   180}
+    ,{   180,   180,   150,   100,   150}
+    ,{   210,   210,   180,    70,   180}
+    ,{   190,   190,   100,   -10,   100}
+    }
+   }
+  ,{{{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    }
+   ,{{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    ,{   150,   140,   140,   140,   150}
+    ,{   150,    80,   140,    80,   150}
+    ,{   150,   140,   140,   140,   150}
+    }
+   ,{{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    }
+   ,{{   160,   140,   150,   140,   160}
+    ,{   160,    90,   150,    90,   160}
+    ,{   150,   140,   140,   140,   150}
+    ,{    40,    30,    30,    30,    40}
+    ,{   150,   140,   140,   140,   150}
+    }
+   ,{{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    ,{   160,   160,   160,   160,   160}
+    ,{   190,   190,   190,   190,   190}
+    ,{   110,   100,   100,   100,   110}
+    }
+   }
+  ,{{{   180,    70,   180,   150,   180}
+    ,{   180,    10,   180,    80,   180}
+    ,{   180,    70,   180,    50,   180}
+    ,{   180,    10,   180,   150,   180}
+    ,{   180,    70,   180,    90,   180}
+    }
+   ,{{   180,    10,   180,    70,   180}
+    ,{   180,    10,   180,    50,   180}
+    ,{   140,   -30,   140,     0,   140}
+    ,{    80,   -90,    80,    70,    80}
+    ,{   140,   -30,   140,     0,   140}
+    }
+   ,{{   180,    70,   180,    50,   180}
+    ,{   180,    10,   180,    50,   180}
+    ,{   180,    70,   180,    50,   180}
+    ,{   180,    10,   180,    50,   180}
+    ,{   180,    70,   180,    50,   180}
+    }
+   ,{{   150,   -10,   140,   150,   140}
+    ,{    90,   -80,    90,    80,    90}
+    ,{   140,   -30,   140,     0,   140}
+    ,{   150,   -10,    30,   150,    30}
+    ,{   140,   -30,   140,     0,   140}
+    }
+   ,{{   180,    40,   180,    90,   180}
+    ,{   180,    10,   180,    50,   180}
+    ,{   150,    40,   150,    20,   150}
+    ,{   180,    10,   180,    50,   180}
+    ,{   100,   -70,   100,    90,   100}
+    }
+   }
+  ,{{{   190,   190,   190,   190,   170}
+    ,{   190,   190,   190,   190,   170}
+    ,{   190,   190,   190,   190,   110}
+    ,{   190,   190,   190,   190,   110}
+    ,{   190,   190,   190,   190,   110}
+    }
+   ,{{   190,   190,   190,   190,   170}
+    ,{   190,   190,   190,   190,   170}
+    ,{   140,   140,   140,   140,    70}
+    ,{   140,    80,   140,    80,    10}
+    ,{   140,   140,   140,   140,    70}
+    }
+   ,{{   190,   190,   190,   190,   110}
+    ,{   190,   190,   190,   190,   110}
+    ,{   190,   190,   190,   190,   110}
+    ,{   190,   190,   190,   190,   110}
+    ,{   190,   190,   190,   190,   110}
+    }
+   ,{{   150,   140,   150,   140,    90}
+    ,{   150,    90,   150,    90,    20}
+    ,{   140,   140,   140,   140,    70}
+    ,{    90,    30,    30,    30,    90}
+    ,{   140,   140,   140,   140,    70}
+    }
+   ,{{   190,   190,   190,   190,   110}
+    ,{   190,   190,   190,   190,   110}
+    ,{   160,   160,   160,   160,    80}
+    ,{   190,   190,   190,   190,   110}
+    ,{   100,   100,   100,   100,    30}
+    }
+   }
+  }
+ ,{{{{   300,   300,   280,   250,   280}
+    ,{   280,   280,   280,   250,   280}
+    ,{   240,   240,   220,   220,   220}
+    ,{   240,   240,   220,   220,   220}
+    ,{   300,   300,   220,   220,   220}
+    }
+   ,{{   280,   280,   250,   250,   260}
+    ,{   280,   280,   250,   250,   260}
+    ,{   240,   240,   220,   220,   220}
+    ,{   200,   160,   200,   140,   200}
+    ,{   240,   240,   220,   220,   220}
+    }
+   ,{{   240,   240,   220,   220,   220}
+    ,{   240,   240,   220,   220,   220}
+    ,{   240,   240,   220,   220,   220}
+    ,{   240,   240,   220,   220,   220}
+    ,{   240,   240,   220,   220,   220}
+    }
+   ,{{   280,   240,   280,   220,   280}
+    ,{   280,   240,   280,   220,   280}
+    ,{   240,   240,   220,   220,   220}
+    ,{   210,   110,    90,   210,   140}
+    ,{   240,   240,   220,   220,   220}
+    }
+   ,{{   300,   300,   220,   220,   220}
+    ,{   240,   240,   220,   220,   220}
+    ,{   240,   240,   220,   220,   220}
+    ,{   240,   240,   220,   220,   220}
+    ,{   300,   300,   220,   220,   220}
+    }
+   }
+  ,{{{   300,   300,   250,   160,   250}
+    ,{   280,   280,   250,   140,   250}
+    ,{   240,   240,   210,   160,   210}
+    ,{   240,   240,   210,   100,   210}
+    ,{   300,   300,   210,   160,   210}
+    }
+   ,{{   280,   280,   250,   140,   250}
+    ,{   280,   280,   250,   140,   250}
+    ,{   240,   240,   210,   100,   210}
+    ,{   160,   160,   130,    20,   130}
+    ,{   240,   240,   210,   100,   210}
+    }
+   ,{{   240,   240,   210,   160,   210}
+    ,{   240,   240,   210,   100,   210}
+    ,{   240,   240,   210,   160,   210}
+    ,{   240,   240,   210,   100,   210}
+    ,{   240,   240,   210,   160,   210}
+    }
+   ,{{   240,   240,   210,   100,   210}
+    ,{   240,   240,   210,   100,   210}
+    ,{   240,   240,   210,   100,   210}
+    ,{   110,   110,    80,   100,    80}
+    ,{   240,   240,   210,   100,   210}
+    }
+   ,{{   300,   300,   210,   160,   210}
+    ,{   240,   240,   210,   100,   210}
+    ,{   240,   240,   210,   160,   210}
+    ,{   240,   240,   210,   100,   210}
+    ,{   300,   300,   210,   140,   210}
+    }
+   }
+  ,{{{   280,   250,   280,   250,   280}
+    ,{   280,   250,   280,   250,   280}
+    ,{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   260,   250,   250,   250,   260}
+    ,{   260,   250,   250,   250,   260}
+    ,{   220,   220,   220,   220,   220}
+    ,{   200,   140,   200,   140,   200}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   280,   220,   280,   220,   280}
+    ,{   280,   220,   280,   220,   280}
+    ,{   220,   220,   220,   220,   220}
+    ,{    90,    90,    90,    90,    90}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    ,{   220,   220,   220,   220,   220}
+    }
+   }
+  ,{{{   250,   100,   250,   210,   250}
+    ,{   250,    70,   250,   210,   250}
+    ,{   210,   100,   210,    80,   210}
+    ,{   210,    40,   210,   210,   210}
+    ,{   210,   100,   210,   210,   210}
+    }
+   ,{{   250,    70,   250,   130,   250}
+    ,{   250,    70,   250,   110,   250}
+    ,{   210,    40,   210,    80,   210}
+    ,{   130,   -40,   130,   130,   130}
+    ,{   210,    40,   210,    80,   210}
+    }
+   ,{{   210,   100,   210,    80,   210}
+    ,{   210,    40,   210,    80,   210}
+    ,{   210,   100,   210,    80,   210}
+    ,{   210,    40,   210,    80,   210}
+    ,{   210,   100,   210,    80,   210}
+    }
+   ,{{   210,    40,   210,   210,   210}
+    ,{   210,    40,   210,   210,   210}
+    ,{   210,    40,   210,    80,   210}
+    ,{   210,    40,    80,   210,    80}
+    ,{   210,    40,   210,    80,   210}
+    }
+   ,{{   210,   100,   210,   210,   210}
+    ,{   210,    40,   210,    80,   210}
+    ,{   210,   100,   210,    80,   210}
+    ,{   210,    40,   210,    80,   210}
+    ,{   210,    50,   210,   210,   210}
+    }
+   }
+  ,{{{   280,   250,   280,   250,   240}
+    ,{   280,   250,   280,   250,   240}
+    ,{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    }
+   ,{{   250,   250,   250,   250,   240}
+    ,{   250,   250,   250,   250,   240}
+    ,{   220,   220,   220,   220,   140}
+    ,{   200,   140,   200,   140,    90}
+    ,{   220,   220,   220,   220,   140}
+    }
+   ,{{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    }
+   ,{{   280,   220,   280,   220,   140}
+    ,{   280,   220,   280,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    ,{   140,    90,    90,    90,   140}
+    ,{   220,   220,   220,   220,   140}
+    }
+   ,{{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    ,{   220,   220,   220,   220,   140}
+    }
+   }
+  }
+ }
+,{{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   300,   300,   270,   270,   290}
+    ,{   300,   300,   270,   270,   290}
+    ,{   290,   290,   250,   270,   250}
+    ,{   300,   300,   270,   270,   270}
+    ,{   270,   270,   240,   260,   240}
+    }
+   ,{{   290,   270,   230,   230,   290}
+    ,{   290,   270,   230,   230,   290}
+    ,{   260,   260,   220,   220,   220}
+    ,{   190,   170,   190,   130,   190}
+    ,{   260,   260,   220,   220,   220}
+    }
+   ,{{   300,   300,   270,   270,   270}
+    ,{   300,   300,   270,   270,   270}
+    ,{   290,   290,   250,   270,   250}
+    ,{   300,   300,   270,   270,   270}
+    ,{   270,   270,   240,   260,   240}
+    }
+   ,{{   260,   260,   220,   220,   220}
+    ,{   190,   170,   190,   130,   190}
+    ,{   260,   260,   220,   220,   220}
+    ,{   210,   130,    80,   210,   210}
+    ,{   260,   260,   220,   220,   220}
+    }
+   ,{{   300,   300,   270,   270,   270}
+    ,{   300,   300,   270,   270,   270}
+    ,{   270,   270,   240,   260,   240}
+    ,{   300,   300,   270,   270,   270}
+    ,{   240,   240,   150,   150,   150}
+    }
+   }
+  ,{{{   300,   300,   270,   270,   270}
+    ,{   300,   300,   270,   230,   270}
+    ,{   290,   290,   250,   270,   250}
+    ,{   300,   300,   270,   230,   270}
+    ,{   270,   270,   240,   260,   240}
+    }
+   ,{{   270,   270,   230,   190,   230}
+    ,{   270,   270,   230,   190,   230}
+    ,{   260,   260,   220,   180,   220}
+    ,{   170,   170,   130,    90,   130}
+    ,{   260,   260,   220,   180,   220}
+    }
+   ,{{   300,   300,   270,   270,   270}
+    ,{   300,   300,   270,   230,   270}
+    ,{   290,   290,   250,   270,   250}
+    ,{   300,   300,   270,   230,   270}
+    ,{   270,   270,   240,   260,   240}
+    }
+   ,{{   260,   260,   220,   180,   220}
+    ,{   170,   170,   130,    90,   130}
+    ,{   260,   260,   220,   180,   220}
+    ,{   170,   110,    80,   170,    80}
+    ,{   260,   260,   220,   180,   220}
+    }
+   ,{{   300,   300,   270,   260,   270}
+    ,{   300,   300,   270,   230,   270}
+    ,{   270,   270,   240,   260,   240}
+    ,{   300,   300,   270,   230,   270}
+    ,{   240,   240,   150,   110,   150}
+    }
+   }
+  ,{{{   270,   270,   270,   270,   270}
+    ,{   270,   270,   270,   270,   270}
+    ,{   250,   250,   250,   250,   250}
+    ,{   270,   270,   270,   270,   270}
+    ,{   240,   240,   240,   240,   240}
+    }
+   ,{{   230,   230,   230,   230,   230}
+    ,{   230,   230,   230,   230,   230}
+    ,{   220,   220,   220,   220,   220}
+    ,{   190,   130,   190,   130,   190}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   270,   270,   270,   270,   270}
+    ,{   270,   270,   270,   270,   270}
+    ,{   250,   250,   250,   250,   250}
+    ,{   270,   270,   270,   270,   270}
+    ,{   240,   240,   240,   240,   240}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   190,   130,   190,   130,   190}
+    ,{   220,   220,   220,   220,   220}
+    ,{    80,    80,    80,    80,    80}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   270,   270,   270,   270,   270}
+    ,{   270,   270,   270,   270,   270}
+    ,{   240,   240,   240,   240,   240}
+    ,{   270,   270,   270,   270,   270}
+    ,{   150,   150,   150,   150,   150}
+    }
+   }
+  ,{{{   270,   230,   270,   210,   270}
+    ,{   270,   190,   270,   140,   270}
+    ,{   250,   230,   250,   120,   250}
+    ,{   270,   190,   270,   210,   270}
+    ,{   240,   220,   240,   150,   240}
+    }
+   ,{{   230,   150,   230,   130,   230}
+    ,{   230,   150,   230,   100,   230}
+    ,{   220,   140,   220,    90,   220}
+    ,{   130,    50,   130,   130,   130}
+    ,{   220,   140,   220,    90,   220}
+    }
+   ,{{   270,   230,   270,   140,   270}
+    ,{   270,   190,   270,   140,   270}
+    ,{   250,   230,   250,   120,   250}
+    ,{   270,   190,   270,   140,   270}
+    ,{   240,   220,   240,   110,   240}
+    }
+   ,{{   220,   140,   220,   210,   220}
+    ,{   130,    50,   130,   130,   130}
+    ,{   220,   140,   220,    90,   220}
+    ,{   210,   130,    80,   210,    80}
+    ,{   220,   140,   220,    90,   220}
+    }
+   ,{{   270,   220,   270,   150,   270}
+    ,{   270,   190,   270,   140,   270}
+    ,{   240,   220,   240,   110,   240}
+    ,{   270,   190,   270,   140,   270}
+    ,{   150,    70,   150,   150,   150}
+    }
+   }
+  ,{{{   290,   270,   270,   270,   290}
+    ,{   290,   270,   270,   270,   290}
+    ,{   250,   250,   250,   250,   250}
+    ,{   270,   270,   270,   270,   270}
+    ,{   240,   240,   240,   240,   240}
+    }
+   ,{{   290,   230,   230,   230,   290}
+    ,{   290,   230,   230,   230,   290}
+    ,{   220,   220,   220,   220,   220}
+    ,{   190,   130,   190,   130,   130}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   270,   270,   270,   270,   270}
+    ,{   270,   270,   270,   270,   270}
+    ,{   250,   250,   250,   250,   250}
+    ,{   270,   270,   270,   270,   270}
+    ,{   240,   240,   240,   240,   240}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   190,   130,   190,   130,   130}
+    ,{   220,   220,   220,   220,   220}
+    ,{   210,    80,    80,    80,   210}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   270,   270,   270,   270,   270}
+    ,{   270,   270,   270,   270,   270}
+    ,{   240,   240,   240,   240,   240}
+    ,{   270,   270,   270,   270,   270}
+    ,{   150,   150,   150,   150,   150}
+    }
+   }
+  }
+ ,{{{{   300,   280,   240,   240,   300}
+    ,{   300,   280,   240,   240,   300}
+    ,{   260,   260,   220,   240,   220}
+    ,{   250,   250,   210,   210,   210}
+    ,{   250,   250,   220,   240,   220}
+    }
+   ,{{   300,   280,   240,   240,   300}
+    ,{   300,   280,   240,   240,   300}
+    ,{   250,   250,   220,   220,   220}
+    ,{   100,    70,   100,    40,   100}
+    ,{   250,   250,   220,   220,   220}
+    }
+   ,{{   250,   250,   220,   240,   220}
+    ,{   250,   250,   210,   210,   210}
+    ,{   250,   250,   220,   240,   220}
+    ,{   250,   250,   210,   210,   210}
+    ,{   250,   250,   220,   240,   220}
+    }
+   ,{{   250,   250,   220,   220,   220}
+    ,{   160,   140,   160,   100,   160}
+    ,{   250,   250,   220,   220,   220}
+    ,{   210,   130,    80,   210,   210}
+    ,{   250,   250,   220,   220,   220}
+    }
+   ,{{   260,   260,   220,   240,   220}
+    ,{   250,   250,   210,   210,   210}
+    ,{   260,   260,   220,   240,   220}
+    ,{   250,   250,   210,   210,   210}
+    ,{   240,   240,   140,   140,   140}
+    }
+   }
+  ,{{{   280,   280,   240,   240,   240}
+    ,{   280,   280,   240,   200,   240}
+    ,{   260,   260,   220,   240,   220}
+    ,{   250,   250,   210,   170,   210}
+    ,{   250,   250,   220,   240,   220}
+    }
+   ,{{   280,   280,   240,   200,   240}
+    ,{   280,   280,   240,   200,   240}
+    ,{   250,   250,   220,   180,   220}
+    ,{    70,    70,    40,     0,    40}
+    ,{   250,   250,   220,   180,   220}
+    }
+   ,{{   250,   250,   220,   240,   220}
+    ,{   250,   250,   210,   170,   210}
+    ,{   250,   250,   220,   240,   220}
+    ,{   250,   250,   210,   170,   210}
+    ,{   250,   250,   220,   240,   220}
+    }
+   ,{{   250,   250,   220,   180,   220}
+    ,{   140,   140,   100,    60,   100}
+    ,{   250,   250,   220,   180,   220}
+    ,{   170,   110,    80,   170,    80}
+    ,{   250,   250,   220,   180,   220}
+    }
+   ,{{   260,   260,   220,   240,   220}
+    ,{   250,   250,   210,   170,   210}
+    ,{   260,   260,   220,   240,   220}
+    ,{   250,   250,   210,   170,   210}
+    ,{   240,   240,   140,   100,   140}
+    }
+   }
+  ,{{{   240,   240,   240,   240,   240}
+    ,{   240,   240,   240,   240,   240}
+    ,{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   240,   240,   240,   240,   240}
+    ,{   240,   240,   240,   240,   240}
+    ,{   220,   220,   220,   220,   220}
+    ,{   100,    40,   100,    40,   100}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   160,   100,   160,   100,   160}
+    ,{   220,   220,   220,   220,   220}
+    ,{    80,    80,    80,    80,    80}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   140,   140,   140,   140,   140}
+    }
+   }
+  ,{{{   240,   200,   240,   210,   240}
+    ,{   240,   160,   240,   110,   240}
+    ,{   220,   200,   220,    90,   220}
+    ,{   210,   130,   210,   210,   210}
+    ,{   220,   200,   220,   140,   220}
+    }
+   ,{{   240,   160,   240,   110,   240}
+    ,{   240,   160,   240,   110,   240}
+    ,{   220,   140,   220,    90,   220}
+    ,{    40,   -40,    40,    40,    40}
+    ,{   220,   140,   220,    90,   220}
+    }
+   ,{{   220,   200,   220,    90,   220}
+    ,{   210,   130,   210,    80,   210}
+    ,{   220,   200,   220,    90,   220}
+    ,{   210,   130,   210,    80,   210}
+    ,{   220,   200,   220,    90,   220}
+    }
+   ,{{   220,   140,   220,   210,   220}
+    ,{   100,    20,   100,   100,   100}
+    ,{   220,   140,   220,    90,   220}
+    ,{   210,   130,    80,   210,    80}
+    ,{   220,   140,   220,    90,   220}
+    }
+   ,{{   220,   200,   220,   140,   220}
+    ,{   210,   130,   210,    80,   210}
+    ,{   220,   200,   220,    90,   220}
+    ,{   210,   130,   210,    80,   210}
+    ,{   140,    60,   140,   140,   140}
+    }
+   }
+  ,{{{   300,   240,   240,   240,   300}
+    ,{   300,   240,   240,   240,   300}
+    ,{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   300,   240,   240,   240,   300}
+    ,{   300,   240,   240,   240,   300}
+    ,{   220,   220,   220,   220,   220}
+    ,{   100,    40,   100,    40,    40}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   160,   100,   160,   100,   100}
+    ,{   220,   220,   220,   220,   220}
+    ,{   210,    80,    80,    80,   210}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   140,   140,   140,   140,   140}
+    }
+   }
+  }
+ ,{{{{   430,   430,   370,   370,   430}
+    ,{   430,   410,   370,   370,   430}
+    ,{   370,   370,   340,   360,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   430,   430,   340,   360,   340}
+    }
+   ,{{   430,   410,   370,   370,   430}
+    ,{   430,   410,   370,   370,   430}
+    ,{   370,   370,   340,   340,   340}
+    ,{   320,   290,   320,   260,   320}
+    ,{   370,   370,   340,   340,   340}
+    }
+   ,{{   370,   370,   340,   360,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   370,   370,   340,   360,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   370,   370,   340,   360,   340}
+    }
+   ,{{   370,   370,   360,   340,   360}
+    ,{   360,   330,   360,   300,   360}
+    ,{   370,   370,   340,   340,   340}
+    ,{   340,   260,   210,   340,   340}
+    ,{   370,   370,   340,   340,   340}
+    }
+   ,{{   430,   430,   340,   360,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   370,   370,   340,   360,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   430,   430,   340,   340,   340}
+    }
+   }
+  ,{{{   430,   430,   370,   360,   370}
+    ,{   410,   410,   370,   330,   370}
+    ,{   370,   370,   340,   360,   340}
+    ,{   370,   370,   340,   300,   340}
+    ,{   430,   430,   340,   360,   340}
+    }
+   ,{{   410,   410,   370,   330,   370}
+    ,{   410,   410,   370,   330,   370}
+    ,{   370,   370,   340,   300,   340}
+    ,{   290,   290,   260,   220,   260}
+    ,{   370,   370,   340,   300,   340}
+    }
+   ,{{   370,   370,   340,   360,   340}
+    ,{   370,   370,   340,   300,   340}
+    ,{   370,   370,   340,   360,   340}
+    ,{   370,   370,   340,   300,   340}
+    ,{   370,   370,   340,   360,   340}
+    }
+   ,{{   370,   370,   340,   300,   340}
+    ,{   330,   330,   300,   260,   300}
+    ,{   370,   370,   340,   300,   340}
+    ,{   300,   240,   210,   300,   210}
+    ,{   370,   370,   340,   300,   340}
+    }
+   ,{{   430,   430,   340,   360,   340}
+    ,{   370,   370,   340,   300,   340}
+    ,{   370,   370,   340,   360,   340}
+    ,{   370,   370,   340,   300,   340}
+    ,{   430,   430,   340,   300,   340}
+    }
+   }
+  ,{{{   370,   370,   370,   370,   370}
+    ,{   370,   370,   370,   370,   370}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   370,   370,   370,   370,   370}
+    ,{   370,   370,   370,   370,   370}
+    ,{   340,   340,   340,   340,   340}
+    ,{   320,   260,   320,   260,   320}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   360,   340,   360,   340,   360}
+    ,{   360,   300,   360,   300,   360}
+    ,{   340,   340,   340,   340,   340}
+    ,{   210,   210,   210,   210,   210}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   }
+  ,{{{   370,   320,   370,   340,   370}
+    ,{   370,   290,   370,   300,   370}
+    ,{   340,   320,   340,   210,   340}
+    ,{   340,   260,   340,   340,   340}
+    ,{   340,   320,   340,   340,   340}
+    }
+   ,{{   370,   290,   370,   260,   370}
+    ,{   370,   290,   370,   240,   370}
+    ,{   340,   260,   340,   210,   340}
+    ,{   260,   180,   260,   260,   260}
+    ,{   340,   260,   340,   210,   340}
+    }
+   ,{{   340,   320,   340,   210,   340}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   320,   340,   210,   340}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   320,   340,   210,   340}
+    }
+   ,{{   340,   260,   340,   340,   340}
+    ,{   300,   220,   300,   300,   300}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   260,   210,   340,   210}
+    ,{   340,   260,   340,   210,   340}
+    }
+   ,{{   340,   320,   340,   340,   340}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   320,   340,   210,   340}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   260,   340,   340,   340}
+    }
+   }
+  ,{{{   430,   370,   370,   370,   430}
+    ,{   430,   370,   370,   370,   430}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   430,   370,   370,   370,   430}
+    ,{   430,   370,   370,   370,   430}
+    ,{   340,   340,   340,   340,   340}
+    ,{   320,   260,   320,   260,   260}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   360,   340,   360,   340,   340}
+    ,{   360,   300,   360,   300,   300}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   210,   210,   210,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   }
+  }
+ ,{{{{   400,   400,   400,   360,   400}
+    ,{   400,   370,   400,   360,   400}
+    ,{   340,   340,   310,   330,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   400,   400,   310,   330,   310}
+    }
+   ,{{   360,   360,   310,   360,   330}
+    ,{   360,   360,   270,   360,   330}
+    ,{   340,   340,   310,   310,   310}
+    ,{   230,   220,   230,   170,   230}
+    ,{   340,   340,   310,   310,   310}
+    }
+   ,{{   340,   340,   310,   330,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   340,   340,   310,   330,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   340,   340,   310,   330,   310}
+    }
+   ,{{   400,   370,   400,   340,   400}
+    ,{   400,   370,   400,   340,   400}
+    ,{   340,   340,   310,   310,   310}
+    ,{   310,   230,   180,   310,   310}
+    ,{   340,   340,   310,   310,   310}
+    }
+   ,{{   400,   400,   310,   330,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   340,   340,   310,   330,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   400,   400,   310,   310,   310}
+    }
+   }
+  ,{{{   400,   400,   340,   360,   340}
+    ,{   370,   370,   340,   360,   340}
+    ,{   340,   340,   310,   330,   310}
+    ,{   340,   340,   310,   270,   310}
+    ,{   400,   400,   310,   330,   310}
+    }
+   ,{{   360,   360,   310,   360,   310}
+    ,{   360,   360,   270,   360,   270}
+    ,{   340,   340,   310,   270,   310}
+    ,{   220,   220,   170,   130,   170}
+    ,{   340,   340,   310,   270,   310}
+    }
+   ,{{   340,   340,   310,   330,   310}
+    ,{   340,   340,   310,   270,   310}
+    ,{   340,   340,   310,   330,   310}
+    ,{   340,   340,   310,   270,   310}
+    ,{   340,   340,   310,   330,   310}
+    }
+   ,{{   370,   370,   340,   300,   340}
+    ,{   370,   370,   340,   300,   340}
+    ,{   340,   340,   310,   270,   310}
+    ,{   270,   210,   180,   270,   180}
+    ,{   340,   340,   310,   270,   310}
+    }
+   ,{{   400,   400,   310,   330,   310}
+    ,{   340,   340,   310,   270,   310}
+    ,{   340,   340,   310,   330,   310}
+    ,{   340,   340,   310,   270,   310}
+    ,{   400,   400,   310,   270,   310}
+    }
+   }
+  ,{{{   400,   340,   400,   340,   400}
+    ,{   400,   340,   400,   340,   400}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   270,   270,   270,   270,   270}
+    ,{   310,   310,   310,   310,   310}
+    ,{   230,   170,   230,   170,   230}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   400,   340,   400,   340,   400}
+    ,{   400,   340,   400,   340,   400}
+    ,{   310,   310,   310,   310,   310}
+    ,{   180,   180,   180,   180,   180}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   }
+  ,{{{   340,   290,   340,   340,   340}
+    ,{   340,   260,   340,   340,   340}
+    ,{   310,   290,   310,   180,   310}
+    ,{   310,   230,   310,   310,   310}
+    ,{   310,   290,   310,   310,   310}
+    }
+   ,{{   310,   230,   310,   180,   310}
+    ,{   270,   190,   270,   140,   270}
+    ,{   310,   230,   310,   180,   310}
+    ,{   170,    20,   170,   170,   170}
+    ,{   310,   230,   310,   180,   310}
+    }
+   ,{{   310,   290,   310,   180,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   290,   310,   180,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   290,   310,   180,   310}
+    }
+   ,{{   340,   260,   340,   340,   340}
+    ,{   340,   260,   340,   340,   340}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   230,   180,   310,   180}
+    ,{   310,   230,   310,   180,   310}
+    }
+   ,{{   310,   290,   310,   310,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   290,   310,   180,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   230,   310,   310,   310}
+    }
+   }
+  ,{{{   400,   340,   400,   340,   340}
+    ,{   400,   340,   400,   340,   340}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   330,   310,   310,   310,   330}
+    ,{   330,   270,   270,   270,   330}
+    ,{   310,   310,   310,   310,   310}
+    ,{   230,   170,   230,   170,   170}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   400,   340,   400,   340,   340}
+    ,{   400,   340,   400,   340,   340}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   180,   180,   180,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   }
+  }
+ ,{{{{   370,   340,   310,   310,   370}
+    ,{   370,   340,   310,   310,   370}
+    ,{   320,   320,   290,   310,   290}
+    ,{   330,   330,   290,   290,   290}
+    ,{   320,   320,   290,   310,   290}
+    }
+   ,{{   370,   340,   310,   310,   370}
+    ,{   370,   340,   310,   310,   370}
+    ,{   320,   320,   280,   280,   280}
+    ,{   240,   220,   240,   180,   240}
+    ,{   320,   320,   280,   280,   280}
+    }
+   ,{{   330,   330,   290,   310,   290}
+    ,{   330,   330,   290,   290,   290}
+    ,{   320,   320,   290,   310,   290}
+    ,{   330,   330,   290,   290,   290}
+    ,{   320,   320,   290,   310,   290}
+    }
+   ,{{   320,   320,   310,   280,   310}
+    ,{   310,   290,   310,   250,   310}
+    ,{   320,   320,   280,   280,   280}
+    ,{   260,   180,   130,   260,   260}
+    ,{   320,   320,   280,   280,   280}
+    }
+   ,{{   330,   330,   290,   310,   290}
+    ,{   330,   330,   290,   290,   290}
+    ,{   320,   320,   290,   310,   290}
+    ,{   330,   330,   290,   290,   290}
+    ,{   290,   290,   200,   200,   200}
+    }
+   }
+  ,{{{   340,   340,   310,   310,   310}
+    ,{   340,   340,   310,   270,   310}
+    ,{   320,   320,   290,   310,   290}
+    ,{   330,   330,   290,   250,   290}
+    ,{   320,   320,   290,   310,   290}
+    }
+   ,{{   340,   340,   310,   270,   310}
+    ,{   340,   340,   310,   270,   310}
+    ,{   320,   320,   280,   240,   280}
+    ,{   220,   220,   180,   140,   180}
+    ,{   320,   320,   280,   240,   280}
+    }
+   ,{{   330,   330,   290,   310,   290}
+    ,{   330,   330,   290,   250,   290}
+    ,{   320,   320,   290,   310,   290}
+    ,{   330,   330,   290,   250,   290}
+    ,{   320,   320,   290,   310,   290}
+    }
+   ,{{   320,   320,   280,   240,   280}
+    ,{   290,   290,   250,   210,   250}
+    ,{   320,   320,   280,   240,   280}
+    ,{   220,   170,   130,   220,   130}
+    ,{   320,   320,   280,   240,   280}
+    }
+   ,{{   330,   330,   290,   310,   290}
+    ,{   330,   330,   290,   250,   290}
+    ,{   320,   320,   290,   310,   290}
+    ,{   330,   330,   290,   250,   290}
+    ,{   290,   290,   200,   160,   200}
+    }
+   }
+  ,{{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   280,   280,   280,   280,   280}
+    ,{   240,   180,   240,   180,   240}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    }
+   ,{{   310,   280,   310,   280,   310}
+    ,{   310,   250,   310,   250,   310}
+    ,{   280,   280,   280,   280,   280}
+    ,{   130,   130,   130,   130,   130}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   200,   200,   200,   200,   200}
+    }
+   }
+  ,{{{   310,   270,   310,   260,   310}
+    ,{   310,   230,   310,   250,   310}
+    ,{   290,   270,   290,   160,   290}
+    ,{   290,   210,   290,   260,   290}
+    ,{   290,   270,   290,   200,   290}
+    }
+   ,{{   310,   230,   310,   180,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   280,   200,   280,   150,   280}
+    ,{   180,   100,   180,   180,   180}
+    ,{   280,   200,   280,   150,   280}
+    }
+   ,{{   290,   270,   290,   160,   290}
+    ,{   290,   210,   290,   160,   290}
+    ,{   290,   270,   290,   160,   290}
+    ,{   290,   210,   290,   160,   290}
+    ,{   290,   270,   290,   160,   290}
+    }
+   ,{{   280,   200,   280,   260,   280}
+    ,{   250,   170,   250,   250,   250}
+    ,{   280,   200,   280,   150,   280}
+    ,{   260,   180,   130,   260,   130}
+    ,{   280,   200,   280,   150,   280}
+    }
+   ,{{   290,   270,   290,   200,   290}
+    ,{   290,   210,   290,   160,   290}
+    ,{   290,   270,   290,   160,   290}
+    ,{   290,   210,   290,   160,   290}
+    ,{   200,   120,   200,   200,   200}
+    }
+   }
+  ,{{{   370,   310,   310,   310,   370}
+    ,{   370,   310,   310,   310,   370}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    }
+   ,{{   370,   310,   310,   310,   370}
+    ,{   370,   310,   310,   310,   370}
+    ,{   280,   280,   280,   280,   280}
+    ,{   240,   180,   240,   180,   180}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    }
+   ,{{   310,   280,   310,   280,   280}
+    ,{   310,   250,   310,   250,   250}
+    ,{   280,   280,   280,   280,   280}
+    ,{   260,   130,   130,   130,   260}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   200,   200,   200,   200,   200}
+    }
+   }
+  }
+ ,{{{{   370,   340,   310,   330,   370}
+    ,{   370,   340,   310,   310,   370}
+    ,{   340,   340,   310,   330,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   340,   340,   310,   330,   310}
+    }
+   ,{{   370,   340,   310,   310,   370}
+    ,{   370,   340,   310,   310,   370}
+    ,{   300,   300,   260,   260,   260}
+    ,{   260,   240,   260,   200,   260}
+    ,{   300,   300,   260,   260,   260}
+    }
+   ,{{   340,   340,   310,   330,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   340,   340,   310,   330,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   340,   340,   310,   330,   310}
+    }
+   ,{{   300,   300,   270,   280,   280}
+    ,{   270,   250,   270,   210,   270}
+    ,{   300,   300,   260,   260,   260}
+    ,{   280,   200,   150,   280,   280}
+    ,{   300,   300,   260,   260,   260}
+    }
+   ,{{   340,   340,   310,   310,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   310,   310,   280,   300,   280}
+    ,{   340,   340,   310,   310,   310}
+    ,{   320,   320,   220,   220,   220}
+    }
+   }
+  ,{{{   340,   340,   310,   330,   310}
+    ,{   340,   340,   310,   270,   310}
+    ,{   340,   340,   310,   330,   310}
+    ,{   340,   340,   310,   270,   310}
+    ,{   340,   340,   310,   330,   310}
+    }
+   ,{{   340,   340,   310,   270,   310}
+    ,{   340,   340,   310,   270,   310}
+    ,{   300,   300,   260,   220,   260}
+    ,{   240,   240,   200,   160,   200}
+    ,{   300,   300,   260,   220,   260}
+    }
+   ,{{   340,   340,   310,   330,   310}
+    ,{   340,   340,   310,   270,   310}
+    ,{   340,   340,   310,   330,   310}
+    ,{   340,   340,   310,   270,   310}
+    ,{   340,   340,   310,   330,   310}
+    }
+   ,{{   300,   300,   260,   240,   260}
+    ,{   250,   250,   210,   170,   210}
+    ,{   300,   300,   260,   220,   260}
+    ,{   240,   190,   150,   240,   150}
+    ,{   300,   300,   260,   220,   260}
+    }
+   ,{{   340,   340,   310,   300,   310}
+    ,{   340,   340,   310,   270,   310}
+    ,{   310,   310,   280,   300,   280}
+    ,{   340,   340,   310,   270,   310}
+    ,{   320,   320,   220,   180,   220}
+    }
+   }
+  ,{{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   260,   260,   260,   260,   260}
+    ,{   260,   200,   260,   200,   260}
+    ,{   260,   260,   260,   260,   260}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   270,   260,   270,   260,   270}
+    ,{   270,   210,   270,   210,   270}
+    ,{   260,   260,   260,   260,   260}
+    ,{   150,   150,   150,   150,   150}
+    ,{   260,   260,   260,   260,   260}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   280,   280,   280,   280,   280}
+    ,{   310,   310,   310,   310,   310}
+    ,{   220,   220,   220,   220,   220}
+    }
+   }
+  ,{{{   310,   290,   310,   280,   310}
+    ,{   310,   230,   310,   210,   310}
+    ,{   310,   290,   310,   180,   310}
+    ,{   310,   230,   310,   280,   310}
+    ,{   310,   290,   310,   220,   310}
+    }
+   ,{{   310,   230,   310,   200,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   260,   180,   260,   130,   260}
+    ,{   200,   120,   200,   200,   200}
+    ,{   260,   180,   260,   130,   260}
+    }
+   ,{{   310,   290,   310,   180,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   290,   310,   180,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   290,   310,   180,   310}
+    }
+   ,{{   280,   200,   260,   280,   260}
+    ,{   210,   130,   210,   210,   210}
+    ,{   260,   180,   260,   130,   260}
+    ,{   280,   200,   150,   280,   150}
+    ,{   260,   180,   260,   130,   260}
+    }
+   ,{{   310,   260,   310,   220,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   280,   260,   280,   150,   280}
+    ,{   310,   230,   310,   180,   310}
+    ,{   220,   140,   220,   220,   220}
+    }
+   }
+  ,{{{   370,   310,   310,   310,   370}
+    ,{   370,   310,   310,   310,   370}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   370,   310,   310,   310,   370}
+    ,{   370,   310,   310,   310,   370}
+    ,{   260,   260,   260,   260,   260}
+    ,{   260,   200,   260,   200,   200}
+    ,{   260,   260,   260,   260,   260}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   280,   260,   270,   260,   280}
+    ,{   270,   210,   270,   210,   210}
+    ,{   260,   260,   260,   260,   260}
+    ,{   280,   150,   150,   150,   280}
+    ,{   260,   260,   260,   260,   260}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   280,   280,   280,   280,   280}
+    ,{   310,   310,   310,   310,   310}
+    ,{   220,   220,   220,   220,   220}
+    }
+   }
+  }
+ ,{{{{   430,   430,   400,   370,   430}
+    ,{   430,   410,   400,   370,   430}
+    ,{   370,   370,   340,   360,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   430,   430,   340,   360,   340}
+    }
+   ,{{   430,   410,   370,   370,   430}
+    ,{   430,   410,   370,   370,   430}
+    ,{   370,   370,   340,   340,   340}
+    ,{   320,   290,   320,   260,   320}
+    ,{   370,   370,   340,   340,   340}
+    }
+   ,{{   370,   370,   340,   360,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   370,   370,   340,   360,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   370,   370,   340,   360,   340}
+    }
+   ,{{   400,   370,   400,   340,   400}
+    ,{   400,   370,   400,   340,   400}
+    ,{   370,   370,   340,   340,   340}
+    ,{   340,   260,   210,   340,   340}
+    ,{   370,   370,   340,   340,   340}
+    }
+   ,{{   430,   430,   340,   360,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   370,   370,   340,   360,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   430,   430,   340,   340,   340}
+    }
+   }
+  ,{{{   430,   430,   370,   360,   370}
+    ,{   410,   410,   370,   360,   370}
+    ,{   370,   370,   340,   360,   340}
+    ,{   370,   370,   340,   300,   340}
+    ,{   430,   430,   340,   360,   340}
+    }
+   ,{{   410,   410,   370,   360,   370}
+    ,{   410,   410,   370,   360,   370}
+    ,{   370,   370,   340,   300,   340}
+    ,{   290,   290,   260,   220,   260}
+    ,{   370,   370,   340,   300,   340}
+    }
+   ,{{   370,   370,   340,   360,   340}
+    ,{   370,   370,   340,   300,   340}
+    ,{   370,   370,   340,   360,   340}
+    ,{   370,   370,   340,   300,   340}
+    ,{   370,   370,   340,   360,   340}
+    }
+   ,{{   370,   370,   340,   300,   340}
+    ,{   370,   370,   340,   300,   340}
+    ,{   370,   370,   340,   300,   340}
+    ,{   300,   240,   210,   300,   210}
+    ,{   370,   370,   340,   300,   340}
+    }
+   ,{{   430,   430,   340,   360,   340}
+    ,{   370,   370,   340,   300,   340}
+    ,{   370,   370,   340,   360,   340}
+    ,{   370,   370,   340,   300,   340}
+    ,{   430,   430,   340,   300,   340}
+    }
+   }
+  ,{{{   400,   370,   400,   370,   400}
+    ,{   400,   370,   400,   370,   400}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   370,   370,   370,   370,   370}
+    ,{   370,   370,   370,   370,   370}
+    ,{   340,   340,   340,   340,   340}
+    ,{   320,   260,   320,   260,   320}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   400,   340,   400,   340,   400}
+    ,{   400,   340,   400,   340,   400}
+    ,{   340,   340,   340,   340,   340}
+    ,{   210,   210,   210,   210,   210}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   }
+  ,{{{   370,   320,   370,   340,   370}
+    ,{   370,   290,   370,   340,   370}
+    ,{   340,   320,   340,   210,   340}
+    ,{   340,   260,   340,   340,   340}
+    ,{   340,   320,   340,   340,   340}
+    }
+   ,{{   370,   290,   370,   260,   370}
+    ,{   370,   290,   370,   240,   370}
+    ,{   340,   260,   340,   210,   340}
+    ,{   260,   180,   260,   260,   260}
+    ,{   340,   260,   340,   210,   340}
+    }
+   ,{{   340,   320,   340,   210,   340}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   320,   340,   210,   340}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   320,   340,   210,   340}
+    }
+   ,{{   340,   260,   340,   340,   340}
+    ,{   340,   260,   340,   340,   340}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   260,   210,   340,   210}
+    ,{   340,   260,   340,   210,   340}
+    }
+   ,{{   340,   320,   340,   340,   340}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   320,   340,   210,   340}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   260,   340,   340,   340}
+    }
+   }
+  ,{{{   430,   370,   400,   370,   430}
+    ,{   430,   370,   400,   370,   430}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   430,   370,   370,   370,   430}
+    ,{   430,   370,   370,   370,   430}
+    ,{   340,   340,   340,   340,   340}
+    ,{   320,   260,   320,   260,   260}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   400,   340,   400,   340,   340}
+    ,{   400,   340,   400,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   210,   210,   210,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   }
+  }
+ }
+,{{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   310,   240,   240,   310,   260}
+    ,{   270,   240,   240,   270,   260}
+    ,{   310,   220,   220,   310,   220}
+    ,{   270,   240,   240,   270,   240}
+    ,{   300,   210,   210,   300,   210}
+    }
+   ,{{   260,   200,   200,   230,   260}
+    ,{   260,   200,   200,   230,   260}
+    ,{   220,   190,   190,   220,   190}
+    ,{   160,   100,   160,   130,   160}
+    ,{   220,   190,   190,   220,   190}
+    }
+   ,{{   310,   240,   240,   310,   240}
+    ,{   270,   240,   240,   270,   240}
+    ,{   310,   220,   220,   310,   220}
+    ,{   270,   240,   240,   270,   240}
+    ,{   300,   210,   210,   300,   210}
+    }
+   ,{{   220,   190,   190,   220,   190}
+    ,{   160,   100,   160,   130,   160}
+    ,{   220,   190,   190,   220,   190}
+    ,{   210,    50,    50,   210,   180}
+    ,{   220,   190,   190,   220,   190}
+    }
+   ,{{   300,   240,   240,   300,   240}
+    ,{   270,   240,   240,   270,   240}
+    ,{   300,   210,   210,   300,   210}
+    ,{   270,   240,   240,   270,   240}
+    ,{   150,   140,   120,   150,   120}
+    }
+   }
+  ,{{{   310,   200,   240,   310,   240}
+    ,{   270,   200,   240,   270,   240}
+    ,{   310,   190,   220,   310,   220}
+    ,{   270,   200,   240,   270,   240}
+    ,{   300,   170,   210,   300,   210}
+    }
+   ,{{   230,   160,   200,   230,   200}
+    ,{   230,   160,   200,   230,   200}
+    ,{   220,   160,   190,   220,   190}
+    ,{   130,    70,   100,   130,   100}
+    ,{   220,   160,   190,   220,   190}
+    }
+   ,{{   310,   200,   240,   310,   240}
+    ,{   270,   200,   240,   270,   240}
+    ,{   310,   190,   220,   310,   220}
+    ,{   270,   200,   240,   270,   240}
+    ,{   300,   170,   210,   300,   210}
+    }
+   ,{{   220,   160,   190,   220,   190}
+    ,{   130,    70,   100,   130,   100}
+    ,{   220,   160,   190,   220,   190}
+    ,{   210,    10,    50,   210,    50}
+    ,{   220,   160,   190,   220,   190}
+    }
+   ,{{   300,   200,   240,   300,   240}
+    ,{   270,   200,   240,   270,   240}
+    ,{   300,   170,   210,   300,   210}
+    ,{   270,   200,   240,   270,   240}
+    ,{   150,   140,   120,   150,   120}
+    }
+   }
+  ,{{{   240,   240,   240,   240,   240}
+    ,{   240,   240,   240,   240,   240}
+    ,{   220,   220,   220,   220,   220}
+    ,{   240,   240,   240,   240,   240}
+    ,{   210,   210,   210,   210,   210}
+    }
+   ,{{   200,   200,   200,   200,   200}
+    ,{   200,   200,   200,   200,   200}
+    ,{   190,   190,   190,   190,   190}
+    ,{   160,   100,   160,   100,   160}
+    ,{   190,   190,   190,   190,   190}
+    }
+   ,{{   240,   240,   240,   240,   240}
+    ,{   240,   240,   240,   240,   240}
+    ,{   220,   220,   220,   220,   220}
+    ,{   240,   240,   240,   240,   240}
+    ,{   210,   210,   210,   210,   210}
+    }
+   ,{{   190,   190,   190,   190,   190}
+    ,{   160,   100,   160,   100,   160}
+    ,{   190,   190,   190,   190,   190}
+    ,{    50,    50,    50,    50,    50}
+    ,{   190,   190,   190,   190,   190}
+    }
+   ,{{   240,   240,   240,   240,   240}
+    ,{   240,   240,   240,   240,   240}
+    ,{   210,   210,   210,   210,   210}
+    ,{   240,   240,   240,   240,   240}
+    ,{   120,   120,   120,   120,   120}
+    }
+   }
+  ,{{{   240,   150,   240,   180,   240}
+    ,{   240,   100,   240,   110,   240}
+    ,{   220,   150,   220,    90,   220}
+    ,{   240,   100,   240,   180,   240}
+    ,{   210,   130,   210,   120,   210}
+    }
+   ,{{   200,    60,   200,   100,   200}
+    ,{   200,    60,   200,    70,   200}
+    ,{   190,    60,   190,    60,   190}
+    ,{   100,   -30,   100,   100,   100}
+    ,{   190,    60,   190,    60,   190}
+    }
+   ,{{   240,   150,   240,   110,   240}
+    ,{   240,   100,   240,   110,   240}
+    ,{   220,   150,   220,    90,   220}
+    ,{   240,   100,   240,   110,   240}
+    ,{   210,   130,   210,    80,   210}
+    }
+   ,{{   190,    60,   190,   180,   190}
+    ,{   100,   -30,   100,   100,   100}
+    ,{   190,    60,   190,    60,   190}
+    ,{   180,    40,    50,   180,    50}
+    ,{   190,    60,   190,    60,   190}
+    }
+   ,{{   240,   130,   240,   120,   240}
+    ,{   240,   100,   240,   110,   240}
+    ,{   210,   130,   210,    80,   210}
+    ,{   240,   100,   240,   110,   240}
+    ,{   120,   -10,   120,   120,   120}
+    }
+   }
+  ,{{{   260,   240,   240,   240,   260}
+    ,{   260,   240,   240,   240,   260}
+    ,{   220,   220,   220,   220,   220}
+    ,{   240,   240,   240,   240,   240}
+    ,{   210,   210,   210,   210,   210}
+    }
+   ,{{   260,   200,   200,   200,   260}
+    ,{   260,   200,   200,   200,   260}
+    ,{   190,   190,   190,   190,   190}
+    ,{   160,   100,   160,   100,   100}
+    ,{   190,   190,   190,   190,   190}
+    }
+   ,{{   240,   240,   240,   240,   240}
+    ,{   240,   240,   240,   240,   240}
+    ,{   220,   220,   220,   220,   220}
+    ,{   240,   240,   240,   240,   240}
+    ,{   210,   210,   210,   210,   210}
+    }
+   ,{{   190,   190,   190,   190,   190}
+    ,{   160,   100,   160,   100,   100}
+    ,{   190,   190,   190,   190,   190}
+    ,{   180,    50,    50,    50,   180}
+    ,{   190,   190,   190,   190,   190}
+    }
+   ,{{   240,   240,   240,   240,   240}
+    ,{   240,   240,   240,   240,   240}
+    ,{   210,   210,   210,   210,   210}
+    ,{   240,   240,   240,   240,   240}
+    ,{   120,   120,   120,   120,   120}
+    }
+   }
+  }
+ ,{{{{   280,   210,   210,   280,   270}
+    ,{   270,   210,   210,   240,   270}
+    ,{   280,   190,   190,   280,   190}
+    ,{   210,   180,   180,   210,   180}
+    ,{   280,   190,   190,   280,   190}
+    }
+   ,{{   270,   210,   210,   240,   270}
+    ,{   270,   210,   210,   240,   270}
+    ,{   220,   190,   190,   220,   190}
+    ,{    70,    10,    70,    40,    70}
+    ,{   220,   190,   190,   220,   190}
+    }
+   ,{{   280,   190,   190,   280,   190}
+    ,{   210,   180,   180,   210,   180}
+    ,{   280,   190,   190,   280,   190}
+    ,{   210,   180,   180,   210,   180}
+    ,{   280,   190,   190,   280,   190}
+    }
+   ,{{   220,   190,   190,   220,   190}
+    ,{   130,    70,   130,   100,   130}
+    ,{   220,   190,   190,   220,   190}
+    ,{   210,    50,    50,   210,   180}
+    ,{   220,   190,   190,   220,   190}
+    }
+   ,{{   280,   190,   190,   280,   190}
+    ,{   210,   180,   180,   210,   180}
+    ,{   280,   190,   190,   280,   190}
+    ,{   210,   180,   180,   210,   180}
+    ,{   140,   140,   110,   140,   110}
+    }
+   }
+  ,{{{   280,   190,   210,   280,   210}
+    ,{   240,   190,   210,   240,   210}
+    ,{   280,   160,   190,   280,   190}
+    ,{   210,   150,   180,   210,   180}
+    ,{   280,   150,   190,   280,   190}
+    }
+   ,{{   240,   190,   210,   240,   210}
+    ,{   240,   190,   210,   240,   210}
+    ,{   220,   150,   190,   220,   190}
+    ,{    40,   -20,    10,    40,    10}
+    ,{   220,   150,   190,   220,   190}
+    }
+   ,{{   280,   150,   190,   280,   190}
+    ,{   210,   150,   180,   210,   180}
+    ,{   280,   150,   190,   280,   190}
+    ,{   210,   150,   180,   210,   180}
+    ,{   280,   150,   190,   280,   190}
+    }
+   ,{{   220,   150,   190,   220,   190}
+    ,{   100,    40,    70,   100,    70}
+    ,{   220,   150,   190,   220,   190}
+    ,{   210,    10,    50,   210,    50}
+    ,{   220,   150,   190,   220,   190}
+    }
+   ,{{   280,   160,   190,   280,   190}
+    ,{   210,   150,   180,   210,   180}
+    ,{   280,   160,   190,   280,   190}
+    ,{   210,   150,   180,   210,   180}
+    ,{   140,   140,   110,   140,   110}
+    }
+   }
+  ,{{{   210,   210,   210,   210,   210}
+    ,{   210,   210,   210,   210,   210}
+    ,{   190,   190,   190,   190,   190}
+    ,{   180,   180,   180,   180,   180}
+    ,{   190,   190,   190,   190,   190}
+    }
+   ,{{   210,   210,   210,   210,   210}
+    ,{   210,   210,   210,   210,   210}
+    ,{   190,   190,   190,   190,   190}
+    ,{    70,    10,    70,    10,    70}
+    ,{   190,   190,   190,   190,   190}
+    }
+   ,{{   190,   190,   190,   190,   190}
+    ,{   180,   180,   180,   180,   180}
+    ,{   190,   190,   190,   190,   190}
+    ,{   180,   180,   180,   180,   180}
+    ,{   190,   190,   190,   190,   190}
+    }
+   ,{{   190,   190,   190,   190,   190}
+    ,{   130,    70,   130,    70,   130}
+    ,{   190,   190,   190,   190,   190}
+    ,{    50,    50,    50,    50,    50}
+    ,{   190,   190,   190,   190,   190}
+    }
+   ,{{   190,   190,   190,   190,   190}
+    ,{   180,   180,   180,   180,   180}
+    ,{   190,   190,   190,   190,   190}
+    ,{   180,   180,   180,   180,   180}
+    ,{   110,   110,   110,   110,   110}
+    }
+   }
+  ,{{{   210,   120,   210,   180,   210}
+    ,{   210,    80,   210,    80,   210}
+    ,{   190,   120,   190,    60,   190}
+    ,{   180,    50,   180,   180,   180}
+    ,{   190,   110,   190,   110,   190}
+    }
+   ,{{   210,    80,   210,    80,   210}
+    ,{   210,    80,   210,    80,   210}
+    ,{   190,    50,   190,    60,   190}
+    ,{    10,  -120,    10,    10,    10}
+    ,{   190,    50,   190,    60,   190}
+    }
+   ,{{   190,   110,   190,    60,   190}
+    ,{   180,    50,   180,    50,   180}
+    ,{   190,   110,   190,    60,   190}
+    ,{   180,    50,   180,    50,   180}
+    ,{   190,   110,   190,    60,   190}
+    }
+   ,{{   190,    50,   190,   180,   190}
+    ,{    70,   -60,    70,    70,    70}
+    ,{   190,    50,   190,    60,   190}
+    ,{   180,    40,    50,   180,    50}
+    ,{   190,    50,   190,    60,   190}
+    }
+   ,{{   190,   120,   190,   110,   190}
+    ,{   180,    50,   180,    50,   180}
+    ,{   190,   120,   190,    60,   190}
+    ,{   180,    50,   180,    50,   180}
+    ,{   110,   -20,   110,   110,   110}
+    }
+   }
+  ,{{{   270,   210,   210,   210,   270}
+    ,{   270,   210,   210,   210,   270}
+    ,{   190,   190,   190,   190,   190}
+    ,{   180,   180,   180,   180,   180}
+    ,{   190,   190,   190,   190,   190}
+    }
+   ,{{   270,   210,   210,   210,   270}
+    ,{   270,   210,   210,   210,   270}
+    ,{   190,   190,   190,   190,   190}
+    ,{    70,    10,    70,    10,    10}
+    ,{   190,   190,   190,   190,   190}
+    }
+   ,{{   190,   190,   190,   190,   190}
+    ,{   180,   180,   180,   180,   180}
+    ,{   190,   190,   190,   190,   190}
+    ,{   180,   180,   180,   180,   180}
+    ,{   190,   190,   190,   190,   190}
+    }
+   ,{{   190,   190,   190,   190,   190}
+    ,{   130,    70,   130,    70,    70}
+    ,{   190,   190,   190,   190,   190}
+    ,{   180,    50,    50,    50,   180}
+    ,{   190,   190,   190,   190,   190}
+    }
+   ,{{   190,   190,   190,   190,   190}
+    ,{   180,   180,   180,   180,   180}
+    ,{   190,   190,   190,   190,   190}
+    ,{   180,   180,   180,   180,   180}
+    ,{   110,   110,   110,   110,   110}
+    }
+   }
+  }
+ ,{{{{   400,   360,   340,   400,   400}
+    ,{   400,   360,   340,   370,   400}
+    ,{   400,   310,   310,   400,   310}
+    ,{   340,   310,   310,   340,   310}
+    ,{   400,   330,   310,   400,   310}
+    }
+   ,{{   400,   360,   340,   370,   400}
+    ,{   400,   360,   340,   370,   400}
+    ,{   340,   310,   310,   340,   310}
+    ,{   290,   230,   290,   260,   290}
+    ,{   340,   310,   310,   340,   310}
+    }
+   ,{{   400,   310,   310,   400,   310}
+    ,{   340,   310,   310,   340,   310}
+    ,{   400,   310,   310,   400,   310}
+    ,{   340,   310,   310,   340,   310}
+    ,{   400,   310,   310,   400,   310}
+    }
+   ,{{   360,   360,   330,   340,   330}
+    ,{   360,   360,   330,   300,   330}
+    ,{   340,   310,   310,   340,   310}
+    ,{   340,   180,   180,   340,   310}
+    ,{   340,   310,   310,   340,   310}
+    }
+   ,{{   400,   330,   310,   400,   310}
+    ,{   340,   310,   310,   340,   310}
+    ,{   400,   310,   310,   400,   310}
+    ,{   340,   310,   310,   340,   310}
+    ,{   340,   330,   310,   340,   310}
+    }
+   }
+  ,{{{   400,   360,   340,   400,   340}
+    ,{   370,   360,   340,   370,   340}
+    ,{   400,   270,   310,   400,   310}
+    ,{   340,   270,   310,   340,   310}
+    ,{   400,   330,   310,   400,   310}
+    }
+   ,{{   370,   360,   340,   370,   340}
+    ,{   370,   360,   340,   370,   340}
+    ,{   340,   270,   310,   340,   310}
+    ,{   260,   190,   230,   260,   230}
+    ,{   340,   270,   310,   340,   310}
+    }
+   ,{{   400,   270,   310,   400,   310}
+    ,{   340,   270,   310,   340,   310}
+    ,{   400,   270,   310,   400,   310}
+    ,{   340,   270,   310,   340,   310}
+    ,{   400,   270,   310,   400,   310}
+    }
+   ,{{   360,   360,   310,   340,   310}
+    ,{   360,   360,   270,   300,   270}
+    ,{   340,   270,   310,   340,   310}
+    ,{   340,   140,   180,   340,   180}
+    ,{   340,   270,   310,   340,   310}
+    }
+   ,{{   400,   330,   310,   400,   310}
+    ,{   340,   270,   310,   340,   310}
+    ,{   400,   270,   310,   400,   310}
+    ,{   340,   270,   310,   340,   310}
+    ,{   340,   330,   310,   340,   310}
+    }
+   }
+  ,{{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   310,   310,   310,   310,   310}
+    ,{   290,   230,   290,   230,   290}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   330,   310,   330,   310,   330}
+    ,{   330,   270,   330,   270,   330}
+    ,{   310,   310,   310,   310,   310}
+    ,{   180,   180,   180,   180,   180}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   }
+  ,{{{   340,   230,   340,   310,   340}
+    ,{   340,   220,   340,   270,   340}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   170,   310,   310,   310}
+    ,{   310,   230,   310,   310,   310}
+    }
+   ,{{   340,   220,   340,   230,   340}
+    ,{   340,   220,   340,   210,   340}
+    ,{   310,   170,   310,   180,   310}
+    ,{   230,    20,   230,   230,   230}
+    ,{   310,   170,   310,   180,   310}
+    }
+   ,{{   310,   230,   310,   180,   310}
+    ,{   310,   170,   310,   180,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   170,   310,   180,   310}
+    ,{   310,   230,   310,   180,   310}
+    }
+   ,{{   310,   170,   310,   310,   310}
+    ,{   270,   130,   270,   270,   270}
+    ,{   310,   170,   310,   180,   310}
+    ,{   310,   170,   180,   310,   180}
+    ,{   310,   170,   310,   180,   310}
+    }
+   ,{{   310,   230,   310,   310,   310}
+    ,{   310,   170,   310,   180,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   170,   310,   180,   310}
+    ,{   310,   170,   310,   310,   310}
+    }
+   }
+  ,{{{   400,   340,   340,   340,   400}
+    ,{   400,   340,   340,   340,   400}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   400,   340,   340,   340,   400}
+    ,{   400,   340,   340,   340,   400}
+    ,{   310,   310,   310,   310,   310}
+    ,{   290,   230,   290,   230,   230}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   330,   310,   330,   310,   310}
+    ,{   330,   270,   330,   270,   270}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   180,   180,   180,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   }
+  }
+ ,{{{{   370,   310,   370,   370,   370}
+    ,{   370,   310,   370,   340,   370}
+    ,{   370,   280,   280,   370,   280}
+    ,{   310,   280,   280,   310,   280}
+    ,{   370,   300,   280,   370,   280}
+    }
+   ,{{   310,   280,   280,   310,   300}
+    ,{   300,   240,   240,   270,   300}
+    ,{   310,   280,   280,   310,   280}
+    ,{   200,   140,   200,   170,   200}
+    ,{   310,   280,   280,   310,   280}
+    }
+   ,{{   370,   280,   280,   370,   280}
+    ,{   310,   280,   280,   310,   280}
+    ,{   370,   280,   280,   370,   280}
+    ,{   310,   280,   280,   310,   280}
+    ,{   370,   280,   280,   370,   280}
+    }
+   ,{{   370,   310,   370,   340,   370}
+    ,{   370,   310,   370,   340,   370}
+    ,{   310,   280,   280,   310,   280}
+    ,{   310,   150,   150,   310,   280}
+    ,{   310,   280,   280,   310,   280}
+    }
+   ,{{   370,   300,   280,   370,   280}
+    ,{   310,   280,   280,   310,   280}
+    ,{   370,   280,   280,   370,   280}
+    ,{   310,   280,   280,   310,   280}
+    ,{   310,   300,   280,   310,   280}
+    }
+   }
+  ,{{{   370,   300,   310,   370,   310}
+    ,{   340,   270,   310,   340,   310}
+    ,{   370,   240,   280,   370,   280}
+    ,{   310,   240,   280,   310,   280}
+    ,{   370,   300,   280,   370,   280}
+    }
+   ,{{   310,   240,   280,   310,   280}
+    ,{   270,   210,   240,   270,   240}
+    ,{   310,   240,   280,   310,   280}
+    ,{   170,   110,   140,   170,   140}
+    ,{   310,   240,   280,   310,   280}
+    }
+   ,{{   370,   240,   280,   370,   280}
+    ,{   310,   240,   280,   310,   280}
+    ,{   370,   240,   280,   370,   280}
+    ,{   310,   240,   280,   310,   280}
+    ,{   370,   240,   280,   370,   280}
+    }
+   ,{{   340,   270,   310,   340,   310}
+    ,{   340,   270,   310,   340,   310}
+    ,{   310,   240,   280,   310,   280}
+    ,{   310,   110,   150,   310,   150}
+    ,{   310,   240,   280,   310,   280}
+    }
+   ,{{   370,   300,   280,   370,   280}
+    ,{   310,   240,   280,   310,   280}
+    ,{   370,   240,   280,   370,   280}
+    ,{   310,   240,   280,   310,   280}
+    ,{   310,   300,   280,   310,   280}
+    }
+   }
+  ,{{{   370,   310,   370,   310,   370}
+    ,{   370,   310,   370,   310,   370}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   280,   280,   280,   280,   280}
+    ,{   240,   240,   240,   240,   240}
+    ,{   280,   280,   280,   280,   280}
+    ,{   200,   140,   200,   140,   200}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   370,   310,   370,   310,   370}
+    ,{   370,   310,   370,   310,   370}
+    ,{   280,   280,   280,   280,   280}
+    ,{   150,   150,   150,   150,   150}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    }
+   }
+  ,{{{   310,   200,   310,   310,   310}
+    ,{   310,   170,   310,   310,   310}
+    ,{   280,   200,   280,   150,   280}
+    ,{   280,   140,   280,   280,   280}
+    ,{   280,   200,   280,   280,   280}
+    }
+   ,{{   280,   140,   280,   150,   280}
+    ,{   240,   110,   240,   110,   240}
+    ,{   280,   140,   280,   150,   280}
+    ,{   140,    10,   140,   140,   140}
+    ,{   280,   140,   280,   150,   280}
+    }
+   ,{{   280,   200,   280,   150,   280}
+    ,{   280,   140,   280,   150,   280}
+    ,{   280,   200,   280,   150,   280}
+    ,{   280,   140,   280,   150,   280}
+    ,{   280,   200,   280,   150,   280}
+    }
+   ,{{   310,   170,   310,   310,   310}
+    ,{   310,   170,   310,   310,   310}
+    ,{   280,   140,   280,   150,   280}
+    ,{   280,   140,   150,   280,   150}
+    ,{   280,   140,   280,   150,   280}
+    }
+   ,{{   280,   200,   280,   280,   280}
+    ,{   280,   140,   280,   150,   280}
+    ,{   280,   200,   280,   150,   280}
+    ,{   280,   140,   280,   150,   280}
+    ,{   280,   140,   280,   280,   280}
+    }
+   }
+  ,{{{   370,   310,   370,   310,   310}
+    ,{   370,   310,   370,   310,   310}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   300,   280,   280,   280,   300}
+    ,{   300,   240,   240,   240,   300}
+    ,{   280,   280,   280,   280,   280}
+    ,{   200,   140,   200,   140,   140}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   370,   310,   370,   310,   310}
+    ,{   370,   310,   370,   310,   310}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   150,   150,   150,   280}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    }
+   }
+  }
+ ,{{{{   350,   280,   280,   350,   340}
+    ,{   340,   280,   280,   310,   340}
+    ,{   350,   260,   260,   350,   260}
+    ,{   290,   260,   260,   290,   260}
+    ,{   350,   260,   260,   350,   260}
+    }
+   ,{{   340,   280,   280,   310,   340}
+    ,{   340,   280,   280,   310,   340}
+    ,{   280,   250,   250,   280,   250}
+    ,{   210,   150,   210,   180,   210}
+    ,{   280,   250,   250,   280,   250}
+    }
+   ,{{   350,   260,   260,   350,   260}
+    ,{   290,   260,   260,   290,   260}
+    ,{   350,   260,   260,   350,   260}
+    ,{   290,   260,   260,   290,   260}
+    ,{   350,   260,   260,   350,   260}
+    }
+   ,{{   280,   250,   280,   280,   280}
+    ,{   280,   220,   280,   250,   280}
+    ,{   280,   250,   250,   280,   250}
+    ,{   260,   100,   100,   260,   230}
+    ,{   280,   250,   250,   280,   250}
+    }
+   ,{{   350,   260,   260,   350,   260}
+    ,{   290,   260,   260,   290,   260}
+    ,{   350,   260,   260,   350,   260}
+    ,{   290,   260,   260,   290,   260}
+    ,{   200,   190,   170,   200,   170}
+    }
+   }
+  ,{{{   350,   240,   280,   350,   280}
+    ,{   310,   240,   280,   310,   280}
+    ,{   350,   220,   260,   350,   260}
+    ,{   290,   230,   260,   290,   260}
+    ,{   350,   220,   260,   350,   260}
+    }
+   ,{{   310,   240,   280,   310,   280}
+    ,{   310,   240,   280,   310,   280}
+    ,{   280,   220,   250,   280,   250}
+    ,{   180,   120,   150,   180,   150}
+    ,{   280,   220,   250,   280,   250}
+    }
+   ,{{   350,   230,   260,   350,   260}
+    ,{   290,   230,   260,   290,   260}
+    ,{   350,   220,   260,   350,   260}
+    ,{   290,   230,   260,   290,   260}
+    ,{   350,   220,   260,   350,   260}
+    }
+   ,{{   280,   220,   250,   280,   250}
+    ,{   250,   190,   220,   250,   220}
+    ,{   280,   220,   250,   280,   250}
+    ,{   260,    70,   100,   260,   100}
+    ,{   280,   220,   250,   280,   250}
+    }
+   ,{{   350,   230,   260,   350,   260}
+    ,{   290,   230,   260,   290,   260}
+    ,{   350,   220,   260,   350,   260}
+    ,{   290,   230,   260,   290,   260}
+    ,{   200,   190,   170,   200,   170}
+    }
+   }
+  ,{{{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   260,   260,   260,   260,   260}
+    ,{   260,   260,   260,   260,   260}
+    ,{   260,   260,   260,   260,   260}
+    }
+   ,{{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   250,   250,   250,   250,   250}
+    ,{   210,   150,   210,   150,   210}
+    ,{   250,   250,   250,   250,   250}
+    }
+   ,{{   260,   260,   260,   260,   260}
+    ,{   260,   260,   260,   260,   260}
+    ,{   260,   260,   260,   260,   260}
+    ,{   260,   260,   260,   260,   260}
+    ,{   260,   260,   260,   260,   260}
+    }
+   ,{{   280,   250,   280,   250,   280}
+    ,{   280,   220,   280,   220,   280}
+    ,{   250,   250,   250,   250,   250}
+    ,{   100,   100,   100,   100,   100}
+    ,{   250,   250,   250,   250,   250}
+    }
+   ,{{   260,   260,   260,   260,   260}
+    ,{   260,   260,   260,   260,   260}
+    ,{   260,   260,   260,   260,   260}
+    ,{   260,   260,   260,   260,   260}
+    ,{   170,   170,   170,   170,   170}
+    }
+   }
+  ,{{{   280,   180,   280,   230,   280}
+    ,{   280,   140,   280,   220,   280}
+    ,{   260,   180,   260,   130,   260}
+    ,{   260,   130,   260,   230,   260}
+    ,{   260,   180,   260,   170,   260}
+    }
+   ,{{   280,   140,   280,   150,   280}
+    ,{   280,   140,   280,   150,   280}
+    ,{   250,   120,   250,   120,   250}
+    ,{   150,    20,   150,   150,   150}
+    ,{   250,   120,   250,   120,   250}
+    }
+   ,{{   260,   180,   260,   130,   260}
+    ,{   260,   130,   260,   130,   260}
+    ,{   260,   180,   260,   130,   260}
+    ,{   260,   130,   260,   130,   260}
+    ,{   260,   180,   260,   130,   260}
+    }
+   ,{{   250,   120,   250,   230,   250}
+    ,{   220,    90,   220,   220,   220}
+    ,{   250,   120,   250,   120,   250}
+    ,{   230,   100,   100,   230,   100}
+    ,{   250,   120,   250,   120,   250}
+    }
+   ,{{   260,   180,   260,   170,   260}
+    ,{   260,   130,   260,   130,   260}
+    ,{   260,   180,   260,   130,   260}
+    ,{   260,   130,   260,   130,   260}
+    ,{   170,    30,   170,   170,   170}
+    }
+   }
+  ,{{{   340,   280,   280,   280,   340}
+    ,{   340,   280,   280,   280,   340}
+    ,{   260,   260,   260,   260,   260}
+    ,{   260,   260,   260,   260,   260}
+    ,{   260,   260,   260,   260,   260}
+    }
+   ,{{   340,   280,   280,   280,   340}
+    ,{   340,   280,   280,   280,   340}
+    ,{   250,   250,   250,   250,   250}
+    ,{   210,   150,   210,   150,   150}
+    ,{   250,   250,   250,   250,   250}
+    }
+   ,{{   260,   260,   260,   260,   260}
+    ,{   260,   260,   260,   260,   260}
+    ,{   260,   260,   260,   260,   260}
+    ,{   260,   260,   260,   260,   260}
+    ,{   260,   260,   260,   260,   260}
+    }
+   ,{{   280,   250,   280,   250,   250}
+    ,{   280,   220,   280,   220,   220}
+    ,{   250,   250,   250,   250,   250}
+    ,{   230,   100,   100,   100,   230}
+    ,{   250,   250,   250,   250,   250}
+    }
+   ,{{   260,   260,   260,   260,   260}
+    ,{   260,   260,   260,   260,   260}
+    ,{   260,   260,   260,   260,   260}
+    ,{   260,   260,   260,   260,   260}
+    ,{   170,   170,   170,   170,   170}
+    }
+   }
+  }
+ ,{{{{   370,   280,   280,   370,   340}
+    ,{   340,   280,   280,   310,   340}
+    ,{   370,   280,   280,   370,   280}
+    ,{   310,   280,   280,   310,   280}
+    ,{   370,   280,   280,   370,   280}
+    }
+   ,{{   340,   280,   280,   310,   340}
+    ,{   340,   280,   280,   310,   340}
+    ,{   260,   230,   230,   260,   230}
+    ,{   230,   170,   230,   200,   230}
+    ,{   260,   230,   230,   260,   230}
+    }
+   ,{{   370,   280,   280,   370,   280}
+    ,{   310,   280,   280,   310,   280}
+    ,{   370,   280,   280,   370,   280}
+    ,{   310,   280,   280,   310,   280}
+    ,{   370,   280,   280,   370,   280}
+    }
+   ,{{   280,   230,   240,   280,   250}
+    ,{   240,   180,   240,   210,   240}
+    ,{   260,   230,   230,   260,   230}
+    ,{   280,   120,   120,   280,   250}
+    ,{   260,   230,   230,   260,   230}
+    }
+   ,{{   340,   280,   280,   340,   280}
+    ,{   310,   280,   280,   310,   280}
+    ,{   340,   250,   250,   340,   250}
+    ,{   310,   280,   280,   310,   280}
+    ,{   220,   220,   190,   220,   190}
+    }
+   }
+  ,{{{   370,   240,   280,   370,   280}
+    ,{   310,   240,   280,   310,   280}
+    ,{   370,   240,   280,   370,   280}
+    ,{   310,   240,   280,   310,   280}
+    ,{   370,   240,   280,   370,   280}
+    }
+   ,{{   310,   240,   280,   310,   280}
+    ,{   310,   240,   280,   310,   280}
+    ,{   260,   200,   230,   260,   230}
+    ,{   200,   140,   170,   200,   170}
+    ,{   260,   200,   230,   260,   230}
+    }
+   ,{{   370,   240,   280,   370,   280}
+    ,{   310,   240,   280,   310,   280}
+    ,{   370,   240,   280,   370,   280}
+    ,{   310,   240,   280,   310,   280}
+    ,{   370,   240,   280,   370,   280}
+    }
+   ,{{   280,   200,   230,   280,   230}
+    ,{   210,   150,   180,   210,   180}
+    ,{   260,   200,   230,   260,   230}
+    ,{   280,    90,   120,   280,   120}
+    ,{   260,   200,   230,   260,   230}
+    }
+   ,{{   340,   240,   280,   340,   280}
+    ,{   310,   240,   280,   310,   280}
+    ,{   340,   210,   250,   340,   250}
+    ,{   310,   240,   280,   310,   280}
+    ,{   220,   220,   190,   220,   190}
+    }
+   }
+  ,{{{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   230,   230,   230,   230,   230}
+    ,{   230,   170,   230,   170,   230}
+    ,{   230,   230,   230,   230,   230}
+    }
+   ,{{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   240,   230,   240,   230,   240}
+    ,{   240,   180,   240,   180,   240}
+    ,{   230,   230,   230,   230,   230}
+    ,{   120,   120,   120,   120,   120}
+    ,{   230,   230,   230,   230,   230}
+    }
+   ,{{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   250,   250,   250,   250,   250}
+    ,{   280,   280,   280,   280,   280}
+    ,{   190,   190,   190,   190,   190}
+    }
+   }
+  ,{{{   280,   200,   280,   250,   280}
+    ,{   280,   140,   280,   180,   280}
+    ,{   280,   200,   280,   150,   280}
+    ,{   280,   140,   280,   250,   280}
+    ,{   280,   200,   280,   190,   280}
+    }
+   ,{{   280,   140,   280,   170,   280}
+    ,{   280,   140,   280,   150,   280}
+    ,{   230,   100,   230,   100,   230}
+    ,{   170,    40,   170,   170,   170}
+    ,{   230,   100,   230,   100,   230}
+    }
+   ,{{   280,   200,   280,   150,   280}
+    ,{   280,   140,   280,   150,   280}
+    ,{   280,   200,   280,   150,   280}
+    ,{   280,   140,   280,   150,   280}
+    ,{   280,   200,   280,   150,   280}
+    }
+   ,{{   250,   120,   230,   250,   230}
+    ,{   180,    50,   180,   180,   180}
+    ,{   230,   100,   230,   100,   230}
+    ,{   250,   120,   120,   250,   120}
+    ,{   230,   100,   230,   100,   230}
+    }
+   ,{{   280,   170,   280,   190,   280}
+    ,{   280,   140,   280,   150,   280}
+    ,{   250,   170,   250,   120,   250}
+    ,{   280,   140,   280,   150,   280}
+    ,{   190,    60,   190,   190,   190}
+    }
+   }
+  ,{{{   340,   280,   280,   280,   340}
+    ,{   340,   280,   280,   280,   340}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   340,   280,   280,   280,   340}
+    ,{   340,   280,   280,   280,   340}
+    ,{   230,   230,   230,   230,   230}
+    ,{   230,   170,   230,   170,   170}
+    ,{   230,   230,   230,   230,   230}
+    }
+   ,{{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   250,   230,   240,   230,   250}
+    ,{   240,   180,   240,   180,   180}
+    ,{   230,   230,   230,   230,   230}
+    ,{   250,   120,   120,   120,   250}
+    ,{   230,   230,   230,   230,   230}
+    }
+   ,{{   280,   280,   280,   280,   280}
+    ,{   280,   280,   280,   280,   280}
+    ,{   250,   250,   250,   250,   250}
+    ,{   280,   280,   280,   280,   280}
+    ,{   190,   190,   190,   190,   190}
+    }
+   }
+  }
+ ,{{{{   400,   360,   370,   400,   400}
+    ,{   400,   360,   370,   370,   400}
+    ,{   400,   310,   310,   400,   310}
+    ,{   340,   310,   310,   340,   310}
+    ,{   400,   330,   310,   400,   310}
+    }
+   ,{{   400,   360,   340,   370,   400}
+    ,{   400,   360,   340,   370,   400}
+    ,{   340,   310,   310,   340,   310}
+    ,{   290,   230,   290,   260,   290}
+    ,{   340,   310,   310,   340,   310}
+    }
+   ,{{   400,   310,   310,   400,   310}
+    ,{   340,   310,   310,   340,   310}
+    ,{   400,   310,   310,   400,   310}
+    ,{   340,   310,   310,   340,   310}
+    ,{   400,   310,   310,   400,   310}
+    }
+   ,{{   370,   360,   370,   340,   370}
+    ,{   370,   360,   370,   340,   370}
+    ,{   340,   310,   310,   340,   310}
+    ,{   340,   180,   180,   340,   310}
+    ,{   340,   310,   310,   340,   310}
+    }
+   ,{{   400,   330,   310,   400,   310}
+    ,{   340,   310,   310,   340,   310}
+    ,{   400,   310,   310,   400,   310}
+    ,{   340,   310,   310,   340,   310}
+    ,{   340,   330,   310,   340,   310}
+    }
+   }
+  ,{{{   400,   360,   340,   400,   340}
+    ,{   370,   360,   340,   370,   340}
+    ,{   400,   270,   310,   400,   310}
+    ,{   340,   270,   310,   340,   310}
+    ,{   400,   330,   310,   400,   310}
+    }
+   ,{{   370,   360,   340,   370,   340}
+    ,{   370,   360,   340,   370,   340}
+    ,{   340,   270,   310,   340,   310}
+    ,{   260,   190,   230,   260,   230}
+    ,{   340,   270,   310,   340,   310}
+    }
+   ,{{   400,   270,   310,   400,   310}
+    ,{   340,   270,   310,   340,   310}
+    ,{   400,   270,   310,   400,   310}
+    ,{   340,   270,   310,   340,   310}
+    ,{   400,   270,   310,   400,   310}
+    }
+   ,{{   360,   360,   310,   340,   310}
+    ,{   360,   360,   310,   340,   310}
+    ,{   340,   270,   310,   340,   310}
+    ,{   340,   140,   180,   340,   180}
+    ,{   340,   270,   310,   340,   310}
+    }
+   ,{{   400,   330,   310,   400,   310}
+    ,{   340,   270,   310,   340,   310}
+    ,{   400,   270,   310,   400,   310}
+    ,{   340,   270,   310,   340,   310}
+    ,{   340,   330,   310,   340,   310}
+    }
+   }
+  ,{{{   370,   340,   370,   340,   370}
+    ,{   370,   340,   370,   340,   370}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   310,   310,   310,   310,   310}
+    ,{   290,   230,   290,   230,   290}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   370,   310,   370,   310,   370}
+    ,{   370,   310,   370,   310,   370}
+    ,{   310,   310,   310,   310,   310}
+    ,{   180,   180,   180,   180,   180}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   }
+  ,{{{   340,   230,   340,   310,   340}
+    ,{   340,   220,   340,   310,   340}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   170,   310,   310,   310}
+    ,{   310,   230,   310,   310,   310}
+    }
+   ,{{   340,   220,   340,   230,   340}
+    ,{   340,   220,   340,   210,   340}
+    ,{   310,   170,   310,   180,   310}
+    ,{   230,    40,   230,   230,   230}
+    ,{   310,   170,   310,   180,   310}
+    }
+   ,{{   310,   230,   310,   180,   310}
+    ,{   310,   170,   310,   180,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   170,   310,   180,   310}
+    ,{   310,   230,   310,   180,   310}
+    }
+   ,{{   310,   170,   310,   310,   310}
+    ,{   310,   170,   310,   310,   310}
+    ,{   310,   170,   310,   180,   310}
+    ,{   310,   170,   180,   310,   180}
+    ,{   310,   170,   310,   180,   310}
+    }
+   ,{{   310,   230,   310,   310,   310}
+    ,{   310,   170,   310,   180,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   170,   310,   180,   310}
+    ,{   310,   170,   310,   310,   310}
+    }
+   }
+  ,{{{   400,   340,   370,   340,   400}
+    ,{   400,   340,   370,   340,   400}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   400,   340,   340,   340,   400}
+    ,{   400,   340,   340,   340,   400}
+    ,{   310,   310,   310,   310,   310}
+    ,{   290,   230,   290,   230,   230}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   370,   310,   370,   310,   310}
+    ,{   370,   310,   370,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   180,   180,   180,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   }
+  }
+ }
+,{{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   240,   240,   220,   230,   220}
+    ,{   240,   240,   220,   210,   220}
+    ,{   230,   220,   210,   230,   210}
+    ,{   240,   240,   220,   210,   220}
+    ,{   210,   210,   190,   210,   190}
+    }
+   ,{{   200,   200,   180,   170,   180}
+    ,{   200,   200,   180,   170,   180}
+    ,{   190,   190,   180,   170,   180}
+    ,{   140,   100,   140,    80,   140}
+    ,{   190,   190,   180,   170,   180}
+    }
+   ,{{   240,   240,   220,   230,   220}
+    ,{   240,   240,   220,   210,   220}
+    ,{   230,   220,   210,   230,   210}
+    ,{   240,   240,   220,   210,   220}
+    ,{   210,   210,   190,   210,   190}
+    }
+   ,{{   190,   190,   180,   170,   180}
+    ,{   140,   100,   140,    80,   140}
+    ,{   190,   190,   180,   170,   180}
+    ,{   130,    50,    30,   130,    70}
+    ,{   190,   190,   180,   170,   180}
+    }
+   ,{{   240,   240,   220,   210,   220}
+    ,{   240,   240,   220,   210,   220}
+    ,{   210,   210,   190,   210,   190}
+    ,{   240,   240,   220,   210,   220}
+    ,{   180,   180,   100,    90,   100}
+    }
+   }
+  ,{{{   240,   240,   220,   230,   220}
+    ,{   240,   240,   220,   180,   220}
+    ,{   230,   220,   210,   230,   210}
+    ,{   240,   240,   220,   180,   220}
+    ,{   210,   210,   190,   210,   190}
+    }
+   ,{{   200,   200,   180,   140,   180}
+    ,{   200,   200,   180,   140,   180}
+    ,{   190,   190,   180,   140,   180}
+    ,{   100,   100,    90,    50,    90}
+    ,{   190,   190,   180,   140,   180}
+    }
+   ,{{   240,   240,   220,   230,   220}
+    ,{   240,   240,   220,   180,   220}
+    ,{   230,   220,   210,   230,   210}
+    ,{   240,   240,   220,   180,   220}
+    ,{   210,   210,   190,   210,   190}
+    }
+   ,{{   190,   190,   180,   140,   180}
+    ,{   100,   100,    90,    50,    90}
+    ,{   190,   190,   180,   140,   180}
+    ,{   120,    50,    30,   120,    30}
+    ,{   190,   190,   180,   140,   180}
+    }
+   ,{{   240,   240,   220,   210,   220}
+    ,{   240,   240,   220,   180,   220}
+    ,{   210,   210,   190,   210,   190}
+    ,{   240,   240,   220,   180,   220}
+    ,{   180,   180,   100,    60,   100}
+    }
+   }
+  ,{{{   220,   210,   220,   210,   220}
+    ,{   220,   210,   220,   210,   220}
+    ,{   200,   200,   200,   200,   200}
+    ,{   220,   210,   220,   210,   220}
+    ,{   190,   180,   190,   180,   190}
+    }
+   ,{{   180,   170,   180,   170,   180}
+    ,{   180,   170,   180,   170,   180}
+    ,{   170,   170,   170,   170,   170}
+    ,{   140,    80,   140,    80,   140}
+    ,{   170,   170,   170,   170,   170}
+    }
+   ,{{   220,   210,   220,   210,   220}
+    ,{   220,   210,   220,   210,   220}
+    ,{   200,   200,   200,   200,   200}
+    ,{   220,   210,   220,   210,   220}
+    ,{   190,   180,   190,   180,   190}
+    }
+   ,{{   170,   170,   170,   170,   170}
+    ,{   140,    80,   140,    80,   140}
+    ,{   170,   170,   170,   170,   170}
+    ,{    30,    20,    30,    20,    30}
+    ,{   170,   170,   170,   170,   170}
+    }
+   ,{{   220,   210,   220,   210,   220}
+    ,{   220,   210,   220,   210,   220}
+    ,{   190,   180,   190,   180,   190}
+    ,{   220,   210,   220,   210,   220}
+    ,{   100,    90,   100,    90,   100}
+    }
+   }
+  ,{{{   220,   160,   220,   130,   220}
+    ,{   220,   110,   220,    60,   220}
+    ,{   210,   160,   210,    50,   210}
+    ,{   220,   110,   220,   130,   220}
+    ,{   190,   140,   190,    70,   190}
+    }
+   ,{{   180,    70,   180,    60,   180}
+    ,{   180,    70,   180,    20,   180}
+    ,{   180,    70,   180,    20,   180}
+    ,{    90,   -20,    90,    60,    90}
+    ,{   180,    70,   180,    20,   180}
+    }
+   ,{{   220,   160,   220,    60,   220}
+    ,{   220,   110,   220,    60,   220}
+    ,{   210,   160,   210,    50,   210}
+    ,{   220,   110,   220,    60,   220}
+    ,{   190,   140,   190,    30,   190}
+    }
+   ,{{   180,    70,   180,   130,   180}
+    ,{    90,   -20,    90,    60,    90}
+    ,{   180,    70,   180,    20,   180}
+    ,{   130,    50,    30,   130,    30}
+    ,{   180,    70,   180,    20,   180}
+    }
+   ,{{   220,   140,   220,    70,   220}
+    ,{   220,   110,   220,    60,   220}
+    ,{   190,   140,   190,    30,   190}
+    ,{   220,   110,   220,    60,   220}
+    ,{   100,     0,   100,    70,   100}
+    }
+   }
+  ,{{{   220,   210,   220,   210,   150}
+    ,{   220,   210,   220,   210,   150}
+    ,{   200,   200,   200,   200,   110}
+    ,{   220,   210,   220,   210,   130}
+    ,{   190,   180,   190,   180,   100}
+    }
+   ,{{   180,   170,   180,   170,   150}
+    ,{   180,   170,   180,   170,   150}
+    ,{   170,   170,   170,   170,    80}
+    ,{   140,    80,   140,    80,     0}
+    ,{   170,   170,   170,   170,    80}
+    }
+   ,{{   220,   210,   220,   210,   130}
+    ,{   220,   210,   220,   210,   130}
+    ,{   200,   200,   200,   200,   110}
+    ,{   220,   210,   220,   210,   130}
+    ,{   190,   180,   190,   180,   100}
+    }
+   ,{{   170,   170,   170,   170,    80}
+    ,{   140,    80,   140,    80,     0}
+    ,{   170,   170,   170,   170,    80}
+    ,{    70,    20,    30,    20,    70}
+    ,{   170,   170,   170,   170,    80}
+    }
+   ,{{   220,   210,   220,   210,   130}
+    ,{   220,   210,   220,   210,   130}
+    ,{   190,   180,   190,   180,   100}
+    ,{   220,   210,   220,   210,   130}
+    ,{   100,    90,   100,    90,    10}
+    }
+   }
+  }
+ ,{{{{   210,   210,   200,   200,   200}
+    ,{   210,   210,   200,   190,   200}
+    ,{   200,   190,   180,   200,   180}
+    ,{   180,   180,   170,   160,   170}
+    ,{   190,   190,   170,   190,   170}
+    }
+   ,{{   210,   210,   200,   190,   200}
+    ,{   210,   210,   200,   190,   200}
+    ,{   190,   190,   170,   160,   170}
+    ,{    50,    10,    50,   -10,    50}
+    ,{   190,   190,   170,   160,   170}
+    }
+   ,{{   190,   190,   170,   190,   170}
+    ,{   180,   180,   170,   160,   170}
+    ,{   190,   190,   170,   190,   170}
+    ,{   180,   180,   170,   160,   170}
+    ,{   190,   190,   170,   190,   170}
+    }
+   ,{{   190,   190,   170,   160,   170}
+    ,{   110,    70,   110,    50,   110}
+    ,{   190,   190,   170,   160,   170}
+    ,{   130,    50,    30,   130,    70}
+    ,{   190,   190,   170,   160,   170}
+    }
+   ,{{   200,   190,   180,   200,   180}
+    ,{   180,   180,   170,   160,   170}
+    ,{   200,   190,   180,   200,   180}
+    ,{   180,   180,   170,   160,   170}
+    ,{   170,   170,   100,    90,   100}
+    }
+   }
+  ,{{{   210,   210,   200,   200,   200}
+    ,{   210,   210,   200,   160,   200}
+    ,{   200,   190,   180,   200,   180}
+    ,{   180,   180,   170,   130,   170}
+    ,{   190,   190,   170,   190,   170}
+    }
+   ,{{   210,   210,   200,   160,   200}
+    ,{   210,   210,   200,   160,   200}
+    ,{   190,   190,   170,   130,   170}
+    ,{    10,    10,     0,   -40,     0}
+    ,{   190,   190,   170,   130,   170}
+    }
+   ,{{   190,   190,   170,   190,   170}
+    ,{   180,   180,   170,   130,   170}
+    ,{   190,   190,   170,   190,   170}
+    ,{   180,   180,   170,   130,   170}
+    ,{   190,   190,   170,   190,   170}
+    }
+   ,{{   190,   190,   170,   130,   170}
+    ,{    70,    70,    60,    20,    60}
+    ,{   190,   190,   170,   130,   170}
+    ,{   120,    50,    30,   120,    30}
+    ,{   190,   190,   170,   130,   170}
+    }
+   ,{{   200,   190,   180,   200,   180}
+    ,{   180,   180,   170,   130,   170}
+    ,{   200,   190,   180,   200,   180}
+    ,{   180,   180,   170,   130,   170}
+    ,{   170,   170,   100,    60,   100}
+    }
+   }
+  ,{{{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    ,{   170,   170,   170,   170,   170}
+    ,{   160,   160,   160,   160,   160}
+    ,{   170,   160,   170,   160,   170}
+    }
+   ,{{   190,   190,   190,   190,   190}
+    ,{   190,   190,   190,   190,   190}
+    ,{   170,   160,   170,   160,   170}
+    ,{    50,   -10,    50,   -10,    50}
+    ,{   170,   160,   170,   160,   170}
+    }
+   ,{{   170,   160,   170,   160,   170}
+    ,{   160,   160,   160,   160,   160}
+    ,{   170,   160,   170,   160,   170}
+    ,{   160,   160,   160,   160,   160}
+    ,{   170,   160,   170,   160,   170}
+    }
+   ,{{   170,   160,   170,   160,   170}
+    ,{   110,    50,   110,    50,   110}
+    ,{   170,   160,   170,   160,   170}
+    ,{    30,    20,    30,    20,    30}
+    ,{   170,   160,   170,   160,   170}
+    }
+   ,{{   170,   170,   170,   170,   170}
+    ,{   160,   160,   160,   160,   160}
+    ,{   170,   170,   170,   170,   170}
+    ,{   160,   160,   160,   160,   160}
+    ,{    90,    90,    90,    90,    90}
+    }
+   }
+  ,{{{   200,   130,   200,   130,   200}
+    ,{   200,    90,   200,    40,   200}
+    ,{   180,   130,   180,    20,   180}
+    ,{   170,    60,   170,   130,   170}
+    ,{   170,   120,   170,    70,   170}
+    }
+   ,{{   200,    90,   200,    40,   200}
+    ,{   200,    90,   200,    40,   200}
+    ,{   170,    60,   170,    10,   170}
+    ,{     0,  -110,     0,   -30,     0}
+    ,{   170,    60,   170,    10,   170}
+    }
+   ,{{   170,   120,   170,    10,   170}
+    ,{   170,    60,   170,    10,   170}
+    ,{   170,   120,   170,    10,   170}
+    ,{   170,    60,   170,    10,   170}
+    ,{   170,   120,   170,    10,   170}
+    }
+   ,{{   170,    60,   170,   130,   170}
+    ,{    60,   -50,    60,    30,    60}
+    ,{   170,    60,   170,    10,   170}
+    ,{   130,    50,    30,   130,    30}
+    ,{   170,    60,   170,    10,   170}
+    }
+   ,{{   180,   130,   180,    70,   180}
+    ,{   170,    60,   170,    10,   170}
+    ,{   180,   130,   180,    20,   180}
+    ,{   170,    60,   170,    10,   170}
+    ,{   100,   -10,   100,    70,   100}
+    }
+   }
+  ,{{{   190,   190,   190,   190,   160}
+    ,{   190,   190,   190,   190,   160}
+    ,{   170,   170,   170,   170,    80}
+    ,{   160,   160,   160,   160,    70}
+    ,{   170,   160,   170,   160,    80}
+    }
+   ,{{   190,   190,   190,   190,   160}
+    ,{   190,   190,   190,   190,   160}
+    ,{   170,   160,   170,   160,    80}
+    ,{    50,   -10,    50,   -10,  -100}
+    ,{   170,   160,   170,   160,    80}
+    }
+   ,{{   170,   160,   170,   160,    80}
+    ,{   160,   160,   160,   160,    70}
+    ,{   170,   160,   170,   160,    80}
+    ,{   160,   160,   160,   160,    70}
+    ,{   170,   160,   170,   160,    80}
+    }
+   ,{{   170,   160,   170,   160,    80}
+    ,{   110,    50,   110,    50,   -30}
+    ,{   170,   160,   170,   160,    80}
+    ,{    70,    20,    30,    20,    70}
+    ,{   170,   160,   170,   160,    80}
+    }
+   ,{{   170,   170,   170,   170,    80}
+    ,{   160,   160,   160,   160,    70}
+    ,{   170,   170,   170,   170,    80}
+    ,{   160,   160,   160,   160,    70}
+    ,{    90,    90,    90,    90,     0}
+    }
+   }
+  }
+ ,{{{{   370,   370,   330,   320,   330}
+    ,{   340,   340,   330,   320,   330}
+    ,{   310,   310,   290,   310,   290}
+    ,{   310,   310,   290,   280,   290}
+    ,{   370,   370,   290,   310,   290}
+    }
+   ,{{   340,   340,   330,   320,   330}
+    ,{   340,   340,   330,   320,   330}
+    ,{   310,   310,   290,   280,   290}
+    ,{   270,   230,   270,   200,   270}
+    ,{   310,   310,   290,   280,   290}
+    }
+   ,{{   310,   310,   290,   310,   290}
+    ,{   310,   310,   290,   280,   290}
+    ,{   310,   310,   290,   310,   290}
+    ,{   310,   310,   290,   280,   290}
+    ,{   310,   310,   290,   310,   290}
+    }
+   ,{{   310,   310,   310,   280,   310}
+    ,{   310,   270,   310,   240,   310}
+    ,{   310,   310,   290,   280,   290}
+    ,{   260,   180,   160,   260,   200}
+    ,{   310,   310,   290,   280,   290}
+    }
+   ,{{   370,   370,   290,   310,   290}
+    ,{   310,   310,   290,   280,   290}
+    ,{   310,   310,   290,   310,   290}
+    ,{   310,   310,   290,   280,   290}
+    ,{   370,   370,   290,   280,   290}
+    }
+   }
+  ,{{{   370,   370,   330,   310,   330}
+    ,{   340,   340,   330,   290,   330}
+    ,{   310,   310,   290,   310,   290}
+    ,{   310,   310,   290,   250,   290}
+    ,{   370,   370,   290,   310,   290}
+    }
+   ,{{   340,   340,   330,   290,   330}
+    ,{   340,   340,   330,   290,   330}
+    ,{   310,   310,   290,   250,   290}
+    ,{   230,   230,   210,   170,   210}
+    ,{   310,   310,   290,   250,   290}
+    }
+   ,{{   310,   310,   290,   310,   290}
+    ,{   310,   310,   290,   250,   290}
+    ,{   310,   310,   290,   310,   290}
+    ,{   310,   310,   290,   250,   290}
+    ,{   310,   310,   290,   310,   290}
+    }
+   ,{{   310,   310,   290,   250,   290}
+    ,{   270,   270,   250,   210,   250}
+    ,{   310,   310,   290,   250,   290}
+    ,{   250,   180,   160,   250,   160}
+    ,{   310,   310,   290,   250,   290}
+    }
+   ,{{   370,   370,   290,   310,   290}
+    ,{   310,   310,   290,   250,   290}
+    ,{   310,   310,   290,   310,   290}
+    ,{   310,   310,   290,   250,   290}
+    ,{   370,   370,   290,   250,   290}
+    }
+   }
+  ,{{{   320,   320,   320,   320,   320}
+    ,{   320,   320,   320,   320,   320}
+    ,{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    }
+   ,{{   320,   320,   320,   320,   320}
+    ,{   320,   320,   320,   320,   320}
+    ,{   290,   280,   290,   280,   290}
+    ,{   270,   200,   270,   200,   270}
+    ,{   290,   280,   290,   280,   290}
+    }
+   ,{{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    }
+   ,{{   310,   280,   310,   280,   310}
+    ,{   310,   240,   310,   240,   310}
+    ,{   290,   280,   290,   280,   290}
+    ,{   160,   150,   160,   150,   160}
+    ,{   290,   280,   290,   280,   290}
+    }
+   ,{{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    }
+   }
+  ,{{{   330,   240,   330,   260,   330}
+    ,{   330,   220,   330,   220,   330}
+    ,{   290,   240,   290,   130,   290}
+    ,{   290,   180,   290,   260,   290}
+    ,{   290,   240,   290,   260,   290}
+    }
+   ,{{   330,   220,   330,   180,   330}
+    ,{   330,   220,   330,   170,   330}
+    ,{   290,   180,   290,   130,   290}
+    ,{   210,   100,   210,   180,   210}
+    ,{   290,   180,   290,   130,   290}
+    }
+   ,{{   290,   240,   290,   130,   290}
+    ,{   290,   180,   290,   130,   290}
+    ,{   290,   240,   290,   130,   290}
+    ,{   290,   180,   290,   130,   290}
+    ,{   290,   240,   290,   130,   290}
+    }
+   ,{{   290,   180,   290,   260,   290}
+    ,{   250,   140,   250,   220,   250}
+    ,{   290,   180,   290,   130,   290}
+    ,{   260,   180,   160,   260,   160}
+    ,{   290,   180,   290,   130,   290}
+    }
+   ,{{   290,   240,   290,   260,   290}
+    ,{   290,   180,   290,   130,   290}
+    ,{   290,   240,   290,   130,   290}
+    ,{   290,   180,   290,   130,   290}
+    ,{   290,   180,   290,   260,   290}
+    }
+   }
+  ,{{{   320,   320,   320,   320,   290}
+    ,{   320,   320,   320,   320,   290}
+    ,{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    }
+   ,{{   320,   320,   320,   320,   290}
+    ,{   320,   320,   320,   320,   290}
+    ,{   290,   280,   290,   280,   200}
+    ,{   270,   200,   270,   200,   120}
+    ,{   290,   280,   290,   280,   200}
+    }
+   ,{{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    }
+   ,{{   310,   280,   310,   280,   200}
+    ,{   310,   240,   310,   240,   160}
+    ,{   290,   280,   290,   280,   200}
+    ,{   200,   150,   160,   150,   200}
+    ,{   290,   280,   290,   280,   200}
+    }
+   ,{{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    }
+   }
+  }
+ ,{{{{   350,   340,   350,   280,   350}
+    ,{   350,   310,   350,   280,   350}
+    ,{   280,   280,   260,   280,   260}
+    ,{   280,   280,   260,   250,   260}
+    ,{   340,   340,   260,   280,   260}
+    }
+   ,{{   280,   280,   260,   250,   260}
+    ,{   240,   240,   230,   220,   230}
+    ,{   280,   280,   260,   250,   260}
+    ,{   180,   140,   180,   120,   180}
+    ,{   280,   280,   260,   250,   260}
+    }
+   ,{{   280,   280,   260,   280,   260}
+    ,{   280,   280,   260,   250,   260}
+    ,{   280,   280,   260,   280,   260}
+    ,{   280,   280,   260,   250,   260}
+    ,{   280,   280,   260,   280,   260}
+    }
+   ,{{   350,   310,   350,   280,   350}
+    ,{   350,   310,   350,   280,   350}
+    ,{   280,   280,   260,   250,   260}
+    ,{   230,   150,   130,   230,   170}
+    ,{   280,   280,   260,   250,   260}
+    }
+   ,{{   340,   340,   260,   280,   260}
+    ,{   280,   280,   260,   250,   260}
+    ,{   280,   280,   260,   280,   260}
+    ,{   280,   280,   260,   250,   260}
+    ,{   340,   340,   260,   250,   260}
+    }
+   }
+  ,{{{   340,   340,   290,   280,   290}
+    ,{   310,   310,   290,   250,   290}
+    ,{   280,   280,   260,   280,   260}
+    ,{   280,   280,   260,   220,   260}
+    ,{   340,   340,   260,   280,   260}
+    }
+   ,{{   280,   280,   260,   220,   260}
+    ,{   240,   240,   230,   190,   230}
+    ,{   280,   280,   260,   220,   260}
+    ,{   140,   140,   130,    90,   130}
+    ,{   280,   280,   260,   220,   260}
+    }
+   ,{{   280,   280,   260,   280,   260}
+    ,{   280,   280,   260,   220,   260}
+    ,{   280,   280,   260,   280,   260}
+    ,{   280,   280,   260,   220,   260}
+    ,{   280,   280,   260,   280,   260}
+    }
+   ,{{   310,   310,   290,   250,   290}
+    ,{   310,   310,   290,   250,   290}
+    ,{   280,   280,   260,   220,   260}
+    ,{   220,   150,   130,   220,   130}
+    ,{   280,   280,   260,   220,   260}
+    }
+   ,{{   340,   340,   260,   280,   260}
+    ,{   280,   280,   260,   220,   260}
+    ,{   280,   280,   260,   280,   260}
+    ,{   280,   280,   260,   220,   260}
+    ,{   340,   340,   260,   220,   260}
+    }
+   }
+  ,{{{   350,   280,   350,   280,   350}
+    ,{   350,   280,   350,   280,   350}
+    ,{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    }
+   ,{{   260,   250,   260,   250,   260}
+    ,{   220,   220,   220,   220,   220}
+    ,{   260,   250,   260,   250,   260}
+    ,{   180,   120,   180,   120,   180}
+    ,{   260,   250,   260,   250,   260}
+    }
+   ,{{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    }
+   ,{{   350,   280,   350,   280,   350}
+    ,{   350,   280,   350,   280,   350}
+    ,{   260,   250,   260,   250,   260}
+    ,{   130,   120,   130,   120,   130}
+    ,{   260,   250,   260,   250,   260}
+    }
+   ,{{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    }
+   }
+  ,{{{   290,   210,   290,   260,   290}
+    ,{   290,   180,   290,   260,   290}
+    ,{   260,   210,   260,   100,   260}
+    ,{   260,   150,   260,   230,   260}
+    ,{   260,   210,   260,   230,   260}
+    }
+   ,{{   260,   150,   260,   100,   260}
+    ,{   230,   120,   230,    70,   230}
+    ,{   260,   150,   260,   100,   260}
+    ,{   130,    20,   130,   100,   130}
+    ,{   260,   150,   260,   100,   260}
+    }
+   ,{{   260,   210,   260,   100,   260}
+    ,{   260,   150,   260,   100,   260}
+    ,{   260,   210,   260,   100,   260}
+    ,{   260,   150,   260,   100,   260}
+    ,{   260,   210,   260,   100,   260}
+    }
+   ,{{   290,   180,   290,   260,   290}
+    ,{   290,   180,   290,   260,   290}
+    ,{   260,   150,   260,   100,   260}
+    ,{   230,   150,   130,   230,   130}
+    ,{   260,   150,   260,   100,   260}
+    }
+   ,{{   260,   210,   260,   230,   260}
+    ,{   260,   150,   260,   100,   260}
+    ,{   260,   210,   260,   100,   260}
+    ,{   260,   150,   260,   100,   260}
+    ,{   260,   150,   260,   230,   260}
+    }
+   }
+  ,{{{   350,   280,   350,   280,   200}
+    ,{   350,   280,   350,   280,   200}
+    ,{   260,   250,   260,   250,   170}
+    ,{   260,   250,   260,   250,   170}
+    ,{   260,   250,   260,   250,   170}
+    }
+   ,{{   260,   250,   260,   250,   190}
+    ,{   220,   220,   220,   220,   190}
+    ,{   260,   250,   260,   250,   170}
+    ,{   180,   120,   180,   120,    30}
+    ,{   260,   250,   260,   250,   170}
+    }
+   ,{{   260,   250,   260,   250,   170}
+    ,{   260,   250,   260,   250,   170}
+    ,{   260,   250,   260,   250,   170}
+    ,{   260,   250,   260,   250,   170}
+    ,{   260,   250,   260,   250,   170}
+    }
+   ,{{   350,   280,   350,   280,   200}
+    ,{   350,   280,   350,   280,   200}
+    ,{   260,   250,   260,   250,   170}
+    ,{   170,   120,   130,   120,   170}
+    ,{   260,   250,   260,   250,   170}
+    }
+   ,{{   260,   250,   260,   250,   170}
+    ,{   260,   250,   260,   250,   170}
+    ,{   260,   250,   260,   250,   170}
+    ,{   260,   250,   260,   250,   170}
+    ,{   260,   250,   260,   250,   170}
+    }
+   }
+  }
+ ,{{{{   280,   280,   260,   260,   260}
+    ,{   280,   280,   260,   250,   260}
+    ,{   260,   260,   240,   260,   240}
+    ,{   260,   260,   250,   240,   250}
+    ,{   260,   260,   240,   260,   240}
+    }
+   ,{{   280,   280,   260,   250,   260}
+    ,{   280,   280,   260,   250,   260}
+    ,{   250,   250,   240,   230,   240}
+    ,{   190,   150,   190,   130,   190}
+    ,{   250,   250,   240,   230,   240}
+    }
+   ,{{   260,   260,   250,   260,   250}
+    ,{   260,   260,   250,   240,   250}
+    ,{   260,   260,   240,   260,   240}
+    ,{   260,   260,   250,   240,   250}
+    ,{   260,   260,   240,   260,   240}
+    }
+   ,{{   260,   250,   260,   230,   260}
+    ,{   260,   220,   260,   200,   260}
+    ,{   250,   250,   240,   230,   240}
+    ,{   190,   110,    90,   190,   120}
+    ,{   250,   250,   240,   230,   240}
+    }
+   ,{{   260,   260,   250,   260,   250}
+    ,{   260,   260,   250,   240,   250}
+    ,{   260,   260,   240,   260,   240}
+    ,{   260,   260,   250,   240,   250}
+    ,{   230,   230,   150,   140,   150}
+    }
+   }
+  ,{{{   280,   280,   260,   260,   260}
+    ,{   280,   280,   260,   220,   260}
+    ,{   260,   260,   240,   260,   240}
+    ,{   260,   260,   250,   210,   250}
+    ,{   260,   260,   240,   260,   240}
+    }
+   ,{{   280,   280,   260,   220,   260}
+    ,{   280,   280,   260,   220,   260}
+    ,{   250,   250,   240,   200,   240}
+    ,{   150,   150,   140,   100,   140}
+    ,{   250,   250,   240,   200,   240}
+    }
+   ,{{   260,   260,   250,   260,   250}
+    ,{   260,   260,   250,   210,   250}
+    ,{   260,   260,   240,   260,   240}
+    ,{   260,   260,   250,   210,   250}
+    ,{   260,   260,   240,   260,   240}
+    }
+   ,{{   250,   250,   240,   200,   240}
+    ,{   220,   220,   210,   170,   210}
+    ,{   250,   250,   240,   200,   240}
+    ,{   180,   100,    90,   180,    90}
+    ,{   250,   250,   240,   200,   240}
+    }
+   ,{{   260,   260,   250,   260,   250}
+    ,{   260,   260,   250,   210,   250}
+    ,{   260,   260,   240,   260,   240}
+    ,{   260,   260,   250,   210,   250}
+    ,{   230,   230,   150,   110,   150}
+    }
+   }
+  ,{{{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    ,{   240,   230,   240,   230,   240}
+    ,{   240,   240,   240,   240,   240}
+    ,{   240,   230,   240,   230,   240}
+    }
+   ,{{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    ,{   230,   230,   230,   230,   230}
+    ,{   190,   130,   190,   130,   190}
+    ,{   230,   230,   230,   230,   230}
+    }
+   ,{{   240,   240,   240,   240,   240}
+    ,{   240,   240,   240,   240,   240}
+    ,{   240,   230,   240,   230,   240}
+    ,{   240,   240,   240,   240,   240}
+    ,{   240,   230,   240,   230,   240}
+    }
+   ,{{   260,   230,   260,   230,   260}
+    ,{   260,   200,   260,   200,   260}
+    ,{   230,   230,   230,   230,   230}
+    ,{    80,    80,    80,    80,    80}
+    ,{   230,   230,   230,   230,   230}
+    }
+   ,{{   240,   240,   240,   240,   240}
+    ,{   240,   240,   240,   240,   240}
+    ,{   240,   230,   240,   230,   240}
+    ,{   240,   240,   240,   240,   240}
+    ,{   150,   140,   150,   140,   150}
+    }
+   }
+  ,{{{   260,   190,   260,   190,   260}
+    ,{   260,   150,   260,   180,   260}
+    ,{   240,   190,   240,    80,   240}
+    ,{   250,   140,   250,   190,   250}
+    ,{   240,   190,   240,   120,   240}
+    }
+   ,{{   260,   150,   260,   110,   260}
+    ,{   260,   150,   260,   100,   260}
+    ,{   240,   130,   240,    80,   240}
+    ,{   140,    30,   140,   110,   140}
+    ,{   240,   130,   240,    80,   240}
+    }
+   ,{{   250,   190,   250,    90,   250}
+    ,{   250,   140,   250,    90,   250}
+    ,{   240,   190,   240,    80,   240}
+    ,{   250,   140,   250,    90,   250}
+    ,{   240,   190,   240,    80,   240}
+    }
+   ,{{   240,   130,   240,   190,   240}
+    ,{   210,   100,   210,   180,   210}
+    ,{   240,   130,   240,    80,   240}
+    ,{   190,   110,    90,   190,    90}
+    ,{   240,   130,   240,    80,   240}
+    }
+   ,{{   250,   190,   250,   120,   250}
+    ,{   250,   140,   250,    90,   250}
+    ,{   240,   190,   240,    80,   240}
+    ,{   250,   140,   250,    90,   250}
+    ,{   150,    40,   150,   120,   150}
+    }
+   }
+  ,{{{   260,   250,   260,   250,   230}
+    ,{   260,   250,   260,   250,   230}
+    ,{   240,   230,   240,   230,   150}
+    ,{   240,   240,   240,   240,   150}
+    ,{   240,   230,   240,   230,   150}
+    }
+   ,{{   260,   250,   260,   250,   230}
+    ,{   260,   250,   260,   250,   230}
+    ,{   230,   230,   230,   230,   140}
+    ,{   190,   130,   190,   130,    40}
+    ,{   230,   230,   230,   230,   140}
+    }
+   ,{{   240,   240,   240,   240,   150}
+    ,{   240,   240,   240,   240,   150}
+    ,{   240,   230,   240,   230,   150}
+    ,{   240,   240,   240,   240,   150}
+    ,{   240,   230,   240,   230,   150}
+    }
+   ,{{   260,   230,   260,   230,   140}
+    ,{   260,   200,   260,   200,   110}
+    ,{   230,   230,   230,   230,   140}
+    ,{   120,    80,    80,    80,   120}
+    ,{   230,   230,   230,   230,   140}
+    }
+   ,{{   240,   240,   240,   240,   150}
+    ,{   240,   240,   240,   240,   150}
+    ,{   240,   230,   240,   230,   150}
+    ,{   240,   240,   240,   240,   150}
+    ,{   150,   140,   150,   140,    60}
+    }
+   }
+  }
+ ,{{{{   280,   280,   260,   280,   260}
+    ,{   280,   280,   260,   250,   260}
+    ,{   280,   280,   260,   280,   260}
+    ,{   280,   280,   260,   250,   260}
+    ,{   280,   280,   260,   280,   260}
+    }
+   ,{{   280,   280,   260,   250,   260}
+    ,{   280,   280,   260,   250,   260}
+    ,{   230,   230,   220,   210,   220}
+    ,{   210,   170,   210,   150,   210}
+    ,{   230,   230,   220,   210,   220}
+    }
+   ,{{   280,   280,   260,   280,   260}
+    ,{   280,   280,   260,   250,   260}
+    ,{   280,   280,   260,   280,   260}
+    ,{   280,   280,   260,   250,   260}
+    ,{   280,   280,   260,   280,   260}
+    }
+   ,{{   230,   230,   220,   210,   220}
+    ,{   220,   180,   220,   160,   220}
+    ,{   230,   230,   220,   210,   220}
+    ,{   210,   130,   110,   210,   140}
+    ,{   230,   230,   220,   210,   220}
+    }
+   ,{{   280,   280,   260,   250,   260}
+    ,{   280,   280,   260,   250,   260}
+    ,{   250,   250,   230,   250,   230}
+    ,{   280,   280,   260,   250,   260}
+    ,{   250,   250,   180,   170,   180}
+    }
+   }
+  ,{{{   280,   280,   260,   280,   260}
+    ,{   280,   280,   260,   220,   260}
+    ,{   280,   280,   260,   280,   260}
+    ,{   280,   280,   260,   220,   260}
+    ,{   280,   280,   260,   280,   260}
+    }
+   ,{{   280,   280,   260,   220,   260}
+    ,{   280,   280,   260,   220,   260}
+    ,{   230,   230,   220,   180,   220}
+    ,{   170,   170,   160,   120,   160}
+    ,{   230,   230,   220,   180,   220}
+    }
+   ,{{   280,   280,   260,   280,   260}
+    ,{   280,   280,   260,   220,   260}
+    ,{   280,   280,   260,   280,   260}
+    ,{   280,   280,   260,   220,   260}
+    ,{   280,   280,   260,   280,   260}
+    }
+   ,{{   230,   230,   220,   200,   220}
+    ,{   180,   180,   170,   130,   170}
+    ,{   230,   230,   220,   180,   220}
+    ,{   200,   120,   110,   200,   110}
+    ,{   230,   230,   220,   180,   220}
+    }
+   ,{{   280,   280,   260,   250,   260}
+    ,{   280,   280,   260,   220,   260}
+    ,{   250,   250,   230,   250,   230}
+    ,{   280,   280,   260,   220,   260}
+    ,{   250,   250,   180,   140,   180}
+    }
+   }
+  ,{{{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    }
+   ,{{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    ,{   210,   210,   210,   210,   210}
+    ,{   210,   150,   210,   150,   210}
+    ,{   210,   210,   210,   210,   210}
+    }
+   ,{{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    }
+   ,{{   220,   210,   220,   210,   220}
+    ,{   220,   160,   220,   160,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   100,   100,   100,   100,   100}
+    ,{   210,   210,   210,   210,   210}
+    }
+   ,{{   260,   250,   260,   250,   260}
+    ,{   260,   250,   260,   250,   260}
+    ,{   230,   220,   230,   220,   230}
+    ,{   260,   250,   260,   250,   260}
+    ,{   170,   170,   170,   170,   170}
+    }
+   }
+  ,{{{   260,   210,   260,   210,   260}
+    ,{   260,   150,   260,   140,   260}
+    ,{   260,   210,   260,   100,   260}
+    ,{   260,   150,   260,   210,   260}
+    ,{   260,   210,   260,   150,   260}
+    }
+   ,{{   260,   150,   260,   130,   260}
+    ,{   260,   150,   260,   100,   260}
+    ,{   220,   110,   220,    60,   220}
+    ,{   160,    50,   160,   130,   160}
+    ,{   220,   110,   220,    60,   220}
+    }
+   ,{{   260,   210,   260,   100,   260}
+    ,{   260,   150,   260,   100,   260}
+    ,{   260,   210,   260,   100,   260}
+    ,{   260,   150,   260,   100,   260}
+    ,{   260,   210,   260,   100,   260}
+    }
+   ,{{   220,   130,   220,   210,   220}
+    ,{   170,    60,   170,   140,   170}
+    ,{   220,   110,   220,    60,   220}
+    ,{   210,   130,   110,   210,   110}
+    ,{   220,   110,   220,    60,   220}
+    }
+   ,{{   260,   180,   260,   150,   260}
+    ,{   260,   150,   260,   100,   260}
+    ,{   230,   180,   230,    70,   230}
+    ,{   260,   150,   260,   100,   260}
+    ,{   180,    70,   180,   150,   180}
+    }
+   }
+  ,{{{   260,   250,   260,   250,   230}
+    ,{   260,   250,   260,   250,   230}
+    ,{   260,   250,   260,   250,   170}
+    ,{   260,   250,   260,   250,   170}
+    ,{   260,   250,   260,   250,   170}
+    }
+   ,{{   260,   250,   260,   250,   230}
+    ,{   260,   250,   260,   250,   230}
+    ,{   210,   210,   210,   210,   120}
+    ,{   210,   150,   210,   150,    60}
+    ,{   210,   210,   210,   210,   120}
+    }
+   ,{{   260,   250,   260,   250,   170}
+    ,{   260,   250,   260,   250,   170}
+    ,{   260,   250,   260,   250,   170}
+    ,{   260,   250,   260,   250,   170}
+    ,{   260,   250,   260,   250,   170}
+    }
+   ,{{   220,   210,   220,   210,   140}
+    ,{   220,   160,   220,   160,    70}
+    ,{   210,   210,   210,   210,   120}
+    ,{   140,   100,   100,   100,   140}
+    ,{   210,   210,   210,   210,   120}
+    }
+   ,{{   260,   250,   260,   250,   170}
+    ,{   260,   250,   260,   250,   170}
+    ,{   230,   220,   230,   220,   140}
+    ,{   260,   250,   260,   250,   170}
+    ,{   170,   170,   170,   170,    80}
+    }
+   }
+  }
+ ,{{{{   370,   370,   350,   320,   350}
+    ,{   350,   340,   350,   320,   350}
+    ,{   310,   310,   290,   310,   290}
+    ,{   310,   310,   290,   280,   290}
+    ,{   370,   370,   290,   310,   290}
+    }
+   ,{{   340,   340,   330,   320,   330}
+    ,{   340,   340,   330,   320,   330}
+    ,{   310,   310,   290,   280,   290}
+    ,{   270,   230,   270,   200,   270}
+    ,{   310,   310,   290,   280,   290}
+    }
+   ,{{   310,   310,   290,   310,   290}
+    ,{   310,   310,   290,   280,   290}
+    ,{   310,   310,   290,   310,   290}
+    ,{   310,   310,   290,   280,   290}
+    ,{   310,   310,   290,   310,   290}
+    }
+   ,{{   350,   310,   350,   280,   350}
+    ,{   350,   310,   350,   280,   350}
+    ,{   310,   310,   290,   280,   290}
+    ,{   260,   180,   160,   260,   200}
+    ,{   310,   310,   290,   280,   290}
+    }
+   ,{{   370,   370,   290,   310,   290}
+    ,{   310,   310,   290,   280,   290}
+    ,{   310,   310,   290,   310,   290}
+    ,{   310,   310,   290,   280,   290}
+    ,{   370,   370,   290,   280,   290}
+    }
+   }
+  ,{{{   370,   370,   330,   310,   330}
+    ,{   340,   340,   330,   290,   330}
+    ,{   310,   310,   290,   310,   290}
+    ,{   310,   310,   290,   250,   290}
+    ,{   370,   370,   290,   310,   290}
+    }
+   ,{{   340,   340,   330,   290,   330}
+    ,{   340,   340,   330,   290,   330}
+    ,{   310,   310,   290,   250,   290}
+    ,{   230,   230,   210,   170,   210}
+    ,{   310,   310,   290,   250,   290}
+    }
+   ,{{   310,   310,   290,   310,   290}
+    ,{   310,   310,   290,   250,   290}
+    ,{   310,   310,   290,   310,   290}
+    ,{   310,   310,   290,   250,   290}
+    ,{   310,   310,   290,   310,   290}
+    }
+   ,{{   310,   310,   290,   250,   290}
+    ,{   310,   310,   290,   250,   290}
+    ,{   310,   310,   290,   250,   290}
+    ,{   250,   180,   160,   250,   160}
+    ,{   310,   310,   290,   250,   290}
+    }
+   ,{{   370,   370,   290,   310,   290}
+    ,{   310,   310,   290,   250,   290}
+    ,{   310,   310,   290,   310,   290}
+    ,{   310,   310,   290,   250,   290}
+    ,{   370,   370,   290,   250,   290}
+    }
+   }
+  ,{{{   350,   320,   350,   320,   350}
+    ,{   350,   320,   350,   320,   350}
+    ,{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    }
+   ,{{   320,   320,   320,   320,   320}
+    ,{   320,   320,   320,   320,   320}
+    ,{   290,   280,   290,   280,   290}
+    ,{   270,   200,   270,   200,   270}
+    ,{   290,   280,   290,   280,   290}
+    }
+   ,{{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    }
+   ,{{   350,   280,   350,   280,   350}
+    ,{   350,   280,   350,   280,   350}
+    ,{   290,   280,   290,   280,   290}
+    ,{   160,   150,   160,   150,   160}
+    ,{   290,   280,   290,   280,   290}
+    }
+   ,{{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    ,{   290,   280,   290,   280,   290}
+    }
+   }
+  ,{{{   330,   240,   330,   260,   330}
+    ,{   330,   220,   330,   260,   330}
+    ,{   290,   240,   290,   130,   290}
+    ,{   290,   180,   290,   260,   290}
+    ,{   290,   240,   290,   260,   290}
+    }
+   ,{{   330,   220,   330,   180,   330}
+    ,{   330,   220,   330,   170,   330}
+    ,{   290,   180,   290,   130,   290}
+    ,{   210,   100,   210,   180,   210}
+    ,{   290,   180,   290,   130,   290}
+    }
+   ,{{   290,   240,   290,   130,   290}
+    ,{   290,   180,   290,   130,   290}
+    ,{   290,   240,   290,   130,   290}
+    ,{   290,   180,   290,   130,   290}
+    ,{   290,   240,   290,   130,   290}
+    }
+   ,{{   290,   180,   290,   260,   290}
+    ,{   290,   180,   290,   260,   290}
+    ,{   290,   180,   290,   130,   290}
+    ,{   260,   180,   160,   260,   160}
+    ,{   290,   180,   290,   130,   290}
+    }
+   ,{{   290,   240,   290,   260,   290}
+    ,{   290,   180,   290,   130,   290}
+    ,{   290,   240,   290,   130,   290}
+    ,{   290,   180,   290,   130,   290}
+    ,{   290,   180,   290,   260,   290}
+    }
+   }
+  ,{{{   350,   320,   350,   320,   290}
+    ,{   350,   320,   350,   320,   290}
+    ,{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    }
+   ,{{   320,   320,   320,   320,   290}
+    ,{   320,   320,   320,   320,   290}
+    ,{   290,   280,   290,   280,   200}
+    ,{   270,   200,   270,   200,   120}
+    ,{   290,   280,   290,   280,   200}
+    }
+   ,{{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    }
+   ,{{   350,   280,   350,   280,   200}
+    ,{   350,   280,   350,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    ,{   200,   150,   160,   150,   200}
+    ,{   290,   280,   290,   280,   200}
+    }
+   ,{{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    ,{   290,   280,   290,   280,   200}
+    }
+   }
+  }
+ }
+,{{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   240,   240,   240,   190,   240}
+    ,{   240,   240,   240,   190,   240}
+    ,{   220,   220,   220,   190,   220}
+    ,{   240,   240,   240,   190,   240}
+    ,{   210,   210,   210,   170,   210}
+    }
+   ,{{   200,   200,   200,   150,   200}
+    ,{   200,   200,   200,   150,   200}
+    ,{   190,   190,   190,   150,   190}
+    ,{   160,   100,   160,    80,   130}
+    ,{   190,   190,   190,   150,   190}
+    }
+   ,{{   240,   240,   240,   190,   240}
+    ,{   240,   240,   240,   190,   240}
+    ,{   220,   220,   220,   190,   220}
+    ,{   240,   240,   240,   190,   240}
+    ,{   210,   210,   210,   170,   210}
+    }
+   ,{{   190,   190,   190,   150,   190}
+    ,{   160,   100,   160,    80,   130}
+    ,{   190,   190,   190,   150,   190}
+    ,{   150,    70,    50,   150,    90}
+    ,{   190,   190,   190,   150,   190}
+    }
+   ,{{   240,   240,   240,   190,   240}
+    ,{   240,   240,   240,   190,   240}
+    ,{   210,   210,   210,   170,   210}
+    ,{   240,   240,   240,   190,   240}
+    ,{   180,   180,   120,    90,   120}
+    }
+   }
+  ,{{{   240,   240,   240,   190,   240}
+    ,{   240,   240,   240,   140,   240}
+    ,{   220,   220,   220,   190,   220}
+    ,{   240,   240,   240,   140,   240}
+    ,{   210,   210,   210,   170,   210}
+    }
+   ,{{   200,   200,   200,   100,   200}
+    ,{   200,   200,   200,   100,   200}
+    ,{   190,   190,   190,   100,   190}
+    ,{   100,   100,   100,    10,   100}
+    ,{   190,   190,   190,   100,   190}
+    }
+   ,{{   240,   240,   240,   190,   240}
+    ,{   240,   240,   240,   140,   240}
+    ,{   220,   220,   220,   190,   220}
+    ,{   240,   240,   240,   140,   240}
+    ,{   210,   210,   210,   170,   210}
+    }
+   ,{{   190,   190,   190,   100,   190}
+    ,{   100,   100,   100,    10,   100}
+    ,{   190,   190,   190,   100,   190}
+    ,{    80,    50,    50,    80,    50}
+    ,{   190,   190,   190,   100,   190}
+    }
+   ,{{   240,   240,   240,   170,   240}
+    ,{   240,   240,   240,   140,   240}
+    ,{   210,   210,   210,   170,   210}
+    ,{   240,   240,   240,   140,   240}
+    ,{   180,   180,   120,    20,   120}
+    }
+   }
+  ,{{{   240,   190,   240,   190,   210}
+    ,{   240,   190,   240,   190,   210}
+    ,{   220,   180,   220,   180,   190}
+    ,{   240,   190,   240,   190,   210}
+    ,{   210,   160,   210,   160,   180}
+    }
+   ,{{   200,   150,   200,   150,   170}
+    ,{   200,   150,   200,   150,   170}
+    ,{   190,   150,   190,   150,   160}
+    ,{   160,    60,   160,    60,   130}
+    ,{   190,   150,   190,   150,   160}
+    }
+   ,{{   240,   190,   240,   190,   210}
+    ,{   240,   190,   240,   190,   210}
+    ,{   220,   180,   220,   180,   190}
+    ,{   240,   190,   240,   190,   210}
+    ,{   210,   160,   210,   160,   180}
+    }
+   ,{{   190,   150,   190,   150,   160}
+    ,{   160,    60,   160,    60,   130}
+    ,{   190,   150,   190,   150,   160}
+    ,{    50,     0,    50,     0,    20}
+    ,{   190,   150,   190,   150,   160}
+    }
+   ,{{   240,   190,   240,   190,   210}
+    ,{   240,   190,   240,   190,   210}
+    ,{   210,   160,   210,   160,   180}
+    ,{   240,   190,   240,   190,   210}
+    ,{   120,    70,   120,    70,    90}
+    }
+   }
+  ,{{{   240,   180,   240,   150,   240}
+    ,{   240,   130,   240,    80,   240}
+    ,{   220,   180,   220,    70,   220}
+    ,{   240,   130,   240,   150,   240}
+    ,{   210,   160,   210,    90,   210}
+    }
+   ,{{   200,    90,   200,    80,   200}
+    ,{   200,    90,   200,    40,   200}
+    ,{   190,    90,   190,    40,   190}
+    ,{   100,     0,   100,    80,   100}
+    ,{   190,    90,   190,    40,   190}
+    }
+   ,{{   240,   180,   240,    80,   240}
+    ,{   240,   130,   240,    80,   240}
+    ,{   220,   180,   220,    70,   220}
+    ,{   240,   130,   240,    80,   240}
+    ,{   210,   160,   210,    50,   210}
+    }
+   ,{{   190,    90,   190,   150,   190}
+    ,{   100,     0,   100,    80,   100}
+    ,{   190,    90,   190,    40,   190}
+    ,{   150,    70,    50,   150,    50}
+    ,{   190,    90,   190,    40,   190}
+    }
+   ,{{   240,   160,   240,    90,   240}
+    ,{   240,   130,   240,    80,   240}
+    ,{   210,   160,   210,    50,   210}
+    ,{   240,   130,   240,    80,   240}
+    ,{   120,    10,   120,    90,   120}
+    }
+   }
+  ,{{{   240,   190,   240,   190,   170}
+    ,{   240,   190,   240,   190,   170}
+    ,{   220,   180,   220,   180,   140}
+    ,{   240,   190,   240,   190,   150}
+    ,{   210,   160,   210,   160,   120}
+    }
+   ,{{   200,   150,   200,   150,   170}
+    ,{   200,   150,   200,   150,   170}
+    ,{   190,   150,   190,   150,   110}
+    ,{   160,    60,   160,    60,    20}
+    ,{   190,   150,   190,   150,   110}
+    }
+   ,{{   240,   190,   240,   190,   150}
+    ,{   240,   190,   240,   190,   150}
+    ,{   220,   180,   220,   180,   140}
+    ,{   240,   190,   240,   190,   150}
+    ,{   210,   160,   210,   160,   120}
+    }
+   ,{{   190,   150,   190,   150,   110}
+    ,{   160,    60,   160,    60,    20}
+    ,{   190,   150,   190,   150,   110}
+    ,{    90,     0,    50,     0,    90}
+    ,{   190,   150,   190,   150,   110}
+    }
+   ,{{   240,   190,   240,   190,   150}
+    ,{   240,   190,   240,   190,   150}
+    ,{   210,   160,   210,   160,   120}
+    ,{   240,   190,   240,   190,   150}
+    ,{   120,    70,   120,    70,    30}
+    }
+   }
+  }
+ ,{{{{   210,   210,   210,   170,   210}
+    ,{   210,   210,   210,   170,   210}
+    ,{   190,   190,   190,   160,   190}
+    ,{   180,   180,   180,   150,   180}
+    ,{   190,   190,   190,   150,   190}
+    }
+   ,{{   210,   210,   210,   170,   210}
+    ,{   210,   210,   210,   170,   210}
+    ,{   190,   190,   190,   140,   190}
+    ,{    70,    10,    70,   -10,    40}
+    ,{   190,   190,   190,   140,   190}
+    }
+   ,{{   190,   190,   190,   150,   190}
+    ,{   180,   180,   180,   140,   180}
+    ,{   190,   190,   190,   150,   190}
+    ,{   180,   180,   180,   140,   180}
+    ,{   190,   190,   190,   150,   190}
+    }
+   ,{{   190,   190,   190,   150,   190}
+    ,{   130,    70,   130,    50,   100}
+    ,{   190,   190,   190,   140,   190}
+    ,{   150,    70,    50,   150,    90}
+    ,{   190,   190,   190,   140,   190}
+    }
+   ,{{   190,   190,   190,   160,   190}
+    ,{   180,   180,   180,   140,   180}
+    ,{   190,   190,   190,   160,   190}
+    ,{   180,   180,   180,   140,   180}
+    ,{   170,   170,   110,    90,   110}
+    }
+   }
+  ,{{{   210,   210,   210,   160,   210}
+    ,{   210,   210,   210,   120,   210}
+    ,{   190,   190,   190,   160,   190}
+    ,{   180,   180,   180,    90,   180}
+    ,{   190,   190,   190,   150,   190}
+    }
+   ,{{   210,   210,   210,   120,   210}
+    ,{   210,   210,   210,   120,   210}
+    ,{   190,   190,   190,    90,   190}
+    ,{    10,    10,    10,   -80,    10}
+    ,{   190,   190,   190,    90,   190}
+    }
+   ,{{   190,   190,   190,   150,   190}
+    ,{   180,   180,   180,    90,   180}
+    ,{   190,   190,   190,   150,   190}
+    ,{   180,   180,   180,    90,   180}
+    ,{   190,   190,   190,   150,   190}
+    }
+   ,{{   190,   190,   190,    90,   190}
+    ,{    70,    70,    70,   -20,    70}
+    ,{   190,   190,   190,    90,   190}
+    ,{    80,    50,    50,    80,    50}
+    ,{   190,   190,   190,    90,   190}
+    }
+   ,{{   190,   190,   190,   160,   190}
+    ,{   180,   180,   180,    90,   180}
+    ,{   190,   190,   190,   160,   190}
+    ,{   180,   180,   180,    90,   180}
+    ,{   170,   170,   110,    20,   110}
+    }
+   }
+  ,{{{   210,   170,   210,   170,   180}
+    ,{   210,   170,   210,   170,   180}
+    ,{   190,   150,   190,   150,   160}
+    ,{   180,   140,   180,   140,   150}
+    ,{   190,   140,   190,   140,   160}
+    }
+   ,{{   210,   170,   210,   170,   180}
+    ,{   210,   170,   210,   170,   180}
+    ,{   190,   140,   190,   140,   160}
+    ,{    70,   -30,    70,   -30,    40}
+    ,{   190,   140,   190,   140,   160}
+    }
+   ,{{   190,   140,   190,   140,   160}
+    ,{   180,   140,   180,   140,   150}
+    ,{   190,   140,   190,   140,   160}
+    ,{   180,   140,   180,   140,   150}
+    ,{   190,   140,   190,   140,   160}
+    }
+   ,{{   190,   140,   190,   140,   160}
+    ,{   130,    30,   130,    30,   100}
+    ,{   190,   140,   190,   140,   160}
+    ,{    50,     0,    50,     0,    20}
+    ,{   190,   140,   190,   140,   160}
+    }
+   ,{{   190,   150,   190,   150,   160}
+    ,{   180,   140,   180,   140,   150}
+    ,{   190,   150,   190,   150,   160}
+    ,{   180,   140,   180,   140,   150}
+    ,{   110,    70,   110,    70,    80}
+    }
+   }
+  ,{{{   210,   150,   210,   150,   210}
+    ,{   210,   110,   210,    60,   210}
+    ,{   190,   150,   190,    40,   190}
+    ,{   180,    80,   180,   150,   180}
+    ,{   190,   140,   190,    90,   190}
+    }
+   ,{{   210,   110,   210,    60,   210}
+    ,{   210,   110,   210,    60,   210}
+    ,{   190,    80,   190,    30,   190}
+    ,{    10,   -90,    10,   -10,    10}
+    ,{   190,    80,   190,    30,   190}
+    }
+   ,{{   190,   140,   190,    30,   190}
+    ,{   180,    80,   180,    30,   180}
+    ,{   190,   140,   190,    30,   190}
+    ,{   180,    80,   180,    30,   180}
+    ,{   190,   140,   190,    30,   190}
+    }
+   ,{{   190,    80,   190,   150,   190}
+    ,{    70,   -30,    70,    50,    70}
+    ,{   190,    80,   190,    30,   190}
+    ,{   150,    70,    50,   150,    50}
+    ,{   190,    80,   190,    30,   190}
+    }
+   ,{{   190,   150,   190,    90,   190}
+    ,{   180,    80,   180,    30,   180}
+    ,{   190,   150,   190,    40,   190}
+    ,{   180,    80,   180,    30,   180}
+    ,{   110,    10,   110,    90,   110}
+    }
+   }
+  ,{{{   210,   170,   210,   170,   190}
+    ,{   210,   170,   210,   170,   190}
+    ,{   190,   150,   190,   150,   110}
+    ,{   180,   140,   180,   140,   100}
+    ,{   190,   140,   190,   140,   100}
+    }
+   ,{{   210,   170,   210,   170,   190}
+    ,{   210,   170,   210,   170,   190}
+    ,{   190,   140,   190,   140,   100}
+    ,{    70,   -30,    70,   -30,   -70}
+    ,{   190,   140,   190,   140,   100}
+    }
+   ,{{   190,   140,   190,   140,   100}
+    ,{   180,   140,   180,   140,   100}
+    ,{   190,   140,   190,   140,   100}
+    ,{   180,   140,   180,   140,   100}
+    ,{   190,   140,   190,   140,   100}
+    }
+   ,{{   190,   140,   190,   140,   100}
+    ,{   130,    30,   130,    30,   -10}
+    ,{   190,   140,   190,   140,   100}
+    ,{    90,     0,    50,     0,    90}
+    ,{   190,   140,   190,   140,   100}
+    }
+   ,{{   190,   150,   190,   150,   110}
+    ,{   180,   140,   180,   140,   100}
+    ,{   190,   150,   190,   150,   110}
+    ,{   180,   140,   180,   140,   100}
+    ,{   110,    70,   110,    70,    30}
+    }
+   }
+  }
+ ,{{{{   370,   370,   340,   300,   340}
+    ,{   340,   340,   340,   300,   340}
+    ,{   310,   310,   310,   270,   310}
+    ,{   310,   310,   310,   280,   310}
+    ,{   370,   370,   310,   280,   310}
+    }
+   ,{{   340,   340,   340,   300,   340}
+    ,{   340,   340,   340,   300,   340}
+    ,{   310,   310,   310,   260,   310}
+    ,{   290,   230,   290,   200,   260}
+    ,{   310,   310,   310,   260,   310}
+    }
+   ,{{   310,   310,   310,   270,   310}
+    ,{   310,   310,   310,   260,   310}
+    ,{   310,   310,   310,   270,   310}
+    ,{   310,   310,   310,   260,   310}
+    ,{   310,   310,   310,   270,   310}
+    }
+   ,{{   330,   310,   330,   280,   310}
+    ,{   330,   270,   330,   240,   300}
+    ,{   310,   310,   310,   260,   310}
+    ,{   280,   200,   180,   280,   220}
+    ,{   310,   310,   310,   260,   310}
+    }
+   ,{{   370,   370,   310,   280,   310}
+    ,{   310,   310,   310,   260,   310}
+    ,{   310,   310,   310,   270,   310}
+    ,{   310,   310,   310,   260,   310}
+    ,{   370,   370,   310,   280,   310}
+    }
+   }
+  ,{{{   370,   370,   340,   270,   340}
+    ,{   340,   340,   340,   250,   340}
+    ,{   310,   310,   310,   270,   310}
+    ,{   310,   310,   310,   210,   310}
+    ,{   370,   370,   310,   270,   310}
+    }
+   ,{{   340,   340,   340,   250,   340}
+    ,{   340,   340,   340,   250,   340}
+    ,{   310,   310,   310,   210,   310}
+    ,{   230,   230,   230,   130,   230}
+    ,{   310,   310,   310,   210,   310}
+    }
+   ,{{   310,   310,   310,   270,   310}
+    ,{   310,   310,   310,   210,   310}
+    ,{   310,   310,   310,   270,   310}
+    ,{   310,   310,   310,   210,   310}
+    ,{   310,   310,   310,   270,   310}
+    }
+   ,{{   310,   310,   310,   210,   310}
+    ,{   270,   270,   270,   170,   270}
+    ,{   310,   310,   310,   210,   310}
+    ,{   210,   180,   180,   210,   180}
+    ,{   310,   310,   310,   210,   310}
+    }
+   ,{{   370,   370,   310,   270,   310}
+    ,{   310,   310,   310,   210,   310}
+    ,{   310,   310,   310,   270,   310}
+    ,{   310,   310,   310,   210,   310}
+    ,{   370,   370,   310,   210,   310}
+    }
+   }
+  ,{{{   340,   300,   340,   300,   310}
+    ,{   340,   300,   340,   300,   310}
+    ,{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    }
+   ,{{   340,   300,   340,   300,   310}
+    ,{   340,   300,   340,   300,   310}
+    ,{   310,   260,   310,   260,   280}
+    ,{   290,   180,   290,   180,   260}
+    ,{   310,   260,   310,   260,   280}
+    }
+   ,{{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    }
+   ,{{   330,   260,   330,   260,   300}
+    ,{   330,   220,   330,   220,   300}
+    ,{   310,   260,   310,   260,   280}
+    ,{   180,   130,   180,   130,   150}
+    ,{   310,   260,   310,   260,   280}
+    }
+   ,{{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    }
+   }
+  ,{{{   340,   260,   340,   280,   340}
+    ,{   340,   240,   340,   240,   340}
+    ,{   310,   260,   310,   150,   310}
+    ,{   310,   200,   310,   280,   310}
+    ,{   310,   260,   310,   280,   310}
+    }
+   ,{{   340,   240,   340,   200,   340}
+    ,{   340,   240,   340,   190,   340}
+    ,{   310,   200,   310,   150,   310}
+    ,{   230,   120,   230,   200,   230}
+    ,{   310,   200,   310,   150,   310}
+    }
+   ,{{   310,   260,   310,   150,   310}
+    ,{   310,   200,   310,   150,   310}
+    ,{   310,   260,   310,   150,   310}
+    ,{   310,   200,   310,   150,   310}
+    ,{   310,   260,   310,   150,   310}
+    }
+   ,{{   310,   200,   310,   280,   310}
+    ,{   270,   160,   270,   240,   270}
+    ,{   310,   200,   310,   150,   310}
+    ,{   280,   200,   180,   280,   180}
+    ,{   310,   200,   310,   150,   310}
+    }
+   ,{{   310,   260,   310,   280,   310}
+    ,{   310,   200,   310,   150,   310}
+    ,{   310,   260,   310,   150,   310}
+    ,{   310,   200,   310,   150,   310}
+    ,{   310,   200,   310,   280,   310}
+    }
+   }
+  ,{{{   340,   300,   340,   300,   320}
+    ,{   340,   300,   340,   300,   320}
+    ,{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    }
+   ,{{   340,   300,   340,   300,   320}
+    ,{   340,   300,   340,   300,   320}
+    ,{   310,   260,   310,   260,   220}
+    ,{   290,   180,   290,   180,   140}
+    ,{   310,   260,   310,   260,   220}
+    }
+   ,{{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    }
+   ,{{   330,   260,   330,   260,   220}
+    ,{   330,   220,   330,   220,   180}
+    ,{   310,   260,   310,   260,   220}
+    ,{   220,   130,   180,   130,   220}
+    ,{   310,   260,   310,   260,   220}
+    }
+   ,{{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    }
+   }
+  }
+ ,{{{{   370,   340,   370,   280,   340}
+    ,{   370,   310,   370,   280,   340}
+    ,{   280,   280,   280,   240,   280}
+    ,{   280,   280,   280,   250,   280}
+    ,{   340,   340,   280,   250,   280}
+    }
+   ,{{   280,   280,   280,   230,   280}
+    ,{   240,   240,   240,   200,   240}
+    ,{   280,   280,   280,   230,   280}
+    ,{   200,   140,   200,   120,   170}
+    ,{   280,   280,   280,   230,   280}
+    }
+   ,{{   280,   280,   280,   240,   280}
+    ,{   280,   280,   280,   230,   280}
+    ,{   280,   280,   280,   240,   280}
+    ,{   280,   280,   280,   230,   280}
+    ,{   280,   280,   280,   240,   280}
+    }
+   ,{{   370,   310,   370,   280,   340}
+    ,{   370,   310,   370,   280,   340}
+    ,{   280,   280,   280,   230,   280}
+    ,{   250,   170,   150,   250,   190}
+    ,{   280,   280,   280,   230,   280}
+    }
+   ,{{   340,   340,   280,   250,   280}
+    ,{   280,   280,   280,   230,   280}
+    ,{   280,   280,   280,   240,   280}
+    ,{   280,   280,   280,   230,   280}
+    ,{   340,   340,   280,   250,   280}
+    }
+   }
+  ,{{{   340,   340,   310,   240,   310}
+    ,{   310,   310,   310,   210,   310}
+    ,{   280,   280,   280,   240,   280}
+    ,{   280,   280,   280,   180,   280}
+    ,{   340,   340,   280,   240,   280}
+    }
+   ,{{   280,   280,   280,   180,   280}
+    ,{   240,   240,   240,   150,   240}
+    ,{   280,   280,   280,   180,   280}
+    ,{   140,   140,   140,    50,   140}
+    ,{   280,   280,   280,   180,   280}
+    }
+   ,{{   280,   280,   280,   240,   280}
+    ,{   280,   280,   280,   180,   280}
+    ,{   280,   280,   280,   240,   280}
+    ,{   280,   280,   280,   180,   280}
+    ,{   280,   280,   280,   240,   280}
+    }
+   ,{{   310,   310,   310,   210,   310}
+    ,{   310,   310,   310,   210,   310}
+    ,{   280,   280,   280,   180,   280}
+    ,{   180,   150,   150,   180,   150}
+    ,{   280,   280,   280,   180,   280}
+    }
+   ,{{   340,   340,   280,   240,   280}
+    ,{   280,   280,   280,   180,   280}
+    ,{   280,   280,   280,   240,   280}
+    ,{   280,   280,   280,   180,   280}
+    ,{   340,   340,   280,   180,   280}
+    }
+   }
+  ,{{{   370,   260,   370,   260,   340}
+    ,{   370,   260,   370,   260,   340}
+    ,{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    }
+   ,{{   280,   230,   280,   230,   250}
+    ,{   240,   200,   240,   200,   210}
+    ,{   280,   230,   280,   230,   250}
+    ,{   200,   100,   200,   100,   170}
+    ,{   280,   230,   280,   230,   250}
+    }
+   ,{{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    }
+   ,{{   370,   260,   370,   260,   340}
+    ,{   370,   260,   370,   260,   340}
+    ,{   280,   230,   280,   230,   250}
+    ,{   150,   100,   150,   100,   120}
+    ,{   280,   230,   280,   230,   250}
+    }
+   ,{{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    }
+   }
+  ,{{{   310,   230,   310,   280,   310}
+    ,{   310,   200,   310,   280,   310}
+    ,{   280,   230,   280,   120,   280}
+    ,{   280,   170,   280,   250,   280}
+    ,{   280,   230,   280,   250,   280}
+    }
+   ,{{   280,   170,   280,   120,   280}
+    ,{   240,   140,   240,    90,   240}
+    ,{   280,   170,   280,   120,   280}
+    ,{   140,    40,   140,   120,   140}
+    ,{   280,   170,   280,   120,   280}
+    }
+   ,{{   280,   230,   280,   120,   280}
+    ,{   280,   170,   280,   120,   280}
+    ,{   280,   230,   280,   120,   280}
+    ,{   280,   170,   280,   120,   280}
+    ,{   280,   230,   280,   120,   280}
+    }
+   ,{{   310,   200,   310,   280,   310}
+    ,{   310,   200,   310,   280,   310}
+    ,{   280,   170,   280,   120,   280}
+    ,{   250,   170,   150,   250,   150}
+    ,{   280,   170,   280,   120,   280}
+    }
+   ,{{   280,   230,   280,   250,   280}
+    ,{   280,   170,   280,   120,   280}
+    ,{   280,   230,   280,   120,   280}
+    ,{   280,   170,   280,   120,   280}
+    ,{   280,   170,   280,   250,   280}
+    }
+   }
+  ,{{{   370,   260,   370,   260,   220}
+    ,{   370,   260,   370,   260,   220}
+    ,{   280,   230,   280,   230,   190}
+    ,{   280,   230,   280,   230,   190}
+    ,{   280,   230,   280,   230,   190}
+    }
+   ,{{   280,   230,   280,   230,   220}
+    ,{   240,   200,   240,   200,   220}
+    ,{   280,   230,   280,   230,   190}
+    ,{   200,   100,   200,   100,    60}
+    ,{   280,   230,   280,   230,   190}
+    }
+   ,{{   280,   230,   280,   230,   190}
+    ,{   280,   230,   280,   230,   190}
+    ,{   280,   230,   280,   230,   190}
+    ,{   280,   230,   280,   230,   190}
+    ,{   280,   230,   280,   230,   190}
+    }
+   ,{{   370,   260,   370,   260,   220}
+    ,{   370,   260,   370,   260,   220}
+    ,{   280,   230,   280,   230,   190}
+    ,{   190,   100,   150,   100,   190}
+    ,{   280,   230,   280,   230,   190}
+    }
+   ,{{   280,   230,   280,   230,   190}
+    ,{   280,   230,   280,   230,   190}
+    ,{   280,   230,   280,   230,   190}
+    ,{   280,   230,   280,   230,   190}
+    ,{   280,   230,   280,   230,   190}
+    }
+   }
+  }
+ ,{{{{   280,   280,   280,   230,   280}
+    ,{   280,   280,   280,   230,   280}
+    ,{   260,   260,   260,   220,   260}
+    ,{   260,   260,   260,   220,   260}
+    ,{   260,   260,   260,   220,   260}
+    }
+   ,{{   280,   280,   280,   230,   280}
+    ,{   280,   280,   280,   230,   280}
+    ,{   250,   250,   250,   210,   250}
+    ,{   210,   150,   210,   130,   180}
+    ,{   250,   250,   250,   210,   250}
+    }
+   ,{{   260,   260,   260,   220,   260}
+    ,{   260,   260,   260,   220,   260}
+    ,{   260,   260,   260,   220,   260}
+    ,{   260,   260,   260,   220,   260}
+    ,{   260,   260,   260,   220,   260}
+    }
+   ,{{   280,   250,   280,   210,   250}
+    ,{   280,   220,   280,   200,   250}
+    ,{   250,   250,   250,   210,   250}
+    ,{   210,   130,   100,   210,   150}
+    ,{   250,   250,   250,   210,   250}
+    }
+   ,{{   260,   260,   260,   220,   260}
+    ,{   260,   260,   260,   220,   260}
+    ,{   260,   260,   260,   220,   260}
+    ,{   260,   260,   260,   220,   260}
+    ,{   230,   230,   170,   140,   170}
+    }
+   }
+  ,{{{   280,   280,   280,   220,   280}
+    ,{   280,   280,   280,   180,   280}
+    ,{   260,   260,   260,   220,   260}
+    ,{   260,   260,   260,   170,   260}
+    ,{   260,   260,   260,   220,   260}
+    }
+   ,{{   280,   280,   280,   180,   280}
+    ,{   280,   280,   280,   180,   280}
+    ,{   250,   250,   250,   160,   250}
+    ,{   150,   150,   150,    60,   150}
+    ,{   250,   250,   250,   160,   250}
+    }
+   ,{{   260,   260,   260,   220,   260}
+    ,{   260,   260,   260,   170,   260}
+    ,{   260,   260,   260,   220,   260}
+    ,{   260,   260,   260,   170,   260}
+    ,{   260,   260,   260,   220,   260}
+    }
+   ,{{   250,   250,   250,   160,   250}
+    ,{   220,   220,   220,   130,   220}
+    ,{   250,   250,   250,   160,   250}
+    ,{   140,   100,   100,   140,   100}
+    ,{   250,   250,   250,   160,   250}
+    }
+   ,{{   260,   260,   260,   220,   260}
+    ,{   260,   260,   260,   170,   260}
+    ,{   260,   260,   260,   220,   260}
+    ,{   260,   260,   260,   170,   260}
+    ,{   230,   230,   170,    70,   170}
+    }
+   }
+  ,{{{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   260,   210,   260,   210,   230}
+    ,{   260,   220,   260,   220,   230}
+    ,{   260,   210,   260,   210,   230}
+    }
+   ,{{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   250,   210,   250,   210,   220}
+    ,{   210,   110,   210,   110,   180}
+    ,{   250,   210,   250,   210,   220}
+    }
+   ,{{   260,   220,   260,   220,   230}
+    ,{   260,   220,   260,   220,   230}
+    ,{   260,   210,   260,   210,   230}
+    ,{   260,   220,   260,   220,   230}
+    ,{   260,   210,   260,   210,   230}
+    }
+   ,{{   280,   210,   280,   210,   250}
+    ,{   280,   180,   280,   180,   250}
+    ,{   250,   210,   250,   210,   220}
+    ,{   100,    60,   100,    60,    70}
+    ,{   250,   210,   250,   210,   220}
+    }
+   ,{{   260,   220,   260,   220,   230}
+    ,{   260,   220,   260,   220,   230}
+    ,{   260,   210,   260,   210,   230}
+    ,{   260,   220,   260,   220,   230}
+    ,{   170,   120,   170,   120,   140}
+    }
+   }
+  ,{{{   280,   210,   280,   210,   280}
+    ,{   280,   170,   280,   200,   280}
+    ,{   260,   210,   260,   100,   260}
+    ,{   260,   160,   260,   210,   260}
+    ,{   260,   210,   260,   140,   260}
+    }
+   ,{{   280,   170,   280,   130,   280}
+    ,{   280,   170,   280,   120,   280}
+    ,{   250,   150,   250,   100,   250}
+    ,{   150,    50,   150,   130,   150}
+    ,{   250,   150,   250,   100,   250}
+    }
+   ,{{   260,   210,   260,   110,   260}
+    ,{   260,   160,   260,   110,   260}
+    ,{   260,   210,   260,   100,   260}
+    ,{   260,   160,   260,   110,   260}
+    ,{   260,   210,   260,   100,   260}
+    }
+   ,{{   250,   150,   250,   210,   250}
+    ,{   220,   120,   220,   200,   220}
+    ,{   250,   150,   250,   100,   250}
+    ,{   210,   130,   100,   210,   100}
+    ,{   250,   150,   250,   100,   250}
+    }
+   ,{{   260,   210,   260,   140,   260}
+    ,{   260,   160,   260,   110,   260}
+    ,{   260,   210,   260,   100,   260}
+    ,{   260,   160,   260,   110,   260}
+    ,{   170,    60,   170,   140,   170}
+    }
+   }
+  ,{{{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   260,   210,   260,   210,   170}
+    ,{   260,   220,   260,   220,   180}
+    ,{   260,   210,   260,   210,   170}
+    }
+   ,{{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   250,   210,   250,   210,   170}
+    ,{   210,   110,   210,   110,    70}
+    ,{   250,   210,   250,   210,   170}
+    }
+   ,{{   260,   220,   260,   220,   180}
+    ,{   260,   220,   260,   220,   180}
+    ,{   260,   210,   260,   210,   170}
+    ,{   260,   220,   260,   220,   180}
+    ,{   260,   210,   260,   210,   170}
+    }
+   ,{{   280,   210,   280,   210,   170}
+    ,{   280,   180,   280,   180,   140}
+    ,{   250,   210,   250,   210,   170}
+    ,{   150,    60,   100,    60,   150}
+    ,{   250,   210,   250,   210,   170}
+    }
+   ,{{   260,   220,   260,   220,   180}
+    ,{   260,   220,   260,   220,   180}
+    ,{   260,   210,   260,   210,   170}
+    ,{   260,   220,   260,   220,   180}
+    ,{   170,   120,   170,   120,    80}
+    }
+   }
+  }
+ ,{{{{   280,   280,   280,   240,   280}
+    ,{   280,   280,   280,   230,   280}
+    ,{   280,   280,   280,   240,   280}
+    ,{   280,   280,   280,   230,   280}
+    ,{   280,   280,   280,   240,   280}
+    }
+   ,{{   280,   280,   280,   230,   280}
+    ,{   280,   280,   280,   230,   280}
+    ,{   230,   230,   230,   190,   230}
+    ,{   230,   170,   230,   150,   200}
+    ,{   230,   230,   230,   190,   230}
+    }
+   ,{{   280,   280,   280,   240,   280}
+    ,{   280,   280,   280,   230,   280}
+    ,{   280,   280,   280,   240,   280}
+    ,{   280,   280,   280,   230,   280}
+    ,{   280,   280,   280,   240,   280}
+    }
+   ,{{   240,   230,   240,   230,   230}
+    ,{   240,   180,   240,   160,   210}
+    ,{   230,   230,   230,   190,   230}
+    ,{   230,   150,   120,   230,   170}
+    ,{   230,   230,   230,   190,   230}
+    }
+   ,{{   280,   280,   280,   230,   280}
+    ,{   280,   280,   280,   230,   280}
+    ,{   250,   250,   250,   210,   250}
+    ,{   280,   280,   280,   230,   280}
+    ,{   250,   250,   190,   170,   190}
+    }
+   }
+  ,{{{   280,   280,   280,   240,   280}
+    ,{   280,   280,   280,   180,   280}
+    ,{   280,   280,   280,   240,   280}
+    ,{   280,   280,   280,   180,   280}
+    ,{   280,   280,   280,   240,   280}
+    }
+   ,{{   280,   280,   280,   180,   280}
+    ,{   280,   280,   280,   180,   280}
+    ,{   230,   230,   230,   140,   230}
+    ,{   170,   170,   170,    80,   170}
+    ,{   230,   230,   230,   140,   230}
+    }
+   ,{{   280,   280,   280,   240,   280}
+    ,{   280,   280,   280,   180,   280}
+    ,{   280,   280,   280,   240,   280}
+    ,{   280,   280,   280,   180,   280}
+    ,{   280,   280,   280,   240,   280}
+    }
+   ,{{   230,   230,   230,   160,   230}
+    ,{   180,   180,   180,    90,   180}
+    ,{   230,   230,   230,   140,   230}
+    ,{   160,   120,   120,   160,   120}
+    ,{   230,   230,   230,   140,   230}
+    }
+   ,{{   280,   280,   280,   210,   280}
+    ,{   280,   280,   280,   180,   280}
+    ,{   250,   250,   250,   210,   250}
+    ,{   280,   280,   280,   180,   280}
+    ,{   250,   250,   190,   100,   190}
+    }
+   }
+  ,{{{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    }
+   ,{{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   230,   190,   230,   190,   200}
+    ,{   230,   130,   230,   130,   200}
+    ,{   230,   190,   230,   190,   200}
+    }
+   ,{{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    }
+   ,{{   240,   190,   240,   190,   210}
+    ,{   240,   140,   240,   140,   210}
+    ,{   230,   190,   230,   190,   200}
+    ,{   120,    80,   120,    80,    90}
+    ,{   230,   190,   230,   190,   200}
+    }
+   ,{{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   250,   200,   250,   200,   220}
+    ,{   280,   230,   280,   230,   250}
+    ,{   190,   150,   190,   150,   160}
+    }
+   }
+  ,{{{   280,   230,   280,   230,   280}
+    ,{   280,   170,   280,   160,   280}
+    ,{   280,   230,   280,   120,   280}
+    ,{   280,   170,   280,   230,   280}
+    ,{   280,   230,   280,   170,   280}
+    }
+   ,{{   280,   170,   280,   150,   280}
+    ,{   280,   170,   280,   120,   280}
+    ,{   230,   130,   230,    80,   230}
+    ,{   170,    70,   170,   150,   170}
+    ,{   230,   130,   230,    80,   230}
+    }
+   ,{{   280,   230,   280,   120,   280}
+    ,{   280,   170,   280,   120,   280}
+    ,{   280,   230,   280,   120,   280}
+    ,{   280,   170,   280,   120,   280}
+    ,{   280,   230,   280,   120,   280}
+    }
+   ,{{   230,   150,   230,   230,   230}
+    ,{   180,    80,   180,   160,   180}
+    ,{   230,   130,   230,    80,   230}
+    ,{   230,   150,   120,   230,   120}
+    ,{   230,   130,   230,    80,   230}
+    }
+   ,{{   280,   200,   280,   170,   280}
+    ,{   280,   170,   280,   120,   280}
+    ,{   250,   200,   250,    90,   250}
+    ,{   280,   170,   280,   120,   280}
+    ,{   190,    90,   190,   170,   190}
+    }
+   }
+  ,{{{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   190}
+    ,{   280,   230,   280,   230,   190}
+    ,{   280,   230,   280,   230,   190}
+    }
+   ,{{   280,   230,   280,   230,   250}
+    ,{   280,   230,   280,   230,   250}
+    ,{   230,   190,   230,   190,   150}
+    ,{   230,   130,   230,   130,    90}
+    ,{   230,   190,   230,   190,   150}
+    }
+   ,{{   280,   230,   280,   230,   190}
+    ,{   280,   230,   280,   230,   190}
+    ,{   280,   230,   280,   230,   190}
+    ,{   280,   230,   280,   230,   190}
+    ,{   280,   230,   280,   230,   190}
+    }
+   ,{{   240,   190,   240,   190,   170}
+    ,{   240,   140,   240,   140,   100}
+    ,{   230,   190,   230,   190,   150}
+    ,{   170,    80,   120,    80,   170}
+    ,{   230,   190,   230,   190,   150}
+    }
+   ,{{   280,   230,   280,   230,   190}
+    ,{   280,   230,   280,   230,   190}
+    ,{   250,   200,   250,   200,   160}
+    ,{   280,   230,   280,   230,   190}
+    ,{   190,   150,   190,   150,   110}
+    }
+   }
+  }
+ ,{{{{   370,   370,   370,   300,   340}
+    ,{   370,   340,   370,   300,   340}
+    ,{   310,   310,   310,   270,   310}
+    ,{   310,   310,   310,   280,   310}
+    ,{   370,   370,   310,   280,   310}
+    }
+   ,{{   340,   340,   340,   300,   340}
+    ,{   340,   340,   340,   300,   340}
+    ,{   310,   310,   310,   260,   310}
+    ,{   290,   230,   290,   200,   260}
+    ,{   310,   310,   310,   260,   310}
+    }
+   ,{{   310,   310,   310,   270,   310}
+    ,{   310,   310,   310,   260,   310}
+    ,{   310,   310,   310,   270,   310}
+    ,{   310,   310,   310,   260,   310}
+    ,{   310,   310,   310,   270,   310}
+    }
+   ,{{   370,   310,   370,   280,   340}
+    ,{   370,   310,   370,   280,   340}
+    ,{   310,   310,   310,   260,   310}
+    ,{   280,   200,   180,   280,   220}
+    ,{   310,   310,   310,   260,   310}
+    }
+   ,{{   370,   370,   310,   280,   310}
+    ,{   310,   310,   310,   260,   310}
+    ,{   310,   310,   310,   270,   310}
+    ,{   310,   310,   310,   260,   310}
+    ,{   370,   370,   310,   280,   310}
+    }
+   }
+  ,{{{   370,   370,   340,   270,   340}
+    ,{   340,   340,   340,   250,   340}
+    ,{   310,   310,   310,   270,   310}
+    ,{   310,   310,   310,   210,   310}
+    ,{   370,   370,   310,   270,   310}
+    }
+   ,{{   340,   340,   340,   250,   340}
+    ,{   340,   340,   340,   250,   340}
+    ,{   310,   310,   310,   210,   310}
+    ,{   230,   230,   230,   130,   230}
+    ,{   310,   310,   310,   210,   310}
+    }
+   ,{{   310,   310,   310,   270,   310}
+    ,{   310,   310,   310,   210,   310}
+    ,{   310,   310,   310,   270,   310}
+    ,{   310,   310,   310,   210,   310}
+    ,{   310,   310,   310,   270,   310}
+    }
+   ,{{   310,   310,   310,   210,   310}
+    ,{   310,   310,   310,   210,   310}
+    ,{   310,   310,   310,   210,   310}
+    ,{   210,   180,   180,   210,   180}
+    ,{   310,   310,   310,   210,   310}
+    }
+   ,{{   370,   370,   310,   270,   310}
+    ,{   310,   310,   310,   210,   310}
+    ,{   310,   310,   310,   270,   310}
+    ,{   310,   310,   310,   210,   310}
+    ,{   370,   370,   310,   210,   310}
+    }
+   }
+  ,{{{   370,   300,   370,   300,   340}
+    ,{   370,   300,   370,   300,   340}
+    ,{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    }
+   ,{{   340,   300,   340,   300,   310}
+    ,{   340,   300,   340,   300,   310}
+    ,{   310,   260,   310,   260,   280}
+    ,{   290,   180,   290,   180,   260}
+    ,{   310,   260,   310,   260,   280}
+    }
+   ,{{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    }
+   ,{{   370,   260,   370,   260,   340}
+    ,{   370,   260,   370,   260,   340}
+    ,{   310,   260,   310,   260,   280}
+    ,{   180,   130,   180,   130,   150}
+    ,{   310,   260,   310,   260,   280}
+    }
+   ,{{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    ,{   310,   260,   310,   260,   280}
+    }
+   }
+  ,{{{   340,   260,   340,   280,   340}
+    ,{   340,   240,   340,   280,   340}
+    ,{   310,   260,   310,   150,   310}
+    ,{   310,   200,   310,   280,   310}
+    ,{   310,   260,   310,   280,   310}
+    }
+   ,{{   340,   240,   340,   200,   340}
+    ,{   340,   240,   340,   190,   340}
+    ,{   310,   200,   310,   150,   310}
+    ,{   230,   120,   230,   200,   230}
+    ,{   310,   200,   310,   150,   310}
+    }
+   ,{{   310,   260,   310,   150,   310}
+    ,{   310,   200,   310,   150,   310}
+    ,{   310,   260,   310,   150,   310}
+    ,{   310,   200,   310,   150,   310}
+    ,{   310,   260,   310,   150,   310}
+    }
+   ,{{   310,   200,   310,   280,   310}
+    ,{   310,   200,   310,   280,   310}
+    ,{   310,   200,   310,   150,   310}
+    ,{   280,   200,   180,   280,   180}
+    ,{   310,   200,   310,   150,   310}
+    }
+   ,{{   310,   260,   310,   280,   310}
+    ,{   310,   200,   310,   150,   310}
+    ,{   310,   260,   310,   150,   310}
+    ,{   310,   200,   310,   150,   310}
+    ,{   310,   200,   310,   280,   310}
+    }
+   }
+  ,{{{   370,   300,   370,   300,   320}
+    ,{   370,   300,   370,   300,   320}
+    ,{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    }
+   ,{{   340,   300,   340,   300,   320}
+    ,{   340,   300,   340,   300,   320}
+    ,{   310,   260,   310,   260,   220}
+    ,{   290,   180,   290,   180,   140}
+    ,{   310,   260,   310,   260,   220}
+    }
+   ,{{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    }
+   ,{{   370,   260,   370,   260,   220}
+    ,{   370,   260,   370,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    ,{   220,   130,   180,   130,   220}
+    ,{   310,   260,   310,   260,   220}
+    }
+   ,{{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    ,{   310,   260,   310,   260,   220}
+    }
+   }
+  }
+ }
+,{{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   310,   300,   270,   310,   290}
+    ,{   300,   300,   270,   270,   290}
+    ,{   310,   290,   250,   310,   250}
+    ,{   300,   300,   270,   270,   270}
+    ,{   300,   270,   240,   300,   240}
+    }
+   ,{{   290,   270,   230,   230,   290}
+    ,{   290,   270,   230,   230,   290}
+    ,{   260,   260,   220,   220,   220}
+    ,{   190,   170,   190,   130,   190}
+    ,{   260,   260,   220,   220,   220}
+    }
+   ,{{   310,   300,   270,   310,   270}
+    ,{   300,   300,   270,   270,   270}
+    ,{   310,   290,   250,   310,   250}
+    ,{   300,   300,   270,   270,   270}
+    ,{   300,   270,   240,   300,   240}
+    }
+   ,{{   260,   260,   220,   220,   220}
+    ,{   190,   170,   190,   130,   190}
+    ,{   260,   260,   220,   220,   220}
+    ,{   210,   130,    80,   210,   210}
+    ,{   260,   260,   220,   220,   220}
+    }
+   ,{{   300,   300,   270,   300,   270}
+    ,{   300,   300,   270,   270,   270}
+    ,{   300,   270,   240,   300,   240}
+    ,{   300,   300,   270,   270,   270}
+    ,{   240,   240,   150,   150,   150}
+    }
+   }
+  ,{{{   310,   300,   270,   310,   270}
+    ,{   300,   300,   270,   270,   270}
+    ,{   310,   290,   250,   310,   250}
+    ,{   300,   300,   270,   270,   270}
+    ,{   300,   270,   240,   300,   240}
+    }
+   ,{{   270,   270,   230,   230,   230}
+    ,{   270,   270,   230,   230,   230}
+    ,{   260,   260,   220,   220,   220}
+    ,{   170,   170,   130,   130,   130}
+    ,{   260,   260,   220,   220,   220}
+    }
+   ,{{   310,   300,   270,   310,   270}
+    ,{   300,   300,   270,   270,   270}
+    ,{   310,   290,   250,   310,   250}
+    ,{   300,   300,   270,   270,   270}
+    ,{   300,   270,   240,   300,   240}
+    }
+   ,{{   260,   260,   220,   220,   220}
+    ,{   170,   170,   130,   130,   130}
+    ,{   260,   260,   220,   220,   220}
+    ,{   210,   110,    80,   210,    80}
+    ,{   260,   260,   220,   220,   220}
+    }
+   ,{{   300,   300,   270,   300,   270}
+    ,{   300,   300,   270,   270,   270}
+    ,{   300,   270,   240,   300,   240}
+    ,{   300,   300,   270,   270,   270}
+    ,{   240,   240,   150,   150,   150}
+    }
+   }
+  ,{{{   270,   270,   270,   270,   270}
+    ,{   270,   270,   270,   270,   270}
+    ,{   250,   250,   250,   250,   250}
+    ,{   270,   270,   270,   270,   270}
+    ,{   240,   240,   240,   240,   240}
+    }
+   ,{{   230,   230,   230,   230,   230}
+    ,{   230,   230,   230,   230,   230}
+    ,{   220,   220,   220,   220,   220}
+    ,{   190,   130,   190,   130,   190}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   270,   270,   270,   270,   270}
+    ,{   270,   270,   270,   270,   270}
+    ,{   250,   250,   250,   250,   250}
+    ,{   270,   270,   270,   270,   270}
+    ,{   240,   240,   240,   240,   240}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   190,   130,   190,   130,   190}
+    ,{   220,   220,   220,   220,   220}
+    ,{    80,    80,    80,    80,    80}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   270,   270,   270,   270,   270}
+    ,{   270,   270,   270,   270,   270}
+    ,{   240,   240,   240,   240,   240}
+    ,{   270,   270,   270,   270,   270}
+    ,{   150,   150,   150,   150,   150}
+    }
+   }
+  ,{{{   270,   230,   270,   210,   270}
+    ,{   270,   190,   270,   140,   270}
+    ,{   250,   230,   250,   120,   250}
+    ,{   270,   190,   270,   210,   270}
+    ,{   240,   220,   240,   150,   240}
+    }
+   ,{{   230,   150,   230,   130,   230}
+    ,{   230,   150,   230,   100,   230}
+    ,{   220,   140,   220,    90,   220}
+    ,{   130,    50,   130,   130,   130}
+    ,{   220,   140,   220,    90,   220}
+    }
+   ,{{   270,   230,   270,   140,   270}
+    ,{   270,   190,   270,   140,   270}
+    ,{   250,   230,   250,   120,   250}
+    ,{   270,   190,   270,   140,   270}
+    ,{   240,   220,   240,   110,   240}
+    }
+   ,{{   220,   140,   220,   210,   220}
+    ,{   130,    50,   130,   130,   130}
+    ,{   220,   140,   220,    90,   220}
+    ,{   210,   130,    80,   210,    80}
+    ,{   220,   140,   220,    90,   220}
+    }
+   ,{{   270,   220,   270,   150,   270}
+    ,{   270,   190,   270,   140,   270}
+    ,{   240,   220,   240,   110,   240}
+    ,{   270,   190,   270,   140,   270}
+    ,{   150,    70,   150,   150,   150}
+    }
+   }
+  ,{{{   290,   270,   270,   270,   290}
+    ,{   290,   270,   270,   270,   290}
+    ,{   250,   250,   250,   250,   250}
+    ,{   270,   270,   270,   270,   270}
+    ,{   240,   240,   240,   240,   240}
+    }
+   ,{{   290,   230,   230,   230,   290}
+    ,{   290,   230,   230,   230,   290}
+    ,{   220,   220,   220,   220,   220}
+    ,{   190,   130,   190,   130,   130}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   270,   270,   270,   270,   270}
+    ,{   270,   270,   270,   270,   270}
+    ,{   250,   250,   250,   250,   250}
+    ,{   270,   270,   270,   270,   270}
+    ,{   240,   240,   240,   240,   240}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   190,   130,   190,   130,   130}
+    ,{   220,   220,   220,   220,   220}
+    ,{   210,    80,    80,    80,   210}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   270,   270,   270,   270,   270}
+    ,{   270,   270,   270,   270,   270}
+    ,{   240,   240,   240,   240,   240}
+    ,{   270,   270,   270,   270,   270}
+    ,{   150,   150,   150,   150,   150}
+    }
+   }
+  }
+ ,{{{{   300,   280,   240,   280,   300}
+    ,{   300,   280,   240,   240,   300}
+    ,{   280,   260,   220,   280,   220}
+    ,{   250,   250,   210,   210,   210}
+    ,{   280,   250,   220,   280,   220}
+    }
+   ,{{   300,   280,   240,   240,   300}
+    ,{   300,   280,   240,   240,   300}
+    ,{   250,   250,   220,   220,   220}
+    ,{   100,    70,   100,    40,   100}
+    ,{   250,   250,   220,   220,   220}
+    }
+   ,{{   280,   250,   220,   280,   220}
+    ,{   250,   250,   210,   210,   210}
+    ,{   280,   250,   220,   280,   220}
+    ,{   250,   250,   210,   210,   210}
+    ,{   280,   250,   220,   280,   220}
+    }
+   ,{{   250,   250,   220,   220,   220}
+    ,{   160,   140,   160,   100,   160}
+    ,{   250,   250,   220,   220,   220}
+    ,{   210,   130,    80,   210,   210}
+    ,{   250,   250,   220,   220,   220}
+    }
+   ,{{   280,   260,   220,   280,   220}
+    ,{   250,   250,   210,   210,   210}
+    ,{   280,   260,   220,   280,   220}
+    ,{   250,   250,   210,   210,   210}
+    ,{   240,   240,   140,   140,   140}
+    }
+   }
+  ,{{{   280,   280,   240,   280,   240}
+    ,{   280,   280,   240,   240,   240}
+    ,{   280,   260,   220,   280,   220}
+    ,{   250,   250,   210,   210,   210}
+    ,{   280,   250,   220,   280,   220}
+    }
+   ,{{   280,   280,   240,   240,   240}
+    ,{   280,   280,   240,   240,   240}
+    ,{   250,   250,   220,   220,   220}
+    ,{    70,    70,    40,    40,    40}
+    ,{   250,   250,   220,   220,   220}
+    }
+   ,{{   280,   250,   220,   280,   220}
+    ,{   250,   250,   210,   210,   210}
+    ,{   280,   250,   220,   280,   220}
+    ,{   250,   250,   210,   210,   210}
+    ,{   280,   250,   220,   280,   220}
+    }
+   ,{{   250,   250,   220,   220,   220}
+    ,{   140,   140,   100,   100,   100}
+    ,{   250,   250,   220,   220,   220}
+    ,{   210,   110,    80,   210,    80}
+    ,{   250,   250,   220,   220,   220}
+    }
+   ,{{   280,   260,   220,   280,   220}
+    ,{   250,   250,   210,   210,   210}
+    ,{   280,   260,   220,   280,   220}
+    ,{   250,   250,   210,   210,   210}
+    ,{   240,   240,   140,   140,   140}
+    }
+   }
+  ,{{{   240,   240,   240,   240,   240}
+    ,{   240,   240,   240,   240,   240}
+    ,{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   240,   240,   240,   240,   240}
+    ,{   240,   240,   240,   240,   240}
+    ,{   220,   220,   220,   220,   220}
+    ,{   100,    40,   100,    40,   100}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   160,   100,   160,   100,   160}
+    ,{   220,   220,   220,   220,   220}
+    ,{    80,    80,    80,    80,    80}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   140,   140,   140,   140,   140}
+    }
+   }
+  ,{{{   240,   200,   240,   210,   240}
+    ,{   240,   160,   240,   110,   240}
+    ,{   220,   200,   220,    90,   220}
+    ,{   210,   130,   210,   210,   210}
+    ,{   220,   200,   220,   140,   220}
+    }
+   ,{{   240,   160,   240,   110,   240}
+    ,{   240,   160,   240,   110,   240}
+    ,{   220,   140,   220,    90,   220}
+    ,{    40,   -40,    40,    40,    40}
+    ,{   220,   140,   220,    90,   220}
+    }
+   ,{{   220,   200,   220,    90,   220}
+    ,{   210,   130,   210,    80,   210}
+    ,{   220,   200,   220,    90,   220}
+    ,{   210,   130,   210,    80,   210}
+    ,{   220,   200,   220,    90,   220}
+    }
+   ,{{   220,   140,   220,   210,   220}
+    ,{   100,    20,   100,   100,   100}
+    ,{   220,   140,   220,    90,   220}
+    ,{   210,   130,    80,   210,    80}
+    ,{   220,   140,   220,    90,   220}
+    }
+   ,{{   220,   200,   220,   140,   220}
+    ,{   210,   130,   210,    80,   210}
+    ,{   220,   200,   220,    90,   220}
+    ,{   210,   130,   210,    80,   210}
+    ,{   140,    90,   140,   140,   140}
+    }
+   }
+  ,{{{   300,   240,   240,   240,   300}
+    ,{   300,   240,   240,   240,   300}
+    ,{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   300,   240,   240,   240,   300}
+    ,{   300,   240,   240,   240,   300}
+    ,{   220,   220,   220,   220,   220}
+    ,{   100,    40,   100,    40,    50}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   160,   100,   160,   100,   140}
+    ,{   220,   220,   220,   220,   220}
+    ,{   210,    80,    80,    80,   210}
+    ,{   220,   220,   220,   220,   220}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   220,   220,   220,   220,   220}
+    ,{   210,   210,   210,   210,   210}
+    ,{   140,   140,   140,   140,   140}
+    }
+   }
+  }
+ ,{{{{   430,   430,   370,   400,   430}
+    ,{   430,   410,   370,   370,   430}
+    ,{   400,   370,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   430,   430,   340,   400,   340}
+    }
+   ,{{   430,   410,   370,   370,   430}
+    ,{   430,   410,   370,   370,   430}
+    ,{   370,   370,   340,   340,   340}
+    ,{   320,   290,   320,   260,   320}
+    ,{   370,   370,   340,   340,   340}
+    }
+   ,{{   400,   370,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   400,   370,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   400,   370,   340,   400,   340}
+    }
+   ,{{   370,   370,   360,   340,   360}
+    ,{   360,   360,   360,   300,   360}
+    ,{   370,   370,   340,   340,   340}
+    ,{   340,   260,   210,   340,   340}
+    ,{   370,   370,   340,   340,   340}
+    }
+   ,{{   430,   430,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   400,   370,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   430,   430,   340,   340,   340}
+    }
+   }
+  ,{{{   430,   430,   370,   400,   370}
+    ,{   410,   410,   370,   370,   370}
+    ,{   400,   370,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   430,   430,   340,   400,   340}
+    }
+   ,{{   410,   410,   370,   370,   370}
+    ,{   410,   410,   370,   370,   370}
+    ,{   370,   370,   340,   340,   340}
+    ,{   290,   290,   260,   260,   260}
+    ,{   370,   370,   340,   340,   340}
+    }
+   ,{{   400,   370,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   400,   370,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   400,   370,   340,   400,   340}
+    }
+   ,{{   370,   370,   340,   340,   340}
+    ,{   360,   360,   300,   300,   300}
+    ,{   370,   370,   340,   340,   340}
+    ,{   340,   240,   210,   340,   210}
+    ,{   370,   370,   340,   340,   340}
+    }
+   ,{{   430,   430,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   400,   370,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   430,   430,   340,   340,   340}
+    }
+   }
+  ,{{{   370,   370,   370,   370,   370}
+    ,{   370,   370,   370,   370,   370}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   370,   370,   370,   370,   370}
+    ,{   370,   370,   370,   370,   370}
+    ,{   340,   340,   340,   340,   340}
+    ,{   320,   260,   320,   260,   320}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   360,   340,   360,   340,   360}
+    ,{   360,   300,   360,   300,   360}
+    ,{   340,   340,   340,   340,   340}
+    ,{   210,   210,   210,   210,   210}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   }
+  ,{{{   370,   320,   370,   340,   370}
+    ,{   370,   290,   370,   300,   370}
+    ,{   340,   320,   340,   210,   340}
+    ,{   340,   260,   340,   340,   340}
+    ,{   340,   320,   340,   340,   340}
+    }
+   ,{{   370,   290,   370,   260,   370}
+    ,{   370,   290,   370,   240,   370}
+    ,{   340,   260,   340,   210,   340}
+    ,{   260,   180,   260,   260,   260}
+    ,{   340,   260,   340,   210,   340}
+    }
+   ,{{   340,   320,   340,   210,   340}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   320,   340,   210,   340}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   320,   340,   210,   340}
+    }
+   ,{{   340,   260,   340,   340,   340}
+    ,{   300,   220,   300,   300,   300}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   260,   210,   340,   210}
+    ,{   340,   260,   340,   210,   340}
+    }
+   ,{{   340,   320,   340,   340,   340}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   320,   340,   210,   340}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   260,   340,   340,   340}
+    }
+   }
+  ,{{{   430,   370,   370,   370,   430}
+    ,{   430,   370,   370,   370,   430}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   430,   370,   370,   370,   430}
+    ,{   430,   370,   370,   370,   430}
+    ,{   340,   340,   340,   340,   340}
+    ,{   320,   260,   320,   260,   260}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   360,   340,   360,   340,   340}
+    ,{   360,   300,   360,   300,   300}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   210,   210,   210,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   }
+  }
+ ,{{{{   400,   400,   400,   370,   400}
+    ,{   400,   370,   400,   360,   400}
+    ,{   370,   340,   310,   370,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   400,   400,   310,   370,   310}
+    }
+   ,{{   360,   360,   310,   360,   330}
+    ,{   360,   360,   270,   360,   330}
+    ,{   340,   340,   310,   310,   310}
+    ,{   230,   220,   230,   170,   230}
+    ,{   340,   340,   310,   310,   310}
+    }
+   ,{{   370,   340,   310,   370,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   370,   340,   310,   370,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   370,   340,   310,   370,   310}
+    }
+   ,{{   400,   370,   400,   340,   400}
+    ,{   400,   370,   400,   340,   400}
+    ,{   340,   340,   310,   310,   310}
+    ,{   310,   230,   180,   310,   310}
+    ,{   340,   340,   310,   310,   310}
+    }
+   ,{{   400,   400,   310,   370,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   370,   340,   310,   370,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   400,   400,   310,   310,   310}
+    }
+   }
+  ,{{{   400,   400,   340,   370,   340}
+    ,{   370,   370,   340,   360,   340}
+    ,{   370,   340,   310,   370,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   400,   400,   310,   370,   310}
+    }
+   ,{{   360,   360,   310,   360,   310}
+    ,{   360,   360,   270,   360,   270}
+    ,{   340,   340,   310,   310,   310}
+    ,{   220,   220,   170,   170,   170}
+    ,{   340,   340,   310,   310,   310}
+    }
+   ,{{   370,   340,   310,   370,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   370,   340,   310,   370,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   370,   340,   310,   370,   310}
+    }
+   ,{{   370,   370,   340,   340,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   340,   340,   310,   310,   310}
+    ,{   310,   210,   180,   310,   180}
+    ,{   340,   340,   310,   310,   310}
+    }
+   ,{{   400,   400,   310,   370,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   370,   340,   310,   370,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   400,   400,   310,   310,   310}
+    }
+   }
+  ,{{{   400,   340,   400,   340,   400}
+    ,{   400,   340,   400,   340,   400}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   270,   270,   270,   270,   270}
+    ,{   310,   310,   310,   310,   310}
+    ,{   230,   170,   230,   170,   230}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   400,   340,   400,   340,   400}
+    ,{   400,   340,   400,   340,   400}
+    ,{   310,   310,   310,   310,   310}
+    ,{   180,   180,   180,   180,   180}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   }
+  ,{{{   340,   290,   340,   340,   340}
+    ,{   340,   260,   340,   340,   340}
+    ,{   310,   290,   310,   180,   310}
+    ,{   310,   230,   310,   310,   310}
+    ,{   310,   290,   310,   310,   310}
+    }
+   ,{{   310,   230,   310,   180,   310}
+    ,{   270,   190,   270,   140,   270}
+    ,{   310,   230,   310,   180,   310}
+    ,{   170,    40,   170,   170,   170}
+    ,{   310,   230,   310,   180,   310}
+    }
+   ,{{   310,   290,   310,   180,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   290,   310,   180,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   290,   310,   180,   310}
+    }
+   ,{{   340,   260,   340,   340,   340}
+    ,{   340,   260,   340,   340,   340}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   230,   180,   310,   180}
+    ,{   310,   230,   310,   180,   310}
+    }
+   ,{{   310,   290,   310,   310,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   290,   310,   180,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   230,   310,   310,   310}
+    }
+   }
+  ,{{{   400,   340,   400,   340,   340}
+    ,{   400,   340,   400,   340,   340}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   330,   310,   310,   310,   330}
+    ,{   330,   270,   270,   270,   330}
+    ,{   310,   310,   310,   310,   310}
+    ,{   230,   170,   230,   170,   170}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   400,   340,   400,   340,   340}
+    ,{   400,   340,   400,   340,   340}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   180,   180,   180,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   }
+  }
+ ,{{{{   370,   340,   310,   350,   370}
+    ,{   370,   340,   310,   310,   370}
+    ,{   350,   320,   290,   350,   290}
+    ,{   330,   330,   290,   290,   290}
+    ,{   350,   320,   290,   350,   290}
+    }
+   ,{{   370,   340,   310,   310,   370}
+    ,{   370,   340,   310,   310,   370}
+    ,{   320,   320,   280,   280,   280}
+    ,{   240,   220,   240,   180,   240}
+    ,{   320,   320,   280,   280,   280}
+    }
+   ,{{   350,   330,   290,   350,   290}
+    ,{   330,   330,   290,   290,   290}
+    ,{   350,   320,   290,   350,   290}
+    ,{   330,   330,   290,   290,   290}
+    ,{   350,   320,   290,   350,   290}
+    }
+   ,{{   320,   320,   310,   280,   310}
+    ,{   310,   290,   310,   250,   310}
+    ,{   320,   320,   280,   280,   280}
+    ,{   260,   180,   130,   260,   260}
+    ,{   320,   320,   280,   280,   280}
+    }
+   ,{{   350,   330,   290,   350,   290}
+    ,{   330,   330,   290,   290,   290}
+    ,{   350,   320,   290,   350,   290}
+    ,{   330,   330,   290,   290,   290}
+    ,{   290,   290,   200,   200,   200}
+    }
+   }
+  ,{{{   350,   340,   310,   350,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   350,   320,   290,   350,   290}
+    ,{   330,   330,   290,   290,   290}
+    ,{   350,   320,   290,   350,   290}
+    }
+   ,{{   340,   340,   310,   310,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   320,   320,   280,   280,   280}
+    ,{   220,   220,   180,   180,   180}
+    ,{   320,   320,   280,   280,   280}
+    }
+   ,{{   350,   330,   290,   350,   290}
+    ,{   330,   330,   290,   290,   290}
+    ,{   350,   320,   290,   350,   290}
+    ,{   330,   330,   290,   290,   290}
+    ,{   350,   320,   290,   350,   290}
+    }
+   ,{{   320,   320,   280,   280,   280}
+    ,{   290,   290,   250,   250,   250}
+    ,{   320,   320,   280,   280,   280}
+    ,{   260,   170,   130,   260,   130}
+    ,{   320,   320,   280,   280,   280}
+    }
+   ,{{   350,   330,   290,   350,   290}
+    ,{   330,   330,   290,   290,   290}
+    ,{   350,   320,   290,   350,   290}
+    ,{   330,   330,   290,   290,   290}
+    ,{   290,   290,   200,   200,   200}
+    }
+   }
+  ,{{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   280,   280,   280,   280,   280}
+    ,{   240,   180,   240,   180,   240}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    }
+   ,{{   310,   280,   310,   280,   310}
+    ,{   310,   250,   310,   250,   310}
+    ,{   280,   280,   280,   280,   280}
+    ,{   130,   130,   130,   130,   130}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   200,   200,   200,   200,   200}
+    }
+   }
+  ,{{{   310,   270,   310,   260,   310}
+    ,{   310,   230,   310,   250,   310}
+    ,{   290,   270,   290,   160,   290}
+    ,{   290,   210,   290,   260,   290}
+    ,{   290,   270,   290,   200,   290}
+    }
+   ,{{   310,   230,   310,   180,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   280,   200,   280,   150,   280}
+    ,{   180,   100,   180,   180,   180}
+    ,{   280,   200,   280,   150,   280}
+    }
+   ,{{   290,   270,   290,   160,   290}
+    ,{   290,   210,   290,   160,   290}
+    ,{   290,   270,   290,   160,   290}
+    ,{   290,   210,   290,   160,   290}
+    ,{   290,   270,   290,   160,   290}
+    }
+   ,{{   280,   200,   280,   260,   280}
+    ,{   250,   170,   250,   250,   250}
+    ,{   280,   200,   280,   150,   280}
+    ,{   260,   180,   130,   260,   130}
+    ,{   280,   200,   280,   150,   280}
+    }
+   ,{{   290,   270,   290,   200,   290}
+    ,{   290,   210,   290,   160,   290}
+    ,{   290,   270,   290,   160,   290}
+    ,{   290,   210,   290,   160,   290}
+    ,{   200,   120,   200,   200,   200}
+    }
+   }
+  ,{{{   370,   310,   310,   310,   370}
+    ,{   370,   310,   310,   310,   370}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    }
+   ,{{   370,   310,   310,   310,   370}
+    ,{   370,   310,   310,   310,   370}
+    ,{   280,   280,   280,   280,   280}
+    ,{   240,   180,   240,   180,   180}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    }
+   ,{{   310,   280,   310,   280,   280}
+    ,{   310,   250,   310,   250,   250}
+    ,{   280,   280,   280,   280,   280}
+    ,{   260,   130,   130,   130,   260}
+    ,{   280,   280,   280,   280,   280}
+    }
+   ,{{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   290,   290,   290,   290,   290}
+    ,{   200,   200,   200,   200,   200}
+    }
+   }
+  }
+ ,{{{{   370,   340,   310,   370,   370}
+    ,{   370,   340,   310,   310,   370}
+    ,{   370,   340,   310,   370,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   370,   340,   310,   370,   310}
+    }
+   ,{{   370,   340,   310,   310,   370}
+    ,{   370,   340,   310,   310,   370}
+    ,{   300,   300,   260,   260,   260}
+    ,{   260,   240,   260,   200,   260}
+    ,{   300,   300,   260,   260,   260}
+    }
+   ,{{   370,   340,   310,   370,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   370,   340,   310,   370,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   370,   340,   310,   370,   310}
+    }
+   ,{{   300,   300,   270,   280,   280}
+    ,{   270,   250,   270,   210,   270}
+    ,{   300,   300,   260,   260,   260}
+    ,{   280,   200,   150,   280,   280}
+    ,{   300,   300,   260,   260,   260}
+    }
+   ,{{   340,   340,   310,   340,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   340,   310,   280,   340,   280}
+    ,{   340,   340,   310,   310,   310}
+    ,{   320,   320,   220,   220,   220}
+    }
+   }
+  ,{{{   370,   340,   310,   370,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   370,   340,   310,   370,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   370,   340,   310,   370,   310}
+    }
+   ,{{   340,   340,   310,   310,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   300,   300,   260,   260,   260}
+    ,{   240,   240,   200,   200,   200}
+    ,{   300,   300,   260,   260,   260}
+    }
+   ,{{   370,   340,   310,   370,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   370,   340,   310,   370,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   370,   340,   310,   370,   310}
+    }
+   ,{{   300,   300,   260,   280,   260}
+    ,{   250,   250,   210,   210,   210}
+    ,{   300,   300,   260,   260,   260}
+    ,{   280,   190,   150,   280,   150}
+    ,{   300,   300,   260,   260,   260}
+    }
+   ,{{   340,   340,   310,   340,   310}
+    ,{   340,   340,   310,   310,   310}
+    ,{   340,   310,   280,   340,   280}
+    ,{   340,   340,   310,   310,   310}
+    ,{   320,   320,   220,   220,   220}
+    }
+   }
+  ,{{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   260,   260,   260,   260,   260}
+    ,{   260,   200,   260,   200,   260}
+    ,{   260,   260,   260,   260,   260}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   270,   260,   270,   260,   270}
+    ,{   270,   210,   270,   210,   270}
+    ,{   260,   260,   260,   260,   260}
+    ,{   150,   150,   150,   150,   150}
+    ,{   260,   260,   260,   260,   260}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   280,   280,   280,   280,   280}
+    ,{   310,   310,   310,   310,   310}
+    ,{   220,   220,   220,   220,   220}
+    }
+   }
+  ,{{{   310,   290,   310,   280,   310}
+    ,{   310,   230,   310,   210,   310}
+    ,{   310,   290,   310,   180,   310}
+    ,{   310,   230,   310,   280,   310}
+    ,{   310,   290,   310,   220,   310}
+    }
+   ,{{   310,   230,   310,   200,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   260,   180,   260,   130,   260}
+    ,{   200,   120,   200,   200,   200}
+    ,{   260,   180,   260,   130,   260}
+    }
+   ,{{   310,   290,   310,   180,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   290,   310,   180,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   310,   290,   310,   180,   310}
+    }
+   ,{{   280,   200,   260,   280,   260}
+    ,{   210,   130,   210,   210,   210}
+    ,{   260,   180,   260,   130,   260}
+    ,{   280,   200,   150,   280,   150}
+    ,{   260,   180,   260,   130,   260}
+    }
+   ,{{   310,   260,   310,   220,   310}
+    ,{   310,   230,   310,   180,   310}
+    ,{   280,   260,   280,   150,   280}
+    ,{   310,   230,   310,   180,   310}
+    ,{   220,   140,   220,   220,   220}
+    }
+   }
+  ,{{{   370,   310,   310,   310,   370}
+    ,{   370,   310,   310,   310,   370}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   370,   310,   310,   310,   370}
+    ,{   370,   310,   310,   310,   370}
+    ,{   260,   260,   260,   260,   260}
+    ,{   260,   200,   260,   200,   200}
+    ,{   260,   260,   260,   260,   260}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    }
+   ,{{   280,   260,   270,   260,   280}
+    ,{   270,   210,   270,   210,   210}
+    ,{   260,   260,   260,   260,   260}
+    ,{   280,   150,   150,   150,   280}
+    ,{   260,   260,   260,   260,   260}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{   280,   280,   280,   280,   280}
+    ,{   310,   310,   310,   310,   310}
+    ,{   220,   220,   220,   220,   220}
+    }
+   }
+  }
+ ,{{{{   430,   430,   400,   400,   430}
+    ,{   430,   410,   400,   370,   430}
+    ,{   400,   370,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   430,   430,   340,   400,   340}
+    }
+   ,{{   430,   410,   370,   370,   430}
+    ,{   430,   410,   370,   370,   430}
+    ,{   370,   370,   340,   340,   340}
+    ,{   320,   290,   320,   260,   320}
+    ,{   370,   370,   340,   340,   340}
+    }
+   ,{{   400,   370,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   400,   370,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   400,   370,   340,   400,   340}
+    }
+   ,{{   400,   370,   400,   340,   400}
+    ,{   400,   370,   400,   340,   400}
+    ,{   370,   370,   340,   340,   340}
+    ,{   340,   260,   210,   340,   340}
+    ,{   370,   370,   340,   340,   340}
+    }
+   ,{{   430,   430,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   400,   370,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   430,   430,   340,   340,   340}
+    }
+   }
+  ,{{{   430,   430,   370,   400,   370}
+    ,{   410,   410,   370,   370,   370}
+    ,{   400,   370,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   430,   430,   340,   400,   340}
+    }
+   ,{{   410,   410,   370,   370,   370}
+    ,{   410,   410,   370,   370,   370}
+    ,{   370,   370,   340,   340,   340}
+    ,{   290,   290,   260,   260,   260}
+    ,{   370,   370,   340,   340,   340}
+    }
+   ,{{   400,   370,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   400,   370,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   400,   370,   340,   400,   340}
+    }
+   ,{{   370,   370,   340,   340,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   340,   240,   210,   340,   210}
+    ,{   370,   370,   340,   340,   340}
+    }
+   ,{{   430,   430,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   400,   370,   340,   400,   340}
+    ,{   370,   370,   340,   340,   340}
+    ,{   430,   430,   340,   340,   340}
+    }
+   }
+  ,{{{   400,   370,   400,   370,   400}
+    ,{   400,   370,   400,   370,   400}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   370,   370,   370,   370,   370}
+    ,{   370,   370,   370,   370,   370}
+    ,{   340,   340,   340,   340,   340}
+    ,{   320,   260,   320,   260,   320}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   400,   340,   400,   340,   400}
+    ,{   400,   340,   400,   340,   400}
+    ,{   340,   340,   340,   340,   340}
+    ,{   210,   210,   210,   210,   210}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   }
+  ,{{{   370,   320,   370,   340,   370}
+    ,{   370,   290,   370,   340,   370}
+    ,{   340,   320,   340,   210,   340}
+    ,{   340,   260,   340,   340,   340}
+    ,{   340,   320,   340,   340,   340}
+    }
+   ,{{   370,   290,   370,   260,   370}
+    ,{   370,   290,   370,   240,   370}
+    ,{   340,   260,   340,   210,   340}
+    ,{   260,   180,   260,   260,   260}
+    ,{   340,   260,   340,   210,   340}
+    }
+   ,{{   340,   320,   340,   210,   340}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   320,   340,   210,   340}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   320,   340,   210,   340}
+    }
+   ,{{   340,   260,   340,   340,   340}
+    ,{   340,   260,   340,   340,   340}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   260,   210,   340,   210}
+    ,{   340,   260,   340,   210,   340}
+    }
+   ,{{   340,   320,   340,   340,   340}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   320,   340,   210,   340}
+    ,{   340,   260,   340,   210,   340}
+    ,{   340,   260,   340,   340,   340}
+    }
+   }
+  ,{{{   430,   370,   400,   370,   430}
+    ,{   430,   370,   400,   370,   430}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   430,   370,   370,   370,   430}
+    ,{   430,   370,   370,   370,   430}
+    ,{   340,   340,   340,   340,   340}
+    ,{   320,   260,   320,   260,   260}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   400,   340,   400,   340,   340}
+    ,{   400,   340,   400,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   210,   210,   210,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   ,{{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    ,{   340,   340,   340,   340,   340}
+    }
+   }
+  }
+ }};
diff --git a/include/intl22dH.h b/include/intl22dH.h
new file mode 100644
--- /dev/null
+++ b/include/intl22dH.h
@@ -0,0 +1,9993 @@
+PUBLIC int int22_dH[NBPAIRS+1][NBPAIRS+1][5][5][5][5] =
+{{{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ }
+,{{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{    80,  -120,    30,    80,    80}
+    ,{    30,  -310,  -170,    30,  -110}
+    ,{    80,  -230,  -110,    80,   -60}
+    ,{    80,  -120,    30,    30,    80}
+    ,{   -30,  -340,  -220,   -30,  -170}
+    }
+   ,{{  -120,  -460,  -290,  -120,  -230}
+    ,{  -120,  -460,  -310,  -120,  -260}
+    ,{  -430,  -770,  -620,  -430,  -570}
+    ,{  -230,  -670,  -290,  -980,  -230}
+    ,{  -430,  -770,  -620,  -430,  -570}
+    }
+   ,{{    30,  -290,  -170,    30,  -110}
+    ,{    30,  -310,  -170,    30,  -110}
+    ,{    20,  -290,  -170,    20,  -120}
+    ,{    30,  -310,  -170,    30,  -110}
+    ,{   -30,  -340,  -220,   -30,  -170}
+    }
+   ,{{    80,  -120,    30,  -430,    80}
+    ,{  -520,  -960,  -580, -1270,  -520}
+    ,{  -430,  -770,  -620,  -430,  -570}
+    ,{    80,  -120,    30,  -430,    80}
+    ,{  -430,  -770,  -620,  -430,  -570}
+    }
+   ,{{    80,  -230,  -110,    80,   -60}
+    ,{    30,  -310,  -170,    30,  -110}
+    ,{    80,  -230,  -110,    80,   -60}
+    ,{    30,  -310,  -170,    30,  -110}
+    ,{  -860,  -860,  -960, -1410,  -900}
+    }
+   }
+  ,{{{    30,  -120,    30,  -520,    30}
+    ,{  -170,  -310,  -170,  -810,  -170}
+    ,{  -110,  -260,  -110,  -520,  -110}
+    ,{    30,  -120,    30,  -810,    30}
+    ,{  -220,  -370,  -220,  -630,  -220}
+    }
+   ,{{  -310,  -460,  -310,  -960,  -310}
+    ,{  -310,  -460,  -310,  -960,  -310}
+    ,{  -620,  -770,  -620, -1270,  -620}
+    ,{  -530,  -670,  -530, -1170,  -530}
+    ,{  -620,  -770,  -620, -1270,  -620}
+    }
+   ,{{  -170,  -310,  -170,  -580,  -170}
+    ,{  -170,  -310,  -170,  -810,  -170}
+    ,{  -170,  -320,  -170,  -580,  -170}
+    ,{  -170,  -310,  -170,  -810,  -170}
+    ,{  -220,  -370,  -220,  -630,  -220}
+    }
+   ,{{    30,  -120,    30, -1270,    30}
+    ,{  -810,  -960,  -810, -1460,  -810}
+    ,{  -620,  -770,  -620, -1270,  -620}
+    ,{    30,  -120,    30, -1870,    30}
+    ,{  -620,  -770,  -620, -1270,  -620}
+    }
+   ,{{  -110,  -260,  -110,  -520,  -110}
+    ,{  -170,  -310,  -170,  -810,  -170}
+    ,{  -110,  -260,  -110,  -520,  -110}
+    ,{  -170,  -310,  -170,  -810,  -170}
+    ,{  -860,  -860,  -960, -1600,  -960}
+    }
+   }
+  ,{{{    80,  -430,    20,  -430,    80}
+    ,{  -110,  -620,  -170,  -620,  -110}
+    ,{   -60,  -570,  -120,  -570,   -60}
+    ,{    80,  -430,    20,  -430,    80}
+    ,{  -170,  -680,  -230,  -680,  -170}
+    }
+   ,{{  -230,  -770,  -290,  -770,  -230}
+    ,{  -260,  -770,  -320,  -770,  -260}
+    ,{  -570, -1080,  -630, -1080,  -570}
+    ,{  -230,  -980,  -290,  -980,  -230}
+    ,{  -570, -1080,  -630, -1080,  -570}
+    }
+   ,{{  -110,  -620,  -170,  -620,  -110}
+    ,{  -110,  -620,  -170,  -620,  -110}
+    ,{  -120,  -630,  -180,  -630,  -120}
+    ,{  -110,  -620,  -170,  -620,  -110}
+    ,{  -170,  -680,  -230,  -680,  -170}
+    }
+   ,{{    80,  -430,    20,  -430,    80}
+    ,{  -520, -1270,  -580, -1270,  -520}
+    ,{  -570, -1080,  -630, -1080,  -570}
+    ,{    80,  -430,    20,  -430,    80}
+    ,{  -570, -1080,  -630, -1080,  -570}
+    }
+   ,{{   -60,  -570,  -120,  -570,   -60}
+    ,{  -110,  -620,  -170,  -620,  -110}
+    ,{   -60,  -570,  -120,  -570,   -60}
+    ,{  -110,  -620,  -170,  -620,  -110}
+    ,{  -900, -1410,  -960, -1410,  -900}
+    }
+   }
+  ,{{{    80,  -230,    30,    80,    30}
+    ,{    30,  -530,  -170,    30,  -170}
+    ,{    80,  -230,  -110,    80,  -110}
+    ,{    30,  -530,    30,    30,    30}
+    ,{   -30,  -340,  -220,   -30,  -220}
+    }
+   ,{{  -120,  -670,  -310,  -120,  -310}
+    ,{  -120,  -670,  -310,  -120,  -310}
+    ,{  -430,  -980,  -620,  -430,  -620}
+    ,{  -530,  -890,  -530, -1580,  -530}
+    ,{  -430,  -980,  -620,  -430,  -620}
+    }
+   ,{{    30,  -290,  -170,    30,  -170}
+    ,{    30,  -530,  -170,    30,  -170}
+    ,{    20,  -290,  -170,    20,  -170}
+    ,{    30,  -530,  -170,    30,  -170}
+    ,{   -30,  -340,  -220,   -30,  -220}
+    }
+   ,{{    30,  -980,    30,  -430,    30}
+    ,{  -810, -1170,  -810, -1870,  -810}
+    ,{  -430,  -980,  -620,  -430,  -620}
+    ,{    30, -1580,    30, -2280,    30}
+    ,{  -430,  -980,  -620,  -430,  -620}
+    }
+   ,{{    80,  -230,  -110,    80,  -110}
+    ,{    30,  -530,  -170,    30,  -170}
+    ,{    80,  -230,  -110,    80,  -110}
+    ,{    30,  -530,  -170,    30,  -170}
+    ,{  -960, -1320,  -960, -2010,  -960}
+    }
+   }
+  ,{{{   -30,  -430,   -30,  -430,  -860}
+    ,{  -220,  -620,  -220,  -620,  -860}
+    ,{  -170,  -570,  -170,  -570,  -900}
+    ,{   -30,  -430,   -30,  -430,  -960}
+    ,{  -280,  -680,  -280,  -680, -1010}
+    }
+   ,{{  -340,  -770,  -340,  -770,  -860}
+    ,{  -370,  -770,  -370,  -770,  -860}
+    ,{  -680, -1080,  -680, -1080, -1410}
+    ,{  -340,  -980,  -340,  -980, -1320}
+    ,{  -680, -1080,  -680, -1080, -1410}
+    }
+   ,{{  -220,  -620,  -220,  -620,  -960}
+    ,{  -220,  -620,  -220,  -620,  -960}
+    ,{  -230,  -630,  -230,  -630,  -960}
+    ,{  -220,  -620,  -220,  -620,  -960}
+    ,{  -280,  -680,  -280,  -680, -1010}
+    }
+   ,{{   -30,  -430,   -30,  -430, -1410}
+    ,{  -630, -1270,  -630, -1270, -1600}
+    ,{  -680, -1080,  -680, -1080, -1410}
+    ,{   -30,  -430,   -30,  -430, -2010}
+    ,{  -680, -1080,  -680, -1080, -1410}
+    }
+   ,{{  -170,  -570,  -170,  -570,  -900}
+    ,{  -220,  -620,  -220,  -620,  -960}
+    ,{  -170,  -570,  -170,  -570,  -900}
+    ,{  -220,  -620,  -220,  -620,  -960}
+    ,{ -1010, -1410, -1010, -1410, -1750}
+    }
+   }
+  }
+ ,{{{{   540,   180,    30,   540,   180}
+    ,{    10,  -580,  -150,    10,   -90}
+    ,{   540,  -350,  -600,   540,  -540}
+    ,{   180,   180,    30,  -320,   180}
+    ,{   -90,  -740,   -90,  -260,  -540}
+    }
+   ,{{   -90,  -350,  -150,  -100,   -90}
+    ,{   -90,  -580,  -150,  -200,   -90}
+    ,{  -100,  -350,  -600,  -100,  -540}
+    ,{  -630, -1790,  -630, -1790, -1040}
+    ,{  -400,  -740,  -600,  -400,  -540}
+    }
+   ,{{   540,  -660,  -510,   540,  -400}
+    ,{    10,  -660,  -510,    10,  -400}
+    ,{   540,  -940,  -820,   540,  -760}
+    ,{  -320,  -660,  -510,  -320,  -460}
+    ,{  -260,  -940,  -820,  -260,  -550}
+    }
+   ,{{   180,   180,    30,  -400,   180}
+    ,{  -500, -1070,  -500, -1080,  -570}
+    ,{  -400,  -740,  -600,  -400,  -540}
+    ,{   180,   180,    30,  -430,   180}
+    ,{  -400,  -740,  -600,  -400,  -540}
+    }
+   ,{{   -90,  -660,   -90,  -210,  -460}
+    ,{  -320,  -660,  -510,  -320,  -460}
+    ,{  -210, -1250, -1130,  -210, -1070}
+    ,{  -320,  -660,  -510,  -320,  -460}
+    ,{   -90,  -830,   -90,  -810,  -800}
+    }
+   }
+  ,{{{   540,   180,   -90,   540,    30}
+    ,{    10,  -580,  -220,    10,  -150}
+    ,{   540,  -740,  -600,   540,  -600}
+    ,{   180,   180,  -390, -1160,    30}
+    ,{   -90,  -740,   -90,  -810,  -600}
+    }
+   ,{{  -100,  -580,  -220,  -100,  -150}
+    ,{  -150,  -580,  -220,  -970,  -150}
+    ,{  -100,  -740,  -600,  -100,  -600}
+    ,{ -1340, -2010, -1650, -1980, -1340}
+    ,{  -600,  -740,  -600, -1240,  -600}
+    }
+   ,{{   540,  -660,  -510,   540,  -510}
+    ,{    10,  -660, -1150,    10,  -510}
+    ,{   540,  -960,  -820,   540,  -820}
+    ,{  -510,  -660,  -510, -1160,  -510}
+    ,{  -820,  -960,  -820, -1220,  -820}
+    }
+   ,{{   180,   180,  -390, -1240,    30}
+    ,{  -860, -1340,  -860, -2450,  -860}
+    ,{  -600,  -740,  -600, -1240,  -600}
+    ,{   180,   180,  -390, -1870,    30}
+    ,{  -600,  -740,  -600, -1240,  -600}
+    }
+   ,{{   -90,  -660,   -90,  -810,  -510}
+    ,{  -510,  -660,  -510, -1160,  -510}
+    ,{ -1130, -1270, -1130, -1530, -1130}
+    ,{  -510,  -660,  -510, -1160,  -510}
+    ,{   -90, -1240,   -90,  -810,  -800}
+    }
+   }
+  ,{{{   180,  -430,    20,  -430,   180}
+    ,{   -90,  -600,  -500,  -600,   -90}
+    ,{  -540, -1050,  -600, -1050,  -540}
+    ,{   180,  -430,    20,  -430,   180}
+    ,{  -540,  -830,  -600, -1050,  -540}
+    }
+   ,{{   -90,  -600,  -600,  -600,   -90}
+    ,{   -90,  -600, -1070,  -600,   -90}
+    ,{  -540, -1050,  -600, -1050,  -540}
+    ,{  -630, -1790,  -630, -1790, -1040}
+    ,{  -540, -1050,  -600, -1050,  -540}
+    }
+   ,{{  -460,  -970,  -520,  -970,  -460}
+    ,{  -460,  -970,  -750,  -970,  -460}
+    ,{  -760, -1270,  -820, -1270,  -760}
+    ,{  -460,  -970,  -520,  -970,  -460}
+    ,{  -550, -1270,  -820, -1270,  -550}
+    }
+   ,{{   180,  -430,    20,  -430,   180}
+    ,{  -500, -1070,  -500, -1320,  -570}
+    ,{  -540, -1050,  -600, -1050,  -540}
+    ,{   180,  -430,    20,  -430,   180}
+    ,{  -540, -1050,  -600, -1050,  -540}
+    }
+   ,{{  -460,  -830,  -520,  -970,  -460}
+    ,{  -460,  -970,  -520,  -970,  -460}
+    ,{ -1070, -1580, -1130, -1580, -1070}
+    ,{  -460,  -970,  -520,  -970,  -460}
+    ,{  -830,  -830, -1710, -1260, -1460}
+    }
+   }
+  ,{{{    30,  -350,    30,  -200,    30}
+    ,{  -150,  -870,  -150,  -200,  -150}
+    ,{  -210,  -350,  -600,  -210,  -600}
+    ,{    30,  -870,    30,  -320,    30}
+    ,{  -260,  -940,  -600,  -260,  -600}
+    }
+   ,{{  -150,  -350,  -150,  -200,  -150}
+    ,{  -150, -1600,  -150,  -200,  -150}
+    ,{  -350,  -350,  -600,  -440,  -600}
+    ,{ -1340, -3070, -1340, -2390, -1340}
+    ,{  -400,  -960,  -600,  -400,  -600}
+    }
+   ,{{  -260,  -870,  -510,  -260,  -510}
+    ,{  -320, -1110,  -510,  -320,  -510}
+    ,{  -620,  -940,  -820,  -620,  -820}
+    ,{  -320,  -870,  -510,  -320,  -510}
+    ,{  -260,  -940,  -820,  -260,  -820}
+    }
+   ,{{    30,  -960,    30,  -400,    30}
+    ,{  -860, -1880,  -860, -1080,  -860}
+    ,{  -400,  -960,  -600,  -400,  -600}
+    ,{    30, -1370,    30, -2280,    30}
+    ,{  -400,  -960,  -600,  -400,  -600}
+    }
+   ,{{  -210,  -870,  -510,  -210,  -510}
+    ,{  -320,  -870,  -510,  -320,  -510}
+    ,{  -210, -1250, -1130,  -210, -1130}
+    ,{  -320,  -870,  -510,  -320,  -510}
+    ,{  -800, -1360,  -800, -1550,  -800}
+    }
+   }
+  ,{{{  -200,  -430,  -200,  -430,  -230}
+    ,{  -200,  -600,  -200,  -600,  -400}
+    ,{  -650, -1050,  -650, -1050, -1390}
+    ,{  -230,  -430,  -570,  -430,  -230}
+    ,{  -650, -1050,  -650, -1050, -1390}
+    }
+   ,{{  -200,  -600,  -200,  -600, -1390}
+    ,{  -200,  -600,  -200,  -600, -1490}
+    ,{  -650, -1050,  -650, -1050, -1390}
+    ,{ -1150, -1790, -1150, -1790, -1520}
+    ,{  -650, -1050,  -650, -1050, -1390}
+    }
+   ,{{  -400,  -970,  -570,  -970,  -400}
+    ,{  -400,  -970,  -570,  -970,  -400}
+    ,{  -870, -1270,  -870, -1270, -1610}
+    ,{  -570,  -970,  -570,  -970, -1300}
+    ,{  -870, -1270,  -870, -1270, -1610}
+    }
+   ,{{  -230,  -430,  -650,  -430,  -230}
+    ,{ -1300, -1320, -1750, -1320, -1300}
+    ,{  -650, -1050,  -650, -1050, -1390}
+    ,{  -230,  -430,  -880,  -430,  -230}
+    ,{  -650, -1050,  -650, -1050, -1390}
+    }
+   ,{{  -570,  -970,  -570,  -970, -1300}
+    ,{  -570,  -970,  -570,  -970, -1300}
+    ,{ -1180, -1580, -1180, -1580, -1920}
+    ,{  -570,  -970,  -570,  -970, -1300}
+    ,{  -860, -1260,  -860, -1260, -2350}
+    }
+   }
+  }
+ ,{{{{   240,    40,   190,  -270,   240}
+    ,{  -590, -1030,  -650,  -870,  -590}
+    ,{  -870, -1180, -1060,  -870, -1010}
+    ,{   240,    40,   190,  -270,   240}
+    ,{  -870,  -970, -1060,  -870, -1010}
+    }
+   ,{{  -780, -1210,  -840,  -870,  -780}
+    ,{ -1050, -1370, -1240, -1050, -1190}
+    ,{  -870, -1210, -1060,  -870, -1010}
+    ,{  -780, -1220,  -840, -1530,  -780}
+    ,{  -870, -1210, -1060,  -870, -1010}
+    }
+   ,{{  -870, -1180, -1060,  -870, -1010}
+    ,{  -870, -1210, -1060,  -870, -1010}
+    ,{  -870, -1180, -1060,  -870, -1010}
+    ,{  -870, -1210, -1060,  -870, -1010}
+    ,{  -870, -1180, -1060,  -870, -1010}
+    }
+   ,{{   240,    40,   190,  -270,   240}
+    ,{  -590, -1030,  -650, -1340,  -590}
+    ,{  -870, -1210, -1060,  -870, -1010}
+    ,{   240,    40,   190,  -270,   240}
+    ,{  -870, -1210, -1060,  -870, -1010}
+    }
+   ,{{  -870,  -970, -1060,  -870, -1010}
+    ,{  -870, -1210, -1060,  -870, -1010}
+    ,{  -870, -1180, -1060,  -870, -1010}
+    ,{  -870, -1210, -1060,  -870, -1010}
+    ,{  -970,  -970, -1060, -1520, -1010}
+    }
+   }
+  ,{{{   190,    40,   190, -1470,   190}
+    ,{  -890, -1030,  -890, -1530,  -890}
+    ,{ -1060, -1210, -1060, -1470, -1060}
+    ,{   190,    40,   190, -1710,   190}
+    ,{  -970,  -970, -1060, -1470, -1060}
+    }
+   ,{{ -1060, -1210, -1060, -1710, -1060}
+    ,{ -1240, -1370, -1240, -1890, -1240}
+    ,{ -1060, -1210, -1060, -1710, -1060}
+    ,{ -1080, -1220, -1080, -1720, -1080}
+    ,{ -1060, -1210, -1060, -1710, -1060}
+    }
+   ,{{ -1060, -1210, -1060, -1470, -1060}
+    ,{ -1060, -1210, -1060, -1710, -1060}
+    ,{ -1060, -1210, -1060, -1470, -1060}
+    ,{ -1060, -1210, -1060, -1710, -1060}
+    ,{ -1060, -1210, -1060, -1470, -1060}
+    }
+   ,{{   190,    40,   190, -1530,   190}
+    ,{  -890, -1030,  -890, -1530,  -890}
+    ,{ -1060, -1210, -1060, -1710, -1060}
+    ,{   190,    40,   190, -1710,   190}
+    ,{ -1060, -1210, -1060, -1710, -1060}
+    }
+   ,{{  -970,  -970, -1060, -1470, -1060}
+    ,{ -1060, -1210, -1060, -1710, -1060}
+    ,{ -1060, -1210, -1060, -1470, -1060}
+    ,{ -1060, -1210, -1060, -1710, -1060}
+    ,{  -970,  -970, -1060, -1710, -1060}
+    }
+   }
+  ,{{{   240,  -270,   180,  -270,   240}
+    ,{  -590, -1340,  -650, -1340,  -590}
+    ,{ -1010, -1520, -1070, -1520, -1010}
+    ,{   240,  -270,   180,  -270,   240}
+    ,{ -1010, -1520, -1070, -1520, -1010}
+    }
+   ,{{  -780, -1520,  -840, -1520,  -780}
+    ,{ -1190, -1700, -1250, -1700, -1190}
+    ,{ -1010, -1520, -1070, -1520, -1010}
+    ,{  -780, -1530,  -840, -1530,  -780}
+    ,{ -1010, -1520, -1070, -1520, -1010}
+    }
+   ,{{ -1010, -1520, -1070, -1520, -1010}
+    ,{ -1010, -1520, -1070, -1520, -1010}
+    ,{ -1010, -1520, -1070, -1520, -1010}
+    ,{ -1010, -1520, -1070, -1520, -1010}
+    ,{ -1010, -1520, -1070, -1520, -1010}
+    }
+   ,{{   240,  -270,   180,  -270,   240}
+    ,{  -590, -1340,  -650, -1340,  -590}
+    ,{ -1010, -1520, -1070, -1520, -1010}
+    ,{   240,  -270,   180,  -270,   240}
+    ,{ -1010, -1520, -1070, -1520, -1010}
+    }
+   ,{{ -1010, -1520, -1070, -1520, -1010}
+    ,{ -1010, -1520, -1070, -1520, -1010}
+    ,{ -1010, -1520, -1070, -1520, -1010}
+    ,{ -1010, -1520, -1070, -1520, -1010}
+    ,{ -1010, -1520, -1070, -1520, -1010}
+    }
+   }
+  ,{{{   190, -1180,   190,  -870,   190}
+    ,{  -870, -1250,  -890,  -870,  -890}
+    ,{  -870, -1180, -1060,  -870, -1060}
+    ,{   190, -1420,   190,  -870,   190}
+    ,{  -870, -1180, -1060,  -870, -1060}
+    }
+   ,{{  -870, -1420, -1060,  -870, -1060}
+    ,{ -1050, -1600, -1240, -1050, -1240}
+    ,{  -870, -1420, -1060,  -870, -1060}
+    ,{ -1080, -1440, -1080, -2130, -1080}
+    ,{  -870, -1420, -1060,  -870, -1060}
+    }
+   ,{{  -870, -1180, -1060,  -870, -1060}
+    ,{  -870, -1420, -1060,  -870, -1060}
+    ,{  -870, -1180, -1060,  -870, -1060}
+    ,{  -870, -1420, -1060,  -870, -1060}
+    ,{  -870, -1180, -1060,  -870, -1060}
+    }
+   ,{{   190, -1250,   190,  -870,   190}
+    ,{  -890, -1250,  -890, -1940,  -890}
+    ,{  -870, -1420, -1060,  -870, -1060}
+    ,{   190, -1420,   190, -2120,   190}
+    ,{  -870, -1420, -1060,  -870, -1060}
+    }
+   ,{{  -870, -1180, -1060,  -870, -1060}
+    ,{  -870, -1420, -1060,  -870, -1060}
+    ,{  -870, -1180, -1060,  -870, -1060}
+    ,{  -870, -1420, -1060,  -870, -1060}
+    ,{ -1060, -1420, -1060, -2120, -1060}
+    }
+   }
+  ,{{{   130,  -270,   130,  -270, -1680}
+    ,{  -700, -1340,  -700, -1340, -1680}
+    ,{ -1120, -1520, -1120, -1520, -1850}
+    ,{   130,  -270,   130,  -270, -1850}
+    ,{ -1120, -1520, -1120, -1520, -1850}
+    }
+   ,{{  -890, -1520,  -890, -1520, -1790}
+    ,{ -1300, -1700, -1300, -1700, -1790}
+    ,{ -1120, -1520, -1120, -1520, -1850}
+    ,{  -890, -1530,  -890, -1530, -1870}
+    ,{ -1120, -1520, -1120, -1520, -1850}
+    }
+   ,{{ -1120, -1520, -1120, -1520, -1850}
+    ,{ -1120, -1520, -1120, -1520, -1850}
+    ,{ -1120, -1520, -1120, -1520, -1850}
+    ,{ -1120, -1520, -1120, -1520, -1850}
+    ,{ -1120, -1520, -1120, -1520, -1850}
+    }
+   ,{{   130,  -270,   130,  -270, -1680}
+    ,{  -700, -1340,  -700, -1340, -1680}
+    ,{ -1120, -1520, -1120, -1520, -1850}
+    ,{   130,  -270,   130,  -270, -1850}
+    ,{ -1120, -1520, -1120, -1520, -1850}
+    }
+   ,{{ -1120, -1520, -1120, -1520, -1850}
+    ,{ -1120, -1520, -1120, -1520, -1850}
+    ,{ -1120, -1520, -1120, -1520, -1850}
+    ,{ -1120, -1520, -1120, -1520, -1850}
+    ,{ -1120, -1520, -1120, -1520, -1850}
+    }
+   }
+  }
+ ,{{{{   800,   600,   740,   290,   800}
+    ,{   200,  -140,     0,   200,    50}
+    ,{  -310,  -630,  -510,  -310,  -450}
+    ,{   800,   600,   740,   290,   800}
+    ,{  -310,  -410,  -510,  -310,  -450}
+    }
+   ,{{   200,  -140,     0,   200,    50}
+    ,{   200,  -140,     0,   200,    50}
+    ,{  -310,  -650,  -510,  -310,  -450}
+    ,{  -550,  -990,  -610, -1300,  -550}
+    ,{  -310,  -650,  -510,  -310,  -450}
+    }
+   ,{{  -310,  -630,  -510,  -310,  -450}
+    ,{  -310,  -650,  -510,  -310,  -450}
+    ,{  -310,  -630,  -510,  -310,  -450}
+    ,{  -310,  -650,  -510,  -310,  -450}
+    ,{  -310,  -630,  -510,  -310,  -450}
+    }
+   ,{{   800,   600,   740,   290,   800}
+    ,{  -720, -1160,  -780, -1470,  -720}
+    ,{  -310,  -650,  -510,  -310,  -450}
+    ,{   800,   600,   740,   290,   800}
+    ,{  -310,  -650,  -510,  -310,  -450}
+    }
+   ,{{  -310,  -410,  -510,  -310,  -450}
+    ,{  -310,  -650,  -510,  -310,  -450}
+    ,{  -310,  -630,  -510,  -310,  -450}
+    ,{  -310,  -650,  -510,  -310,  -450}
+    ,{  -410,  -410,  -510,  -960,  -450}
+    }
+   }
+  ,{{{   740,   600,   740,  -640,   740}
+    ,{     0,  -140,     0,  -640,     0}
+    ,{  -510,  -650,  -510,  -910,  -510}
+    ,{   740,   600,   740, -1150,   740}
+    ,{  -410,  -410,  -510,  -910,  -510}
+    }
+   ,{{     0,  -140,     0,  -640,     0}
+    ,{     0,  -140,     0,  -640,     0}
+    ,{  -510,  -650,  -510, -1150,  -510}
+    ,{  -850,  -990,  -850, -1490,  -850}
+    ,{  -510,  -650,  -510, -1150,  -510}
+    }
+   ,{{  -510,  -650,  -510,  -910,  -510}
+    ,{  -510,  -650,  -510, -1150,  -510}
+    ,{  -510,  -650,  -510,  -910,  -510}
+    ,{  -510,  -650,  -510, -1150,  -510}
+    ,{  -510,  -650,  -510,  -910,  -510}
+    }
+   ,{{   740,   600,   740, -1150,   740}
+    ,{ -1020, -1160, -1020, -1660, -1020}
+    ,{  -510,  -650,  -510, -1150,  -510}
+    ,{   740,   600,   740, -1150,   740}
+    ,{  -510,  -650,  -510, -1150,  -510}
+    }
+   ,{{  -410,  -410,  -510,  -910,  -510}
+    ,{  -510,  -650,  -510, -1150,  -510}
+    ,{  -510,  -650,  -510,  -910,  -510}
+    ,{  -510,  -650,  -510, -1150,  -510}
+    ,{  -410,  -410,  -510, -1150,  -510}
+    }
+   }
+  ,{{{   800,   290,   740,   290,   800}
+    ,{    50,  -450,     0,  -450,    50}
+    ,{  -450,  -960,  -510,  -960,  -450}
+    ,{   800,   290,   740,   290,   800}
+    ,{  -450,  -960,  -510,  -960,  -450}
+    }
+   ,{{    50,  -450,     0,  -450,    50}
+    ,{    50,  -450,     0,  -450,    50}
+    ,{  -450,  -960,  -510,  -960,  -450}
+    ,{  -550, -1300,  -610, -1300,  -550}
+    ,{  -450,  -960,  -510,  -960,  -450}
+    }
+   ,{{  -450,  -960,  -510,  -960,  -450}
+    ,{  -450,  -960,  -510,  -960,  -450}
+    ,{  -450,  -960,  -510,  -960,  -450}
+    ,{  -450,  -960,  -510,  -960,  -450}
+    ,{  -450,  -960,  -510,  -960,  -450}
+    }
+   ,{{   800,   290,   740,   290,   800}
+    ,{  -720, -1470,  -780, -1470,  -720}
+    ,{  -450,  -960,  -510,  -960,  -450}
+    ,{   800,   290,   740,   290,   800}
+    ,{  -450,  -960,  -510,  -960,  -450}
+    }
+   ,{{  -450,  -960,  -510,  -960,  -450}
+    ,{  -450,  -960,  -510,  -960,  -450}
+    ,{  -450,  -960,  -510,  -960,  -450}
+    ,{  -450,  -960,  -510,  -960,  -450}
+    ,{  -450,  -960,  -510,  -960,  -450}
+    }
+   }
+  ,{{{   740,  -360,   740,   200,   740}
+    ,{   200,  -360,     0,   200,     0}
+    ,{  -310,  -630,  -510,  -310,  -510}
+    ,{   740,  -870,   740,  -310,   740}
+    ,{  -310,  -630,  -510,  -310,  -510}
+    }
+   ,{{   200,  -360,     0,   200,     0}
+    ,{   200,  -360,     0,   200,     0}
+    ,{  -310,  -870,  -510,  -310,  -510}
+    ,{  -850, -1210,  -850, -1900,  -850}
+    ,{  -310,  -870,  -510,  -310,  -510}
+    }
+   ,{{  -310,  -630,  -510,  -310,  -510}
+    ,{  -310,  -870,  -510,  -310,  -510}
+    ,{  -310,  -630,  -510,  -310,  -510}
+    ,{  -310,  -870,  -510,  -310,  -510}
+    ,{  -310,  -630,  -510,  -310,  -510}
+    }
+   ,{{   740,  -870,   740,  -310,   740}
+    ,{ -1020, -1380, -1020, -2070, -1020}
+    ,{  -310,  -870,  -510,  -310,  -510}
+    ,{   740,  -870,   740, -1560,   740}
+    ,{  -310,  -870,  -510,  -310,  -510}
+    }
+   ,{{  -310,  -630,  -510,  -310,  -510}
+    ,{  -310,  -870,  -510,  -310,  -510}
+    ,{  -310,  -630,  -510,  -310,  -510}
+    ,{  -310,  -870,  -510,  -310,  -510}
+    ,{  -510,  -870,  -510, -1560,  -510}
+    }
+   }
+  ,{{{   690,   290,   690,   290,  -550}
+    ,{   -50,  -450,   -50,  -450,  -550}
+    ,{  -560,  -960,  -560,  -960, -1300}
+    ,{   690,   290,   690,   290, -1300}
+    ,{  -560,  -960,  -560,  -960, -1300}
+    }
+   ,{{   -50,  -450,   -50,  -450,  -550}
+    ,{   -50,  -450,   -50,  -450,  -550}
+    ,{  -560,  -960,  -560,  -960, -1300}
+    ,{  -660, -1300,  -660, -1300, -1640}
+    ,{  -560,  -960,  -560,  -960, -1300}
+    }
+   ,{{  -560,  -960,  -560,  -960, -1300}
+    ,{  -560,  -960,  -560,  -960, -1300}
+    ,{  -560,  -960,  -560,  -960, -1300}
+    ,{  -560,  -960,  -560,  -960, -1300}
+    ,{  -560,  -960,  -560,  -960, -1300}
+    }
+   ,{{   690,   290,   690,   290, -1300}
+    ,{  -830, -1470,  -830, -1470, -1810}
+    ,{  -560,  -960,  -560,  -960, -1300}
+    ,{   690,   290,   690,   290, -1300}
+    ,{  -560,  -960,  -560,  -960, -1300}
+    }
+   ,{{  -560,  -960,  -560,  -960, -1300}
+    ,{  -560,  -960,  -560,  -960, -1300}
+    ,{  -560,  -960,  -560,  -960, -1300}
+    ,{  -560,  -960,  -560,  -960, -1300}
+    ,{  -560,  -960,  -560,  -960, -1300}
+    }
+   }
+  }
+ ,{{{{  1170,   970,  1120,   780,  1170}
+    ,{   780,   440,   580,   780,   640}
+    ,{   480,   170,   280,   480,   340}
+    ,{  1170,   970,  1120,   660,  1170}
+    ,{   480,   170,   280,   480,   340}
+    }
+   ,{{   780,   440,   580,   780,   640}
+    ,{   780,   440,   580,   780,   640}
+    ,{   470,   130,   270,   470,   330}
+    ,{  -510,  -950,  -570, -1260,  -510}
+    ,{   470,   130,   270,   470,   330}
+    }
+   ,{{   490,   170,   290,   490,   340}
+    ,{   490,   140,   290,   490,   340}
+    ,{   480,   170,   280,   480,   340}
+    ,{   490,   140,   290,   490,   340}
+    ,{   480,   170,   280,   480,   340}
+    }
+   ,{{  1170,   970,  1120,   660,  1170}
+    ,{  -330,  -770,  -390, -1080,  -330}
+    ,{   470,   130,   270,   470,   330}
+    ,{  1170,   970,  1120,   660,  1170}
+    ,{   470,   130,   270,   470,   330}
+    }
+   ,{{   490,   170,   290,   490,   340}
+    ,{   490,   140,   290,   490,   340}
+    ,{   480,   170,   280,   480,   340}
+    ,{   490,   140,   290,   490,   340}
+    ,{  -600,  -600,  -690, -1150,  -640}
+    }
+   }
+  ,{{{  1120,   970,  1120,   -60,  1120}
+    ,{   580,   440,   580,   -60,   580}
+    ,{   280,   140,   280,  -120,   280}
+    ,{  1120,   970,  1120,  -350,  1120}
+    ,{   280,   140,   280,  -120,   280}
+    }
+   ,{{   580,   440,   580,   -60,   580}
+    ,{   580,   440,   580,   -60,   580}
+    ,{   270,   130,   270,  -370,   270}
+    ,{  -800,  -950,  -800, -1450,  -800}
+    ,{   270,   130,   270,  -370,   270}
+    }
+   ,{{   290,   140,   290,  -120,   290}
+    ,{   290,   140,   290,  -350,   290}
+    ,{   280,   140,   280,  -120,   280}
+    ,{   290,   140,   290,  -350,   290}
+    ,{   280,   140,   280,  -120,   280}
+    }
+   ,{{  1120,   970,  1120,  -370,  1120}
+    ,{  -620,  -770,  -620, -1270,  -620}
+    ,{   270,   130,   270,  -370,   270}
+    ,{  1120,   970,  1120,  -780,  1120}
+    ,{   270,   130,   270,  -370,   270}
+    }
+   ,{{   290,   140,   290,  -120,   290}
+    ,{   290,   140,   290,  -350,   290}
+    ,{   280,   140,   280,  -120,   280}
+    ,{   290,   140,   290,  -350,   290}
+    ,{  -600,  -600,  -690, -1340,  -690}
+    }
+   }
+  ,{{{  1170,   660,  1110,   660,  1170}
+    ,{   640,   130,   580,   130,   640}
+    ,{   340,  -170,   280,  -170,   340}
+    ,{  1170,   660,  1110,   660,  1170}
+    ,{   340,  -170,   280,  -170,   340}
+    }
+   ,{{   640,   130,   580,   130,   640}
+    ,{   640,   130,   580,   130,   640}
+    ,{   330,  -180,   270,  -180,   330}
+    ,{  -510, -1260,  -570, -1260,  -510}
+    ,{   330,  -180,   270,  -180,   330}
+    }
+   ,{{   340,  -160,   280,  -160,   340}
+    ,{   340,  -160,   280,  -160,   340}
+    ,{   340,  -170,   280,  -170,   340}
+    ,{   340,  -160,   280,  -160,   340}
+    ,{   340,  -170,   280,  -170,   340}
+    }
+   ,{{  1170,   660,  1110,   660,  1170}
+    ,{  -330, -1080,  -390, -1080,  -330}
+    ,{   330,  -180,   270,  -180,   330}
+    ,{  1170,   660,  1110,   660,  1170}
+    ,{   330,  -180,   270,  -180,   330}
+    }
+   ,{{   340,  -160,   280,  -160,   340}
+    ,{   340,  -160,   280,  -160,   340}
+    ,{   340,  -170,   280,  -170,   340}
+    ,{   340,  -160,   280,  -160,   340}
+    ,{  -640, -1150,  -700, -1150,  -640}
+    }
+   }
+  ,{{{  1120,   220,  1120,   780,  1120}
+    ,{   780,   220,   580,   780,   580}
+    ,{   480,   170,   280,   480,   280}
+    ,{  1120,   -70,  1120,   490,  1120}
+    ,{   480,   170,   280,   480,   280}
+    }
+   ,{{   780,   220,   580,   780,   580}
+    ,{   780,   220,   580,   780,   580}
+    ,{   470,   -80,   270,   470,   270}
+    ,{  -800, -1160,  -800, -1860,  -800}
+    ,{   470,   -80,   270,   470,   270}
+    }
+   ,{{   490,   170,   290,   490,   290}
+    ,{   490,   -70,   290,   490,   290}
+    ,{   480,   170,   280,   480,   280}
+    ,{   490,   -70,   290,   490,   290}
+    ,{   480,   170,   280,   480,   280}
+    }
+   ,{{  1120,   -80,  1120,   470,  1120}
+    ,{  -620,  -980,  -620, -1680,  -620}
+    ,{   470,   -80,   270,   470,   270}
+    ,{  1120,  -490,  1120, -1190,  1120}
+    ,{   470,   -80,   270,   470,   270}
+    }
+   ,{{   490,   170,   290,   490,   290}
+    ,{   490,   -70,   290,   490,   290}
+    ,{   480,   170,   280,   480,   280}
+    ,{   490,   -70,   290,   490,   290}
+    ,{  -690, -1050,  -690, -1750,  -690}
+    }
+   }
+  ,{{{  1060,   660,  1060,   660,    40}
+    ,{   530,   130,   530,   130,    40}
+    ,{   230,  -170,   230,  -170,  -500}
+    ,{  1060,   660,  1060,   660,  -500}
+    ,{   230,  -170,   230,  -170,  -500}
+    }
+   ,{{   530,   130,   530,   130,    40}
+    ,{   530,   130,   530,   130,    40}
+    ,{   220,  -180,   220,  -180,  -510}
+    ,{  -620, -1260,  -620, -1260, -1590}
+    ,{   220,  -180,   220,  -180,  -510}
+    }
+   ,{{   230,  -160,   230,  -160,  -500}
+    ,{   230,  -160,   230,  -160,  -500}
+    ,{   230,  -170,   230,  -170,  -500}
+    ,{   230,  -160,   230,  -160,  -500}
+    ,{   230,  -170,   230,  -170,  -500}
+    }
+   ,{{  1060,   660,  1060,   660,  -510}
+    ,{  -440, -1080,  -440, -1080, -1410}
+    ,{   220,  -180,   220,  -180,  -510}
+    ,{  1060,   660,  1060,   660,  -920}
+    ,{   220,  -180,   220,  -180,  -510}
+    }
+   ,{{   230,  -160,   230,  -160,  -500}
+    ,{   230,  -160,   230,  -160,  -500}
+    ,{   230,  -170,   230,  -170,  -500}
+    ,{   230,  -160,   230,  -160,  -500}
+    ,{  -750, -1150,  -750, -1150, -1480}
+    }
+   }
+  }
+ ,{{{{  1350,  1160,  1300,   850,  1350}
+    ,{   850,   500,   650,   850,   700}
+    ,{   720,   400,   520,   720,   570}
+    ,{  1350,  1160,  1300,   850,  1350}
+    ,{   590,   270,   390,   590,   440}
+    }
+   ,{{   850,   500,   650,   850,   700}
+    ,{   850,   500,   650,   850,   700}
+    ,{   570,   220,   370,   570,   420}
+    ,{  -460,  -900,  -520, -1210,  -460}
+    ,{   570,   220,   370,   570,   420}
+    }
+   ,{{   720,   400,   520,   720,   570}
+    ,{   720,   370,   520,   720,   570}
+    ,{   720,   400,   520,   720,   570}
+    ,{   720,   370,   520,   720,   570}
+    ,{   590,   270,   390,   590,   440}
+    }
+   ,{{  1350,  1160,  1300,   850,  1350}
+    ,{  -760, -1200,  -820, -1510,  -760}
+    ,{   570,   220,   370,   570,   420}
+    ,{  1350,  1160,  1300,   850,  1350}
+    ,{   570,   220,   370,   570,   420}
+    }
+   ,{{   720,   370,   520,   720,   570}
+    ,{   720,   370,   520,   720,   570}
+    ,{   280,   -40,    80,   280,   130}
+    ,{   720,   370,   520,   720,   570}
+    ,{  -320,  -320,  -420,  -870,  -360}
+    }
+   }
+  ,{{{  1300,  1160,  1300,   120,  1300}
+    ,{   650,   500,   650,     0,   650}
+    ,{   520,   370,   520,   120,   520}
+    ,{  1300,  1160,  1300,  -120,  1300}
+    ,{   390,   240,   390,   -10,   390}
+    }
+   ,{{   650,   500,   650,     0,   650}
+    ,{   650,   500,   650,     0,   650}
+    ,{   370,   220,   370,  -270,   370}
+    ,{  -750,  -900,  -750, -1400,  -750}
+    ,{   370,   220,   370,  -270,   370}
+    }
+   ,{{   520,   370,   520,   120,   520}
+    ,{   520,   370,   520,  -120,   520}
+    ,{   520,   370,   520,   120,   520}
+    ,{   520,   370,   520,  -120,   520}
+    ,{   390,   240,   390,   -10,   390}
+    }
+   ,{{  1300,  1160,  1300,  -270,  1300}
+    ,{ -1050, -1200, -1050, -1700, -1050}
+    ,{   370,   220,   370,  -270,   370}
+    ,{  1300,  1160,  1300,  -590,  1300}
+    ,{   370,   220,   370,  -270,   370}
+    }
+   ,{{   520,   370,   520,  -120,   520}
+    ,{   520,   370,   520,  -120,   520}
+    ,{    80,   -60,    80,  -320,    80}
+    ,{   520,   370,   520,  -120,   520}
+    ,{  -320,  -320,  -420, -1060,  -420}
+    }
+   }
+  ,{{{  1350,   850,  1290,   850,  1350}
+    ,{   700,   190,   640,   190,   700}
+    ,{   570,    60,   510,    60,   570}
+    ,{  1350,   850,  1290,   850,  1350}
+    ,{   440,   -60,   380,   -60,   440}
+    }
+   ,{{   700,   190,   640,   190,   700}
+    ,{   700,   190,   640,   190,   700}
+    ,{   420,   -80,   360,   -80,   420}
+    ,{  -460, -1210,  -520, -1210,  -460}
+    ,{   420,   -80,   360,   -80,   420}
+    }
+   ,{{   570,    60,   510,    60,   570}
+    ,{   570,    60,   510,    60,   570}
+    ,{   570,    60,   510,    60,   570}
+    ,{   570,    60,   510,    60,   570}
+    ,{   440,   -60,   380,   -60,   440}
+    }
+   ,{{  1350,   850,  1290,   850,  1350}
+    ,{  -760, -1510,  -820, -1510,  -760}
+    ,{   420,   -80,   360,   -80,   420}
+    ,{  1350,   850,  1290,   850,  1350}
+    ,{   420,   -80,   360,   -80,   420}
+    }
+   ,{{   570,    60,   510,    60,   570}
+    ,{   570,    60,   510,    60,   570}
+    ,{   130,  -370,    70,  -370,   130}
+    ,{   570,    60,   510,    60,   570}
+    ,{  -360,  -870,  -420,  -870,  -360}
+    }
+   }
+  ,{{{  1300,   400,  1300,   850,  1300}
+    ,{   850,   290,   650,   850,   650}
+    ,{   720,   400,   520,   720,   520}
+    ,{  1300,   160,  1300,   720,  1300}
+    ,{   590,   270,   390,   590,   390}
+    }
+   ,{{   850,   290,   650,   850,   650}
+    ,{   850,   290,   650,   850,   650}
+    ,{   570,    10,   370,   570,   370}
+    ,{  -750, -1110,  -750, -1810,  -750}
+    ,{   570,    10,   370,   570,   370}
+    }
+   ,{{   720,   400,   520,   720,   520}
+    ,{   720,   160,   520,   720,   520}
+    ,{   720,   400,   520,   720,   520}
+    ,{   720,   160,   520,   720,   520}
+    ,{   590,   270,   390,   590,   390}
+    }
+   ,{{  1300,    10,  1300,   570,  1300}
+    ,{ -1050, -1410, -1050, -2110, -1050}
+    ,{   570,    10,   370,   570,   370}
+    ,{  1300,  -310,  1300, -1000,  1300}
+    ,{   570,    10,   370,   570,   370}
+    }
+   ,{{   720,   160,   520,   720,   520}
+    ,{   720,   160,   520,   720,   520}
+    ,{   280,   -40,    80,   280,    80}
+    ,{   720,   160,   520,   720,   520}
+    ,{  -420,  -780,  -420, -1470,  -420}
+    }
+   }
+  ,{{{  1250,   850,  1250,   850,   100}
+    ,{   590,   190,   590,   190,   100}
+    ,{   460,    60,   460,    60,  -270}
+    ,{  1250,   850,  1250,   850,  -270}
+    ,{   330,   -60,   330,   -60,  -400}
+    }
+   ,{{   590,   190,   590,   190,   100}
+    ,{   590,   190,   590,   190,   100}
+    ,{   310,   -80,   310,   -80,  -420}
+    ,{  -570, -1210,  -570, -1210, -1540}
+    ,{   310,   -80,   310,   -80,  -420}
+    }
+   ,{{   460,    60,   460,    60,  -270}
+    ,{   460,    60,   460,    60,  -270}
+    ,{   460,    60,   460,    60,  -270}
+    ,{   460,    60,   460,    60,  -270}
+    ,{   330,   -60,   330,   -60,  -400}
+    }
+   ,{{  1250,   850,  1250,   850,  -420}
+    ,{  -870, -1510,  -870, -1510, -1840}
+    ,{   310,   -80,   310,   -80,  -420}
+    ,{  1250,   850,  1250,   850,  -740}
+    ,{   310,   -80,   310,   -80,  -420}
+    }
+   ,{{   460,    60,   460,    60,  -270}
+    ,{   460,    60,   460,    60,  -270}
+    ,{    20,  -370,    20,  -370,  -710}
+    ,{   460,    60,   460,    60,  -270}
+    ,{  -470,  -870,  -470,  -870, -1210}
+    }
+   }
+  }
+ ,{{{{  1350,  1160,  1300,   850,  1350}
+    ,{   850,   500,   650,   850,   700}
+    ,{   720,   400,   520,   720,   570}
+    ,{  1350,  1160,  1300,   850,  1350}
+    ,{   590,   270,   390,   590,   440}
+    }
+   ,{{   850,   500,   650,   850,   700}
+    ,{   850,   500,   650,   850,   700}
+    ,{   570,   220,   370,   570,   420}
+    ,{  -230,  -670,  -290,  -980,  -230}
+    ,{   570,   220,   370,   570,   420}
+    }
+   ,{{   720,   400,   520,   720,   570}
+    ,{   720,   370,   520,   720,   570}
+    ,{   720,   400,   520,   720,   570}
+    ,{   720,   370,   520,   720,   570}
+    ,{   590,   270,   390,   590,   440}
+    }
+   ,{{  1350,  1160,  1300,   850,  1350}
+    ,{  -330,  -770,  -390, -1080,  -330}
+    ,{   570,   220,   370,   570,   420}
+    ,{  1350,  1160,  1300,   850,  1350}
+    ,{   570,   220,   370,   570,   420}
+    }
+   ,{{   720,   370,   520,   720,   570}
+    ,{   720,   370,   520,   720,   570}
+    ,{   480,   170,   280,   480,   340}
+    ,{   720,   370,   520,   720,   570}
+    ,{   -90,  -320,   -90,  -810,  -360}
+    }
+   }
+  ,{{{  1300,  1160,  1300,   540,  1300}
+    ,{   650,   500,   650,    10,   650}
+    ,{   540,   370,   520,   540,   520}
+    ,{  1300,  1160,  1300,  -120,  1300}
+    ,{   390,   240,   390,   -10,   390}
+    }
+   ,{{   650,   500,   650,     0,   650}
+    ,{   650,   500,   650,     0,   650}
+    ,{   370,   220,   370,  -100,   370}
+    ,{  -530,  -670,  -530, -1170,  -530}
+    ,{   370,   220,   370,  -270,   370}
+    }
+   ,{{   540,   370,   520,   540,   520}
+    ,{   520,   370,   520,    10,   520}
+    ,{   540,   370,   520,   540,   520}
+    ,{   520,   370,   520,  -120,   520}
+    ,{   390,   240,   390,   -10,   390}
+    }
+   ,{{  1300,  1160,  1300,  -270,  1300}
+    ,{  -620,  -770,  -620, -1270,  -620}
+    ,{   370,   220,   370,  -270,   370}
+    ,{  1300,  1160,  1300,  -590,  1300}
+    ,{   370,   220,   370,  -270,   370}
+    }
+   ,{{   520,   370,   520,  -120,   520}
+    ,{   520,   370,   520,  -120,   520}
+    ,{   280,   140,   280,  -120,   280}
+    ,{   520,   370,   520,  -120,   520}
+    ,{   -90,  -320,   -90,  -810,  -420}
+    }
+   }
+  ,{{{  1350,   850,  1290,   850,  1350}
+    ,{   700,   190,   640,   190,   700}
+    ,{   570,    60,   510,    60,   570}
+    ,{  1350,   850,  1290,   850,  1350}
+    ,{   440,   -60,   380,   -60,   440}
+    }
+   ,{{   700,   190,   640,   190,   700}
+    ,{   700,   190,   640,   190,   700}
+    ,{   420,   -80,   360,   -80,   420}
+    ,{  -230,  -980,  -290,  -980,  -230}
+    ,{   420,   -80,   360,   -80,   420}
+    }
+   ,{{   570,    60,   510,    60,   570}
+    ,{   570,    60,   510,    60,   570}
+    ,{   570,    60,   510,    60,   570}
+    ,{   570,    60,   510,    60,   570}
+    ,{   440,   -60,   380,   -60,   440}
+    }
+   ,{{  1350,   850,  1290,   850,  1350}
+    ,{  -330, -1070,  -390, -1080,  -330}
+    ,{   420,   -80,   360,   -80,   420}
+    ,{  1350,   850,  1290,   850,  1350}
+    ,{   420,   -80,   360,   -80,   420}
+    }
+   ,{{   570,    60,   510,    60,   570}
+    ,{   570,    60,   510,    60,   570}
+    ,{   340,  -170,   280,  -170,   340}
+    ,{   570,    60,   510,    60,   570}
+    ,{  -360,  -830,  -420,  -870,  -360}
+    }
+   }
+  ,{{{  1300,   400,  1300,   850,  1300}
+    ,{   850,   290,   650,   850,   650}
+    ,{   720,   400,   520,   720,   520}
+    ,{  1300,   160,  1300,   720,  1300}
+    ,{   590,   270,   390,   590,   390}
+    }
+   ,{{   850,   290,   650,   850,   650}
+    ,{   850,   290,   650,   850,   650}
+    ,{   570,    10,   370,   570,   370}
+    ,{  -530,  -890,  -530, -1580,  -530}
+    ,{   570,    10,   370,   570,   370}
+    }
+   ,{{   720,   400,   520,   720,   520}
+    ,{   720,   160,   520,   720,   520}
+    ,{   720,   400,   520,   720,   520}
+    ,{   720,   160,   520,   720,   520}
+    ,{   590,   270,   390,   590,   390}
+    }
+   ,{{  1300,    10,  1300,   570,  1300}
+    ,{  -620,  -980,  -620, -1080,  -620}
+    ,{   570,    10,   370,   570,   370}
+    ,{  1300,  -310,  1300, -1000,  1300}
+    ,{   570,    10,   370,   570,   370}
+    }
+   ,{{   720,   170,   520,   720,   520}
+    ,{   720,   160,   520,   720,   520}
+    ,{   480,   170,   280,   480,   280}
+    ,{   720,   160,   520,   720,   520}
+    ,{  -420,  -780,  -420, -1470,  -420}
+    }
+   }
+  ,{{{  1250,   850,  1250,   850,   100}
+    ,{   590,   190,   590,   190,   100}
+    ,{   460,    60,   460,    60,  -270}
+    ,{  1250,   850,  1250,   850,  -230}
+    ,{   330,   -60,   330,   -60,  -400}
+    }
+   ,{{   590,   190,   590,   190,   100}
+    ,{   590,   190,   590,   190,   100}
+    ,{   310,   -80,   310,   -80,  -420}
+    ,{  -340,  -980,  -340,  -980, -1320}
+    ,{   310,   -80,   310,   -80,  -420}
+    }
+   ,{{   460,    60,   460,    60,  -270}
+    ,{   460,    60,   460,    60,  -270}
+    ,{   460,    60,   460,    60,  -270}
+    ,{   460,    60,   460,    60,  -270}
+    ,{   330,   -60,   330,   -60,  -400}
+    }
+   ,{{  1250,   850,  1250,   850,  -230}
+    ,{  -440, -1080,  -440, -1080, -1300}
+    ,{   310,   -80,   310,   -80,  -420}
+    ,{  1250,   850,  1250,   850,  -230}
+    ,{   310,   -80,   310,   -80,  -420}
+    }
+   ,{{   460,    60,   460,    60,  -270}
+    ,{   460,    60,   460,    60,  -270}
+    ,{   230,  -170,   230,  -170,  -500}
+    ,{   460,    60,   460,    60,  -270}
+    ,{  -470,  -870,  -470,  -870, -1210}
+    }
+   }
+  }
+ }
+,{{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   540,   -90,   540,   180,   -90}
+    ,{   540,  -100,   540,   180,   -90}
+    ,{   180,   -90,  -460,   180,  -460}
+    ,{    30,  -150,  -260,    30,  -210}
+    ,{  -200,  -200,  -400,  -230,  -570}
+    }
+   ,{{   180,  -350,  -660,   180,  -660}
+    ,{   180,  -580,  -660,   180,  -660}
+    ,{  -430,  -600,  -970,  -430,  -830}
+    ,{  -350,  -350,  -870,  -960,  -870}
+    ,{  -430,  -600,  -970,  -430,  -970}
+    }
+   ,{{    30,  -150,  -510,    30,   -90}
+    ,{   -90,  -220,  -510,  -390,   -90}
+    ,{    20,  -600,  -520,    20,  -520}
+    ,{    30,  -150,  -510,    30,  -510}
+    ,{  -200,  -200,  -570,  -650,  -570}
+    }
+   ,{{   540,  -100,   540,  -400,  -210}
+    ,{   540,  -100,   540, -1240,  -810}
+    ,{  -430,  -600,  -970,  -430,  -970}
+    ,{  -200,  -200,  -260,  -400,  -210}
+    ,{  -430,  -600,  -970,  -430,  -970}
+    }
+   ,{{   180,   -90,  -400,   180,  -460}
+    ,{    30,  -150,  -510,    30,  -510}
+    ,{   180,   -90,  -460,   180,  -460}
+    ,{    30,  -150,  -510,    30,  -510}
+    ,{  -230, -1390,  -400,  -230, -1300}
+    }
+   }
+  ,{{{    10,   -90,    10,  -500,  -320}
+    ,{    10,  -150,    10,  -860,  -510}
+    ,{   -90,   -90,  -460,  -500,  -460}
+    ,{  -150,  -150,  -320,  -860,  -320}
+    ,{  -200,  -200,  -400, -1300,  -570}
+    }
+   ,{{  -580,  -580,  -660, -1070,  -660}
+    ,{  -580,  -580,  -660, -1340,  -660}
+    ,{  -600,  -600,  -970, -1070,  -970}
+    ,{  -870, -1600, -1110, -1880,  -870}
+    ,{  -600,  -600,  -970, -1320,  -970}
+    }
+   ,{{  -150,  -150,  -510,  -500,  -510}
+    ,{  -220,  -220, -1150,  -860,  -510}
+    ,{  -500, -1070,  -750,  -500,  -520}
+    ,{  -150,  -150,  -510,  -860,  -510}
+    ,{  -200,  -200,  -570, -1750,  -570}
+    }
+   ,{{    10,  -200,    10, -1080,  -320}
+    ,{    10,  -970,    10, -2450, -1160}
+    ,{  -600,  -600,  -970, -1320,  -970}
+    ,{  -200,  -200,  -320, -1080,  -320}
+    ,{  -600,  -600,  -970, -1320,  -970}
+    }
+   ,{{   -90,   -90,  -400,  -570,  -460}
+    ,{  -150,  -150,  -510,  -860,  -510}
+    ,{   -90,   -90,  -460,  -570,  -460}
+    ,{  -150,  -150,  -510,  -860,  -510}
+    ,{  -400, -1490,  -400, -1300, -1300}
+    }
+   }
+  ,{{{   540,  -100,   540,  -400,  -210}
+    ,{   540,  -100,   540,  -600, -1130}
+    ,{  -540,  -540,  -760,  -540, -1070}
+    ,{  -210,  -350,  -620,  -400,  -210}
+    ,{  -650,  -650,  -870,  -650, -1180}
+    }
+   ,{{  -350,  -350,  -940,  -740, -1250}
+    ,{  -740,  -740,  -960,  -740, -1270}
+    ,{ -1050, -1050, -1270, -1050, -1580}
+    ,{  -350,  -350,  -940,  -960, -1250}
+    ,{ -1050, -1050, -1270, -1050, -1580}
+    }
+   ,{{  -600,  -600,  -820,  -600, -1130}
+    ,{  -600,  -600,  -820,  -600, -1130}
+    ,{  -600,  -600,  -820,  -600, -1130}
+    ,{  -600,  -600,  -820,  -600, -1130}
+    ,{  -650,  -650,  -870,  -650, -1180}
+    }
+   ,{{   540,  -100,   540,  -400,  -210}
+    ,{   540,  -100,   540, -1240, -1530}
+    ,{ -1050, -1050, -1270, -1050, -1580}
+    ,{  -210,  -440,  -620,  -400,  -210}
+    ,{ -1050, -1050, -1270, -1050, -1580}
+    }
+   ,{{  -540,  -540,  -760,  -540, -1070}
+    ,{  -600,  -600,  -820,  -600, -1130}
+    ,{  -540,  -540,  -760,  -540, -1070}
+    ,{  -600,  -600,  -820,  -600, -1130}
+    ,{ -1390, -1390, -1610, -1390, -1920}
+    }
+   }
+  ,{{{   180,  -630,  -320,   180,  -320}
+    ,{   180, -1340,  -510,   180,  -510}
+    ,{   180,  -630,  -460,   180,  -460}
+    ,{    30, -1340,  -320,    30,  -320}
+    ,{  -230, -1150,  -570,  -230,  -570}
+    }
+   ,{{   180, -1790,  -660,   180,  -660}
+    ,{   180, -2010,  -660,   180,  -660}
+    ,{  -430, -1790,  -970,  -430,  -970}
+    ,{  -870, -3070,  -870, -1370,  -870}
+    ,{  -430, -1790,  -970,  -430,  -970}
+    }
+   ,{{    30,  -630,  -510,    30,  -510}
+    ,{  -390, -1650,  -510,  -390,  -510}
+    ,{    20,  -630,  -520,    20,  -520}
+    ,{    30, -1340,  -510,    30,  -510}
+    ,{  -570, -1150,  -570,  -880,  -570}
+    }
+   ,{{  -320, -1790,  -320,  -430,  -320}
+    ,{ -1160, -1980, -1160, -1870, -1160}
+    ,{  -430, -1790,  -970,  -430,  -970}
+    ,{  -320, -2390,  -320, -2280,  -320}
+    ,{  -430, -1790,  -970,  -430,  -970}
+    }
+   ,{{   180, -1040,  -460,   180,  -460}
+    ,{    30, -1340,  -510,    30,  -510}
+    ,{   180, -1040,  -460,   180,  -460}
+    ,{    30, -1340,  -510,    30,  -510}
+    ,{  -230, -1520, -1300,  -230, -1300}
+    }
+   }
+  ,{{{   -90,  -400,  -260,  -400,   -90}
+    ,{   -90,  -600,  -820,  -600,   -90}
+    ,{  -540,  -540,  -550,  -540,  -830}
+    ,{  -260,  -400,  -260,  -400,  -800}
+    ,{  -650,  -650,  -870,  -650,  -860}
+    }
+   ,{{  -740,  -740,  -940,  -740,  -830}
+    ,{  -740,  -740,  -960,  -740, -1240}
+    ,{  -830, -1050, -1270, -1050,  -830}
+    ,{  -940,  -960,  -940,  -960, -1360}
+    ,{ -1050, -1050, -1270, -1050, -1260}
+    }
+   ,{{   -90,  -600,  -820,  -600,   -90}
+    ,{   -90,  -600,  -820,  -600,   -90}
+    ,{  -600,  -600,  -820,  -600, -1710}
+    ,{  -600,  -600,  -820,  -600,  -800}
+    ,{  -650,  -650,  -870,  -650,  -860}
+    }
+   ,{{  -260,  -400,  -260,  -400,  -810}
+    ,{  -810, -1240, -1220, -1240,  -810}
+    ,{ -1050, -1050, -1270, -1050, -1260}
+    ,{  -260,  -400,  -260,  -400, -1550}
+    ,{ -1050, -1050, -1270, -1050, -1260}
+    }
+   ,{{  -540,  -540,  -550,  -540,  -800}
+    ,{  -600,  -600,  -820,  -600,  -800}
+    ,{  -540,  -540,  -550,  -540, -1460}
+    ,{  -600,  -600,  -820,  -600,  -800}
+    ,{ -1390, -1390, -1610, -1390, -2350}
+    }
+   }
+  }
+ ,{{{{    50,    50,  -320,    50,  -320}
+    ,{    50,  -130,  -490,    50,  -490}
+    ,{  -400,  -580,  -940,  -400,  -940}
+    ,{    50,    50,  -320,  -320,  -320}
+    ,{  -400,  -540,  -940,  -400,  -940}
+    }
+   ,{{    50,  -130,  -490,    50,  -490}
+    ,{    50,  -130,  -490,    50,  -490}
+    ,{  -400,  -580,  -940,  -400,  -940}
+    ,{ -1320, -1320, -1680, -1770, -1680}
+    ,{  -400,  -580,  -940,  -400,  -940}
+    }
+   ,{{  -320,  -490,  -860,  -320,  -860}
+    ,{  -320,  -490,  -860,  -320,  -860}
+    ,{  -620,  -800, -1160,  -620, -1160}
+    ,{  -320,  -490,  -860,  -320,  -860}
+    ,{  -620,  -800, -1160,  -620, -1160}
+    }
+   ,{{    50,    50,  -320,  -400,  -320}
+    ,{  -840,  -840, -1210, -1290, -1210}
+    ,{  -400,  -580,  -940,  -400,  -940}
+    ,{    50,    50,  -320,  -400,  -320}
+    ,{  -400,  -580,  -940,  -400,  -940}
+    }
+   ,{{  -320,  -490,  -860,  -320,  -860}
+    ,{  -320,  -490,  -860,  -320,  -860}
+    ,{  -930, -1110, -1470,  -930, -1470}
+    ,{  -320,  -490,  -860,  -320,  -860}
+    ,{  -540,  -540, -1150, -1230, -1150}
+    }
+   }
+  ,{{{    50,    50,  -320,  -840,  -320}
+    ,{  -130,  -130,  -490,  -840,  -490}
+    ,{  -580,  -580,  -940, -1270,  -940}
+    ,{    50,    50,  -320, -1210,  -320}
+    ,{  -540,  -540,  -940, -1270,  -940}
+    }
+   ,{{  -130,  -130,  -490,  -840,  -490}
+    ,{  -130,  -130,  -490,  -840,  -490}
+    ,{  -580,  -580,  -940, -1290,  -940}
+    ,{ -1320, -1320, -1680, -2030, -1680}
+    ,{  -580,  -580,  -940, -1290,  -940}
+    }
+   ,{{  -490,  -490,  -860, -1210,  -860}
+    ,{  -490,  -490,  -860, -1210,  -860}
+    ,{  -800,  -800, -1160, -1270, -1160}
+    ,{  -490,  -490,  -860, -1210,  -860}
+    ,{  -800,  -800, -1160, -1270, -1160}
+    }
+   ,{{    50,    50,  -320, -1290,  -320}
+    ,{  -840,  -840, -1210, -1560, -1210}
+    ,{  -580,  -580,  -940, -1290,  -940}
+    ,{    50,    50,  -320, -1920,  -320}
+    ,{  -580,  -580,  -940, -1290,  -940}
+    }
+   ,{{  -490,  -490,  -860, -1210,  -860}
+    ,{  -490,  -490,  -860, -1210,  -860}
+    ,{ -1110, -1110, -1470, -1580, -1470}
+    ,{  -490,  -490,  -860, -1210,  -860}
+    ,{  -540,  -540, -1150, -1500, -1150}
+    }
+   }
+  ,{{{  -400,  -400,  -620,  -400,  -930}
+    ,{  -580,  -580,  -800,  -580, -1110}
+    ,{ -1030, -1030, -1250, -1030, -1560}
+    ,{  -400,  -400,  -620,  -400,  -930}
+    ,{ -1030, -1030, -1250, -1030, -1560}
+    }
+   ,{{  -580,  -580,  -800,  -580, -1110}
+    ,{  -580,  -580,  -800,  -580, -1110}
+    ,{ -1030, -1030, -1250, -1030, -1560}
+    ,{ -1750, -1770, -1750, -1770, -2060}
+    ,{ -1030, -1030, -1250, -1030, -1560}
+    }
+   ,{{  -940,  -940, -1160,  -940, -1470}
+    ,{  -940,  -940, -1160,  -940, -1470}
+    ,{ -1250, -1250, -1470, -1250, -1780}
+    ,{  -940,  -940, -1160,  -940, -1470}
+    ,{ -1250, -1250, -1470, -1250, -1780}
+    }
+   ,{{  -400,  -400,  -620,  -400,  -930}
+    ,{ -1270, -1290, -1270, -1290, -1580}
+    ,{ -1030, -1030, -1250, -1030, -1560}
+    ,{  -400,  -400,  -620,  -400,  -930}
+    ,{ -1030, -1030, -1250, -1030, -1560}
+    }
+   ,{{  -940,  -940, -1160,  -940, -1470}
+    ,{  -940,  -940, -1160,  -940, -1470}
+    ,{ -1560, -1560, -1780, -1560, -2090}
+    ,{  -940,  -940, -1160,  -940, -1470}
+    ,{ -1230, -1230, -1450, -1230, -1760}
+    }
+   }
+  ,{{{    50, -1320,  -320,    50,  -320}
+    ,{    50, -1320,  -490,    50,  -490}
+    ,{  -400, -1750,  -940,  -400,  -940}
+    ,{  -320, -1680,  -320,  -320,  -320}
+    ,{  -400, -1750,  -940,  -400,  -940}
+    }
+   ,{{    50, -1320,  -490,    50,  -490}
+    ,{    50, -1320,  -490,    50,  -490}
+    ,{  -400, -1770,  -940,  -400,  -940}
+    ,{ -1680, -2510, -1680, -2390, -1680}
+    ,{  -400, -1770,  -940,  -400,  -940}
+    }
+   ,{{  -320, -1680,  -860,  -320,  -860}
+    ,{  -320, -1680,  -860,  -320,  -860}
+    ,{  -620, -1750, -1160,  -620, -1160}
+    ,{  -320, -1680,  -860,  -320,  -860}
+    ,{  -620, -1750, -1160,  -620, -1160}
+    }
+   ,{{  -320, -1770,  -320,  -400,  -320}
+    ,{ -1210, -2030, -1210, -1920, -1210}
+    ,{  -400, -1770,  -940,  -400,  -940}
+    ,{  -320, -2390,  -320, -2280,  -320}
+    ,{  -400, -1770,  -940,  -400,  -940}
+    }
+   ,{{  -320, -1680,  -860,  -320,  -860}
+    ,{  -320, -1680,  -860,  -320,  -860}
+    ,{  -930, -2060, -1470,  -930, -1470}
+    ,{  -320, -1680,  -860,  -320,  -860}
+    ,{ -1150, -1970, -1150, -1860, -1150}
+    }
+   }
+  ,{{{  -400,  -400,  -620,  -400,  -540}
+    ,{  -540,  -580,  -800,  -580,  -540}
+    ,{ -1030, -1030, -1250, -1030, -1230}
+    ,{  -400,  -400,  -620,  -400, -1150}
+    ,{ -1030, -1030, -1250, -1030, -1230}
+    }
+   ,{{  -540,  -580,  -800,  -580,  -540}
+    ,{  -540,  -580,  -800,  -580,  -540}
+    ,{ -1030, -1030, -1250, -1030, -1230}
+    ,{ -1750, -1770, -1750, -1770, -1970}
+    ,{ -1030, -1030, -1250, -1030, -1230}
+    }
+   ,{{  -940,  -940, -1160,  -940, -1150}
+    ,{  -940,  -940, -1160,  -940, -1150}
+    ,{ -1250, -1250, -1470, -1250, -1450}
+    ,{  -940,  -940, -1160,  -940, -1150}
+    ,{ -1250, -1250, -1470, -1250, -1450}
+    }
+   ,{{  -400,  -400,  -620,  -400, -1230}
+    ,{ -1270, -1290, -1270, -1290, -1500}
+    ,{ -1030, -1030, -1250, -1030, -1230}
+    ,{  -400,  -400,  -620,  -400, -1860}
+    ,{ -1030, -1030, -1250, -1030, -1230}
+    }
+   ,{{  -940,  -940, -1160,  -940, -1150}
+    ,{  -940,  -940, -1160,  -940, -1150}
+    ,{ -1560, -1560, -1780, -1560, -1760}
+    ,{  -940,  -940, -1160,  -940, -1150}
+    ,{ -1230, -1230, -1450, -1230, -1440}
+    }
+   }
+  }
+ ,{{{{   210,   210,  -160,  -240,  -160}
+    ,{  -870,  -870, -1230,  -870, -1230}
+    ,{  -870, -1040, -1410,  -870, -1410}
+    ,{   210,   210,  -160,  -240,  -160}
+    ,{  -800,  -800, -1410,  -870, -1410}
+    }
+   ,{{  -870, -1040, -1410,  -870, -1410}
+    ,{ -1050, -1220, -1590, -1050, -1590}
+    ,{  -870, -1040, -1410,  -870, -1410}
+    ,{ -1060, -1060, -1420, -1510, -1420}
+    ,{  -870, -1040, -1410,  -870, -1410}
+    }
+   ,{{  -870, -1040, -1410,  -870, -1410}
+    ,{  -870, -1040, -1410,  -870, -1410}
+    ,{  -870, -1040, -1410,  -870, -1410}
+    ,{  -870, -1040, -1410,  -870, -1410}
+    ,{  -870, -1040, -1410,  -870, -1410}
+    }
+   ,{{   210,   210,  -160,  -240,  -160}
+    ,{  -870,  -870, -1230, -1320, -1230}
+    ,{  -870, -1040, -1410,  -870, -1410}
+    ,{   210,   210,  -160,  -240,  -160}
+    ,{  -870, -1040, -1410,  -870, -1410}
+    }
+   ,{{  -800,  -800, -1410,  -870, -1410}
+    ,{  -870, -1040, -1410,  -870, -1410}
+    ,{  -870, -1040, -1410,  -870, -1410}
+    ,{  -870, -1040, -1410,  -870, -1410}
+    ,{  -800,  -800, -1410, -1490, -1410}
+    }
+   }
+  ,{{{   210,   210,  -160, -1520,  -160}
+    ,{  -870,  -870, -1230, -1580, -1230}
+    ,{ -1040, -1040, -1410, -1520, -1410}
+    ,{   210,   210,  -160, -1760,  -160}
+    ,{  -800,  -800, -1410, -1520, -1410}
+    }
+   ,{{ -1040, -1040, -1410, -1760, -1410}
+    ,{ -1220, -1220, -1590, -1940, -1590}
+    ,{ -1040, -1040, -1410, -1760, -1410}
+    ,{ -1060, -1060, -1420, -1770, -1420}
+    ,{ -1040, -1040, -1410, -1760, -1410}
+    }
+   ,{{ -1040, -1040, -1410, -1520, -1410}
+    ,{ -1040, -1040, -1410, -1760, -1410}
+    ,{ -1040, -1040, -1410, -1520, -1410}
+    ,{ -1040, -1040, -1410, -1760, -1410}
+    ,{ -1040, -1040, -1410, -1520, -1410}
+    }
+   ,{{   210,   210,  -160, -1580,  -160}
+    ,{  -870,  -870, -1230, -1580, -1230}
+    ,{ -1040, -1040, -1410, -1760, -1410}
+    ,{   210,   210,  -160, -1760,  -160}
+    ,{ -1040, -1040, -1410, -1760, -1410}
+    }
+   ,{{  -800,  -800, -1410, -1520, -1410}
+    ,{ -1040, -1040, -1410, -1760, -1410}
+    ,{ -1040, -1040, -1410, -1520, -1410}
+    ,{ -1040, -1040, -1410, -1760, -1410}
+    ,{  -800,  -800, -1410, -1760, -1410}
+    }
+   }
+  ,{{{  -240,  -240,  -460,  -240,  -770}
+    ,{ -1300, -1320, -1300, -1320, -1610}
+    ,{ -1490, -1490, -1710, -1490, -2020}
+    ,{  -240,  -240,  -460,  -240,  -770}
+    ,{ -1490, -1490, -1710, -1490, -2020}
+    }
+   ,{{ -1490, -1490, -1490, -1490, -1800}
+    ,{ -1670, -1670, -1890, -1670, -2200}
+    ,{ -1490, -1490, -1710, -1490, -2020}
+    ,{ -1490, -1510, -1490, -1510, -1800}
+    ,{ -1490, -1490, -1710, -1490, -2020}
+    }
+   ,{{ -1490, -1490, -1710, -1490, -2020}
+    ,{ -1490, -1490, -1710, -1490, -2020}
+    ,{ -1490, -1490, -1710, -1490, -2020}
+    ,{ -1490, -1490, -1710, -1490, -2020}
+    ,{ -1490, -1490, -1710, -1490, -2020}
+    }
+   ,{{  -240,  -240,  -460,  -240,  -770}
+    ,{ -1300, -1320, -1300, -1320, -1610}
+    ,{ -1490, -1490, -1710, -1490, -2020}
+    ,{  -240,  -240,  -460,  -240,  -770}
+    ,{ -1490, -1490, -1710, -1490, -2020}
+    }
+   ,{{ -1490, -1490, -1710, -1490, -2020}
+    ,{ -1490, -1490, -1710, -1490, -2020}
+    ,{ -1490, -1490, -1710, -1490, -2020}
+    ,{ -1490, -1490, -1710, -1490, -2020}
+    ,{ -1490, -1490, -1710, -1490, -2020}
+    }
+   }
+  ,{{{  -160, -1990,  -160,  -870,  -160}
+    ,{  -870, -2060, -1230,  -870, -1230}
+    ,{  -870, -1990, -1410,  -870, -1410}
+    ,{  -160, -2230,  -160,  -870,  -160}
+    ,{  -870, -1990, -1410,  -870, -1410}
+    }
+   ,{{  -870, -2230, -1410,  -870, -1410}
+    ,{ -1050, -2410, -1590, -1050, -1590}
+    ,{  -870, -2230, -1410,  -870, -1410}
+    ,{ -1420, -2250, -1420, -2130, -1420}
+    ,{  -870, -2230, -1410,  -870, -1410}
+    }
+   ,{{  -870, -1990, -1410,  -870, -1410}
+    ,{  -870, -2230, -1410,  -870, -1410}
+    ,{  -870, -1990, -1410,  -870, -1410}
+    ,{  -870, -2230, -1410,  -870, -1410}
+    ,{  -870, -1990, -1410,  -870, -1410}
+    }
+   ,{{  -160, -2060,  -160,  -870,  -160}
+    ,{ -1230, -2060, -1230, -1940, -1230}
+    ,{  -870, -2230, -1410,  -870, -1410}
+    ,{  -160, -2230,  -160, -2120,  -160}
+    ,{  -870, -2230, -1410,  -870, -1410}
+    }
+   ,{{  -870, -1990, -1410,  -870, -1410}
+    ,{  -870, -2230, -1410,  -870, -1410}
+    ,{  -870, -1990, -1410,  -870, -1410}
+    ,{  -870, -2230, -1410,  -870, -1410}
+    ,{ -1410, -2230, -1410, -2120, -1410}
+    }
+   }
+  ,{{{  -240,  -240,  -460,  -240, -1520}
+    ,{ -1300, -1320, -1300, -1320, -1520}
+    ,{ -1490, -1490, -1710, -1490, -1700}
+    ,{  -240,  -240,  -460,  -240, -1700}
+    ,{ -1490, -1490, -1710, -1490, -1700}
+    }
+   ,{{ -1490, -1490, -1490, -1490, -1640}
+    ,{ -1640, -1670, -1890, -1670, -1640}
+    ,{ -1490, -1490, -1710, -1490, -1700}
+    ,{ -1490, -1510, -1490, -1510, -1710}
+    ,{ -1490, -1490, -1710, -1490, -1700}
+    }
+   ,{{ -1490, -1490, -1710, -1490, -1700}
+    ,{ -1490, -1490, -1710, -1490, -1700}
+    ,{ -1490, -1490, -1710, -1490, -1700}
+    ,{ -1490, -1490, -1710, -1490, -1700}
+    ,{ -1490, -1490, -1710, -1490, -1700}
+    }
+   ,{{  -240,  -240,  -460,  -240, -1520}
+    ,{ -1300, -1320, -1300, -1320, -1520}
+    ,{ -1490, -1490, -1710, -1490, -1700}
+    ,{  -240,  -240,  -460,  -240, -1700}
+    ,{ -1490, -1490, -1710, -1490, -1700}
+    }
+   ,{{ -1490, -1490, -1710, -1490, -1700}
+    ,{ -1490, -1490, -1710, -1490, -1700}
+    ,{ -1490, -1490, -1710, -1490, -1700}
+    ,{ -1490, -1490, -1710, -1490, -1700}
+    ,{ -1490, -1490, -1710, -1490, -1700}
+    }
+   }
+  }
+ ,{{{{   760,   760,   400,   310,   400}
+    ,{   200,  -430,  -340,   200,  -340}
+    ,{  -310,  -490,  -850,  -310,  -850}
+    ,{   760,   760,   400,   310,   400}
+    ,{  -250,  -250,  -850,  -310,  -850}
+    }
+   ,{{   200,  -430,  -340,   200,  -340}
+    ,{   200,  -430,  -340,   200,  -340}
+    ,{  -310,  -490,  -850,  -310,  -850}
+    ,{  -830,  -830, -1190, -1280, -1190}
+    ,{  -310,  -490,  -850,  -310,  -850}
+    }
+   ,{{  -310,  -490,  -850,  -310,  -850}
+    ,{  -310,  -490,  -850,  -310,  -850}
+    ,{  -310,  -490,  -850,  -310,  -850}
+    ,{  -310,  -490,  -850,  -310,  -850}
+    ,{  -310,  -490,  -850,  -310,  -850}
+    }
+   ,{{   760,   760,   400,   310,   400}
+    ,{ -1000, -1000, -1360, -1450, -1360}
+    ,{  -310,  -490,  -850,  -310,  -850}
+    ,{   760,   760,   400,   310,   400}
+    ,{  -310,  -490,  -850,  -310,  -850}
+    }
+   ,{{  -250,  -250,  -850,  -310,  -850}
+    ,{  -310,  -490,  -850,  -310,  -850}
+    ,{  -310,  -490,  -850,  -310,  -850}
+    ,{  -310,  -490,  -850,  -310,  -850}
+    ,{  -250,  -250,  -850,  -940,  -850}
+    }
+   }
+  ,{{{   760,   760,   400,  -690,   400}
+    ,{  -340,  -490,  -340,  -690,  -340}
+    ,{  -490,  -490,  -850,  -960,  -850}
+    ,{   760,   760,   400, -1200,   400}
+    ,{  -250,  -250,  -850,  -960,  -850}
+    }
+   ,{{  -340,  -490,  -340,  -690,  -340}
+    ,{  -340, -2040,  -340,  -690,  -340}
+    ,{  -490,  -490,  -850, -1200,  -850}
+    ,{  -830,  -830, -1190, -1540, -1190}
+    ,{  -490,  -490,  -850, -1200,  -850}
+    }
+   ,{{  -490,  -490,  -850,  -960,  -850}
+    ,{  -490,  -490,  -850, -1200,  -850}
+    ,{  -490,  -490,  -850,  -960,  -850}
+    ,{  -490,  -490,  -850, -1200,  -850}
+    ,{  -490,  -490,  -850,  -960,  -850}
+    }
+   ,{{   760,   760,   400, -1200,   400}
+    ,{ -1000, -1000, -1360, -1710, -1360}
+    ,{  -490,  -490,  -850, -1200,  -850}
+    ,{   760,   760,   400, -1200,   400}
+    ,{  -490,  -490,  -850, -1200,  -850}
+    }
+   ,{{  -250,  -250,  -850,  -960,  -850}
+    ,{  -490,  -490,  -850, -1200,  -850}
+    ,{  -490,  -490,  -850,  -960,  -850}
+    ,{  -490,  -490,  -850, -1200,  -850}
+    ,{  -250,  -250,  -850, -1200,  -850}
+    }
+   }
+  ,{{{   310,   310,    90,   310,  -220}
+    ,{  -430,  -430,  -650,  -430,  -960}
+    ,{  -940,  -940, -1160,  -940, -1470}
+    ,{   310,   310,    90,   310,  -220}
+    ,{  -940,  -940, -1160,  -940, -1470}
+    }
+   ,{{  -430,  -430,  -650,  -430,  -960}
+    ,{  -430,  -430,  -650,  -430,  -960}
+    ,{  -940,  -940, -1160,  -940, -1470}
+    ,{ -1260, -1280, -1260, -1280, -1570}
+    ,{  -940,  -940, -1160,  -940, -1470}
+    }
+   ,{{  -940,  -940, -1160,  -940, -1470}
+    ,{  -940,  -940, -1160,  -940, -1470}
+    ,{  -940,  -940, -1160,  -940, -1470}
+    ,{  -940,  -940, -1160,  -940, -1470}
+    ,{  -940,  -940, -1160,  -940, -1470}
+    }
+   ,{{   310,   310,    90,   310,  -220}
+    ,{ -1430, -1450, -1430, -1450, -1740}
+    ,{  -940,  -940, -1160,  -940, -1470}
+    ,{   310,   310,    90,   310,  -220}
+    ,{  -940,  -940, -1160,  -940, -1470}
+    }
+   ,{{  -940,  -940, -1160,  -940, -1470}
+    ,{  -940,  -940, -1160,  -940, -1470}
+    ,{  -940,  -940, -1160,  -940, -1470}
+    ,{  -940,  -940, -1160,  -940, -1470}
+    ,{  -940,  -940, -1160,  -940, -1470}
+    }
+   }
+  ,{{{   400, -1170,   400,   200,   400}
+    ,{   200, -1170,  -340,   200,  -340}
+    ,{  -310, -1440,  -850,  -310,  -850}
+    ,{   400, -1680,   400,  -310,   400}
+    ,{  -310, -1440,  -850,  -310,  -850}
+    }
+   ,{{   200, -1170,  -340,   200,  -340}
+    ,{   200, -1170,  -340,   200,  -340}
+    ,{  -310, -1680,  -850,  -310,  -850}
+    ,{ -1190, -2020, -1190, -1900, -1190}
+    ,{  -310, -1680,  -850,  -310,  -850}
+    }
+   ,{{  -310, -1440,  -850,  -310,  -850}
+    ,{  -310, -1680,  -850,  -310,  -850}
+    ,{  -310, -1440,  -850,  -310,  -850}
+    ,{  -310, -1680,  -850,  -310,  -850}
+    ,{  -310, -1440,  -850,  -310,  -850}
+    }
+   ,{{   400, -1680,   400,  -310,   400}
+    ,{ -1360, -2190, -1360, -2070, -1360}
+    ,{  -310, -1680,  -850,  -310,  -850}
+    ,{   400, -1680,   400, -1560,   400}
+    ,{  -310, -1680,  -850,  -310,  -850}
+    }
+   ,{{  -310, -1440,  -850,  -310,  -850}
+    ,{  -310, -1680,  -850,  -310,  -850}
+    ,{  -310, -1440,  -850,  -310,  -850}
+    ,{  -310, -1680,  -850,  -310,  -850}
+    ,{  -850, -1680,  -850, -1560,  -850}
+    }
+   }
+  ,{{{   310,   310,    90,   310,  -390}
+    ,{  -390,  -430,  -650,  -430,  -390}
+    ,{  -940,  -940, -1160,  -940, -1140}
+    ,{   310,   310,    90,   310, -1140}
+    ,{  -940,  -940, -1160,  -940, -1140}
+    }
+   ,{{  -390,  -430,  -650,  -430,  -390}
+    ,{  -390,  -430,  -650,  -430,  -390}
+    ,{  -940,  -940, -1160,  -940, -1140}
+    ,{ -1260, -1280, -1260, -1280, -1480}
+    ,{  -940,  -940, -1160,  -940, -1140}
+    }
+   ,{{  -940,  -940, -1160,  -940, -1140}
+    ,{  -940,  -940, -1160,  -940, -1140}
+    ,{  -940,  -940, -1160,  -940, -1140}
+    ,{  -940,  -940, -1160,  -940, -1140}
+    ,{  -940,  -940, -1160,  -940, -1140}
+    }
+   ,{{   310,   310,    90,   310, -1140}
+    ,{ -1430, -1450, -1430, -1450, -1650}
+    ,{  -940,  -940, -1160,  -940, -1140}
+    ,{   310,   310,    90,   310, -1140}
+    ,{  -940,  -940, -1160,  -940, -1140}
+    }
+   ,{{  -940,  -940, -1160,  -940, -1140}
+    ,{  -940,  -940, -1160,  -940, -1140}
+    ,{  -940,  -940, -1160,  -940, -1140}
+    ,{  -940,  -940, -1160,  -940, -1140}
+    ,{  -940,  -940, -1160,  -940, -1140}
+    }
+   }
+  }
+ ,{{{{  1140,  1140,   770,   780,   770}
+    ,{   780,   600,   240,   780,   240}
+    ,{   480,   300,   -60,   480,   -60}
+    ,{  1140,  1140,   770,   690,   770}
+    ,{   480,   300,   -60,   480,   -60}
+    }
+   ,{{   780,   600,   240,   780,   240}
+    ,{   780,   600,   240,   780,   240}
+    ,{   470,   290,   -70,   470,   -70}
+    ,{  -780,  -780, -1150, -1230, -1150}
+    ,{   470,   290,   -70,   470,   -70}
+    }
+   ,{{   490,   310,   -50,   490,   -50}
+    ,{   490,   310,   -50,   490,   -50}
+    ,{   480,   300,   -60,   480,   -60}
+    ,{   490,   310,   -50,   490,   -50}
+    ,{   480,   300,   -60,   480,   -60}
+    }
+   ,{{  1140,  1140,   770,   690,   770}
+    ,{  -600,  -600,  -970, -1050,  -970}
+    ,{   470,   290,   -70,   470,   -70}
+    ,{  1140,  1140,   770,   690,   770}
+    ,{   470,   290,   -70,   470,   -70}
+    }
+   ,{{   490,   310,   -50,   490,   -50}
+    ,{   490,   310,   -50,   490,   -50}
+    ,{   480,   300,   -60,   480,   -60}
+    ,{   490,   310,   -50,   490,   -50}
+    ,{  -430,  -430, -1040, -1120, -1040}
+    }
+   }
+  ,{{{  1140,  1140,   770,  -110,   770}
+    ,{   600,   600,   240,  -110,   240}
+    ,{   300,   300,   -60,  -170,   -60}
+    ,{  1140,  1140,   770,  -400,   770}
+    ,{   300,   300,   -60,  -170,   -60}
+    }
+   ,{{   600,   600,   240,  -110,   240}
+    ,{   600,   600,   240,  -110,   240}
+    ,{   290,   290,   -70,  -420,   -70}
+    ,{  -780,  -780, -1150, -1500, -1150}
+    ,{   290,   290,   -70,  -420,   -70}
+    }
+   ,{{   310,   310,   -50,  -170,   -50}
+    ,{   310,   310,   -50,  -400,   -50}
+    ,{   300,   300,   -60,  -170,   -60}
+    ,{   310,   310,   -50,  -400,   -50}
+    ,{   300,   300,   -60,  -170,   -60}
+    }
+   ,{{  1140,  1140,   770,  -420,   770}
+    ,{  -600,  -600,  -970, -1320,  -970}
+    ,{   290,   290,   -70,  -420,   -70}
+    ,{  1140,  1140,   770,  -830,   770}
+    ,{   290,   290,   -70,  -420,   -70}
+    }
+   ,{{   310,   310,   -50,  -170,   -50}
+    ,{   310,   310,   -50,  -400,   -50}
+    ,{   300,   300,   -60,  -170,   -60}
+    ,{   310,   310,   -50,  -400,   -50}
+    ,{  -430,  -430, -1040, -1390, -1040}
+    }
+   }
+  ,{{{   690,   690,   470,   690,   160}
+    ,{   150,   150,   -60,   150,  -370}
+    ,{  -140,  -140,  -360,  -140,  -670}
+    ,{   690,   690,   470,   690,   160}
+    ,{  -140,  -140,  -360,  -140,  -670}
+    }
+   ,{{   150,   150,   -60,   150,  -370}
+    ,{   150,   150,   -60,   150,  -370}
+    ,{  -150,  -150,  -370,  -150,  -680}
+    ,{ -1210, -1230, -1210, -1230, -1520}
+    ,{  -150,  -150,  -370,  -150,  -680}
+    }
+   ,{{  -140,  -140,  -360,  -140,  -670}
+    ,{  -140,  -140,  -360,  -140,  -670}
+    ,{  -140,  -140,  -360,  -140,  -670}
+    ,{  -140,  -140,  -360,  -140,  -670}
+    ,{  -140,  -140,  -360,  -140,  -670}
+    }
+   ,{{   690,   690,   470,   690,   160}
+    ,{ -1030, -1050, -1030, -1050, -1340}
+    ,{  -150,  -150,  -370,  -150,  -680}
+    ,{   690,   690,   470,   690,   160}
+    ,{  -150,  -150,  -370,  -150,  -680}
+    }
+   ,{{  -140,  -140,  -360,  -140,  -670}
+    ,{  -140,  -140,  -360,  -140,  -670}
+    ,{  -140,  -140,  -360,  -140,  -670}
+    ,{  -140,  -140,  -360,  -140,  -670}
+    ,{ -1120, -1120, -1340, -1120, -1650}
+    }
+   }
+  ,{{{   780,  -580,   770,   780,   770}
+    ,{   780,  -580,   240,   780,   240}
+    ,{   480,  -640,   -60,   480,   -60}
+    ,{   770,  -880,   770,   490,   770}
+    ,{   480,  -640,   -60,   480,   -60}
+    }
+   ,{{   780,  -580,   240,   780,   240}
+    ,{   780,  -580,   240,   780,   240}
+    ,{   470,  -890,   -70,   470,   -70}
+    ,{ -1150, -1970, -1150, -1860, -1150}
+    ,{   470,  -890,   -70,   470,   -70}
+    }
+   ,{{   490,  -640,   -50,   490,   -50}
+    ,{   490,  -880,   -50,   490,   -50}
+    ,{   480,  -640,   -60,   480,   -60}
+    ,{   490,  -880,   -50,   490,   -50}
+    ,{   480,  -640,   -60,   480,   -60}
+    }
+   ,{{   770,  -890,   770,   470,   770}
+    ,{  -970, -1790,  -970, -1680,  -970}
+    ,{   470,  -890,   -70,   470,   -70}
+    ,{   770, -1300,   770, -1190,   770}
+    ,{   470,  -890,   -70,   470,   -70}
+    }
+   ,{{   490,  -640,   -50,   490,   -50}
+    ,{   490,  -880,   -50,   490,   -50}
+    ,{   480,  -640,   -60,   480,   -60}
+    ,{   490,  -880,   -50,   490,   -50}
+    ,{ -1040, -1860, -1040, -1750, -1040}
+    }
+   }
+  ,{{{   690,   690,   470,   690,   190}
+    ,{   190,   150,   -60,   150,   190}
+    ,{  -140,  -140,  -360,  -140,  -350}
+    ,{   690,   690,   470,   690,  -340}
+    ,{  -140,  -140,  -360,  -140,  -350}
+    }
+   ,{{   190,   150,   -60,   150,   190}
+    ,{   190,   150,   -60,   150,   190}
+    ,{  -150,  -150,  -370,  -150,  -360}
+    ,{ -1210, -1230, -1210, -1230, -1440}
+    ,{  -150,  -150,  -370,  -150,  -360}
+    }
+   ,{{  -140,  -140,  -360,  -140,  -340}
+    ,{  -140,  -140,  -360,  -140,  -340}
+    ,{  -140,  -140,  -360,  -140,  -350}
+    ,{  -140,  -140,  -360,  -140,  -340}
+    ,{  -140,  -140,  -360,  -140,  -350}
+    }
+   ,{{   690,   690,   470,   690,  -360}
+    ,{ -1030, -1050, -1030, -1050, -1260}
+    ,{  -150,  -150,  -370,  -150,  -360}
+    ,{   690,   690,   470,   690,  -770}
+    ,{  -150,  -150,  -370,  -150,  -360}
+    }
+   ,{{  -140,  -140,  -360,  -140,  -340}
+    ,{  -140,  -140,  -360,  -140,  -340}
+    ,{  -140,  -140,  -360,  -140,  -350}
+    ,{  -140,  -140,  -360,  -140,  -340}
+    ,{ -1120, -1120, -1340, -1120, -1330}
+    }
+   }
+  }
+ ,{{{{  1320,  1320,   960,   870,   960}
+    ,{   850,   670,   300,   850,   300}
+    ,{   720,   540,   170,   720,   170}
+    ,{  1320,  1320,   960,   870,   960}
+    ,{   590,   410,    40,   590,    40}
+    }
+   ,{{   850,   670,   300,   850,   300}
+    ,{   850,   670,   300,   850,   300}
+    ,{   570,   390,    20,   570,    20}
+    ,{  -730,  -730, -1100, -1180, -1100}
+    ,{   570,   390,    20,   570,    20}
+    }
+   ,{{   720,   540,   170,   720,   170}
+    ,{   720,   540,   170,   720,   170}
+    ,{   720,   540,   170,   720,   170}
+    ,{   720,   540,   170,   720,   170}
+    ,{   590,   410,    40,   590,    40}
+    }
+   ,{{  1320,  1320,   960,   870,   960}
+    ,{ -1030, -1030, -1400, -1480, -1400}
+    ,{   570,   390,    20,   570,    20}
+    ,{  1320,  1320,   960,   870,   960}
+    ,{   570,   390,    20,   570,    20}
+    }
+   ,{{   720,   540,   170,   720,   170}
+    ,{   720,   540,   170,   720,   170}
+    ,{   280,   100,  -260,   280,  -260}
+    ,{   720,   540,   170,   720,   170}
+    ,{  -160,  -160,  -760,  -850,  -760}
+    }
+   }
+  ,{{{  1320,  1320,   960,    70,   960}
+    ,{   670,   670,   300,   -40,   300}
+    ,{   540,   540,   170,    70,   170}
+    ,{  1320,  1320,   960,  -170,   960}
+    ,{   410,   410,    40,   -60,    40}
+    }
+   ,{{   670,   670,   300,   -40,   300}
+    ,{   670,   670,   300,   -40,   300}
+    ,{   390,   390,    20,  -320,    20}
+    ,{  -730,  -730, -1100, -1450, -1100}
+    ,{   390,   390,    20,  -320,    20}
+    }
+   ,{{   540,   540,   170,    70,   170}
+    ,{   540,   540,   170,  -170,   170}
+    ,{   540,   540,   170,    70,   170}
+    ,{   540,   540,   170,  -170,   170}
+    ,{   410,   410,    40,   -60,    40}
+    }
+   ,{{  1320,  1320,   960,  -320,   960}
+    ,{ -1030, -1030, -1400, -1750, -1400}
+    ,{   390,   390,    20,  -320,    20}
+    ,{  1320,  1320,   960,  -640,   960}
+    ,{   390,   390,    20,  -320,    20}
+    }
+   ,{{   540,   540,   170,  -170,   170}
+    ,{   540,   540,   170,  -170,   170}
+    ,{   100,   100,  -260,  -370,  -260}
+    ,{   540,   540,   170,  -170,   170}
+    ,{  -160,  -160,  -760, -1110,  -760}
+    }
+   }
+  ,{{{   870,   870,   650,   870,   340}
+    ,{   220,   220,     0,   220,  -310}
+    ,{    90,    90,  -130,    90,  -440}
+    ,{   870,   870,   650,   870,   340}
+    ,{   -40,   -40,  -260,   -40,  -570}
+    }
+   ,{{   220,   220,     0,   220,  -310}
+    ,{   220,   220,     0,   220,  -310}
+    ,{   -60,   -60,  -280,   -60,  -590}
+    ,{ -1160, -1180, -1160, -1180, -1470}
+    ,{   -60,   -60,  -280,   -60,  -590}
+    }
+   ,{{    90,    90,  -130,    90,  -440}
+    ,{    90,    90,  -130,    90,  -440}
+    ,{    90,    90,  -130,    90,  -440}
+    ,{    90,    90,  -130,    90,  -440}
+    ,{   -40,   -40,  -260,   -40,  -570}
+    }
+   ,{{   870,   870,   650,   870,   340}
+    ,{ -1460, -1480, -1460, -1480, -1770}
+    ,{   -60,   -60,  -280,   -60,  -590}
+    ,{   870,   870,   650,   870,   340}
+    ,{   -60,   -60,  -280,   -60,  -590}
+    }
+   ,{{    90,    90,  -130,    90,  -440}
+    ,{    90,    90,  -130,    90,  -440}
+    ,{  -350,  -350,  -570,  -350,  -880}
+    ,{    90,    90,  -130,    90,  -440}
+    ,{  -850,  -850, -1070,  -850, -1380}
+    }
+   }
+  ,{{{   960,  -410,   960,   850,   960}
+    ,{   850,  -520,   300,   850,   300}
+    ,{   720,  -410,   170,   720,   170}
+    ,{   960,  -650,   960,   720,   960}
+    ,{   590,  -540,    40,   590,    40}
+    }
+   ,{{   850,  -520,   300,   850,   300}
+    ,{   850,  -520,   300,   850,   300}
+    ,{   570,  -800,    20,   570,    20}
+    ,{ -1100, -1920, -1100, -1810, -1100}
+    ,{   570,  -800,    20,   570,    20}
+    }
+   ,{{   720,  -410,   170,   720,   170}
+    ,{   720,  -650,   170,   720,   170}
+    ,{   720,  -410,   170,   720,   170}
+    ,{   720,  -650,   170,   720,   170}
+    ,{   590,  -540,    40,   590,    40}
+    }
+   ,{{   960,  -800,   960,   570,   960}
+    ,{ -1400, -2220, -1400, -2110, -1400}
+    ,{   570,  -800,    20,   570,    20}
+    ,{   960, -1120,   960, -1000,   960}
+    ,{   570,  -800,    20,   570,    20}
+    }
+   ,{{   720,  -650,   170,   720,   170}
+    ,{   720,  -650,   170,   720,   170}
+    ,{   280,  -850,  -260,   280,  -260}
+    ,{   720,  -650,   170,   720,   170}
+    ,{  -760, -1590,  -760, -1470,  -760}
+    }
+   }
+  ,{{{   870,   870,   650,   870,   250}
+    ,{   250,   220,     0,   220,   250}
+    ,{    90,    90,  -130,    90,  -110}
+    ,{   870,   870,   650,   870,  -110}
+    ,{   -40,   -40,  -260,   -40,  -240}
+    }
+   ,{{   250,   220,     0,   220,   250}
+    ,{   250,   220,     0,   220,   250}
+    ,{   -60,   -60,  -280,   -60,  -260}
+    ,{ -1160, -1180, -1160, -1180, -1390}
+    ,{   -60,   -60,  -280,   -60,  -260}
+    }
+   ,{{    90,    90,  -130,    90,  -110}
+    ,{    90,    90,  -130,    90,  -110}
+    ,{    90,    90,  -130,    90,  -110}
+    ,{    90,    90,  -130,    90,  -110}
+    ,{   -40,   -40,  -260,   -40,  -240}
+    }
+   ,{{   870,   870,   650,   870,  -260}
+    ,{ -1460, -1480, -1460, -1480, -1690}
+    ,{   -60,   -60,  -280,   -60,  -260}
+    ,{   870,   870,   650,   870,  -580}
+    ,{   -60,   -60,  -280,   -60,  -260}
+    }
+   ,{{    90,    90,  -130,    90,  -110}
+    ,{    90,    90,  -130,    90,  -110}
+    ,{  -350,  -350,  -570,  -350,  -550}
+    ,{    90,    90,  -130,    90,  -110}
+    ,{  -850,  -850, -1070,  -850, -1050}
+    }
+   }
+  }
+ ,{{{{  1320,  1320,   960,   870,   960}
+    ,{   850,   670,   540,   850,   300}
+    ,{   720,   540,   170,   720,   170}
+    ,{  1320,  1320,   960,   870,   960}
+    ,{   590,   410,    40,   590,    40}
+    }
+   ,{{   850,   670,   300,   850,   300}
+    ,{   850,   670,   300,   850,   300}
+    ,{   570,   390,    20,   570,    20}
+    ,{  -350,  -350,  -870,  -960,  -870}
+    ,{   570,   390,    20,   570,    20}
+    }
+   ,{{   720,   540,   170,   720,   170}
+    ,{   720,   540,   170,   720,   170}
+    ,{   720,   540,   170,   720,   170}
+    ,{   720,   540,   170,   720,   170}
+    ,{   590,   410,    40,   590,    40}
+    }
+   ,{{  1320,  1320,   960,   870,   960}
+    ,{   540,  -100,   540, -1050,  -810}
+    ,{   570,   390,    20,   570,    20}
+    ,{  1320,  1320,   960,   870,   960}
+    ,{   570,   390,    20,   570,    20}
+    }
+   ,{{   720,   540,   170,   720,   170}
+    ,{   720,   540,   170,   720,   170}
+    ,{   480,   300,   -60,   480,   -60}
+    ,{   720,   540,   170,   720,   170}
+    ,{  -160,  -160,  -400,  -230,  -760}
+    }
+   }
+  ,{{{  1320,  1320,   960,    70,   960}
+    ,{   670,   670,   300,   -40,   300}
+    ,{   540,   540,   170,    70,   170}
+    ,{  1320,  1320,   960,  -170,   960}
+    ,{   410,   410,    40,   -60,    40}
+    }
+   ,{{   670,   670,   300,   -40,   300}
+    ,{   670,   670,   300,   -40,   300}
+    ,{   390,   390,    20,  -320,    20}
+    ,{  -730,  -730, -1100, -1450,  -870}
+    ,{   390,   390,    20,  -320,    20}
+    }
+   ,{{   540,   540,   170,    70,   170}
+    ,{   540,   540,   170,  -170,   170}
+    ,{   540,   540,   170,    70,   170}
+    ,{   540,   540,   170,  -170,   170}
+    ,{   410,   410,    40,   -60,    40}
+    }
+   ,{{  1320,  1320,   960,  -320,   960}
+    ,{    10,  -600,    10, -1320,  -970}
+    ,{   390,   390,    20,  -320,    20}
+    ,{  1320,  1320,   960,  -640,   960}
+    ,{   390,   390,    20,  -320,    20}
+    }
+   ,{{   540,   540,   170,  -170,   170}
+    ,{   540,   540,   170,  -170,   170}
+    ,{   300,   300,   -60,  -170,   -60}
+    ,{   540,   540,   170,  -170,   170}
+    ,{  -160,  -160,  -400, -1110,  -760}
+    }
+   }
+  ,{{{   870,   870,   650,   870,   340}
+    ,{   540,   220,   540,   220,  -310}
+    ,{    90,    90,  -130,    90,  -440}
+    ,{   870,   870,   650,   870,   340}
+    ,{   -40,   -40,  -260,   -40,  -570}
+    }
+   ,{{   220,   220,     0,   220,  -310}
+    ,{   220,   220,     0,   220,  -310}
+    ,{   -60,   -60,  -280,   -60,  -590}
+    ,{  -350,  -350,  -940,  -960, -1250}
+    ,{   -60,   -60,  -280,   -60,  -590}
+    }
+   ,{{    90,    90,  -130,    90,  -440}
+    ,{    90,    90,  -130,    90,  -440}
+    ,{    90,    90,  -130,    90,  -440}
+    ,{    90,    90,  -130,    90,  -440}
+    ,{   -40,   -40,  -260,   -40,  -570}
+    }
+   ,{{   870,   870,   650,   870,   340}
+    ,{   540,  -100,   540, -1050, -1340}
+    ,{   -60,   -60,  -280,   -60,  -590}
+    ,{   870,   870,   650,   870,   340}
+    ,{   -60,   -60,  -280,   -60,  -590}
+    }
+   ,{{    90,    90,  -130,    90,  -440}
+    ,{    90,    90,  -130,    90,  -440}
+    ,{  -140,  -140,  -360,  -140,  -670}
+    ,{    90,    90,  -130,    90,  -440}
+    ,{  -850,  -850, -1070,  -850, -1380}
+    }
+   }
+  ,{{{   960,  -410,   960,   850,   960}
+    ,{   850,  -520,   300,   850,   300}
+    ,{   720,  -410,   170,   720,   170}
+    ,{   960,  -650,   960,   720,   960}
+    ,{   590,  -540,    40,   590,    40}
+    }
+   ,{{   850,  -520,   300,   850,   300}
+    ,{   850,  -520,   300,   850,   300}
+    ,{   570,  -800,    20,   570,    20}
+    ,{  -870, -1920,  -870, -1370,  -870}
+    ,{   570,  -800,    20,   570,    20}
+    }
+   ,{{   720,  -410,   170,   720,   170}
+    ,{   720,  -650,   170,   720,   170}
+    ,{   720,  -410,   170,   720,   170}
+    ,{   720,  -650,   170,   720,   170}
+    ,{   590,  -540,    40,   590,    40}
+    }
+   ,{{   960,  -800,   960,   570,   960}
+    ,{  -970, -1790,  -970, -1680,  -970}
+    ,{   570,  -800,    20,   570,    20}
+    ,{   960, -1120,   960, -1000,   960}
+    ,{   570,  -800,    20,   570,    20}
+    }
+   ,{{   720,  -640,   170,   720,   170}
+    ,{   720,  -650,   170,   720,   170}
+    ,{   480,  -640,   -60,   480,   -60}
+    ,{   720,  -650,   170,   720,   170}
+    ,{  -230, -1520,  -760,  -230,  -760}
+    }
+   }
+  ,{{{   870,   870,   650,   870,   250}
+    ,{   250,   220,     0,   220,   250}
+    ,{    90,    90,  -130,    90,  -110}
+    ,{   870,   870,   650,   870,  -110}
+    ,{   -40,   -40,  -260,   -40,  -240}
+    }
+   ,{{   250,   220,     0,   220,   250}
+    ,{   250,   220,     0,   220,   250}
+    ,{   -60,   -60,  -280,   -60,  -260}
+    ,{  -940,  -960,  -940,  -960, -1360}
+    ,{   -60,   -60,  -280,   -60,  -260}
+    }
+   ,{{    90,    90,  -130,    90,   -90}
+    ,{    90,    90,  -130,    90,   -90}
+    ,{    90,    90,  -130,    90,  -110}
+    ,{    90,    90,  -130,    90,  -110}
+    ,{   -40,   -40,  -260,   -40,  -240}
+    }
+   ,{{   870,   870,   650,   870,  -260}
+    ,{  -810, -1050, -1030, -1050,  -810}
+    ,{   -60,   -60,  -280,   -60,  -260}
+    ,{   870,   870,   650,   870,  -580}
+    ,{   -60,   -60,  -280,   -60,  -260}
+    }
+   ,{{    90,    90,  -130,    90,  -110}
+    ,{    90,    90,  -130,    90,  -110}
+    ,{  -140,  -140,  -360,  -140,  -350}
+    ,{    90,    90,  -130,    90,  -110}
+    ,{  -850,  -850, -1070,  -850, -1050}
+    }
+   }
+  }
+ }
+,{{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   240,  -780,  -870,   240,  -870}
+    ,{   190, -1060, -1060,   190,  -970}
+    ,{   240,  -780, -1010,   240, -1010}
+    ,{   190,  -870,  -870,   190,  -870}
+    ,{   130,  -890, -1120,   130, -1120}
+    }
+   ,{{    40, -1210, -1180,    40,  -970}
+    ,{    40, -1210, -1210,    40,  -970}
+    ,{  -270, -1520, -1520,  -270, -1520}
+    ,{ -1180, -1420, -1180, -1250, -1180}
+    ,{  -270, -1520, -1520,  -270, -1520}
+    }
+   ,{{   190,  -840, -1060,   190, -1060}
+    ,{   190, -1060, -1060,   190, -1060}
+    ,{   180,  -840, -1070,   180, -1070}
+    ,{   190, -1060, -1060,   190, -1060}
+    ,{   130,  -890, -1120,   130, -1120}
+    }
+   ,{{  -270,  -870,  -870,  -270,  -870}
+    ,{ -1470, -1710, -1470, -1530, -1470}
+    ,{  -270, -1520, -1520,  -270, -1520}
+    ,{  -870,  -870,  -870,  -870,  -870}
+    ,{  -270, -1520, -1520,  -270, -1520}
+    }
+   ,{{   240,  -780, -1010,   240, -1010}
+    ,{   190, -1060, -1060,   190, -1060}
+    ,{   240,  -780, -1010,   240, -1010}
+    ,{   190, -1060, -1060,   190, -1060}
+    ,{ -1680, -1790, -1850, -1680, -1850}
+    }
+   }
+  ,{{{  -590, -1050,  -870,  -590,  -870}
+    ,{  -890, -1240, -1060,  -890, -1060}
+    ,{  -590, -1190, -1010,  -590, -1010}
+    ,{  -870, -1050,  -870,  -890,  -870}
+    ,{  -700, -1300, -1120,  -700, -1120}
+    }
+   ,{{ -1030, -1370, -1210, -1030, -1210}
+    ,{ -1030, -1370, -1210, -1030, -1210}
+    ,{ -1340, -1700, -1520, -1340, -1520}
+    ,{ -1250, -1600, -1420, -1250, -1420}
+    ,{ -1340, -1700, -1520, -1340, -1520}
+    }
+   ,{{  -650, -1240, -1060,  -650, -1060}
+    ,{  -890, -1240, -1060,  -890, -1060}
+    ,{  -650, -1250, -1070,  -650, -1070}
+    ,{  -890, -1240, -1060,  -890, -1060}
+    ,{  -700, -1300, -1120,  -700, -1120}
+    }
+   ,{{  -870, -1050,  -870, -1340,  -870}
+    ,{ -1530, -1890, -1710, -1530, -1710}
+    ,{ -1340, -1700, -1520, -1340, -1520}
+    ,{  -870, -1050,  -870, -1940,  -870}
+    ,{ -1340, -1700, -1520, -1340, -1520}
+    }
+   ,{{  -590, -1190, -1010,  -590, -1010}
+    ,{  -890, -1240, -1060,  -890, -1060}
+    ,{  -590, -1190, -1010,  -590, -1010}
+    ,{  -890, -1240, -1060,  -890, -1060}
+    ,{ -1680, -1790, -1850, -1680, -1850}
+    }
+   }
+  ,{{{  -870,  -870,  -870,  -870,  -870}
+    ,{ -1060, -1060, -1060, -1060, -1060}
+    ,{ -1010, -1010, -1010, -1010, -1010}
+    ,{  -870,  -870,  -870,  -870,  -870}
+    ,{ -1120, -1120, -1120, -1120, -1120}
+    }
+   ,{{ -1180, -1210, -1180, -1210, -1180}
+    ,{ -1210, -1210, -1210, -1210, -1210}
+    ,{ -1520, -1520, -1520, -1520, -1520}
+    ,{ -1180, -1420, -1180, -1420, -1180}
+    ,{ -1520, -1520, -1520, -1520, -1520}
+    }
+   ,{{ -1060, -1060, -1060, -1060, -1060}
+    ,{ -1060, -1060, -1060, -1060, -1060}
+    ,{ -1070, -1070, -1070, -1070, -1070}
+    ,{ -1060, -1060, -1060, -1060, -1060}
+    ,{ -1120, -1120, -1120, -1120, -1120}
+    }
+   ,{{  -870,  -870,  -870,  -870,  -870}
+    ,{ -1470, -1710, -1470, -1710, -1470}
+    ,{ -1520, -1520, -1520, -1520, -1520}
+    ,{  -870,  -870,  -870,  -870,  -870}
+    ,{ -1520, -1520, -1520, -1520, -1520}
+    }
+   ,{{ -1010, -1010, -1010, -1010, -1010}
+    ,{ -1060, -1060, -1060, -1060, -1060}
+    ,{ -1010, -1010, -1010, -1010, -1010}
+    ,{ -1060, -1060, -1060, -1060, -1060}
+    ,{ -1850, -1850, -1850, -1850, -1850}
+    }
+   }
+  ,{{{   240,  -780,  -870,   240,  -870}
+    ,{   190, -1080, -1060,   190, -1060}
+    ,{   240,  -780, -1010,   240, -1010}
+    ,{   190, -1080,  -870,   190,  -870}
+    ,{   130,  -890, -1120,   130, -1120}
+    }
+   ,{{    40, -1220, -1210,    40, -1210}
+    ,{    40, -1220, -1210,    40, -1210}
+    ,{  -270, -1530, -1520,  -270, -1520}
+    ,{ -1420, -1440, -1420, -1420, -1420}
+    ,{  -270, -1530, -1520,  -270, -1520}
+    }
+   ,{{   190,  -840, -1060,   190, -1060}
+    ,{   190, -1080, -1060,   190, -1060}
+    ,{   180,  -840, -1070,   180, -1070}
+    ,{   190, -1080, -1060,   190, -1060}
+    ,{   130,  -890, -1120,   130, -1120}
+    }
+   ,{{  -270, -1530,  -870,  -270,  -870}
+    ,{ -1710, -1720, -1710, -1710, -1710}
+    ,{  -270, -1530, -1520,  -270, -1520}
+    ,{  -870, -2130,  -870, -2120,  -870}
+    ,{  -270, -1530, -1520,  -270, -1520}
+    }
+   ,{{   240,  -780, -1010,   240, -1010}
+    ,{   190, -1080, -1060,   190, -1060}
+    ,{   240,  -780, -1010,   240, -1010}
+    ,{   190, -1080, -1060,   190, -1060}
+    ,{ -1850, -1870, -1850, -1850, -1850}
+    }
+   }
+  ,{{{  -870,  -870,  -870,  -870,  -970}
+    ,{  -970, -1060, -1060, -1060,  -970}
+    ,{ -1010, -1010, -1010, -1010, -1010}
+    ,{  -870,  -870,  -870,  -870, -1060}
+    ,{ -1120, -1120, -1120, -1120, -1120}
+    }
+   ,{{  -970, -1210, -1180, -1210,  -970}
+    ,{  -970, -1210, -1210, -1210,  -970}
+    ,{ -1520, -1520, -1520, -1520, -1520}
+    ,{ -1180, -1420, -1180, -1420, -1420}
+    ,{ -1520, -1520, -1520, -1520, -1520}
+    }
+   ,{{ -1060, -1060, -1060, -1060, -1060}
+    ,{ -1060, -1060, -1060, -1060, -1060}
+    ,{ -1070, -1070, -1070, -1070, -1070}
+    ,{ -1060, -1060, -1060, -1060, -1060}
+    ,{ -1120, -1120, -1120, -1120, -1120}
+    }
+   ,{{  -870,  -870,  -870,  -870, -1520}
+    ,{ -1470, -1710, -1470, -1710, -1710}
+    ,{ -1520, -1520, -1520, -1520, -1520}
+    ,{  -870,  -870,  -870,  -870, -2120}
+    ,{ -1520, -1520, -1520, -1520, -1520}
+    }
+   ,{{ -1010, -1010, -1010, -1010, -1010}
+    ,{ -1060, -1060, -1060, -1060, -1060}
+    ,{ -1010, -1010, -1010, -1010, -1010}
+    ,{ -1060, -1060, -1060, -1060, -1060}
+    ,{ -1850, -1850, -1850, -1850, -1850}
+    }
+   }
+  }
+ ,{{{{   210,  -870,  -870,   210,  -800}
+    ,{   210, -1040, -1040,   210,  -800}
+    ,{  -240, -1490, -1490,  -240, -1490}
+    ,{  -160,  -870,  -870,  -160,  -870}
+    ,{  -240, -1490, -1490,  -240, -1490}
+    }
+   ,{{   210, -1040, -1040,   210,  -800}
+    ,{   210, -1040, -1040,   210,  -800}
+    ,{  -240, -1490, -1490,  -240, -1490}
+    ,{ -1990, -2230, -1990, -2060, -1990}
+    ,{  -240, -1490, -1490,  -240, -1490}
+    }
+   ,{{  -160, -1410, -1410,  -160, -1410}
+    ,{  -160, -1410, -1410,  -160, -1410}
+    ,{  -460, -1490, -1710,  -460, -1710}
+    ,{  -160, -1410, -1410,  -160, -1410}
+    ,{  -460, -1490, -1710,  -460, -1710}
+    }
+   ,{{  -240,  -870,  -870,  -240,  -870}
+    ,{ -1520, -1760, -1520, -1580, -1520}
+    ,{  -240, -1490, -1490,  -240, -1490}
+    ,{  -870,  -870,  -870,  -870,  -870}
+    ,{  -240, -1490, -1490,  -240, -1490}
+    }
+   ,{{  -160, -1410, -1410,  -160, -1410}
+    ,{  -160, -1410, -1410,  -160, -1410}
+    ,{  -770, -1800, -2020,  -770, -2020}
+    ,{  -160, -1410, -1410,  -160, -1410}
+    ,{ -1520, -1640, -1700, -1520, -1700}
+    }
+   }
+  ,{{{  -870, -1050,  -870,  -870,  -870}
+    ,{  -870, -1220, -1040,  -870, -1040}
+    ,{ -1300, -1670, -1490, -1300, -1490}
+    ,{  -870, -1050,  -870, -1230,  -870}
+    ,{ -1300, -1640, -1490, -1300, -1490}
+    }
+   ,{{  -870, -1220, -1040,  -870, -1040}
+    ,{  -870, -1220, -1040,  -870, -1040}
+    ,{ -1320, -1670, -1490, -1320, -1490}
+    ,{ -2060, -2410, -2230, -2060, -2230}
+    ,{ -1320, -1670, -1490, -1320, -1490}
+    }
+   ,{{ -1230, -1590, -1410, -1230, -1410}
+    ,{ -1230, -1590, -1410, -1230, -1410}
+    ,{ -1300, -1890, -1710, -1300, -1710}
+    ,{ -1230, -1590, -1410, -1230, -1410}
+    ,{ -1300, -1890, -1710, -1300, -1710}
+    }
+   ,{{  -870, -1050,  -870, -1320,  -870}
+    ,{ -1580, -1940, -1760, -1580, -1760}
+    ,{ -1320, -1670, -1490, -1320, -1490}
+    ,{  -870, -1050,  -870, -1940,  -870}
+    ,{ -1320, -1670, -1490, -1320, -1490}
+    }
+   ,{{ -1230, -1590, -1410, -1230, -1410}
+    ,{ -1230, -1590, -1410, -1230, -1410}
+    ,{ -1610, -2200, -2020, -1610, -2020}
+    ,{ -1230, -1590, -1410, -1230, -1410}
+    ,{ -1520, -1640, -1700, -1520, -1700}
+    }
+   }
+  ,{{{  -870,  -870,  -870,  -870,  -870}
+    ,{ -1040, -1040, -1040, -1040, -1040}
+    ,{ -1490, -1490, -1490, -1490, -1490}
+    ,{  -870,  -870,  -870,  -870,  -870}
+    ,{ -1490, -1490, -1490, -1490, -1490}
+    }
+   ,{{ -1040, -1040, -1040, -1040, -1040}
+    ,{ -1040, -1040, -1040, -1040, -1040}
+    ,{ -1490, -1490, -1490, -1490, -1490}
+    ,{ -1990, -2230, -1990, -2230, -1990}
+    ,{ -1490, -1490, -1490, -1490, -1490}
+    }
+   ,{{ -1410, -1410, -1410, -1410, -1410}
+    ,{ -1410, -1410, -1410, -1410, -1410}
+    ,{ -1710, -1710, -1710, -1710, -1710}
+    ,{ -1410, -1410, -1410, -1410, -1410}
+    ,{ -1710, -1710, -1710, -1710, -1710}
+    }
+   ,{{  -870,  -870,  -870,  -870,  -870}
+    ,{ -1520, -1760, -1520, -1760, -1520}
+    ,{ -1490, -1490, -1490, -1490, -1490}
+    ,{  -870,  -870,  -870,  -870,  -870}
+    ,{ -1490, -1490, -1490, -1490, -1490}
+    }
+   ,{{ -1410, -1410, -1410, -1410, -1410}
+    ,{ -1410, -1410, -1410, -1410, -1410}
+    ,{ -2020, -2020, -2020, -2020, -2020}
+    ,{ -1410, -1410, -1410, -1410, -1410}
+    ,{ -1700, -1700, -1700, -1700, -1700}
+    }
+   }
+  ,{{{   210, -1060,  -870,   210,  -870}
+    ,{   210, -1060, -1040,   210, -1040}
+    ,{  -240, -1490, -1490,  -240, -1490}
+    ,{  -160, -1420,  -870,  -160,  -870}
+    ,{  -240, -1490, -1490,  -240, -1490}
+    }
+   ,{{   210, -1060, -1040,   210, -1040}
+    ,{   210, -1060, -1040,   210, -1040}
+    ,{  -240, -1510, -1490,  -240, -1490}
+    ,{ -2230, -2250, -2230, -2230, -2230}
+    ,{  -240, -1510, -1490,  -240, -1490}
+    }
+   ,{{  -160, -1420, -1410,  -160, -1410}
+    ,{  -160, -1420, -1410,  -160, -1410}
+    ,{  -460, -1490, -1710,  -460, -1710}
+    ,{  -160, -1420, -1410,  -160, -1410}
+    ,{  -460, -1490, -1710,  -460, -1710}
+    }
+   ,{{  -240, -1510,  -870,  -240,  -870}
+    ,{ -1760, -1770, -1760, -1760, -1760}
+    ,{  -240, -1510, -1490,  -240, -1490}
+    ,{  -870, -2130,  -870, -2120,  -870}
+    ,{  -240, -1510, -1490,  -240, -1490}
+    }
+   ,{{  -160, -1420, -1410,  -160, -1410}
+    ,{  -160, -1420, -1410,  -160, -1410}
+    ,{  -770, -1800, -2020,  -770, -2020}
+    ,{  -160, -1420, -1410,  -160, -1410}
+    ,{ -1700, -1710, -1700, -1700, -1700}
+    }
+   }
+  ,{{{  -800,  -870,  -870,  -870,  -800}
+    ,{  -800, -1040, -1040, -1040,  -800}
+    ,{ -1490, -1490, -1490, -1490, -1490}
+    ,{  -870,  -870,  -870,  -870, -1410}
+    ,{ -1490, -1490, -1490, -1490, -1490}
+    }
+   ,{{  -800, -1040, -1040, -1040,  -800}
+    ,{  -800, -1040, -1040, -1040,  -800}
+    ,{ -1490, -1490, -1490, -1490, -1490}
+    ,{ -1990, -2230, -1990, -2230, -2230}
+    ,{ -1490, -1490, -1490, -1490, -1490}
+    }
+   ,{{ -1410, -1410, -1410, -1410, -1410}
+    ,{ -1410, -1410, -1410, -1410, -1410}
+    ,{ -1710, -1710, -1710, -1710, -1710}
+    ,{ -1410, -1410, -1410, -1410, -1410}
+    ,{ -1710, -1710, -1710, -1710, -1710}
+    }
+   ,{{  -870,  -870,  -870,  -870, -1490}
+    ,{ -1520, -1760, -1520, -1760, -1760}
+    ,{ -1490, -1490, -1490, -1490, -1490}
+    ,{  -870,  -870,  -870,  -870, -2120}
+    ,{ -1490, -1490, -1490, -1490, -1490}
+    }
+   ,{{ -1410, -1410, -1410, -1410, -1410}
+    ,{ -1410, -1410, -1410, -1410, -1410}
+    ,{ -2020, -2020, -2020, -2020, -2020}
+    ,{ -1410, -1410, -1410, -1410, -1410}
+    ,{ -1700, -1700, -1700, -1700, -1700}
+    }
+   }
+  }
+ ,{{{{  -710,  -710,  -710,  -710,  -710}
+    ,{  -710, -1780, -1540,  -710, -1540}
+    ,{  -710, -1730, -1960,  -710, -1960}
+    ,{  -710,  -710,  -710,  -710,  -710}
+    ,{  -710, -1730, -1960,  -710, -1960}
+    }
+   ,{{  -710, -1960, -1730,  -710, -1730}
+    ,{  -890, -2140, -2140,  -890, -1900}
+    ,{  -710, -1960, -1960,  -710, -1960}
+    ,{ -1730, -1970, -1730, -1800, -1730}
+    ,{  -710, -1960, -1960,  -710, -1960}
+    }
+   ,{{  -710, -1730, -1960,  -710, -1960}
+    ,{  -710, -1960, -1960,  -710, -1960}
+    ,{  -710, -1730, -1960,  -710, -1960}
+    ,{  -710, -1960, -1960,  -710, -1960}
+    ,{  -710, -1730, -1960,  -710, -1960}
+    }
+   ,{{  -710,  -710,  -710,  -710,  -710}
+    ,{ -1540, -1780, -1540, -1610, -1540}
+    ,{  -710, -1960, -1960,  -710, -1960}
+    ,{  -710,  -710,  -710,  -710,  -710}
+    ,{  -710, -1960, -1960,  -710, -1960}
+    }
+   ,{{  -710, -1730, -1960,  -710, -1960}
+    ,{  -710, -1960, -1960,  -710, -1960}
+    ,{  -710, -1730, -1960,  -710, -1960}
+    ,{  -710, -1960, -1960,  -710, -1960}
+    ,{ -1780, -1900, -1960, -1780, -1960}
+    }
+   }
+  ,{{{  -710,  -890,  -710, -1540,  -710}
+    ,{ -1610, -1960, -1780, -1610, -1780}
+    ,{ -1540, -2140, -1960, -1540, -1960}
+    ,{  -710,  -890,  -710, -1780,  -710}
+    ,{ -1540, -1900, -1960, -1540, -1960}
+    }
+   ,{{ -1780, -2140, -1960, -1780, -1960}
+    ,{ -1960, -2320, -2140, -1960, -2140}
+    ,{ -1780, -2140, -1960, -1780, -1960}
+    ,{ -1800, -2150, -1970, -1800, -1970}
+    ,{ -1780, -2140, -1960, -1780, -1960}
+    }
+   ,{{ -1540, -2140, -1960, -1540, -1960}
+    ,{ -1780, -2140, -1960, -1780, -1960}
+    ,{ -1540, -2140, -1960, -1540, -1960}
+    ,{ -1780, -2140, -1960, -1780, -1960}
+    ,{ -1540, -2140, -1960, -1540, -1960}
+    }
+   ,{{  -710,  -890,  -710, -1610,  -710}
+    ,{ -1610, -1960, -1780, -1610, -1780}
+    ,{ -1780, -2140, -1960, -1780, -1960}
+    ,{  -710,  -890,  -710, -1780,  -710}
+    ,{ -1780, -2140, -1960, -1780, -1960}
+    }
+   ,{{ -1540, -1900, -1960, -1540, -1960}
+    ,{ -1780, -2140, -1960, -1780, -1960}
+    ,{ -1540, -2140, -1960, -1540, -1960}
+    ,{ -1780, -2140, -1960, -1780, -1960}
+    ,{ -1780, -1900, -1960, -1780, -1960}
+    }
+   }
+  ,{{{  -710,  -710,  -710,  -710,  -710}
+    ,{ -1540, -1780, -1540, -1780, -1540}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    ,{  -710,  -710,  -710,  -710,  -710}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    }
+   ,{{ -1730, -1960, -1730, -1960, -1730}
+    ,{ -2140, -2140, -2140, -2140, -2140}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    ,{ -1730, -1970, -1730, -1970, -1730}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    }
+   ,{{ -1960, -1960, -1960, -1960, -1960}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    }
+   ,{{  -710,  -710,  -710,  -710,  -710}
+    ,{ -1540, -1780, -1540, -1780, -1540}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    ,{  -710,  -710,  -710,  -710,  -710}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    }
+   ,{{ -1960, -1960, -1960, -1960, -1960}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    }
+   }
+  ,{{{  -710, -1730,  -710,  -710,  -710}
+    ,{  -710, -1800, -1780,  -710, -1780}
+    ,{  -710, -1730, -1960,  -710, -1960}
+    ,{  -710, -1970,  -710,  -710,  -710}
+    ,{  -710, -1730, -1960,  -710, -1960}
+    }
+   ,{{  -710, -1970, -1960,  -710, -1960}
+    ,{  -890, -2150, -2140,  -890, -2140}
+    ,{  -710, -1970, -1960,  -710, -1960}
+    ,{ -1970, -1990, -1970, -1970, -1970}
+    ,{  -710, -1970, -1960,  -710, -1960}
+    }
+   ,{{  -710, -1730, -1960,  -710, -1960}
+    ,{  -710, -1970, -1960,  -710, -1960}
+    ,{  -710, -1730, -1960,  -710, -1960}
+    ,{  -710, -1970, -1960,  -710, -1960}
+    ,{  -710, -1730, -1960,  -710, -1960}
+    }
+   ,{{  -710, -1800,  -710,  -710,  -710}
+    ,{ -1780, -1800, -1780, -1780, -1780}
+    ,{  -710, -1970, -1960,  -710, -1960}
+    ,{  -710, -1970,  -710, -1960,  -710}
+    ,{  -710, -1970, -1960,  -710, -1960}
+    }
+   ,{{  -710, -1730, -1960,  -710, -1960}
+    ,{  -710, -1970, -1960,  -710, -1960}
+    ,{  -710, -1730, -1960,  -710, -1960}
+    ,{  -710, -1970, -1960,  -710, -1960}
+    ,{ -1960, -1970, -1960, -1960, -1960}
+    }
+   }
+  ,{{{  -710,  -710,  -710,  -710, -1780}
+    ,{ -1540, -1780, -1540, -1780, -1780}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    ,{  -710,  -710,  -710,  -710, -1960}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    }
+   ,{{ -1730, -1960, -1730, -1960, -1900}
+    ,{ -1900, -2140, -2140, -2140, -1900}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    ,{ -1730, -1970, -1730, -1970, -1970}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    }
+   ,{{ -1960, -1960, -1960, -1960, -1960}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    }
+   ,{{  -710,  -710,  -710,  -710, -1780}
+    ,{ -1540, -1780, -1540, -1780, -1780}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    ,{  -710,  -710,  -710,  -710, -1960}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    }
+   ,{{ -1960, -1960, -1960, -1960, -1960}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    ,{ -1960, -1960, -1960, -1960, -1960}
+    }
+   }
+  }
+ ,{{{{   360,   -70,  -150,   360,  -150}
+    ,{   360,   -70,  -890,   360,  -650}
+    ,{  -150, -1180, -1400,  -150, -1400}
+    ,{  -150,  -150,  -150,  -150,  -150}
+    ,{  -150, -1180, -1400,  -150, -1400}
+    }
+   ,{{   360,   -70,  -890,   360,  -650}
+    ,{   360,   -70,  -890,   360,  -650}
+    ,{  -150, -1400, -1400,  -150, -1400}
+    ,{ -1500, -1600, -1500, -1570, -1500}
+    ,{  -150, -1400, -1400,  -150, -1400}
+    }
+   ,{{  -150, -1180, -1400,  -150, -1400}
+    ,{  -150, -1400, -1400,  -150, -1400}
+    ,{  -150, -1180, -1400,  -150, -1400}
+    ,{  -150, -1400, -1400,  -150, -1400}
+    ,{  -150, -1180, -1400,  -150, -1400}
+    }
+   ,{{  -150,  -150,  -150,  -150,  -150}
+    ,{ -1670, -1910, -1670, -1740, -1670}
+    ,{  -150, -1400, -1400,  -150, -1400}
+    ,{  -150,  -150,  -150,  -150,  -150}
+    ,{  -150, -1400, -1400,  -150, -1400}
+    }
+   ,{{  -150, -1180, -1400,  -150, -1400}
+    ,{  -150, -1400, -1400,  -150, -1400}
+    ,{  -150, -1180, -1400,  -150, -1400}
+    ,{  -150, -1400, -1400,  -150, -1400}
+    ,{ -1230, -1340, -1400, -1230, -1400}
+    }
+   }
+  ,{{{   -30,   -70,  -150,   -30,  -150}
+    ,{   -30,   -70,  -890,   -30,  -890}
+    ,{  -990, -1580, -1400,  -990, -1400}
+    ,{  -150,  -330,  -150, -1230,  -150}
+    ,{  -990, -1340, -1400,  -990, -1400}
+    }
+   ,{{   -30,   -70,  -890,   -30,  -890}
+    ,{   -30,   -70,  -890,   -30,  -890}
+    ,{ -1230, -1580, -1400, -1230, -1400}
+    ,{ -1570, -1600, -1740, -1570, -1740}
+    ,{ -1230, -1580, -1400, -1230, -1400}
+    }
+   ,{{  -990, -1580, -1400,  -990, -1400}
+    ,{ -1230, -1580, -1400, -1230, -1400}
+    ,{  -990, -1580, -1400,  -990, -1400}
+    ,{ -1230, -1580, -1400, -1230, -1400}
+    ,{  -990, -1580, -1400,  -990, -1400}
+    }
+   ,{{  -150,  -330,  -150, -1230,  -150}
+    ,{ -1740, -2090, -1910, -1740, -1910}
+    ,{ -1230, -1580, -1400, -1230, -1400}
+    ,{  -150,  -330,  -150, -1230,  -150}
+    ,{ -1230, -1580, -1400, -1230, -1400}
+    }
+   ,{{  -990, -1340, -1400,  -990, -1400}
+    ,{ -1230, -1580, -1400, -1230, -1400}
+    ,{  -990, -1580, -1400,  -990, -1400}
+    ,{ -1230, -1580, -1400, -1230, -1400}
+    ,{ -1230, -1340, -1400, -1230, -1400}
+    }
+   }
+  ,{{{  -150,  -150,  -150,  -150,  -150}
+    ,{  -890,  -890,  -890,  -890,  -890}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{  -150,  -150,  -150,  -150,  -150}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   ,{{  -890,  -890,  -890,  -890,  -890}
+    ,{  -890,  -890,  -890,  -890,  -890}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1500, -1740, -1500, -1740, -1500}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   ,{{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   ,{{  -150,  -150,  -150,  -150,  -150}
+    ,{ -1670, -1910, -1670, -1910, -1670}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{  -150,  -150,  -150,  -150,  -150}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   ,{{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   }
+  ,{{{   360,  -910,  -150,   360,  -150}
+    ,{   360,  -910,  -890,   360,  -890}
+    ,{  -150, -1180, -1400,  -150, -1400}
+    ,{  -150, -1420,  -150,  -150,  -150}
+    ,{  -150, -1180, -1400,  -150, -1400}
+    }
+   ,{{   360,  -910,  -890,   360,  -890}
+    ,{   360,  -910,  -890,   360,  -890}
+    ,{  -150, -1420, -1400,  -150, -1400}
+    ,{ -1740, -3040, -1740, -1740, -1740}
+    ,{  -150, -1420, -1400,  -150, -1400}
+    }
+   ,{{  -150, -1180, -1400,  -150, -1400}
+    ,{  -150, -1420, -1400,  -150, -1400}
+    ,{  -150, -1180, -1400,  -150, -1400}
+    ,{  -150, -1420, -1400,  -150, -1400}
+    ,{  -150, -1180, -1400,  -150, -1400}
+    }
+   ,{{  -150, -1420,  -150,  -150,  -150}
+    ,{ -1910, -1930, -1910, -1910, -1910}
+    ,{  -150, -1420, -1400,  -150, -1400}
+    ,{  -150, -1420,  -150, -1400,  -150}
+    ,{  -150, -1420, -1400,  -150, -1400}
+    }
+   ,{{  -150, -1180, -1400,  -150, -1400}
+    ,{  -150, -1420, -1400,  -150, -1400}
+    ,{  -150, -1180, -1400,  -150, -1400}
+    ,{  -150, -1420, -1400,  -150, -1400}
+    ,{ -1400, -1420, -1400, -1400, -1400}
+    }
+   }
+  ,{{{  -150,  -150,  -150,  -150,  -650}
+    ,{  -650,  -890,  -890,  -890,  -650}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{  -150,  -150,  -150,  -150, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   ,{{  -650,  -890,  -890,  -890,  -650}
+    ,{  -650,  -890,  -890,  -890,  -650}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1500, -1740, -1500, -1740, -1740}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   ,{{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   ,{{  -150,  -150,  -150,  -150, -1400}
+    ,{ -1670, -1910, -1670, -1910, -1910}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{  -150,  -150,  -150,  -150, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   ,{{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   }
+  }
+ ,{{{{   940,   220,   220,   940,   220}
+    ,{   940,  -310,  -310,   940,   -70}
+    ,{   640,  -380,  -610,   640,  -610}
+    ,{   650,   220,   220,   650,   220}
+    ,{   640,  -380,  -610,   640,  -610}
+    }
+   ,{{   940,  -310,  -310,   940,   -70}
+    ,{   940,  -310,  -310,   940,   -70}
+    ,{   630,  -620,  -620,   630,  -620}
+    ,{ -1460, -1700, -1460, -1520, -1460}
+    ,{   630,  -620,  -620,   630,  -620}
+    }
+   ,{{   650,  -380,  -600,   650,  -600}
+    ,{   650,  -600,  -600,   650,  -600}
+    ,{   640,  -380,  -610,   640,  -610}
+    ,{   650,  -600,  -600,   650,  -600}
+    ,{   640,  -380,  -610,   640,  -610}
+    }
+   ,{{   630,   220,   220,   630,   220}
+    ,{ -1280, -1520, -1280, -1340, -1280}
+    ,{   630,  -620,  -620,   630,  -620}
+    ,{   220,   220,   220,   220,   220}
+    ,{   630,  -620,  -620,   630,  -620}
+    }
+   ,{{   650,  -380,  -600,   650,  -600}
+    ,{   650,  -600,  -600,   650,  -600}
+    ,{   640,  -380,  -610,   640,  -610}
+    ,{   650,  -600,  -600,   650,  -600}
+    ,{ -1410, -1530, -1590, -1410, -1590}
+    }
+   }
+  ,{{{   220,    40,   220,  -130,   220}
+    ,{  -130,  -490,  -310,  -130,  -310}
+    ,{  -190,  -790,  -610,  -190,  -610}
+    ,{   220,    40,   220,  -430,   220}
+    ,{  -190,  -790,  -610,  -190,  -610}
+    }
+   ,{{  -130,  -490,  -310,  -130,  -310}
+    ,{  -130,  -490,  -310,  -130,  -310}
+    ,{  -440,  -800,  -620,  -440,  -620}
+    ,{ -1520, -1880, -1700, -1520, -1700}
+    ,{  -440,  -800,  -620,  -440,  -620}
+    }
+   ,{{  -190,  -780,  -600,  -190,  -600}
+    ,{  -430,  -780,  -600,  -430,  -600}
+    ,{  -190,  -790,  -610,  -190,  -610}
+    ,{  -430,  -780,  -600,  -430,  -600}
+    ,{  -190,  -790,  -610,  -190,  -610}
+    }
+   ,{{   220,    40,   220,  -440,   220}
+    ,{ -1340, -1700, -1520, -1340, -1520}
+    ,{  -440,  -800,  -620,  -440,  -620}
+    ,{   220,    40,   220,  -850,   220}
+    ,{  -440,  -800,  -620,  -440,  -620}
+    }
+   ,{{  -190,  -780,  -600,  -190,  -600}
+    ,{  -430,  -780,  -600,  -430,  -600}
+    ,{  -190,  -790,  -610,  -190,  -610}
+    ,{  -430,  -780,  -600,  -430,  -600}
+    ,{ -1410, -1530, -1590, -1410, -1590}
+    }
+   }
+  ,{{{   220,   220,   220,   220,   220}
+    ,{  -310,  -310,  -310,  -310,  -310}
+    ,{  -610,  -610,  -610,  -610,  -610}
+    ,{   220,   220,   220,   220,   220}
+    ,{  -610,  -610,  -610,  -610,  -610}
+    }
+   ,{{  -310,  -310,  -310,  -310,  -310}
+    ,{  -310,  -310,  -310,  -310,  -310}
+    ,{  -620,  -620,  -620,  -620,  -620}
+    ,{ -1460, -1700, -1460, -1700, -1460}
+    ,{  -620,  -620,  -620,  -620,  -620}
+    }
+   ,{{  -600,  -600,  -600,  -600,  -600}
+    ,{  -600,  -600,  -600,  -600,  -600}
+    ,{  -610,  -610,  -610,  -610,  -610}
+    ,{  -600,  -600,  -600,  -600,  -600}
+    ,{  -610,  -610,  -610,  -610,  -610}
+    }
+   ,{{   220,   220,   220,   220,   220}
+    ,{ -1280, -1520, -1280, -1520, -1280}
+    ,{  -620,  -620,  -620,  -620,  -620}
+    ,{   220,   220,   220,   220,   220}
+    ,{  -620,  -620,  -620,  -620,  -620}
+    }
+   ,{{  -600,  -600,  -600,  -600,  -600}
+    ,{  -600,  -600,  -600,  -600,  -600}
+    ,{  -610,  -610,  -610,  -610,  -610}
+    ,{  -600,  -600,  -600,  -600,  -600}
+    ,{ -1590, -1590, -1590, -1590, -1590}
+    }
+   }
+  ,{{{   940,  -320,   220,   940,   220}
+    ,{   940,  -320,  -310,   940,  -310}
+    ,{   640,  -380,  -610,   640,  -610}
+    ,{   650,  -620,   220,   650,   220}
+    ,{   640,  -380,  -610,   640,  -610}
+    }
+   ,{{   940,  -320,  -310,   940,  -310}
+    ,{   940,  -320,  -310,   940,  -310}
+    ,{   630,  -630,  -620,   630,  -620}
+    ,{ -1700, -1710, -1700, -1700, -1700}
+    ,{   630,  -630,  -620,   630,  -620}
+    }
+   ,{{   650,  -380,  -600,   650,  -600}
+    ,{   650,  -620,  -600,   650,  -600}
+    ,{   640,  -380,  -610,   640,  -610}
+    ,{   650,  -620,  -600,   650,  -600}
+    ,{   640,  -380,  -610,   640,  -610}
+    }
+   ,{{   630,  -630,   220,   630,   220}
+    ,{ -1520, -1530, -1520, -1520, -1520}
+    ,{   630,  -630,  -620,   630,  -620}
+    ,{   220, -1040,   220, -1030,   220}
+    ,{   630,  -630,  -620,   630,  -620}
+    }
+   ,{{   650,  -380,  -600,   650,  -600}
+    ,{   650,  -620,  -600,   650,  -600}
+    ,{   640,  -380,  -610,   640,  -610}
+    ,{   650,  -620,  -600,   650,  -600}
+    ,{ -1590, -1600, -1590, -1590, -1590}
+    }
+   }
+  ,{{{   220,   220,   220,   220,   -70}
+    ,{   -70,  -310,  -310,  -310,   -70}
+    ,{  -610,  -610,  -610,  -610,  -610}
+    ,{   220,   220,   220,   220,  -600}
+    ,{  -610,  -610,  -610,  -610,  -610}
+    }
+   ,{{   -70,  -310,  -310,  -310,   -70}
+    ,{   -70,  -310,  -310,  -310,   -70}
+    ,{  -620,  -620,  -620,  -620,  -620}
+    ,{ -1460, -1700, -1460, -1700, -1700}
+    ,{  -620,  -620,  -620,  -620,  -620}
+    }
+   ,{{  -600,  -600,  -600,  -600,  -600}
+    ,{  -600,  -600,  -600,  -600,  -600}
+    ,{  -610,  -610,  -610,  -610,  -610}
+    ,{  -600,  -600,  -600,  -600,  -600}
+    ,{  -610,  -610,  -610,  -610,  -610}
+    }
+   ,{{   220,   220,   220,   220,  -620}
+    ,{ -1280, -1520, -1280, -1520, -1520}
+    ,{  -620,  -620,  -620,  -620,  -620}
+    ,{   220,   220,   220,   220, -1030}
+    ,{  -620,  -620,  -620,  -620,  -620}
+    }
+   ,{{  -600,  -600,  -600,  -600,  -600}
+    ,{  -600,  -600,  -600,  -600,  -600}
+    ,{  -610,  -610,  -610,  -610,  -610}
+    ,{  -600,  -600,  -600,  -600,  -600}
+    ,{ -1590, -1590, -1590, -1590, -1590}
+    }
+   }
+  }
+ ,{{{{  1010,   410,   410,  1010,   410}
+    ,{  1010,  -240,  -240,  1010,     0}
+    ,{   880,  -150,  -370,   880,  -370}
+    ,{   880,   410,   410,   880,   410}
+    ,{   750,  -280,  -500,   750,  -500}
+    }
+   ,{{  1010,  -240,  -240,  1010,     0}
+    ,{  1010,  -240,  -240,  1010,     0}
+    ,{   730,  -520,  -520,   730,  -520}
+    ,{ -1410, -1650, -1410, -1470, -1410}
+    ,{   730,  -520,  -520,   730,  -520}
+    }
+   ,{{   880,  -150,  -370,   880,  -370}
+    ,{   880,  -370,  -370,   880,  -370}
+    ,{   880,  -150,  -370,   880,  -370}
+    ,{   880,  -370,  -370,   880,  -370}
+    ,{   750,  -280,  -500,   750,  -500}
+    }
+   ,{{   730,   410,   410,   730,   410}
+    ,{ -1710, -1950, -1710, -1770, -1710}
+    ,{   730,  -520,  -520,   730,  -520}
+    ,{   410,   410,   410,   410,   410}
+    ,{   730,  -520,  -520,   730,  -520}
+    }
+   ,{{   880,  -370,  -370,   880,  -370}
+    ,{   880,  -370,  -370,   880,  -370}
+    ,{   440,  -590,  -810,   440,  -810}
+    ,{   880,  -370,  -370,   880,  -370}
+    ,{ -1140, -1250, -1310, -1140, -1310}
+    }
+   }
+  ,{{{   410,   230,   410,    40,   410}
+    ,{   -70,  -420,  -240,   -70,  -240}
+    ,{    40,  -550,  -370,    40,  -370}
+    ,{   410,   230,   410,  -200,   410}
+    ,{   -90,  -680,  -500,   -90,  -500}
+    }
+   ,{{   -70,  -420,  -240,   -70,  -240}
+    ,{   -70,  -420,  -240,   -70,  -240}
+    ,{  -350,  -700,  -520,  -350,  -520}
+    ,{ -1470, -1830, -1650, -1470, -1650}
+    ,{  -350,  -700,  -520,  -350,  -520}
+    }
+   ,{{    40,  -550,  -370,    40,  -370}
+    ,{  -200,  -550,  -370,  -200,  -370}
+    ,{    40,  -550,  -370,    40,  -370}
+    ,{  -200,  -550,  -370,  -200,  -370}
+    ,{   -90,  -680,  -500,   -90,  -500}
+    }
+   ,{{   410,   230,   410,  -350,   410}
+    ,{ -1770, -2130, -1950, -1770, -1950}
+    ,{  -350,  -700,  -520,  -350,  -520}
+    ,{   410,   230,   410,  -670,   410}
+    ,{  -350,  -700,  -520,  -350,  -520}
+    }
+   ,{{  -200,  -550,  -370,  -200,  -370}
+    ,{  -200,  -550,  -370,  -200,  -370}
+    ,{  -400,  -990,  -810,  -400,  -810}
+    ,{  -200,  -550,  -370,  -200,  -370}
+    ,{ -1140, -1250, -1310, -1140, -1310}
+    }
+   }
+  ,{{{   410,   410,   410,   410,   410}
+    ,{  -240,  -240,  -240,  -240,  -240}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{   410,   410,   410,   410,   410}
+    ,{  -500,  -500,  -500,  -500,  -500}
+    }
+   ,{{  -240,  -240,  -240,  -240,  -240}
+    ,{  -240,  -240,  -240,  -240,  -240}
+    ,{  -520,  -520,  -520,  -520,  -520}
+    ,{ -1410, -1650, -1410, -1650, -1410}
+    ,{  -520,  -520,  -520,  -520,  -520}
+    }
+   ,{{  -370,  -370,  -370,  -370,  -370}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{  -500,  -500,  -500,  -500,  -500}
+    }
+   ,{{   410,   410,   410,   410,   410}
+    ,{ -1710, -1950, -1710, -1950, -1710}
+    ,{  -520,  -520,  -520,  -520,  -520}
+    ,{   410,   410,   410,   410,   410}
+    ,{  -520,  -520,  -520,  -520,  -520}
+    }
+   ,{{  -370,  -370,  -370,  -370,  -370}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{  -810,  -810,  -810,  -810,  -810}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{ -1310, -1310, -1310, -1310, -1310}
+    }
+   }
+  ,{{{  1010,  -150,   410,  1010,   410}
+    ,{  1010,  -260,  -240,  1010,  -240}
+    ,{   880,  -150,  -370,   880,  -370}
+    ,{   880,  -390,   410,   880,   410}
+    ,{   750,  -280,  -500,   750,  -500}
+    }
+   ,{{  1010,  -260,  -240,  1010,  -240}
+    ,{  1010,  -260,  -240,  1010,  -240}
+    ,{   730,  -540,  -520,   730,  -520}
+    ,{ -1650, -1660, -1650, -1650, -1650}
+    ,{   730,  -540,  -520,   730,  -520}
+    }
+   ,{{   880,  -150,  -370,   880,  -370}
+    ,{   880,  -390,  -370,   880,  -370}
+    ,{   880,  -150,  -370,   880,  -370}
+    ,{   880,  -390,  -370,   880,  -370}
+    ,{   750,  -280,  -500,   750,  -500}
+    }
+   ,{{   730,  -540,   410,   730,   410}
+    ,{ -1950, -1960, -1950, -1950, -1950}
+    ,{   730,  -540,  -520,   730,  -520}
+    ,{   410,  -860,   410,  -840,   410}
+    ,{   730,  -540,  -520,   730,  -520}
+    }
+   ,{{   880,  -390,  -370,   880,  -370}
+    ,{   880,  -390,  -370,   880,  -370}
+    ,{   440,  -590,  -810,   440,  -810}
+    ,{   880,  -390,  -370,   880,  -370}
+    ,{ -1310, -1330, -1310, -1310, -1310}
+    }
+   }
+  ,{{{   410,   410,   410,   410,     0}
+    ,{     0,  -240,  -240,  -240,     0}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{   410,   410,   410,   410,  -370}
+    ,{  -500,  -500,  -500,  -500,  -500}
+    }
+   ,{{     0,  -240,  -240,  -240,     0}
+    ,{     0,  -240,  -240,  -240,     0}
+    ,{  -520,  -520,  -520,  -520,  -520}
+    ,{ -1410, -1650, -1410, -1650, -1650}
+    ,{  -520,  -520,  -520,  -520,  -520}
+    }
+   ,{{  -370,  -370,  -370,  -370,  -370}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{  -500,  -500,  -500,  -500,  -500}
+    }
+   ,{{   410,   410,   410,   410,  -520}
+    ,{ -1710, -1950, -1710, -1950, -1950}
+    ,{  -520,  -520,  -520,  -520,  -520}
+    ,{   410,   410,   410,   410,  -840}
+    ,{  -520,  -520,  -520,  -520,  -520}
+    }
+   ,{{  -370,  -370,  -370,  -370,  -370}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{  -810,  -810,  -810,  -810,  -810}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{ -1310, -1310, -1310, -1310, -1310}
+    }
+   }
+  }
+ ,{{{{  1010,   410,   410,  1010,   410}
+    ,{  1010,   -70,  -240,  1010,     0}
+    ,{   880,  -150,  -370,   880,  -370}
+    ,{   880,   410,   410,   880,   410}
+    ,{   750,  -280,  -500,   750,  -500}
+    }
+   ,{{  1010,   -70,  -240,  1010,     0}
+    ,{  1010,   -70,  -240,  1010,     0}
+    ,{   730,  -520,  -520,   730,  -520}
+    ,{ -1180, -1420, -1180, -1250, -1180}
+    ,{   730,  -520,  -520,   730,  -520}
+    }
+   ,{{   880,  -150,  -370,   880,  -370}
+    ,{   880,  -370,  -370,   880,  -370}
+    ,{   880,  -150,  -370,   880,  -370}
+    ,{   880,  -370,  -370,   880,  -370}
+    ,{   750,  -280,  -500,   750,  -500}
+    }
+   ,{{   730,   410,   410,   730,   410}
+    ,{ -1280, -1520, -1280, -1340, -1280}
+    ,{   730,  -520,  -520,   730,  -520}
+    ,{   410,   410,   410,   410,   410}
+    ,{   730,  -520,  -520,   730,  -520}
+    }
+   ,{{   880,  -370,  -370,   880,  -370}
+    ,{   880,  -370,  -370,   880,  -370}
+    ,{   640,  -380,  -610,   640,  -610}
+    ,{   880,  -370,  -370,   880,  -370}
+    ,{ -1140, -1250, -1310, -1140, -1310}
+    }
+   }
+  ,{{{   410,   230,   410,    40,   410}
+    ,{   -30,   -70,  -240,   -30,  -240}
+    ,{    40,  -550,  -370,    40,  -370}
+    ,{   410,   230,   410,  -200,   410}
+    ,{   -90,  -680,  -500,   -90,  -500}
+    }
+   ,{{   -30,   -70,  -240,   -30,  -240}
+    ,{   -30,   -70,  -240,   -30,  -240}
+    ,{  -350,  -700,  -520,  -350,  -520}
+    ,{ -1250, -1600, -1420, -1250, -1420}
+    ,{  -350,  -700,  -520,  -350,  -520}
+    }
+   ,{{    40,  -550,  -370,    40,  -370}
+    ,{  -200,  -550,  -370,  -200,  -370}
+    ,{    40,  -550,  -370,    40,  -370}
+    ,{  -200,  -550,  -370,  -200,  -370}
+    ,{   -90,  -680,  -500,   -90,  -500}
+    }
+   ,{{   410,   230,   410,  -350,   410}
+    ,{ -1340, -1700, -1520, -1340, -1520}
+    ,{  -350,  -700,  -520,  -350,  -520}
+    ,{   410,   230,   410,  -670,   410}
+    ,{  -350,  -700,  -520,  -350,  -520}
+    }
+   ,{{  -190,  -550,  -370,  -190,  -370}
+    ,{  -200,  -550,  -370,  -200,  -370}
+    ,{  -190,  -790,  -610,  -190,  -610}
+    ,{  -200,  -550,  -370,  -200,  -370}
+    ,{ -1140, -1250, -1310, -1140, -1310}
+    }
+   }
+  ,{{{   410,   410,   410,   410,   410}
+    ,{  -240,  -240,  -240,  -240,  -240}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{   410,   410,   410,   410,   410}
+    ,{  -500,  -500,  -500,  -500,  -500}
+    }
+   ,{{  -240,  -240,  -240,  -240,  -240}
+    ,{  -240,  -240,  -240,  -240,  -240}
+    ,{  -520,  -520,  -520,  -520,  -520}
+    ,{ -1180, -1420, -1180, -1420, -1180}
+    ,{  -520,  -520,  -520,  -520,  -520}
+    }
+   ,{{  -370,  -370,  -370,  -370,  -370}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{  -500,  -500,  -500,  -500,  -500}
+    }
+   ,{{   410,   410,   410,   410,   410}
+    ,{ -1280, -1520, -1280, -1520, -1280}
+    ,{  -520,  -520,  -520,  -520,  -520}
+    ,{   410,   410,   410,   410,   410}
+    ,{  -520,  -520,  -520,  -520,  -520}
+    }
+   ,{{  -370,  -370,  -370,  -370,  -370}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{  -610,  -610,  -610,  -610,  -610}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{ -1310, -1310, -1310, -1310, -1310}
+    }
+   }
+  ,{{{  1010,  -150,   410,  1010,   410}
+    ,{  1010,  -260,  -240,  1010,  -240}
+    ,{   880,  -150,  -370,   880,  -370}
+    ,{   880,  -390,   410,   880,   410}
+    ,{   750,  -280,  -500,   750,  -500}
+    }
+   ,{{  1010,  -260,  -240,  1010,  -240}
+    ,{  1010,  -260,  -240,  1010,  -240}
+    ,{   730,  -540,  -520,   730,  -520}
+    ,{ -1420, -1440, -1420, -1420, -1420}
+    ,{   730,  -540,  -520,   730,  -520}
+    }
+   ,{{   880,  -150,  -370,   880,  -370}
+    ,{   880,  -390,  -370,   880,  -370}
+    ,{   880,  -150,  -370,   880,  -370}
+    ,{   880,  -390,  -370,   880,  -370}
+    ,{   750,  -280,  -500,   750,  -500}
+    }
+   ,{{   730,  -540,   410,   730,   410}
+    ,{ -1520, -1530, -1520, -1520, -1520}
+    ,{   730,  -540,  -520,   730,  -520}
+    ,{   410,  -860,   410,  -840,   410}
+    ,{   730,  -540,  -520,   730,  -520}
+    }
+   ,{{   880,  -380,  -370,   880,  -370}
+    ,{   880,  -390,  -370,   880,  -370}
+    ,{   640,  -380,  -610,   640,  -610}
+    ,{   880,  -390,  -370,   880,  -370}
+    ,{ -1310, -1330, -1310, -1310, -1310}
+    }
+   }
+  ,{{{   410,   410,   410,   410,     0}
+    ,{     0,  -240,  -240,  -240,     0}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{   410,   410,   410,   410,  -370}
+    ,{  -500,  -500,  -500,  -500,  -500}
+    }
+   ,{{     0,  -240,  -240,  -240,     0}
+    ,{     0,  -240,  -240,  -240,     0}
+    ,{  -520,  -520,  -520,  -520,  -520}
+    ,{ -1180, -1420, -1180, -1420, -1420}
+    ,{  -520,  -520,  -520,  -520,  -520}
+    }
+   ,{{  -370,  -370,  -370,  -370,  -370}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{  -500,  -500,  -500,  -500,  -500}
+    }
+   ,{{   410,   410,   410,   410,  -520}
+    ,{ -1280, -1520, -1280, -1520, -1520}
+    ,{  -520,  -520,  -520,  -520,  -520}
+    ,{   410,   410,   410,   410,  -840}
+    ,{  -520,  -520,  -520,  -520,  -520}
+    }
+   ,{{  -370,  -370,  -370,  -370,  -370}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{  -610,  -610,  -610,  -610,  -610}
+    ,{  -370,  -370,  -370,  -370,  -370}
+    ,{ -1310, -1310, -1310, -1310, -1310}
+    }
+   }
+  }
+ }
+,{{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{   800,   200,  -310,   800,  -310}
+    ,{   740,     0,  -510,   740,  -410}
+    ,{   800,    50,  -450,   800,  -450}
+    ,{   740,   200,  -310,   740,  -310}
+    ,{   690,   -50,  -560,   690,  -560}
+    }
+   ,{{   600,  -140,  -630,   600,  -410}
+    ,{   600,  -140,  -650,   600,  -410}
+    ,{   290,  -450,  -960,   290,  -960}
+    ,{  -360,  -360,  -630,  -870,  -630}
+    ,{   290,  -450,  -960,   290,  -960}
+    }
+   ,{{   740,     0,  -510,   740,  -510}
+    ,{   740,     0,  -510,   740,  -510}
+    ,{   740,     0,  -510,   740,  -510}
+    ,{   740,     0,  -510,   740,  -510}
+    ,{   690,   -50,  -560,   690,  -560}
+    }
+   ,{{   290,   200,  -310,   290,  -310}
+    ,{  -640,  -640,  -910, -1150,  -910}
+    ,{   290,  -450,  -960,   290,  -960}
+    ,{   200,   200,  -310,  -310,  -310}
+    ,{   290,  -450,  -960,   290,  -960}
+    }
+   ,{{   800,    50,  -450,   800,  -450}
+    ,{   740,     0,  -510,   740,  -510}
+    ,{   800,    50,  -450,   800,  -450}
+    ,{   740,     0,  -510,   740,  -510}
+    ,{  -550,  -550, -1300, -1300, -1300}
+    }
+   }
+  ,{{{   200,   200,  -310,  -720,  -310}
+    ,{     0,     0,  -510, -1020,  -510}
+    ,{    50,    50,  -450,  -720,  -450}
+    ,{   200,   200,  -310, -1020,  -310}
+    ,{   -50,   -50,  -560,  -830,  -560}
+    }
+   ,{{  -140,  -140,  -650, -1160,  -650}
+    ,{  -140,  -140,  -650, -1160,  -650}
+    ,{  -450,  -450,  -960, -1470,  -960}
+    ,{  -360,  -360,  -870, -1380,  -870}
+    ,{  -450,  -450,  -960, -1470,  -960}
+    }
+   ,{{     0,     0,  -510,  -780,  -510}
+    ,{     0,     0,  -510, -1020,  -510}
+    ,{     0,     0,  -510,  -780,  -510}
+    ,{     0,     0,  -510, -1020,  -510}
+    ,{   -50,   -50,  -560,  -830,  -560}
+    }
+   ,{{   200,   200,  -310, -1470,  -310}
+    ,{  -640,  -640, -1150, -1660, -1150}
+    ,{  -450,  -450,  -960, -1470,  -960}
+    ,{   200,   200,  -310, -2070,  -310}
+    ,{  -450,  -450,  -960, -1470,  -960}
+    }
+   ,{{    50,    50,  -450,  -720,  -450}
+    ,{     0,     0,  -510, -1020,  -510}
+    ,{    50,    50,  -450,  -720,  -450}
+    ,{     0,     0,  -510, -1020,  -510}
+    ,{  -550,  -550, -1300, -1810, -1300}
+    }
+   }
+  ,{{{  -310,  -310,  -310,  -310,  -310}
+    ,{  -510,  -510,  -510,  -510,  -510}
+    ,{  -450,  -450,  -450,  -450,  -450}
+    ,{  -310,  -310,  -310,  -310,  -310}
+    ,{  -560,  -560,  -560,  -560,  -560}
+    }
+   ,{{  -630,  -650,  -630,  -650,  -630}
+    ,{  -650,  -650,  -650,  -650,  -650}
+    ,{  -960,  -960,  -960,  -960,  -960}
+    ,{  -630,  -870,  -630,  -870,  -630}
+    ,{  -960,  -960,  -960,  -960,  -960}
+    }
+   ,{{  -510,  -510,  -510,  -510,  -510}
+    ,{  -510,  -510,  -510,  -510,  -510}
+    ,{  -510,  -510,  -510,  -510,  -510}
+    ,{  -510,  -510,  -510,  -510,  -510}
+    ,{  -560,  -560,  -560,  -560,  -560}
+    }
+   ,{{  -310,  -310,  -310,  -310,  -310}
+    ,{  -910, -1150,  -910, -1150,  -910}
+    ,{  -960,  -960,  -960,  -960,  -960}
+    ,{  -310,  -310,  -310,  -310,  -310}
+    ,{  -960,  -960,  -960,  -960,  -960}
+    }
+   ,{{  -450,  -450,  -450,  -450,  -450}
+    ,{  -510,  -510,  -510,  -510,  -510}
+    ,{  -450,  -450,  -450,  -450,  -450}
+    ,{  -510,  -510,  -510,  -510,  -510}
+    ,{ -1300, -1300, -1300, -1300, -1300}
+    }
+   }
+  ,{{{   800,  -550,  -310,   800,  -310}
+    ,{   740,  -850,  -510,   740,  -510}
+    ,{   800,  -550,  -450,   800,  -450}
+    ,{   740,  -850,  -310,   740,  -310}
+    ,{   690,  -660,  -560,   690,  -560}
+    }
+   ,{{   600,  -990,  -650,   600,  -650}
+    ,{   600,  -990,  -650,   600,  -650}
+    ,{   290, -1300,  -960,   290,  -960}
+    ,{  -870, -1210,  -870,  -870,  -870}
+    ,{   290, -1300,  -960,   290,  -960}
+    }
+   ,{{   740,  -610,  -510,   740,  -510}
+    ,{   740,  -850,  -510,   740,  -510}
+    ,{   740,  -610,  -510,   740,  -510}
+    ,{   740,  -850,  -510,   740,  -510}
+    ,{   690,  -660,  -560,   690,  -560}
+    }
+   ,{{   290, -1300,  -310,   290,  -310}
+    ,{ -1150, -1490, -1150, -1150, -1150}
+    ,{   290, -1300,  -960,   290,  -960}
+    ,{  -310, -1900,  -310, -1560,  -310}
+    ,{   290, -1300,  -960,   290,  -960}
+    }
+   ,{{   800,  -550,  -450,   800,  -450}
+    ,{   740,  -850,  -510,   740,  -510}
+    ,{   800,  -550,  -450,   800,  -450}
+    ,{   740,  -850,  -510,   740,  -510}
+    ,{ -1300, -1640, -1300, -1300, -1300}
+    }
+   }
+  ,{{{  -310,  -310,  -310,  -310,  -410}
+    ,{  -410,  -510,  -510,  -510,  -410}
+    ,{  -450,  -450,  -450,  -450,  -450}
+    ,{  -310,  -310,  -310,  -310,  -510}
+    ,{  -560,  -560,  -560,  -560,  -560}
+    }
+   ,{{  -410,  -650,  -630,  -650,  -410}
+    ,{  -410,  -650,  -650,  -650,  -410}
+    ,{  -960,  -960,  -960,  -960,  -960}
+    ,{  -630,  -870,  -630,  -870,  -870}
+    ,{  -960,  -960,  -960,  -960,  -960}
+    }
+   ,{{  -510,  -510,  -510,  -510,  -510}
+    ,{  -510,  -510,  -510,  -510,  -510}
+    ,{  -510,  -510,  -510,  -510,  -510}
+    ,{  -510,  -510,  -510,  -510,  -510}
+    ,{  -560,  -560,  -560,  -560,  -560}
+    }
+   ,{{  -310,  -310,  -310,  -310,  -960}
+    ,{  -910, -1150,  -910, -1150, -1150}
+    ,{  -960,  -960,  -960,  -960,  -960}
+    ,{  -310,  -310,  -310,  -310, -1560}
+    ,{  -960,  -960,  -960,  -960,  -960}
+    }
+   ,{{  -450,  -450,  -450,  -450,  -450}
+    ,{  -510,  -510,  -510,  -510,  -510}
+    ,{  -450,  -450,  -450,  -450,  -450}
+    ,{  -510,  -510,  -510,  -510,  -510}
+    ,{ -1300, -1300, -1300, -1300, -1300}
+    }
+   }
+  }
+ ,{{{{   760,   200,  -310,   760,  -250}
+    ,{   760,  -340,  -490,   760,  -250}
+    ,{   310,  -430,  -940,   310,  -940}
+    ,{   400,   200,  -310,   400,  -310}
+    ,{   310,  -390,  -940,   310,  -940}
+    }
+   ,{{   760,  -430,  -490,   760,  -250}
+    ,{   760,  -490,  -490,   760,  -250}
+    ,{   310,  -430,  -940,   310,  -940}
+    ,{ -1170, -1170, -1440, -1680, -1440}
+    ,{   310,  -430,  -940,   310,  -940}
+    }
+   ,{{   400,  -340,  -850,   400,  -850}
+    ,{   400,  -340,  -850,   400,  -850}
+    ,{    90,  -650, -1160,    90, -1160}
+    ,{   400,  -340,  -850,   400,  -850}
+    ,{    90,  -650, -1160,    90, -1160}
+    }
+   ,{{   310,   200,  -310,   310,  -310}
+    ,{  -690,  -690,  -960, -1200,  -960}
+    ,{   310,  -430,  -940,   310,  -940}
+    ,{   200,   200,  -310,  -310,  -310}
+    ,{   310,  -430,  -940,   310,  -940}
+    }
+   ,{{   400,  -340,  -850,   400,  -850}
+    ,{   400,  -340,  -850,   400,  -850}
+    ,{  -220,  -960, -1470,  -220, -1470}
+    ,{   400,  -340,  -850,   400,  -850}
+    ,{  -390,  -390, -1140, -1140, -1140}
+    }
+   }
+  ,{{{   200,   200,  -310, -1000,  -310}
+    ,{  -340,  -340,  -490, -1000,  -490}
+    ,{  -430,  -430,  -940, -1430,  -940}
+    ,{   200,   200,  -310, -1360,  -310}
+    ,{  -390,  -390,  -940, -1430,  -940}
+    }
+   ,{{  -430,  -430,  -490, -1000,  -490}
+    ,{  -490, -2040,  -490, -1000,  -490}
+    ,{  -430,  -430,  -940, -1450,  -940}
+    ,{ -1170, -1170, -1680, -2190, -1680}
+    ,{  -430,  -430,  -940, -1450,  -940}
+    }
+   ,{{  -340,  -340,  -850, -1360,  -850}
+    ,{  -340,  -340,  -850, -1360,  -850}
+    ,{  -650,  -650, -1160, -1430, -1160}
+    ,{  -340,  -340,  -850, -1360,  -850}
+    ,{  -650,  -650, -1160, -1430, -1160}
+    }
+   ,{{   200,   200,  -310, -1450,  -310}
+    ,{  -690,  -690, -1200, -1710, -1200}
+    ,{  -430,  -430,  -940, -1450,  -940}
+    ,{   200,   200,  -310, -2070,  -310}
+    ,{  -430,  -430,  -940, -1450,  -940}
+    }
+   ,{{  -340,  -340,  -850, -1360,  -850}
+    ,{  -340,  -340,  -850, -1360,  -850}
+    ,{  -960,  -960, -1470, -1740, -1470}
+    ,{  -340,  -340,  -850, -1360,  -850}
+    ,{  -390,  -390, -1140, -1650, -1140}
+    }
+   }
+  ,{{{  -310,  -310,  -310,  -310,  -310}
+    ,{  -490,  -490,  -490,  -490,  -490}
+    ,{  -940,  -940,  -940,  -940,  -940}
+    ,{  -310,  -310,  -310,  -310,  -310}
+    ,{  -940,  -940,  -940,  -940,  -940}
+    }
+   ,{{  -490,  -490,  -490,  -490,  -490}
+    ,{  -490,  -490,  -490,  -490,  -490}
+    ,{  -940,  -940,  -940,  -940,  -940}
+    ,{ -1440, -1680, -1440, -1680, -1440}
+    ,{  -940,  -940,  -940,  -940,  -940}
+    }
+   ,{{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{ -1160, -1160, -1160, -1160, -1160}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{ -1160, -1160, -1160, -1160, -1160}
+    }
+   ,{{  -310,  -310,  -310,  -310,  -310}
+    ,{  -960, -1200,  -960, -1200,  -960}
+    ,{  -940,  -940,  -940,  -940,  -940}
+    ,{  -310,  -310,  -310,  -310,  -310}
+    ,{  -940,  -940,  -940,  -940,  -940}
+    }
+   ,{{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{ -1470, -1470, -1470, -1470, -1470}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{ -1140, -1140, -1140, -1140, -1140}
+    }
+   }
+  ,{{{   760,  -830,  -310,   760,  -310}
+    ,{   760,  -830,  -490,   760,  -490}
+    ,{   310, -1260,  -940,   310,  -940}
+    ,{   400, -1190,  -310,   400,  -310}
+    ,{   310, -1260,  -940,   310,  -940}
+    }
+   ,{{   760,  -830,  -490,   760,  -490}
+    ,{   760,  -830,  -490,   760,  -490}
+    ,{   310, -1280,  -940,   310,  -940}
+    ,{ -1680, -2020, -1680, -1680, -1680}
+    ,{   310, -1280,  -940,   310,  -940}
+    }
+   ,{{   400, -1190,  -850,   400,  -850}
+    ,{   400, -1190,  -850,   400,  -850}
+    ,{    90, -1260, -1160,    90, -1160}
+    ,{   400, -1190,  -850,   400,  -850}
+    ,{    90, -1260, -1160,    90, -1160}
+    }
+   ,{{   310, -1280,  -310,   310,  -310}
+    ,{ -1200, -1540, -1200, -1200, -1200}
+    ,{   310, -1280,  -940,   310,  -940}
+    ,{  -310, -1900,  -310, -1560,  -310}
+    ,{   310, -1280,  -940,   310,  -940}
+    }
+   ,{{   400, -1190,  -850,   400,  -850}
+    ,{   400, -1190,  -850,   400,  -850}
+    ,{  -220, -1570, -1470,  -220, -1470}
+    ,{   400, -1190,  -850,   400,  -850}
+    ,{ -1140, -1480, -1140, -1140, -1140}
+    }
+   }
+  ,{{{  -250,  -310,  -310,  -310,  -250}
+    ,{  -250,  -490,  -490,  -490,  -250}
+    ,{  -940,  -940,  -940,  -940,  -940}
+    ,{  -310,  -310,  -310,  -310,  -850}
+    ,{  -940,  -940,  -940,  -940,  -940}
+    }
+   ,{{  -250,  -490,  -490,  -490,  -250}
+    ,{  -250,  -490,  -490,  -490,  -250}
+    ,{  -940,  -940,  -940,  -940,  -940}
+    ,{ -1440, -1680, -1440, -1680, -1680}
+    ,{  -940,  -940,  -940,  -940,  -940}
+    }
+   ,{{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{ -1160, -1160, -1160, -1160, -1160}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{ -1160, -1160, -1160, -1160, -1160}
+    }
+   ,{{  -310,  -310,  -310,  -310,  -940}
+    ,{  -960, -1200,  -960, -1200, -1200}
+    ,{  -940,  -940,  -940,  -940,  -940}
+    ,{  -310,  -310,  -310,  -310, -1560}
+    ,{  -940,  -940,  -940,  -940,  -940}
+    }
+   ,{{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{ -1470, -1470, -1470, -1470, -1470}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{ -1140, -1140, -1140, -1140, -1140}
+    }
+   }
+  }
+ ,{{{{   360,   360,  -150,  -150,  -150}
+    ,{   -30,   -30,  -990,  -150,  -990}
+    ,{  -150,  -890, -1400,  -150, -1400}
+    ,{   360,   360,  -150,  -150,  -150}
+    ,{  -150,  -650, -1400,  -150, -1400}
+    }
+   ,{{   -70,   -70, -1180,  -150, -1180}
+    ,{   -70,   -70, -1580,  -330, -1340}
+    ,{  -150,  -890, -1400,  -150, -1400}
+    ,{  -910,  -910, -1180, -1420, -1180}
+    ,{  -150,  -890, -1400,  -150, -1400}
+    }
+   ,{{  -150,  -890, -1400,  -150, -1400}
+    ,{  -150,  -890, -1400,  -150, -1400}
+    ,{  -150,  -890, -1400,  -150, -1400}
+    ,{  -150,  -890, -1400,  -150, -1400}
+    ,{  -150,  -890, -1400,  -150, -1400}
+    }
+   ,{{   360,   360,  -150,  -150,  -150}
+    ,{   -30,   -30,  -990, -1230,  -990}
+    ,{  -150,  -890, -1400,  -150, -1400}
+    ,{   360,   360,  -150,  -150,  -150}
+    ,{  -150,  -890, -1400,  -150, -1400}
+    }
+   ,{{  -150,  -650, -1400,  -150, -1400}
+    ,{  -150,  -890, -1400,  -150, -1400}
+    ,{  -150,  -890, -1400,  -150, -1400}
+    ,{  -150,  -890, -1400,  -150, -1400}
+    ,{  -650,  -650, -1400, -1400, -1400}
+    }
+   }
+  ,{{{   360,   360,  -150, -1670,  -150}
+    ,{   -30,   -30, -1230, -1740, -1230}
+    ,{  -890,  -890, -1400, -1670, -1400}
+    ,{   360,   360,  -150, -1910,  -150}
+    ,{  -650,  -650, -1400, -1670, -1400}
+    }
+   ,{{   -70,   -70, -1400, -1910, -1400}
+    ,{   -70,   -70, -1580, -2090, -1580}
+    ,{  -890,  -890, -1400, -1910, -1400}
+    ,{  -910,  -910, -1420, -1930, -1420}
+    ,{  -890,  -890, -1400, -1910, -1400}
+    }
+   ,{{  -890,  -890, -1400, -1670, -1400}
+    ,{  -890,  -890, -1400, -1910, -1400}
+    ,{  -890,  -890, -1400, -1670, -1400}
+    ,{  -890,  -890, -1400, -1910, -1400}
+    ,{  -890,  -890, -1400, -1670, -1400}
+    }
+   ,{{   360,   360,  -150, -1740,  -150}
+    ,{   -30,   -30, -1230, -1740, -1230}
+    ,{  -890,  -890, -1400, -1910, -1400}
+    ,{   360,   360,  -150, -1910,  -150}
+    ,{  -890,  -890, -1400, -1910, -1400}
+    }
+   ,{{  -650,  -650, -1400, -1670, -1400}
+    ,{  -890,  -890, -1400, -1910, -1400}
+    ,{  -890,  -890, -1400, -1670, -1400}
+    ,{  -890,  -890, -1400, -1910, -1400}
+    ,{  -650,  -650, -1400, -1910, -1400}
+    }
+   }
+  ,{{{  -150,  -150,  -150,  -150,  -150}
+    ,{  -990, -1230,  -990, -1230,  -990}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{  -150,  -150,  -150,  -150,  -150}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   ,{{ -1180, -1400, -1180, -1400, -1180}
+    ,{ -1580, -1580, -1580, -1580, -1580}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1180, -1420, -1180, -1420, -1180}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   ,{{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   ,{{  -150,  -150,  -150,  -150,  -150}
+    ,{  -990, -1230,  -990, -1230,  -990}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{  -150,  -150,  -150,  -150,  -150}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   ,{{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   }
+  ,{{{  -150, -1500,  -150,  -150,  -150}
+    ,{  -150, -1570, -1230,  -150, -1230}
+    ,{  -150, -1500, -1400,  -150, -1400}
+    ,{  -150, -1740,  -150,  -150,  -150}
+    ,{  -150, -1500, -1400,  -150, -1400}
+    }
+   ,{{  -150, -1600, -1400,  -150, -1400}
+    ,{  -330, -1600, -1580,  -330, -1580}
+    ,{  -150, -1740, -1400,  -150, -1400}
+    ,{ -1420, -3040, -1420, -1420, -1420}
+    ,{  -150, -1740, -1400,  -150, -1400}
+    }
+   ,{{  -150, -1500, -1400,  -150, -1400}
+    ,{  -150, -1740, -1400,  -150, -1400}
+    ,{  -150, -1500, -1400,  -150, -1400}
+    ,{  -150, -1740, -1400,  -150, -1400}
+    ,{  -150, -1500, -1400,  -150, -1400}
+    }
+   ,{{  -150, -1570,  -150,  -150,  -150}
+    ,{ -1230, -1570, -1230, -1230, -1230}
+    ,{  -150, -1740, -1400,  -150, -1400}
+    ,{  -150, -1740,  -150, -1400,  -150}
+    ,{  -150, -1740, -1400,  -150, -1400}
+    }
+   ,{{  -150, -1500, -1400,  -150, -1400}
+    ,{  -150, -1740, -1400,  -150, -1400}
+    ,{  -150, -1500, -1400,  -150, -1400}
+    ,{  -150, -1740, -1400,  -150, -1400}
+    ,{ -1400, -1740, -1400, -1400, -1400}
+    }
+   }
+  ,{{{  -150,  -150,  -150,  -150, -1230}
+    ,{  -990, -1230,  -990, -1230, -1230}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{  -150,  -150,  -150,  -150, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   ,{{ -1180, -1400, -1180, -1400, -1340}
+    ,{ -1340, -1580, -1580, -1580, -1340}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1180, -1420, -1180, -1420, -1420}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   ,{{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   ,{{  -150,  -150,  -150,  -150, -1230}
+    ,{  -990, -1230,  -990, -1230, -1230}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{  -150,  -150,  -150,  -150, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   ,{{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    ,{ -1400, -1400, -1400, -1400, -1400}
+    }
+   }
+  }
+ ,{{{{   910,   910,   400,   910,   400}
+    ,{   910,   170,  -340,   910,  -100}
+    ,{   400,  -340,  -850,   400,  -850}
+    ,{   910,   910,   400,   400,   400}
+    ,{   400,  -100,  -850,   400,  -850}
+    }
+   ,{{   910,   170,  -340,   910,  -100}
+    ,{   910,   170,  -340,   910,  -100}
+    ,{   400,  -340,  -850,   400,  -850}
+    ,{  -680,  -680,  -950, -1190,  -950}
+    ,{   400,  -340,  -850,   400,  -850}
+    }
+   ,{{   400,  -340,  -850,   400,  -850}
+    ,{   400,  -340,  -850,   400,  -850}
+    ,{   400,  -340,  -850,   400,  -850}
+    ,{   400,  -340,  -850,   400,  -850}
+    ,{   400,  -340,  -850,   400,  -850}
+    }
+   ,{{   910,   910,   400,   400,   400}
+    ,{  -850,  -850, -1120, -1360, -1120}
+    ,{   400,  -340,  -850,   400,  -850}
+    ,{   910,   910,   400,   400,   400}
+    ,{   400,  -340,  -850,   400,  -850}
+    }
+   ,{{   400,  -100,  -850,   400,  -850}
+    ,{   400,  -340,  -850,   400,  -850}
+    ,{   400,  -340,  -850,   400,  -850}
+    ,{   400,  -340,  -850,   400,  -850}
+    ,{  -100,  -100,  -850,  -850,  -850}
+    }
+   }
+  ,{{{   910,   910,   400,  -850,   400}
+    ,{   170,   170,  -340,  -850,  -340}
+    ,{  -340,  -340,  -850, -1120,  -850}
+    ,{   910,   910,   400, -1360,   400}
+    ,{  -100,  -100,  -850, -1120,  -850}
+    }
+   ,{{   170,   170,  -340,  -850,  -340}
+    ,{   170,   170,  -340,  -850,  -340}
+    ,{  -340,  -340,  -850, -1360,  -850}
+    ,{  -680,  -680, -1190, -1700, -1190}
+    ,{  -340,  -340,  -850, -1360,  -850}
+    }
+   ,{{  -340,  -340,  -850, -1120,  -850}
+    ,{  -340,  -340,  -850, -1360,  -850}
+    ,{  -340,  -340,  -850, -1120,  -850}
+    ,{  -340,  -340,  -850, -1360,  -850}
+    ,{  -340,  -340,  -850, -1120,  -850}
+    }
+   ,{{   910,   910,   400, -1360,   400}
+    ,{  -850,  -850, -1360, -1870, -1360}
+    ,{  -340,  -340,  -850, -1360,  -850}
+    ,{   910,   910,   400, -1360,   400}
+    ,{  -340,  -340,  -850, -1360,  -850}
+    }
+   ,{{  -100,  -100,  -850, -1120,  -850}
+    ,{  -340,  -340,  -850, -1360,  -850}
+    ,{  -340,  -340,  -850, -1120,  -850}
+    ,{  -340,  -340,  -850, -1360,  -850}
+    ,{  -100,  -100,  -850, -1360,  -850}
+    }
+   }
+  ,{{{   400,   400,   400,   400,   400}
+    ,{  -340,  -340,  -340,  -340,  -340}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{   400,   400,   400,   400,   400}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    }
+   ,{{  -340,  -340,  -340,  -340,  -340}
+    ,{  -340,  -340,  -340,  -340,  -340}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{  -950, -1190,  -950, -1190,  -950}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    }
+   ,{{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    }
+   ,{{   400,   400,   400,   400,   400}
+    ,{ -1120, -1360, -1120, -1360, -1120}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{   400,   400,   400,   400,   400}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    }
+   ,{{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    }
+   }
+  ,{{{   910,  -680,   400,   910,   400}
+    ,{   910,  -680,  -340,   910,  -340}
+    ,{   400,  -950,  -850,   400,  -850}
+    ,{   400, -1190,   400,   400,   400}
+    ,{   400,  -950,  -850,   400,  -850}
+    }
+   ,{{   910,  -680,  -340,   910,  -340}
+    ,{   910,  -680,  -340,   910,  -340}
+    ,{   400, -1190,  -850,   400,  -850}
+    ,{ -1190, -1530, -1190, -1190, -1190}
+    ,{   400, -1190,  -850,   400,  -850}
+    }
+   ,{{   400,  -950,  -850,   400,  -850}
+    ,{   400, -1190,  -850,   400,  -850}
+    ,{   400,  -950,  -850,   400,  -850}
+    ,{   400, -1190,  -850,   400,  -850}
+    ,{   400,  -950,  -850,   400,  -850}
+    }
+   ,{{   400, -1190,   400,   400,   400}
+    ,{ -1360, -1700, -1360, -1360, -1360}
+    ,{   400, -1190,  -850,   400,  -850}
+    ,{   400, -1190,   400,  -850,   400}
+    ,{   400, -1190,  -850,   400,  -850}
+    }
+   ,{{   400,  -950,  -850,   400,  -850}
+    ,{   400, -1190,  -850,   400,  -850}
+    ,{   400,  -950,  -850,   400,  -850}
+    ,{   400, -1190,  -850,   400,  -850}
+    ,{  -850, -1190,  -850,  -850,  -850}
+    }
+   }
+  ,{{{   400,   400,   400,   400,  -100}
+    ,{  -100,  -340,  -340,  -340,  -100}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{   400,   400,   400,   400,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    }
+   ,{{  -100,  -340,  -340,  -340,  -100}
+    ,{  -100,  -340,  -340,  -340,  -100}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{  -950, -1190,  -950, -1190, -1190}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    }
+   ,{{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    }
+   ,{{   400,   400,   400,   400,  -850}
+    ,{ -1120, -1360, -1120, -1360, -1360}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{   400,   400,   400,   400,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    }
+   ,{{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    ,{  -850,  -850,  -850,  -850,  -850}
+    }
+   }
+  }
+ ,{{{{  1490,  1280,   780,  1490,   780}
+    ,{  1490,   750,   240,  1490,   480}
+    ,{  1200,   450,   -50,  1200,   -50}
+    ,{  1280,  1280,   780,  1200,   780}
+    ,{  1200,   450,   -50,  1200,   -50}
+    }
+   ,{{  1490,   750,   240,  1490,   480}
+    ,{  1490,   750,   240,  1490,   480}
+    ,{  1190,   440,   -60,  1190,   -60}
+    ,{  -630,  -630,  -900, -1140,  -900}
+    ,{  1190,   440,   -60,  1190,   -60}
+    }
+   ,{{  1200,   460,   -50,  1200,   -50}
+    ,{  1200,   460,   -50,  1200,   -50}
+    ,{  1200,   450,   -50,  1200,   -50}
+    ,{  1200,   460,   -50,  1200,   -50}
+    ,{  1200,   450,   -50,  1200,   -50}
+    }
+   ,{{  1280,  1280,   780,  1190,   780}
+    ,{  -450,  -450,  -720,  -960,  -720}
+    ,{  1190,   440,   -60,  1190,   -60}
+    ,{  1280,  1280,   780,   780,   780}
+    ,{  1190,   440,   -60,  1190,   -60}
+    }
+   ,{{  1200,   460,   -50,  1200,   -50}
+    ,{  1200,   460,   -50,  1200,   -50}
+    ,{  1200,   450,   -50,  1200,   -50}
+    ,{  1200,   460,   -50,  1200,   -50}
+    ,{  -280,  -280, -1030, -1030, -1030}
+    }
+   }
+  ,{{{  1280,  1280,   780,  -260,   780}
+    ,{   750,   750,   240,  -260,   240}
+    ,{   450,   450,   -50,  -320,   -50}
+    ,{  1280,  1280,   780,  -560,   780}
+    ,{   450,   450,   -50,  -320,   -50}
+    }
+   ,{{   750,   750,   240,  -260,   240}
+    ,{   750,   750,   240,  -260,   240}
+    ,{   440,   440,   -60,  -570,   -60}
+    ,{  -630,  -630, -1140, -1650, -1140}
+    ,{   440,   440,   -60,  -570,   -60}
+    }
+   ,{{   460,   460,   -50,  -320,   -50}
+    ,{   460,   460,   -50,  -560,   -50}
+    ,{   450,   450,   -50,  -320,   -50}
+    ,{   460,   460,   -50,  -560,   -50}
+    ,{   450,   450,   -50,  -320,   -50}
+    }
+   ,{{  1280,  1280,   780,  -570,   780}
+    ,{  -450,  -450,  -960, -1470,  -960}
+    ,{   440,   440,   -60,  -570,   -60}
+    ,{  1280,  1280,   780,  -980,   780}
+    ,{   440,   440,   -60,  -570,   -60}
+    }
+   ,{{   460,   460,   -50,  -320,   -50}
+    ,{   460,   460,   -50,  -560,   -50}
+    ,{   450,   450,   -50,  -320,   -50}
+    ,{   460,   460,   -50,  -560,   -50}
+    ,{  -280,  -280, -1030, -1540, -1030}
+    }
+   }
+  ,{{{   780,   780,   780,   780,   780}
+    ,{   240,   240,   240,   240,   240}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    ,{   780,   780,   780,   780,   780}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    }
+   ,{{   240,   240,   240,   240,   240}
+    ,{   240,   240,   240,   240,   240}
+    ,{   -60,   -60,   -60,   -60,   -60}
+    ,{  -900, -1140,  -900, -1140,  -900}
+    ,{   -60,   -60,   -60,   -60,   -60}
+    }
+   ,{{   -50,   -50,   -50,   -50,   -50}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    }
+   ,{{   780,   780,   780,   780,   780}
+    ,{  -720,  -960,  -720,  -960,  -720}
+    ,{   -60,   -60,   -60,   -60,   -60}
+    ,{   780,   780,   780,   780,   780}
+    ,{   -60,   -60,   -60,   -60,   -60}
+    }
+   ,{{   -50,   -50,   -50,   -50,   -50}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    ,{ -1030, -1030, -1030, -1030, -1030}
+    }
+   }
+  ,{{{  1490,   -90,   780,  1490,   780}
+    ,{  1490,   -90,   240,  1490,   240}
+    ,{  1200,  -150,   -50,  1200,   -50}
+    ,{  1200,  -390,   780,  1200,   780}
+    ,{  1200,  -150,   -50,  1200,   -50}
+    }
+   ,{{  1490,   -90,   240,  1490,   240}
+    ,{  1490,   -90,   240,  1490,   240}
+    ,{  1190,  -400,   -60,  1190,   -60}
+    ,{ -1140, -1480, -1140, -1140, -1140}
+    ,{  1190,  -400,   -60,  1190,   -60}
+    }
+   ,{{  1200,  -150,   -50,  1200,   -50}
+    ,{  1200,  -390,   -50,  1200,   -50}
+    ,{  1200,  -150,   -50,  1200,   -50}
+    ,{  1200,  -390,   -50,  1200,   -50}
+    ,{  1200,  -150,   -50,  1200,   -50}
+    }
+   ,{{  1190,  -400,   780,  1190,   780}
+    ,{  -960, -1300,  -960,  -960,  -960}
+    ,{  1190,  -400,   -60,  1190,   -60}
+    ,{   780,  -810,   780,  -470,   780}
+    ,{  1190,  -400,   -60,  1190,   -60}
+    }
+   ,{{  1200,  -150,   -50,  1200,   -50}
+    ,{  1200,  -390,   -50,  1200,   -50}
+    ,{  1200,  -150,   -50,  1200,   -50}
+    ,{  1200,  -390,   -50,  1200,   -50}
+    ,{ -1030, -1370, -1030, -1030, -1030}
+    }
+   }
+  ,{{{   780,   780,   780,   780,   480}
+    ,{   480,   240,   240,   240,   480}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    ,{   780,   780,   780,   780,   -50}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    }
+   ,{{   480,   240,   240,   240,   480}
+    ,{   480,   240,   240,   240,   480}
+    ,{   -60,   -60,   -60,   -60,   -60}
+    ,{  -900, -1140,  -900, -1140, -1140}
+    ,{   -60,   -60,   -60,   -60,   -60}
+    }
+   ,{{   -50,   -50,   -50,   -50,   -50}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    }
+   ,{{   780,   780,   780,   780,   -60}
+    ,{  -720,  -960,  -720,  -960,  -960}
+    ,{   -60,   -60,   -60,   -60,   -60}
+    ,{   780,   780,   780,   780,  -470}
+    ,{   -60,   -60,   -60,   -60,   -60}
+    }
+   ,{{   -50,   -50,   -50,   -50,   -50}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    ,{ -1030, -1030, -1030, -1030, -1030}
+    }
+   }
+  }
+ ,{{{{  1560,  1470,   960,  1560,   960}
+    ,{  1560,   820,   310,  1560,   550}
+    ,{  1430,   690,   180,  1430,   180}
+    ,{  1470,  1470,   960,  1430,   960}
+    ,{  1300,   560,    50,  1300,    50}
+    }
+   ,{{  1560,   820,   310,  1560,   550}
+    ,{  1560,   820,   310,  1560,   550}
+    ,{  1280,   540,    30,  1280,    30}
+    ,{  -580,  -580,  -850, -1090,  -850}
+    ,{  1280,   540,    30,  1280,    30}
+    }
+   ,{{  1430,   690,   180,  1430,   180}
+    ,{  1430,   690,   180,  1430,   180}
+    ,{  1430,   690,   180,  1430,   180}
+    ,{  1430,   690,   180,  1430,   180}
+    ,{  1300,   560,    50,  1300,    50}
+    }
+   ,{{  1470,  1470,   960,  1280,   960}
+    ,{  -880,  -880, -1150, -1390, -1150}
+    ,{  1280,   540,    30,  1280,    30}
+    ,{  1470,  1470,   960,   960,   960}
+    ,{  1280,   540,    30,  1280,    30}
+    }
+   ,{{  1430,   690,   180,  1430,   180}
+    ,{  1430,   690,   180,  1430,   180}
+    ,{   990,   250,  -260,   990,  -260}
+    ,{  1430,   690,   180,  1430,   180}
+    ,{   -10,   -10,  -760,  -760,  -760}
+    }
+   }
+  ,{{{  1470,  1470,   960,   -90,   960}
+    ,{   820,   820,   310,  -200,   310}
+    ,{   690,   690,   180,   -90,   180}
+    ,{  1470,  1470,   960,  -330,   960}
+    ,{   560,   560,    50,  -220,    50}
+    }
+   ,{{   820,   820,   310,  -200,   310}
+    ,{   820,   820,   310,  -200,   310}
+    ,{   540,   540,    30,  -480,    30}
+    ,{  -580,  -580, -1090, -1600, -1090}
+    ,{   540,   540,    30,  -480,    30}
+    }
+   ,{{   690,   690,   180,   -90,   180}
+    ,{   690,   690,   180,  -330,   180}
+    ,{   690,   690,   180,   -90,   180}
+    ,{   690,   690,   180,  -330,   180}
+    ,{   560,   560,    50,  -220,    50}
+    }
+   ,{{  1470,  1470,   960,  -480,   960}
+    ,{  -880,  -880, -1390, -1900, -1390}
+    ,{   540,   540,    30,  -480,    30}
+    ,{  1470,  1470,   960,  -800,   960}
+    ,{   540,   540,    30,  -480,    30}
+    }
+   ,{{   690,   690,   180,  -330,   180}
+    ,{   690,   690,   180,  -330,   180}
+    ,{   250,   250,  -260,  -530,  -260}
+    ,{   690,   690,   180,  -330,   180}
+    ,{   -10,   -10,  -760, -1270,  -760}
+    }
+   }
+  ,{{{   960,   960,   960,   960,   960}
+    ,{   310,   310,   310,   310,   310}
+    ,{   180,   180,   180,   180,   180}
+    ,{   960,   960,   960,   960,   960}
+    ,{    50,    50,    50,    50,    50}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{    30,    30,    30,    30,    30}
+    ,{  -850, -1090,  -850, -1090,  -850}
+    ,{    30,    30,    30,    30,    30}
+    }
+   ,{{   180,   180,   180,   180,   180}
+    ,{   180,   180,   180,   180,   180}
+    ,{   180,   180,   180,   180,   180}
+    ,{   180,   180,   180,   180,   180}
+    ,{    50,    50,    50,    50,    50}
+    }
+   ,{{   960,   960,   960,   960,   960}
+    ,{ -1150, -1390, -1150, -1390, -1150}
+    ,{    30,    30,    30,    30,    30}
+    ,{   960,   960,   960,   960,   960}
+    ,{    30,    30,    30,    30,    30}
+    }
+   ,{{   180,   180,   180,   180,   180}
+    ,{   180,   180,   180,   180,   180}
+    ,{  -260,  -260,  -260,  -260,  -260}
+    ,{   180,   180,   180,   180,   180}
+    ,{  -760,  -760,  -760,  -760,  -760}
+    }
+   }
+  ,{{{  1560,    80,   960,  1560,   960}
+    ,{  1560,   -30,   310,  1560,   310}
+    ,{  1430,    80,   180,  1430,   180}
+    ,{  1430,  -160,   960,  1430,   960}
+    ,{  1300,   -50,    50,  1300,    50}
+    }
+   ,{{  1560,   -30,   310,  1560,   310}
+    ,{  1560,   -30,   310,  1560,   310}
+    ,{  1280,  -310,    30,  1280,    30}
+    ,{ -1090, -1430, -1090, -1090, -1090}
+    ,{  1280,  -310,    30,  1280,    30}
+    }
+   ,{{  1430,    80,   180,  1430,   180}
+    ,{  1430,  -160,   180,  1430,   180}
+    ,{  1430,    80,   180,  1430,   180}
+    ,{  1430,  -160,   180,  1430,   180}
+    ,{  1300,   -50,    50,  1300,    50}
+    }
+   ,{{  1280,  -310,   960,  1280,   960}
+    ,{ -1390, -1730, -1390, -1390, -1390}
+    ,{  1280,  -310,    30,  1280,    30}
+    ,{   960,  -630,   960,  -290,   960}
+    ,{  1280,  -310,    30,  1280,    30}
+    }
+   ,{{  1430,  -160,   180,  1430,   180}
+    ,{  1430,  -160,   180,  1430,   180}
+    ,{   990,  -360,  -260,   990,  -260}
+    ,{  1430,  -160,   180,  1430,   180}
+    ,{  -760, -1100,  -760,  -760,  -760}
+    }
+   }
+  ,{{{   960,   960,   960,   960,   550}
+    ,{   550,   310,   310,   310,   550}
+    ,{   180,   180,   180,   180,   180}
+    ,{   960,   960,   960,   960,   180}
+    ,{    50,    50,    50,    50,    50}
+    }
+   ,{{   550,   310,   310,   310,   550}
+    ,{   550,   310,   310,   310,   550}
+    ,{    30,    30,    30,    30,    30}
+    ,{  -850, -1090,  -850, -1090, -1090}
+    ,{    30,    30,    30,    30,    30}
+    }
+   ,{{   180,   180,   180,   180,   180}
+    ,{   180,   180,   180,   180,   180}
+    ,{   180,   180,   180,   180,   180}
+    ,{   180,   180,   180,   180,   180}
+    ,{    50,    50,    50,    50,    50}
+    }
+   ,{{   960,   960,   960,   960,    30}
+    ,{ -1150, -1390, -1150, -1390, -1390}
+    ,{    30,    30,    30,    30,    30}
+    ,{   960,   960,   960,   960,  -290}
+    ,{    30,    30,    30,    30,    30}
+    }
+   ,{{   180,   180,   180,   180,   180}
+    ,{   180,   180,   180,   180,   180}
+    ,{  -260,  -260,  -260,  -260,  -260}
+    ,{   180,   180,   180,   180,   180}
+    ,{  -760,  -760,  -760,  -760,  -760}
+    }
+   }
+  }
+ ,{{{{  1560,  1470,   960,  1560,   960}
+    ,{  1560,   820,   310,  1560,   550}
+    ,{  1430,   690,   180,  1430,   180}
+    ,{  1470,  1470,   960,  1430,   960}
+    ,{  1300,   560,    50,  1300,    50}
+    }
+   ,{{  1560,   820,   310,  1560,   550}
+    ,{  1560,   820,   310,  1560,   550}
+    ,{  1280,   540,    30,  1280,    30}
+    ,{  -360,  -360,  -630,  -870,  -630}
+    ,{  1280,   540,    30,  1280,    30}
+    }
+   ,{{  1430,   690,   180,  1430,   180}
+    ,{  1430,   690,   180,  1430,   180}
+    ,{  1430,   690,   180,  1430,   180}
+    ,{  1430,   690,   180,  1430,   180}
+    ,{  1300,   560,    50,  1300,    50}
+    }
+   ,{{  1470,  1470,   960,  1280,   960}
+    ,{   -30,   -30,  -720,  -960,  -720}
+    ,{  1280,   540,    30,  1280,    30}
+    ,{  1470,  1470,   960,   960,   960}
+    ,{  1280,   540,    30,  1280,    30}
+    }
+   ,{{  1430,   690,   180,  1430,   180}
+    ,{  1430,   690,   180,  1430,   180}
+    ,{  1200,   450,   -50,  1200,   -50}
+    ,{  1430,   690,   180,  1430,   180}
+    ,{   -10,   -10,  -760,  -760,  -760}
+    }
+   }
+  ,{{{  1470,  1470,   960,   -90,   960}
+    ,{   820,   820,   310,  -200,   310}
+    ,{   690,   690,   180,   -90,   180}
+    ,{  1470,  1470,   960,  -330,   960}
+    ,{   560,   560,    50,  -220,    50}
+    }
+   ,{{   820,   820,   310,  -200,   310}
+    ,{   820,   820,   310,  -200,   310}
+    ,{   540,   540,    30,  -480,    30}
+    ,{  -360,  -360,  -870, -1380,  -870}
+    ,{   540,   540,    30,  -480,    30}
+    }
+   ,{{   690,   690,   180,   -90,   180}
+    ,{   690,   690,   180,  -330,   180}
+    ,{   690,   690,   180,   -90,   180}
+    ,{   690,   690,   180,  -330,   180}
+    ,{   560,   560,    50,  -220,    50}
+    }
+   ,{{  1470,  1470,   960,  -480,   960}
+    ,{   -30,   -30,  -960, -1470,  -960}
+    ,{   540,   540,    30,  -480,    30}
+    ,{  1470,  1470,   960,  -800,   960}
+    ,{   540,   540,    30,  -480,    30}
+    }
+   ,{{   690,   690,   180,  -320,   180}
+    ,{   690,   690,   180,  -330,   180}
+    ,{   450,   450,   -50,  -320,   -50}
+    ,{   690,   690,   180,  -330,   180}
+    ,{   -10,   -10,  -760, -1270,  -760}
+    }
+   }
+  ,{{{   960,   960,   960,   960,   960}
+    ,{   310,   310,   310,   310,   310}
+    ,{   180,   180,   180,   180,   180}
+    ,{   960,   960,   960,   960,   960}
+    ,{    50,    50,    50,    50,    50}
+    }
+   ,{{   310,   310,   310,   310,   310}
+    ,{   310,   310,   310,   310,   310}
+    ,{    30,    30,    30,    30,    30}
+    ,{  -630,  -870,  -630,  -870,  -630}
+    ,{    30,    30,    30,    30,    30}
+    }
+   ,{{   180,   180,   180,   180,   180}
+    ,{   180,   180,   180,   180,   180}
+    ,{   180,   180,   180,   180,   180}
+    ,{   180,   180,   180,   180,   180}
+    ,{    50,    50,    50,    50,    50}
+    }
+   ,{{   960,   960,   960,   960,   960}
+    ,{  -720,  -960,  -720,  -960,  -720}
+    ,{    30,    30,    30,    30,    30}
+    ,{   960,   960,   960,   960,   960}
+    ,{    30,    30,    30,    30,    30}
+    }
+   ,{{   180,   180,   180,   180,   180}
+    ,{   180,   180,   180,   180,   180}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    ,{   180,   180,   180,   180,   180}
+    ,{  -760,  -760,  -760,  -760,  -760}
+    }
+   }
+  ,{{{  1560,    80,   960,  1560,   960}
+    ,{  1560,   -30,   310,  1560,   310}
+    ,{  1430,    80,   180,  1430,   180}
+    ,{  1430,  -160,   960,  1430,   960}
+    ,{  1300,   -50,    50,  1300,    50}
+    }
+   ,{{  1560,   -30,   310,  1560,   310}
+    ,{  1560,   -30,   310,  1560,   310}
+    ,{  1280,  -310,    30,  1280,    30}
+    ,{  -870, -1210,  -870,  -870,  -870}
+    ,{  1280,  -310,    30,  1280,    30}
+    }
+   ,{{  1430,    80,   180,  1430,   180}
+    ,{  1430,  -160,   180,  1430,   180}
+    ,{  1430,    80,   180,  1430,   180}
+    ,{  1430,  -160,   180,  1430,   180}
+    ,{  1300,   -50,    50,  1300,    50}
+    }
+   ,{{  1280,  -310,   960,  1280,   960}
+    ,{  -960, -1300,  -960,  -960,  -960}
+    ,{  1280,  -310,    30,  1280,    30}
+    ,{   960,  -630,   960,  -290,   960}
+    ,{  1280,  -310,    30,  1280,    30}
+    }
+   ,{{  1430,  -150,   180,  1430,   180}
+    ,{  1430,  -160,   180,  1430,   180}
+    ,{  1200,  -150,   -50,  1200,   -50}
+    ,{  1430,  -160,   180,  1430,   180}
+    ,{  -760, -1100,  -760,  -760,  -760}
+    }
+   }
+  ,{{{   960,   960,   960,   960,   550}
+    ,{   550,   310,   310,   310,   550}
+    ,{   180,   180,   180,   180,   180}
+    ,{   960,   960,   960,   960,   180}
+    ,{    50,    50,    50,    50,    50}
+    }
+   ,{{   550,   310,   310,   310,   550}
+    ,{   550,   310,   310,   310,   550}
+    ,{    30,    30,    30,    30,    30}
+    ,{  -630,  -870,  -630,  -870,  -870}
+    ,{    30,    30,    30,    30,    30}
+    }
+   ,{{   180,   180,   180,   180,   180}
+    ,{   180,   180,   180,   180,   180}
+    ,{   180,   180,   180,   180,   180}
+    ,{   180,   180,   180,   180,   180}
+    ,{    50,    50,    50,    50,    50}
+    }
+   ,{{   960,   960,   960,   960,    30}
+    ,{  -720,  -960,  -720,  -960,  -960}
+    ,{    30,    30,    30,    30,    30}
+    ,{   960,   960,   960,   960,  -290}
+    ,{    30,    30,    30,    30,    30}
+    }
+   ,{{   180,   180,   180,   180,   180}
+    ,{   180,   180,   180,   180,   180}
+    ,{   -50,   -50,   -50,   -50,   -50}
+    ,{   180,   180,   180,   180,   180}
+    ,{  -760,  -760,  -760,  -760,  -760}
+    }
+   }
+  }
+ }
+,{{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{  1170,   780,   490,  1170,   490}
+    ,{  1120,   580,   290,  1120,   290}
+    ,{  1170,   640,   340,  1170,   340}
+    ,{  1120,   780,   490,  1120,   490}
+    ,{  1060,   530,   230,  1060,   230}
+    }
+   ,{{   970,   440,   170,   970,   170}
+    ,{   970,   440,   140,   970,   140}
+    ,{   660,   130,  -160,   660,  -160}
+    ,{   220,   220,   170,   -80,   170}
+    ,{   660,   130,  -160,   660,  -160}
+    }
+   ,{{  1120,   580,   290,  1120,   290}
+    ,{  1120,   580,   290,  1120,   290}
+    ,{  1110,   580,   280,  1110,   280}
+    ,{  1120,   580,   290,  1120,   290}
+    ,{  1060,   530,   230,  1060,   230}
+    }
+   ,{{   780,   780,   490,   660,   490}
+    ,{   -60,   -60,  -120,  -370,  -120}
+    ,{   660,   130,  -160,   660,  -160}
+    ,{   780,   780,   490,   470,   490}
+    ,{   660,   130,  -160,   660,  -160}
+    }
+   ,{{  1170,   640,   340,  1170,   340}
+    ,{  1120,   580,   290,  1120,   290}
+    ,{  1170,   640,   340,  1170,   340}
+    ,{  1120,   580,   290,  1120,   290}
+    ,{    40,    40,  -500,  -510,  -500}
+    }
+   }
+  ,{{{   780,   780,   490,  -330,   490}
+    ,{   580,   580,   290,  -620,   290}
+    ,{   640,   640,   340,  -330,   340}
+    ,{   780,   780,   490,  -620,   490}
+    ,{   530,   530,   230,  -440,   230}
+    }
+   ,{{   440,   440,   140,  -770,   140}
+    ,{   440,   440,   140,  -770,   140}
+    ,{   130,   130,  -160, -1080,  -160}
+    ,{   220,   220,   -70,  -980,   -70}
+    ,{   130,   130,  -160, -1080,  -160}
+    }
+   ,{{   580,   580,   290,  -390,   290}
+    ,{   580,   580,   290,  -620,   290}
+    ,{   580,   580,   280,  -390,   280}
+    ,{   580,   580,   290,  -620,   290}
+    ,{   530,   530,   230,  -440,   230}
+    }
+   ,{{   780,   780,   490, -1080,   490}
+    ,{   -60,   -60,  -350, -1270,  -350}
+    ,{   130,   130,  -160, -1080,  -160}
+    ,{   780,   780,   490, -1680,   490}
+    ,{   130,   130,  -160, -1080,  -160}
+    }
+   ,{{   640,   640,   340,  -330,   340}
+    ,{   580,   580,   290,  -620,   290}
+    ,{   640,   640,   340,  -330,   340}
+    ,{   580,   580,   290,  -620,   290}
+    ,{    40,    40,  -500, -1410,  -500}
+    }
+   }
+  ,{{{   480,   470,   480,   470,   480}
+    ,{   280,   270,   280,   270,   280}
+    ,{   340,   330,   340,   330,   340}
+    ,{   480,   470,   480,   470,   480}
+    ,{   230,   220,   230,   220,   230}
+    }
+   ,{{   170,   130,   170,   130,   170}
+    ,{   140,   130,   140,   130,   140}
+    ,{  -170,  -180,  -170,  -180,  -170}
+    ,{   170,   -80,   170,   -80,   170}
+    ,{  -170,  -180,  -170,  -180,  -170}
+    }
+   ,{{   280,   270,   280,   270,   280}
+    ,{   280,   270,   280,   270,   280}
+    ,{   280,   270,   280,   270,   280}
+    ,{   280,   270,   280,   270,   280}
+    ,{   230,   220,   230,   220,   230}
+    }
+   ,{{   480,   470,   480,   470,   480}
+    ,{  -120,  -370,  -120,  -370,  -120}
+    ,{  -170,  -180,  -170,  -180,  -170}
+    ,{   480,   470,   480,   470,   480}
+    ,{  -170,  -180,  -170,  -180,  -170}
+    }
+   ,{{   340,   330,   340,   330,   340}
+    ,{   280,   270,   280,   270,   280}
+    ,{   340,   330,   340,   330,   340}
+    ,{   280,   270,   280,   270,   280}
+    ,{  -500,  -510,  -500,  -510,  -500}
+    }
+   }
+  ,{{{  1170,  -510,   490,  1170,   490}
+    ,{  1120,  -800,   290,  1120,   290}
+    ,{  1170,  -510,   340,  1170,   340}
+    ,{  1120,  -800,   490,  1120,   490}
+    ,{  1060,  -620,   230,  1060,   230}
+    }
+   ,{{   970,  -950,   140,   970,   140}
+    ,{   970,  -950,   140,   970,   140}
+    ,{   660, -1260,  -160,   660,  -160}
+    ,{   -70, -1160,   -70,  -490,   -70}
+    ,{   660, -1260,  -160,   660,  -160}
+    }
+   ,{{  1120,  -570,   290,  1120,   290}
+    ,{  1120,  -800,   290,  1120,   290}
+    ,{  1110,  -570,   280,  1110,   280}
+    ,{  1120,  -800,   290,  1120,   290}
+    ,{  1060,  -620,   230,  1060,   230}
+    }
+   ,{{   660, -1260,   490,   660,   490}
+    ,{  -350, -1450,  -350,  -780,  -350}
+    ,{   660, -1260,  -160,   660,  -160}
+    ,{   490, -1860,   490, -1190,   490}
+    ,{   660, -1260,  -160,   660,  -160}
+    }
+   ,{{  1170,  -510,   340,  1170,   340}
+    ,{  1120,  -800,   290,  1120,   290}
+    ,{  1170,  -510,   340,  1170,   340}
+    ,{  1120,  -800,   290,  1120,   290}
+    ,{  -500, -1590,  -500,  -920,  -500}
+    }
+   }
+  ,{{{   480,   470,   480,   470,  -600}
+    ,{   280,   270,   280,   270,  -600}
+    ,{   340,   330,   340,   330,  -640}
+    ,{   480,   470,   480,   470,  -690}
+    ,{   230,   220,   230,   220,  -750}
+    }
+   ,{{   170,   130,   170,   130,  -600}
+    ,{   140,   130,   140,   130,  -600}
+    ,{  -170,  -180,  -170,  -180, -1150}
+    ,{   170,   -80,   170,   -80, -1050}
+    ,{  -170,  -180,  -170,  -180, -1150}
+    }
+   ,{{   280,   270,   280,   270,  -690}
+    ,{   280,   270,   280,   270,  -690}
+    ,{   280,   270,   280,   270,  -700}
+    ,{   280,   270,   280,   270,  -690}
+    ,{   230,   220,   230,   220,  -750}
+    }
+   ,{{   480,   470,   480,   470, -1150}
+    ,{  -120,  -370,  -120,  -370, -1340}
+    ,{  -170,  -180,  -170,  -180, -1150}
+    ,{   480,   470,   480,   470, -1750}
+    ,{  -170,  -180,  -170,  -180, -1150}
+    }
+   ,{{   340,   330,   340,   330,  -640}
+    ,{   280,   270,   280,   270,  -690}
+    ,{   340,   330,   340,   330,  -640}
+    ,{   280,   270,   280,   270,  -690}
+    ,{  -500,  -510,  -500,  -510, -1480}
+    }
+   }
+  }
+ ,{{{{  1140,   780,   490,  1140,   490}
+    ,{  1140,   600,   310,  1140,   310}
+    ,{   690,   150,  -140,   690,  -140}
+    ,{   780,   780,   490,   770,   490}
+    ,{   690,   190,  -140,   690,  -140}
+    }
+   ,{{  1140,   600,   310,  1140,   310}
+    ,{  1140,   600,   310,  1140,   310}
+    ,{   690,   150,  -140,   690,  -140}
+    ,{  -580,  -580,  -640,  -890,  -640}
+    ,{   690,   150,  -140,   690,  -140}
+    }
+   ,{{   770,   240,   -50,   770,   -50}
+    ,{   770,   240,   -50,   770,   -50}
+    ,{   470,   -60,  -360,   470,  -360}
+    ,{   770,   240,   -50,   770,   -50}
+    ,{   470,   -60,  -360,   470,  -360}
+    }
+   ,{{   780,   780,   490,   690,   490}
+    ,{  -110,  -110,  -170,  -420,  -170}
+    ,{   690,   150,  -140,   690,  -140}
+    ,{   780,   780,   490,   470,   490}
+    ,{   690,   150,  -140,   690,  -140}
+    }
+   ,{{   770,   240,   -50,   770,   -50}
+    ,{   770,   240,   -50,   770,   -50}
+    ,{   160,  -370,  -670,   160,  -670}
+    ,{   770,   240,   -50,   770,   -50}
+    ,{   190,   190,  -340,  -360,  -340}
+    }
+   }
+  ,{{{   780,   780,   490,  -600,   490}
+    ,{   600,   600,   310,  -600,   310}
+    ,{   150,   150,  -140, -1030,  -140}
+    ,{   780,   780,   490,  -970,   490}
+    ,{   190,   190,  -140, -1030,  -140}
+    }
+   ,{{   600,   600,   310,  -600,   310}
+    ,{   600,   600,   310,  -600,   310}
+    ,{   150,   150,  -140, -1050,  -140}
+    ,{  -580,  -580,  -880, -1790,  -880}
+    ,{   150,   150,  -140, -1050,  -140}
+    }
+   ,{{   240,   240,   -50,  -970,   -50}
+    ,{   240,   240,   -50,  -970,   -50}
+    ,{   -60,   -60,  -360, -1030,  -360}
+    ,{   240,   240,   -50,  -970,   -50}
+    ,{   -60,   -60,  -360, -1030,  -360}
+    }
+   ,{{   780,   780,   490, -1050,   490}
+    ,{  -110,  -110,  -400, -1320,  -400}
+    ,{   150,   150,  -140, -1050,  -140}
+    ,{   780,   780,   490, -1680,   490}
+    ,{   150,   150,  -140, -1050,  -140}
+    }
+   ,{{   240,   240,   -50,  -970,   -50}
+    ,{   240,   240,   -50,  -970,   -50}
+    ,{  -370,  -370,  -670, -1340,  -670}
+    ,{   240,   240,   -50,  -970,   -50}
+    ,{   190,   190,  -340, -1260,  -340}
+    }
+   }
+  ,{{{   480,   470,   480,   470,   480}
+    ,{   300,   290,   300,   290,   300}
+    ,{  -140,  -150,  -140,  -150,  -140}
+    ,{   480,   470,   480,   470,   480}
+    ,{  -140,  -150,  -140,  -150,  -140}
+    }
+   ,{{   300,   290,   300,   290,   300}
+    ,{   300,   290,   300,   290,   300}
+    ,{  -140,  -150,  -140,  -150,  -140}
+    ,{  -640,  -890,  -640,  -890,  -640}
+    ,{  -140,  -150,  -140,  -150,  -140}
+    }
+   ,{{   -60,   -70,   -60,   -70,   -60}
+    ,{   -60,   -70,   -60,   -70,   -60}
+    ,{  -360,  -370,  -360,  -370,  -360}
+    ,{   -60,   -70,   -60,   -70,   -60}
+    ,{  -360,  -370,  -360,  -370,  -360}
+    }
+   ,{{   480,   470,   480,   470,   480}
+    ,{  -170,  -420,  -170,  -420,  -170}
+    ,{  -140,  -150,  -140,  -150,  -140}
+    ,{   480,   470,   480,   470,   480}
+    ,{  -140,  -150,  -140,  -150,  -140}
+    }
+   ,{{   -60,   -70,   -60,   -70,   -60}
+    ,{   -60,   -70,   -60,   -70,   -60}
+    ,{  -670,  -680,  -670,  -680,  -670}
+    ,{   -60,   -70,   -60,   -70,   -60}
+    ,{  -350,  -360,  -350,  -360,  -350}
+    }
+   }
+  ,{{{  1140,  -780,   490,  1140,   490}
+    ,{  1140,  -780,   310,  1140,   310}
+    ,{   690, -1210,  -140,   690,  -140}
+    ,{   770, -1150,   490,   770,   490}
+    ,{   690, -1210,  -140,   690,  -140}
+    }
+   ,{{  1140,  -780,   310,  1140,   310}
+    ,{  1140,  -780,   310,  1140,   310}
+    ,{   690, -1230,  -140,   690,  -140}
+    ,{  -880, -1970,  -880, -1300,  -880}
+    ,{   690, -1230,  -140,   690,  -140}
+    }
+   ,{{   770, -1150,   -50,   770,   -50}
+    ,{   770, -1150,   -50,   770,   -50}
+    ,{   470, -1210,  -360,   470,  -360}
+    ,{   770, -1150,   -50,   770,   -50}
+    ,{   470, -1210,  -360,   470,  -360}
+    }
+   ,{{   690, -1230,   490,   690,   490}
+    ,{  -400, -1500,  -400,  -830,  -400}
+    ,{   690, -1230,  -140,   690,  -140}
+    ,{   490, -1860,   490, -1190,   490}
+    ,{   690, -1230,  -140,   690,  -140}
+    }
+   ,{{   770, -1150,   -50,   770,   -50}
+    ,{   770, -1150,   -50,   770,   -50}
+    ,{   160, -1520,  -670,   160,  -670}
+    ,{   770, -1150,   -50,   770,   -50}
+    ,{  -340, -1440,  -340,  -770,  -340}
+    }
+   }
+  ,{{{   480,   470,   480,   470,  -430}
+    ,{   300,   290,   300,   290,  -430}
+    ,{  -140,  -150,  -140,  -150, -1120}
+    ,{   480,   470,   480,   470, -1040}
+    ,{  -140,  -150,  -140,  -150, -1120}
+    }
+   ,{{   300,   290,   300,   290,  -430}
+    ,{   300,   290,   300,   290,  -430}
+    ,{  -140,  -150,  -140,  -150, -1120}
+    ,{  -640,  -890,  -640,  -890, -1860}
+    ,{  -140,  -150,  -140,  -150, -1120}
+    }
+   ,{{   -60,   -70,   -60,   -70, -1040}
+    ,{   -60,   -70,   -60,   -70, -1040}
+    ,{  -360,  -370,  -360,  -370, -1340}
+    ,{   -60,   -70,   -60,   -70, -1040}
+    ,{  -360,  -370,  -360,  -370, -1340}
+    }
+   ,{{   480,   470,   480,   470, -1120}
+    ,{  -170,  -420,  -170,  -420, -1390}
+    ,{  -140,  -150,  -140,  -150, -1120}
+    ,{   480,   470,   480,   470, -1750}
+    ,{  -140,  -150,  -140,  -150, -1120}
+    }
+   ,{{   -60,   -70,   -60,   -70, -1040}
+    ,{   -60,   -70,   -60,   -70, -1040}
+    ,{  -670,  -680,  -670,  -680, -1650}
+    ,{   -60,   -70,   -60,   -70, -1040}
+    ,{  -350,  -360,  -350,  -360, -1330}
+    }
+   }
+  }
+ ,{{{{   940,   940,   650,   630,   650}
+    ,{   220,  -130,  -190,   220,  -190}
+    ,{   220,  -310,  -600,   220,  -600}
+    ,{   940,   940,   650,   630,   650}
+    ,{   220,   -70,  -600,   220,  -600}
+    }
+   ,{{   220,  -310,  -380,   220,  -380}
+    ,{    40,  -490,  -780,    40,  -780}
+    ,{   220,  -310,  -600,   220,  -600}
+    ,{  -320,  -320,  -380,  -630,  -380}
+    ,{   220,  -310,  -600,   220,  -600}
+    }
+   ,{{   220,  -310,  -600,   220,  -600}
+    ,{   220,  -310,  -600,   220,  -600}
+    ,{   220,  -310,  -600,   220,  -600}
+    ,{   220,  -310,  -600,   220,  -600}
+    ,{   220,  -310,  -600,   220,  -600}
+    }
+   ,{{   940,   940,   650,   630,   650}
+    ,{  -130,  -130,  -190,  -440,  -190}
+    ,{   220,  -310,  -600,   220,  -600}
+    ,{   940,   940,   650,   630,   650}
+    ,{   220,  -310,  -600,   220,  -600}
+    }
+   ,{{   220,   -70,  -600,   220,  -600}
+    ,{   220,  -310,  -600,   220,  -600}
+    ,{   220,  -310,  -600,   220,  -600}
+    ,{   220,  -310,  -600,   220,  -600}
+    ,{   -70,   -70,  -600,  -620,  -600}
+    }
+   }
+  ,{{{   940,   940,   650, -1280,   650}
+    ,{  -130,  -130,  -430, -1340,  -430}
+    ,{  -310,  -310,  -600, -1280,  -600}
+    ,{   940,   940,   650, -1520,   650}
+    ,{   -70,   -70,  -600, -1280,  -600}
+    }
+   ,{{  -310,  -310,  -600, -1520,  -600}
+    ,{  -490,  -490,  -780, -1700,  -780}
+    ,{  -310,  -310,  -600, -1520,  -600}
+    ,{  -320,  -320,  -620, -1530,  -620}
+    ,{  -310,  -310,  -600, -1520,  -600}
+    }
+   ,{{  -310,  -310,  -600, -1280,  -600}
+    ,{  -310,  -310,  -600, -1520,  -600}
+    ,{  -310,  -310,  -600, -1280,  -600}
+    ,{  -310,  -310,  -600, -1520,  -600}
+    ,{  -310,  -310,  -600, -1280,  -600}
+    }
+   ,{{   940,   940,   650, -1340,   650}
+    ,{  -130,  -130,  -430, -1340,  -430}
+    ,{  -310,  -310,  -600, -1520,  -600}
+    ,{   940,   940,   650, -1520,   650}
+    ,{  -310,  -310,  -600, -1520,  -600}
+    }
+   ,{{   -70,   -70,  -600, -1280,  -600}
+    ,{  -310,  -310,  -600, -1520,  -600}
+    ,{  -310,  -310,  -600, -1280,  -600}
+    ,{  -310,  -310,  -600, -1520,  -600}
+    ,{   -70,   -70,  -600, -1520,  -600}
+    }
+   }
+  ,{{{   640,   630,   640,   630,   640}
+    ,{  -190,  -440,  -190,  -440,  -190}
+    ,{  -610,  -620,  -610,  -620,  -610}
+    ,{   640,   630,   640,   630,   640}
+    ,{  -610,  -620,  -610,  -620,  -610}
+    }
+   ,{{  -380,  -620,  -380,  -620,  -380}
+    ,{  -790,  -800,  -790,  -800,  -790}
+    ,{  -610,  -620,  -610,  -620,  -610}
+    ,{  -380,  -630,  -380,  -630,  -380}
+    ,{  -610,  -620,  -610,  -620,  -610}
+    }
+   ,{{  -610,  -620,  -610,  -620,  -610}
+    ,{  -610,  -620,  -610,  -620,  -610}
+    ,{  -610,  -620,  -610,  -620,  -610}
+    ,{  -610,  -620,  -610,  -620,  -610}
+    ,{  -610,  -620,  -610,  -620,  -610}
+    }
+   ,{{   640,   630,   640,   630,   640}
+    ,{  -190,  -440,  -190,  -440,  -190}
+    ,{  -610,  -620,  -610,  -620,  -610}
+    ,{   640,   630,   640,   630,   640}
+    ,{  -610,  -620,  -610,  -620,  -610}
+    }
+   ,{{  -610,  -620,  -610,  -620,  -610}
+    ,{  -610,  -620,  -610,  -620,  -610}
+    ,{  -610,  -620,  -610,  -620,  -610}
+    ,{  -610,  -620,  -610,  -620,  -610}
+    ,{  -610,  -620,  -610,  -620,  -610}
+    }
+   }
+  ,{{{   650, -1460,   650,   220,   650}
+    ,{   220, -1520,  -430,   220,  -430}
+    ,{   220, -1460,  -600,   220,  -600}
+    ,{   650, -1700,   650,   220,   650}
+    ,{   220, -1460,  -600,   220,  -600}
+    }
+   ,{{   220, -1700,  -600,   220,  -600}
+    ,{    40, -1880,  -780,    40,  -780}
+    ,{   220, -1700,  -600,   220,  -600}
+    ,{  -620, -1710,  -620, -1040,  -620}
+    ,{   220, -1700,  -600,   220,  -600}
+    }
+   ,{{   220, -1460,  -600,   220,  -600}
+    ,{   220, -1700,  -600,   220,  -600}
+    ,{   220, -1460,  -600,   220,  -600}
+    ,{   220, -1700,  -600,   220,  -600}
+    ,{   220, -1460,  -600,   220,  -600}
+    }
+   ,{{   650, -1520,   650,   220,   650}
+    ,{  -430, -1520,  -430,  -850,  -430}
+    ,{   220, -1700,  -600,   220,  -600}
+    ,{   650, -1700,   650, -1030,   650}
+    ,{   220, -1700,  -600,   220,  -600}
+    }
+   ,{{   220, -1460,  -600,   220,  -600}
+    ,{   220, -1700,  -600,   220,  -600}
+    ,{   220, -1460,  -600,   220,  -600}
+    ,{   220, -1700,  -600,   220,  -600}
+    ,{  -600, -1700,  -600, -1030,  -600}
+    }
+   }
+  ,{{{   640,   630,   640,   630, -1410}
+    ,{  -190,  -440,  -190,  -440, -1410}
+    ,{  -610,  -620,  -610,  -620, -1590}
+    ,{   640,   630,   640,   630, -1590}
+    ,{  -610,  -620,  -610,  -620, -1590}
+    }
+   ,{{  -380,  -620,  -380,  -620, -1530}
+    ,{  -790,  -800,  -790,  -800, -1530}
+    ,{  -610,  -620,  -610,  -620, -1590}
+    ,{  -380,  -630,  -380,  -630, -1600}
+    ,{  -610,  -620,  -610,  -620, -1590}
+    }
+   ,{{  -610,  -620,  -610,  -620, -1590}
+    ,{  -610,  -620,  -610,  -620, -1590}
+    ,{  -610,  -620,  -610,  -620, -1590}
+    ,{  -610,  -620,  -610,  -620, -1590}
+    ,{  -610,  -620,  -610,  -620, -1590}
+    }
+   ,{{   640,   630,   640,   630, -1410}
+    ,{  -190,  -440,  -190,  -440, -1410}
+    ,{  -610,  -620,  -610,  -620, -1590}
+    ,{   640,   630,   640,   630, -1590}
+    ,{  -610,  -620,  -610,  -620, -1590}
+    }
+   ,{{  -610,  -620,  -610,  -620, -1590}
+    ,{  -610,  -620,  -610,  -620, -1590}
+    ,{  -610,  -620,  -610,  -620, -1590}
+    ,{  -610,  -620,  -610,  -620, -1590}
+    ,{  -610,  -620,  -610,  -620, -1590}
+    }
+   }
+  }
+ ,{{{{  1490,  1490,  1200,  1280,  1200}
+    ,{  1280,   750,   460,  1280,   460}
+    ,{   780,   240,   -50,   780,   -50}
+    ,{  1490,  1490,  1200,  1190,  1200}
+    ,{   780,   480,   -50,   780,   -50}
+    }
+   ,{{  1280,   750,   460,  1280,   460}
+    ,{  1280,   750,   460,  1280,   460}
+    ,{   780,   240,   -50,   780,   -50}
+    ,{   -90,   -90,  -150,  -400,  -150}
+    ,{   780,   240,   -50,   780,   -50}
+    }
+   ,{{   780,   240,   -50,   780,   -50}
+    ,{   780,   240,   -50,   780,   -50}
+    ,{   780,   240,   -50,   780,   -50}
+    ,{   780,   240,   -50,   780,   -50}
+    ,{   780,   240,   -50,   780,   -50}
+    }
+   ,{{  1490,  1490,  1200,  1190,  1200}
+    ,{  -260,  -260,  -320,  -570,  -320}
+    ,{   780,   240,   -50,   780,   -50}
+    ,{  1490,  1490,  1200,  1190,  1200}
+    ,{   780,   240,   -50,   780,   -50}
+    }
+   ,{{   780,   480,   -50,   780,   -50}
+    ,{   780,   240,   -50,   780,   -50}
+    ,{   780,   240,   -50,   780,   -50}
+    ,{   780,   240,   -50,   780,   -50}
+    ,{   480,   480,   -50,   -60,   -50}
+    }
+   }
+  ,{{{  1490,  1490,  1200,  -450,  1200}
+    ,{   750,   750,   460,  -450,   460}
+    ,{   240,   240,   -50,  -720,   -50}
+    ,{  1490,  1490,  1200,  -960,  1200}
+    ,{   480,   480,   -50,  -720,   -50}
+    }
+   ,{{   750,   750,   460,  -450,   460}
+    ,{   750,   750,   460,  -450,   460}
+    ,{   240,   240,   -50,  -960,   -50}
+    ,{   -90,   -90,  -390, -1300,  -390}
+    ,{   240,   240,   -50,  -960,   -50}
+    }
+   ,{{   240,   240,   -50,  -720,   -50}
+    ,{   240,   240,   -50,  -960,   -50}
+    ,{   240,   240,   -50,  -720,   -50}
+    ,{   240,   240,   -50,  -960,   -50}
+    ,{   240,   240,   -50,  -720,   -50}
+    }
+   ,{{  1490,  1490,  1200,  -960,  1200}
+    ,{  -260,  -260,  -560, -1470,  -560}
+    ,{   240,   240,   -50,  -960,   -50}
+    ,{  1490,  1490,  1200,  -960,  1200}
+    ,{   240,   240,   -50,  -960,   -50}
+    }
+   ,{{   480,   480,   -50,  -720,   -50}
+    ,{   240,   240,   -50,  -960,   -50}
+    ,{   240,   240,   -50,  -720,   -50}
+    ,{   240,   240,   -50,  -960,   -50}
+    ,{   480,   480,   -50,  -960,   -50}
+    }
+   }
+  ,{{{  1200,  1190,  1200,  1190,  1200}
+    ,{   450,   440,   450,   440,   450}
+    ,{   -50,   -60,   -50,   -60,   -50}
+    ,{  1200,  1190,  1200,  1190,  1200}
+    ,{   -50,   -60,   -50,   -60,   -50}
+    }
+   ,{{   450,   440,   450,   440,   450}
+    ,{   450,   440,   450,   440,   450}
+    ,{   -50,   -60,   -50,   -60,   -50}
+    ,{  -150,  -400,  -150,  -400,  -150}
+    ,{   -50,   -60,   -50,   -60,   -50}
+    }
+   ,{{   -50,   -60,   -50,   -60,   -50}
+    ,{   -50,   -60,   -50,   -60,   -50}
+    ,{   -50,   -60,   -50,   -60,   -50}
+    ,{   -50,   -60,   -50,   -60,   -50}
+    ,{   -50,   -60,   -50,   -60,   -50}
+    }
+   ,{{  1200,  1190,  1200,  1190,  1200}
+    ,{  -320,  -570,  -320,  -570,  -320}
+    ,{   -50,   -60,   -50,   -60,   -50}
+    ,{  1200,  1190,  1200,  1190,  1200}
+    ,{   -50,   -60,   -50,   -60,   -50}
+    }
+   ,{{   -50,   -60,   -50,   -60,   -50}
+    ,{   -50,   -60,   -50,   -60,   -50}
+    ,{   -50,   -60,   -50,   -60,   -50}
+    ,{   -50,   -60,   -50,   -60,   -50}
+    ,{   -50,   -60,   -50,   -60,   -50}
+    }
+   }
+  ,{{{  1280,  -630,  1200,  1280,  1200}
+    ,{  1280,  -630,   460,  1280,   460}
+    ,{   780,  -900,   -50,   780,   -50}
+    ,{  1200, -1140,  1200,   780,  1200}
+    ,{   780,  -900,   -50,   780,   -50}
+    }
+   ,{{  1280,  -630,   460,  1280,   460}
+    ,{  1280,  -630,   460,  1280,   460}
+    ,{   780, -1140,   -50,   780,   -50}
+    ,{  -390, -1480,  -390,  -810,  -390}
+    ,{   780, -1140,   -50,   780,   -50}
+    }
+   ,{{   780,  -900,   -50,   780,   -50}
+    ,{   780, -1140,   -50,   780,   -50}
+    ,{   780,  -900,   -50,   780,   -50}
+    ,{   780, -1140,   -50,   780,   -50}
+    ,{   780,  -900,   -50,   780,   -50}
+    }
+   ,{{  1200, -1140,  1200,   780,  1200}
+    ,{  -560, -1650,  -560,  -980,  -560}
+    ,{   780, -1140,   -50,   780,   -50}
+    ,{  1200, -1140,  1200,  -470,  1200}
+    ,{   780, -1140,   -50,   780,   -50}
+    }
+   ,{{   780,  -900,   -50,   780,   -50}
+    ,{   780, -1140,   -50,   780,   -50}
+    ,{   780,  -900,   -50,   780,   -50}
+    ,{   780, -1140,   -50,   780,   -50}
+    ,{   -50, -1140,   -50,  -470,   -50}
+    }
+   }
+  ,{{{  1200,  1190,  1200,  1190,  -280}
+    ,{   450,   440,   450,   440,  -280}
+    ,{   -50,   -60,   -50,   -60, -1030}
+    ,{  1200,  1190,  1200,  1190, -1030}
+    ,{   -50,   -60,   -50,   -60, -1030}
+    }
+   ,{{   450,   440,   450,   440,  -280}
+    ,{   450,   440,   450,   440,  -280}
+    ,{   -50,   -60,   -50,   -60, -1030}
+    ,{  -150,  -400,  -150,  -400, -1370}
+    ,{   -50,   -60,   -50,   -60, -1030}
+    }
+   ,{{   -50,   -60,   -50,   -60, -1030}
+    ,{   -50,   -60,   -50,   -60, -1030}
+    ,{   -50,   -60,   -50,   -60, -1030}
+    ,{   -50,   -60,   -50,   -60, -1030}
+    ,{   -50,   -60,   -50,   -60, -1030}
+    }
+   ,{{  1200,  1190,  1200,  1190, -1030}
+    ,{  -320,  -570,  -320,  -570, -1540}
+    ,{   -50,   -60,   -50,   -60, -1030}
+    ,{  1200,  1190,  1200,  1190, -1030}
+    ,{   -50,   -60,   -50,   -60, -1030}
+    }
+   ,{{   -50,   -60,   -50,   -60, -1030}
+    ,{   -50,   -60,   -50,   -60, -1030}
+    ,{   -50,   -60,   -50,   -60, -1030}
+    ,{   -50,   -60,   -50,   -60, -1030}
+    ,{   -50,   -60,   -50,   -60, -1030}
+    }
+   }
+  }
+ ,{{{{  1870,  1870,  1570,  1870,  1570}
+    ,{  1870,  1340,  1040,  1870,  1040}
+    ,{  1570,  1040,   740,  1570,   740}
+    ,{  1870,  1870,  1570,  1570,  1570}
+    ,{  1570,  1040,   740,  1570,   740}
+    }
+   ,{{  1870,  1340,  1040,  1870,  1040}
+    ,{  1870,  1340,  1040,  1870,  1040}
+    ,{  1560,  1030,   730,  1560,   730}
+    ,{   -50,   -50,  -110,  -360,  -110}
+    ,{  1560,  1030,   730,  1560,   730}
+    }
+   ,{{  1570,  1040,   750,  1570,   750}
+    ,{  1570,  1040,   750,  1570,   750}
+    ,{  1570,  1040,   740,  1570,   740}
+    ,{  1570,  1040,   750,  1570,   750}
+    ,{  1570,  1040,   740,  1570,   740}
+    }
+   ,{{  1870,  1870,  1570,  1560,  1570}
+    ,{   130,   130,    70,  -180,    70}
+    ,{  1560,  1030,   730,  1560,   730}
+    ,{  1870,  1870,  1570,  1560,  1570}
+    ,{  1560,  1030,   730,  1560,   730}
+    }
+   ,{{  1570,  1040,   750,  1570,   750}
+    ,{  1570,  1040,   750,  1570,   750}
+    ,{  1570,  1040,   740,  1570,   740}
+    ,{  1570,  1040,   750,  1570,   750}
+    ,{   300,   300,  -230,  -250,  -230}
+    }
+   }
+  ,{{{  1870,  1870,  1570,   130,  1570}
+    ,{  1340,  1340,  1040,   130,  1040}
+    ,{  1040,  1040,   740,    70,   740}
+    ,{  1870,  1870,  1570,  -160,  1570}
+    ,{  1040,  1040,   740,    70,   740}
+    }
+   ,{{  1340,  1340,  1040,   130,  1040}
+    ,{  1340,  1340,  1040,   130,  1040}
+    ,{  1030,  1030,   730,  -180,   730}
+    ,{   -50,   -50,  -340, -1260,  -340}
+    ,{  1030,  1030,   730,  -180,   730}
+    }
+   ,{{  1040,  1040,   750,    70,   750}
+    ,{  1040,  1040,   750,  -160,   750}
+    ,{  1040,  1040,   740,    70,   740}
+    ,{  1040,  1040,   750,  -160,   750}
+    ,{  1040,  1040,   740,    70,   740}
+    }
+   ,{{  1870,  1870,  1570,  -180,  1570}
+    ,{   130,   130,  -160, -1080,  -160}
+    ,{  1030,  1030,   730,  -180,   730}
+    ,{  1870,  1870,  1570,  -590,  1570}
+    ,{  1030,  1030,   730,  -180,   730}
+    }
+   ,{{  1040,  1040,   750,    70,   750}
+    ,{  1040,  1040,   750,  -160,   750}
+    ,{  1040,  1040,   740,    70,   740}
+    ,{  1040,  1040,   750,  -160,   750}
+    ,{   300,   300,  -230, -1150,  -230}
+    }
+   }
+  ,{{{  1570,  1560,  1570,  1560,  1570}
+    ,{  1040,  1030,  1040,  1030,  1040}
+    ,{   740,   730,   740,   730,   740}
+    ,{  1570,  1560,  1570,  1560,  1570}
+    ,{   740,   730,   740,   730,   740}
+    }
+   ,{{  1040,  1030,  1040,  1030,  1040}
+    ,{  1040,  1030,  1040,  1030,  1040}
+    ,{   730,   720,   730,   720,   730}
+    ,{  -110,  -360,  -110,  -360,  -110}
+    ,{   730,   720,   730,   720,   730}
+    }
+   ,{{   740,   730,   740,   730,   740}
+    ,{   740,   730,   740,   730,   740}
+    ,{   740,   730,   740,   730,   740}
+    ,{   740,   730,   740,   730,   740}
+    ,{   740,   730,   740,   730,   740}
+    }
+   ,{{  1570,  1560,  1570,  1560,  1570}
+    ,{    70,  -180,    70,  -180,    70}
+    ,{   730,   720,   730,   720,   730}
+    ,{  1570,  1560,  1570,  1560,  1570}
+    ,{   730,   720,   730,   720,   730}
+    }
+   ,{{   740,   730,   740,   730,   740}
+    ,{   740,   730,   740,   730,   740}
+    ,{   740,   730,   740,   730,   740}
+    ,{   740,   730,   740,   730,   740}
+    ,{  -240,  -250,  -240,  -250,  -240}
+    }
+   }
+  ,{{{  1870,   -50,  1570,  1870,  1570}
+    ,{  1870,   -50,  1040,  1870,  1040}
+    ,{  1570,  -110,   740,  1570,   740}
+    ,{  1570,  -340,  1570,  1570,  1570}
+    ,{  1570,  -110,   740,  1570,   740}
+    }
+   ,{{  1870,   -50,  1040,  1870,  1040}
+    ,{  1870,   -50,  1040,  1870,  1040}
+    ,{  1560,  -360,   730,  1560,   730}
+    ,{  -340, -1440,  -340,  -770,  -340}
+    ,{  1560,  -360,   730,  1560,   730}
+    }
+   ,{{  1570,  -110,   750,  1570,   750}
+    ,{  1570,  -340,   750,  1570,   750}
+    ,{  1570,  -110,   740,  1570,   740}
+    ,{  1570,  -340,   750,  1570,   750}
+    ,{  1570,  -110,   740,  1570,   740}
+    }
+   ,{{  1570,  -360,  1570,  1560,  1570}
+    ,{  -160, -1260,  -160,  -590,  -160}
+    ,{  1560,  -360,   730,  1560,   730}
+    ,{  1570,  -770,  1570,  -100,  1570}
+    ,{  1560,  -360,   730,  1560,   730}
+    }
+   ,{{  1570,  -110,   750,  1570,   750}
+    ,{  1570,  -340,   750,  1570,   750}
+    ,{  1570,  -110,   740,  1570,   740}
+    ,{  1570,  -340,   750,  1570,   750}
+    ,{  -230, -1330,  -230,  -660,  -230}
+    }
+   }
+  ,{{{  1570,  1560,  1570,  1560,   300}
+    ,{  1040,  1030,  1040,  1030,   300}
+    ,{   740,   730,   740,   730,  -240}
+    ,{  1570,  1560,  1570,  1560,  -230}
+    ,{   740,   730,   740,   730,  -240}
+    }
+   ,{{  1040,  1030,  1040,  1030,   300}
+    ,{  1040,  1030,  1040,  1030,   300}
+    ,{   730,   720,   730,   720,  -250}
+    ,{  -110,  -360,  -110,  -360, -1330}
+    ,{   730,   720,   730,   720,  -250}
+    }
+   ,{{   740,   730,   740,   730,  -230}
+    ,{   740,   730,   740,   730,  -230}
+    ,{   740,   730,   740,   730,  -240}
+    ,{   740,   730,   740,   730,  -230}
+    ,{   740,   730,   740,   730,  -240}
+    }
+   ,{{  1570,  1560,  1570,  1560,  -250}
+    ,{    70,  -180,    70,  -180, -1150}
+    ,{   730,   720,   730,   720,  -250}
+    ,{  1570,  1560,  1570,  1560,  -660}
+    ,{   730,   720,   730,   720,  -250}
+    }
+   ,{{   740,   730,   740,   730,  -230}
+    ,{   740,   730,   740,   730,  -230}
+    ,{   740,   730,   740,   730,  -240}
+    ,{   740,   730,   740,   730,  -230}
+    ,{  -240,  -250,  -240,  -250, -1220}
+    }
+   }
+  }
+ ,{{{{  2050,  2050,  1760,  1930,  1760}
+    ,{  1930,  1400,  1110,  1930,  1110}
+    ,{  1800,  1270,   980,  1800,   980}
+    ,{  2050,  2050,  1760,  1800,  1760}
+    ,{  1670,  1140,   850,  1670,   850}
+    }
+   ,{{  1930,  1400,  1110,  1930,  1110}
+    ,{  1930,  1400,  1110,  1930,  1110}
+    ,{  1650,  1120,   830,  1650,   830}
+    ,{     0,     0,   -60,  -310,   -60}
+    ,{  1650,  1120,   830,  1650,   830}
+    }
+   ,{{  1800,  1270,   980,  1800,   980}
+    ,{  1800,  1270,   980,  1800,   980}
+    ,{  1800,  1270,   980,  1800,   980}
+    ,{  1800,  1270,   980,  1800,   980}
+    ,{  1670,  1140,   850,  1670,   850}
+    }
+   ,{{  2050,  2050,  1760,  1740,  1760}
+    ,{  -300,  -300,  -360,  -610,  -360}
+    ,{  1650,  1120,   830,  1650,   830}
+    ,{  2050,  2050,  1760,  1740,  1760}
+    ,{  1650,  1120,   830,  1650,   830}
+    }
+   ,{{  1800,  1270,   980,  1800,   980}
+    ,{  1800,  1270,   980,  1800,   980}
+    ,{  1360,   830,   540,  1360,   540}
+    ,{  1800,  1270,   980,  1800,   980}
+    ,{   570,   570,    40,    20,    40}
+    }
+   }
+  ,{{{  2050,  2050,  1760,   300,  1760}
+    ,{  1400,  1400,  1110,   190,  1110}
+    ,{  1270,  1270,   980,   300,   980}
+    ,{  2050,  2050,  1760,    60,  1760}
+    ,{  1140,  1140,   850,   180,   850}
+    }
+   ,{{  1400,  1400,  1110,   190,  1110}
+    ,{  1400,  1400,  1110,   190,  1110}
+    ,{  1120,  1120,   830,   -80,   830}
+    ,{     0,     0,  -290, -1210,  -290}
+    ,{  1120,  1120,   830,   -80,   830}
+    }
+   ,{{  1270,  1270,   980,   300,   980}
+    ,{  1270,  1270,   980,    60,   980}
+    ,{  1270,  1270,   980,   300,   980}
+    ,{  1270,  1270,   980,    60,   980}
+    ,{  1140,  1140,   850,   180,   850}
+    }
+   ,{{  2050,  2050,  1760,   -80,  1760}
+    ,{  -300,  -300,  -590, -1510,  -590}
+    ,{  1120,  1120,   830,   -80,   830}
+    ,{  2050,  2050,  1760,  -400,  1760}
+    ,{  1120,  1120,   830,   -80,   830}
+    }
+   ,{{  1270,  1270,   980,    60,   980}
+    ,{  1270,  1270,   980,    60,   980}
+    ,{   830,   830,   540,  -130,   540}
+    ,{  1270,  1270,   980,    60,   980}
+    ,{   570,   570,    40,  -870,    40}
+    }
+   }
+  ,{{{  1750,  1740,  1750,  1740,  1750}
+    ,{  1100,  1090,  1100,  1090,  1100}
+    ,{   970,   960,   970,   960,   970}
+    ,{  1750,  1740,  1750,  1740,  1750}
+    ,{   840,   830,   840,   830,   840}
+    }
+   ,{{  1100,  1090,  1100,  1090,  1100}
+    ,{  1100,  1090,  1100,  1090,  1100}
+    ,{   820,   810,   820,   810,   820}
+    ,{   -60,  -310,   -60,  -310,   -60}
+    ,{   820,   810,   820,   810,   820}
+    }
+   ,{{   970,   960,   970,   960,   970}
+    ,{   970,   960,   970,   960,   970}
+    ,{   970,   960,   970,   960,   970}
+    ,{   970,   960,   970,   960,   970}
+    ,{   840,   830,   840,   830,   840}
+    }
+   ,{{  1750,  1740,  1750,  1740,  1750}
+    ,{  -360,  -610,  -360,  -610,  -360}
+    ,{   820,   810,   820,   810,   820}
+    ,{  1750,  1740,  1750,  1740,  1750}
+    ,{   820,   810,   820,   810,   820}
+    }
+   ,{{   970,   960,   970,   960,   970}
+    ,{   970,   960,   970,   960,   970}
+    ,{   530,   520,   530,   520,   530}
+    ,{   970,   960,   970,   960,   970}
+    ,{    30,    20,    30,    20,    30}
+    }
+   }
+  ,{{{  1930,   130,  1760,  1930,  1760}
+    ,{  1930,    10,  1110,  1930,  1110}
+    ,{  1800,   130,   980,  1800,   980}
+    ,{  1800,  -110,  1760,  1800,  1760}
+    ,{  1670,     0,   850,  1670,   850}
+    }
+   ,{{  1930,    10,  1110,  1930,  1110}
+    ,{  1930,    10,  1110,  1930,  1110}
+    ,{  1650,  -260,   830,  1650,   830}
+    ,{  -290, -1390,  -290,  -720,  -290}
+    ,{  1650,  -260,   830,  1650,   830}
+    }
+   ,{{  1800,   130,   980,  1800,   980}
+    ,{  1800,  -110,   980,  1800,   980}
+    ,{  1800,   130,   980,  1800,   980}
+    ,{  1800,  -110,   980,  1800,   980}
+    ,{  1670,     0,   850,  1670,   850}
+    }
+   ,{{  1760,  -260,  1760,  1650,  1760}
+    ,{  -590, -1690,  -590, -1020,  -590}
+    ,{  1650,  -260,   830,  1650,   830}
+    ,{  1760,  -580,  1760,    80,  1760}
+    ,{  1650,  -260,   830,  1650,   830}
+    }
+   ,{{  1800,  -110,   980,  1800,   980}
+    ,{  1800,  -110,   980,  1800,   980}
+    ,{  1360,  -310,   540,  1360,   540}
+    ,{  1800,  -110,   980,  1800,   980}
+    ,{    40, -1050,    40,  -380,    40}
+    }
+   }
+  ,{{{  1750,  1740,  1750,  1740,   360}
+    ,{  1100,  1090,  1100,  1090,   360}
+    ,{   970,   960,   970,   960,     0}
+    ,{  1750,  1740,  1750,  1740,     0}
+    ,{   840,   830,   840,   830,  -130}
+    }
+   ,{{  1100,  1090,  1100,  1090,   360}
+    ,{  1100,  1090,  1100,  1090,   360}
+    ,{   820,   810,   820,   810,  -150}
+    ,{   -60,  -310,   -60,  -310, -1280}
+    ,{   820,   810,   820,   810,  -150}
+    }
+   ,{{   970,   960,   970,   960,     0}
+    ,{   970,   960,   970,   960,     0}
+    ,{   970,   960,   970,   960,     0}
+    ,{   970,   960,   970,   960,     0}
+    ,{   840,   830,   840,   830,  -130}
+    }
+   ,{{  1750,  1740,  1750,  1740,  -150}
+    ,{  -360,  -610,  -360,  -610, -1580}
+    ,{   820,   810,   820,   810,  -150}
+    ,{  1750,  1740,  1750,  1740,  -470}
+    ,{   820,   810,   820,   810,  -150}
+    }
+   ,{{   970,   960,   970,   960,     0}
+    ,{   970,   960,   970,   960,     0}
+    ,{   530,   520,   530,   520,  -440}
+    ,{   970,   960,   970,   960,     0}
+    ,{    30,    20,    30,    20,  -940}
+    }
+   }
+  }
+ ,{{{{  2050,  2050,  1760,  1930,  1760}
+    ,{  1930,  1400,  1110,  1930,  1110}
+    ,{  1800,  1270,   980,  1800,   980}
+    ,{  2050,  2050,  1760,  1800,  1760}
+    ,{  1670,  1140,   850,  1670,   850}
+    }
+   ,{{  1930,  1400,  1110,  1930,  1110}
+    ,{  1930,  1400,  1110,  1930,  1110}
+    ,{  1650,  1120,   830,  1650,   830}
+    ,{   220,   220,   170,   -80,   170}
+    ,{  1650,  1120,   830,  1650,   830}
+    }
+   ,{{  1800,  1270,   980,  1800,   980}
+    ,{  1800,  1270,   980,  1800,   980}
+    ,{  1800,  1270,   980,  1800,   980}
+    ,{  1800,  1270,   980,  1800,   980}
+    ,{  1670,  1140,   850,  1670,   850}
+    }
+   ,{{  2050,  2050,  1760,  1740,  1760}
+    ,{   130,   130,    70,  -180,    70}
+    ,{  1650,  1120,   830,  1650,   830}
+    ,{  2050,  2050,  1760,  1740,  1760}
+    ,{  1650,  1120,   830,  1650,   830}
+    }
+   ,{{  1800,  1270,   980,  1800,   980}
+    ,{  1800,  1270,   980,  1800,   980}
+    ,{  1570,  1040,   740,  1570,   740}
+    ,{  1800,  1270,   980,  1800,   980}
+    ,{   570,   570,    40,    20,    40}
+    }
+   }
+  ,{{{  2050,  2050,  1760,   300,  1760}
+    ,{  1400,  1400,  1110,   190,  1110}
+    ,{  1270,  1270,   980,   300,   980}
+    ,{  2050,  2050,  1760,    60,  1760}
+    ,{  1140,  1140,   850,   180,   850}
+    }
+   ,{{  1400,  1400,  1110,   190,  1110}
+    ,{  1400,  1400,  1110,   190,  1110}
+    ,{  1120,  1120,   830,   -80,   830}
+    ,{   220,   220,   -70,  -980,   -70}
+    ,{  1120,  1120,   830,   -80,   830}
+    }
+   ,{{  1270,  1270,   980,   300,   980}
+    ,{  1270,  1270,   980,    60,   980}
+    ,{  1270,  1270,   980,   300,   980}
+    ,{  1270,  1270,   980,    60,   980}
+    ,{  1140,  1140,   850,   180,   850}
+    }
+   ,{{  2050,  2050,  1760,   -80,  1760}
+    ,{   130,   130,  -160, -1080,  -160}
+    ,{  1120,  1120,   830,   -80,   830}
+    ,{  2050,  2050,  1760,  -400,  1760}
+    ,{  1120,  1120,   830,   -80,   830}
+    }
+   ,{{  1270,  1270,   980,    70,   980}
+    ,{  1270,  1270,   980,    60,   980}
+    ,{  1040,  1040,   740,    70,   740}
+    ,{  1270,  1270,   980,    60,   980}
+    ,{   570,   570,    40,  -870,    40}
+    }
+   }
+  ,{{{  1750,  1740,  1750,  1740,  1750}
+    ,{  1100,  1090,  1100,  1090,  1100}
+    ,{   970,   960,   970,   960,   970}
+    ,{  1750,  1740,  1750,  1740,  1750}
+    ,{   840,   830,   840,   830,   840}
+    }
+   ,{{  1100,  1090,  1100,  1090,  1100}
+    ,{  1100,  1090,  1100,  1090,  1100}
+    ,{   820,   810,   820,   810,   820}
+    ,{   170,   -80,   170,   -80,   170}
+    ,{   820,   810,   820,   810,   820}
+    }
+   ,{{   970,   960,   970,   960,   970}
+    ,{   970,   960,   970,   960,   970}
+    ,{   970,   960,   970,   960,   970}
+    ,{   970,   960,   970,   960,   970}
+    ,{   840,   830,   840,   830,   840}
+    }
+   ,{{  1750,  1740,  1750,  1740,  1750}
+    ,{    70,  -180,    70,  -180,    70}
+    ,{   820,   810,   820,   810,   820}
+    ,{  1750,  1740,  1750,  1740,  1750}
+    ,{   820,   810,   820,   810,   820}
+    }
+   ,{{   970,   960,   970,   960,   970}
+    ,{   970,   960,   970,   960,   970}
+    ,{   740,   730,   740,   730,   740}
+    ,{   970,   960,   970,   960,   970}
+    ,{    30,    20,    30,    20,    30}
+    }
+   }
+  ,{{{  1930,   130,  1760,  1930,  1760}
+    ,{  1930,    10,  1110,  1930,  1110}
+    ,{  1800,   130,   980,  1800,   980}
+    ,{  1800,  -110,  1760,  1800,  1760}
+    ,{  1670,     0,   850,  1670,   850}
+    }
+   ,{{  1930,    10,  1110,  1930,  1110}
+    ,{  1930,    10,  1110,  1930,  1110}
+    ,{  1650,  -260,   830,  1650,   830}
+    ,{   -70, -1160,   -70,  -490,   -70}
+    ,{  1650,  -260,   830,  1650,   830}
+    }
+   ,{{  1800,   130,   980,  1800,   980}
+    ,{  1800,  -110,   980,  1800,   980}
+    ,{  1800,   130,   980,  1800,   980}
+    ,{  1800,  -110,   980,  1800,   980}
+    ,{  1670,     0,   850,  1670,   850}
+    }
+   ,{{  1760,  -260,  1760,  1650,  1760}
+    ,{  -160, -1260,  -160,  -590,  -160}
+    ,{  1650,  -260,   830,  1650,   830}
+    ,{  1760,  -580,  1760,    80,  1760}
+    ,{  1650,  -260,   830,  1650,   830}
+    }
+   ,{{  1800,  -110,   980,  1800,   980}
+    ,{  1800,  -110,   980,  1800,   980}
+    ,{  1570,  -110,   740,  1570,   740}
+    ,{  1800,  -110,   980,  1800,   980}
+    ,{    40, -1050,    40,  -380,    40}
+    }
+   }
+  ,{{{  1750,  1740,  1750,  1740,   360}
+    ,{  1100,  1090,  1100,  1090,   360}
+    ,{   970,   960,   970,   960,     0}
+    ,{  1750,  1740,  1750,  1740,     0}
+    ,{   840,   830,   840,   830,  -130}
+    }
+   ,{{  1100,  1090,  1100,  1090,   360}
+    ,{  1100,  1090,  1100,  1090,   360}
+    ,{   820,   810,   820,   810,  -150}
+    ,{   170,   -80,   170,   -80, -1050}
+    ,{   820,   810,   820,   810,  -150}
+    }
+   ,{{   970,   960,   970,   960,     0}
+    ,{   970,   960,   970,   960,     0}
+    ,{   970,   960,   970,   960,     0}
+    ,{   970,   960,   970,   960,     0}
+    ,{   840,   830,   840,   830,  -130}
+    }
+   ,{{  1750,  1740,  1750,  1740,  -150}
+    ,{    70,  -180,    70,  -180, -1150}
+    ,{   820,   810,   820,   810,  -150}
+    ,{  1750,  1740,  1750,  1740,  -470}
+    ,{   820,   810,   820,   810,  -150}
+    }
+   ,{{   970,   960,   970,   960,     0}
+    ,{   970,   960,   970,   960,     0}
+    ,{   740,   730,   740,   730,  -240}
+    ,{   970,   960,   970,   960,     0}
+    ,{    30,    20,    30,    20,  -940}
+    }
+   }
+  }
+ }
+,{{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{  1350,   850,   720,  1350,   720}
+    ,{  1300,   650,   520,  1300,   520}
+    ,{  1350,   700,   570,  1350,   570}
+    ,{  1300,   850,   720,  1300,   720}
+    ,{  1250,   590,   460,  1250,   460}
+    }
+   ,{{  1160,   500,   400,  1160,   370}
+    ,{  1160,   500,   370,  1160,   370}
+    ,{   850,   190,    60,   850,    60}
+    ,{   400,   290,   400,    10,   160}
+    ,{   850,   190,    60,   850,    60}
+    }
+   ,{{  1300,   650,   520,  1300,   520}
+    ,{  1300,   650,   520,  1300,   520}
+    ,{  1290,   640,   510,  1290,   510}
+    ,{  1300,   650,   520,  1300,   520}
+    ,{  1250,   590,   460,  1250,   460}
+    }
+   ,{{   850,   850,   720,   850,   720}
+    ,{   120,     0,   120,  -270,  -120}
+    ,{   850,   190,    60,   850,    60}
+    ,{   850,   850,   720,   570,   720}
+    ,{   850,   190,    60,   850,    60}
+    }
+   ,{{  1350,   700,   570,  1350,   570}
+    ,{  1300,   650,   520,  1300,   520}
+    ,{  1350,   700,   570,  1350,   570}
+    ,{  1300,   650,   520,  1300,   520}
+    ,{   100,   100,  -270,  -420,  -270}
+    }
+   }
+  ,{{{   850,   850,   720,  -760,   720}
+    ,{   650,   650,   520, -1050,   520}
+    ,{   700,   700,   570,  -760,   570}
+    ,{   850,   850,   720, -1050,   720}
+    ,{   590,   590,   460,  -870,   460}
+    }
+   ,{{   500,   500,   370, -1200,   370}
+    ,{   500,   500,   370, -1200,   370}
+    ,{   190,   190,    60, -1510,    60}
+    ,{   290,   290,   160, -1410,   160}
+    ,{   190,   190,    60, -1510,    60}
+    }
+   ,{{   650,   650,   520,  -820,   520}
+    ,{   650,   650,   520, -1050,   520}
+    ,{   640,   640,   510,  -820,   510}
+    ,{   650,   650,   520, -1050,   520}
+    ,{   590,   590,   460,  -870,   460}
+    }
+   ,{{   850,   850,   720, -1510,   720}
+    ,{     0,     0,  -120, -1700,  -120}
+    ,{   190,   190,    60, -1510,    60}
+    ,{   850,   850,   720, -2110,   720}
+    ,{   190,   190,    60, -1510,    60}
+    }
+   ,{{   700,   700,   570,  -760,   570}
+    ,{   650,   650,   520, -1050,   520}
+    ,{   700,   700,   570,  -760,   570}
+    ,{   650,   650,   520, -1050,   520}
+    ,{   100,   100,  -270, -1840,  -270}
+    }
+   }
+  ,{{{   720,   570,   720,   570,   280}
+    ,{   520,   370,   520,   370,    80}
+    ,{   570,   420,   570,   420,   130}
+    ,{   720,   570,   720,   570,   280}
+    ,{   460,   310,   460,   310,    20}
+    }
+   ,{{   400,   220,   400,   220,   -40}
+    ,{   370,   220,   370,   220,   -60}
+    ,{    60,   -80,    60,   -80,  -370}
+    ,{   400,    10,   400,    10,   -40}
+    ,{    60,   -80,    60,   -80,  -370}
+    }
+   ,{{   520,   370,   520,   370,    80}
+    ,{   520,   370,   520,   370,    80}
+    ,{   510,   360,   510,   360,    70}
+    ,{   520,   370,   520,   370,    80}
+    ,{   460,   310,   460,   310,    20}
+    }
+   ,{{   720,   570,   720,   570,   280}
+    ,{   120,  -270,   120,  -270,  -320}
+    ,{    60,   -80,    60,   -80,  -370}
+    ,{   720,   570,   720,   570,   280}
+    ,{    60,   -80,    60,   -80,  -370}
+    }
+   ,{{   570,   420,   570,   420,   130}
+    ,{   520,   370,   520,   370,    80}
+    ,{   570,   420,   570,   420,   130}
+    ,{   520,   370,   520,   370,    80}
+    ,{  -270,  -420,  -270,  -420,  -710}
+    }
+   }
+  ,{{{  1350,  -460,   720,  1350,   720}
+    ,{  1300,  -750,   520,  1300,   520}
+    ,{  1350,  -460,   570,  1350,   570}
+    ,{  1300,  -750,   720,  1300,   720}
+    ,{  1250,  -570,   460,  1250,   460}
+    }
+   ,{{  1160,  -900,   370,  1160,   370}
+    ,{  1160,  -900,   370,  1160,   370}
+    ,{   850, -1210,    60,   850,    60}
+    ,{   160, -1110,   160,  -310,   160}
+    ,{   850, -1210,    60,   850,    60}
+    }
+   ,{{  1300,  -520,   520,  1300,   520}
+    ,{  1300,  -750,   520,  1300,   520}
+    ,{  1290,  -520,   510,  1290,   510}
+    ,{  1300,  -750,   520,  1300,   520}
+    ,{  1250,  -570,   460,  1250,   460}
+    }
+   ,{{   850, -1210,   720,   850,   720}
+    ,{  -120, -1400,  -120,  -590,  -120}
+    ,{   850, -1210,    60,   850,    60}
+    ,{   720, -1810,   720, -1000,   720}
+    ,{   850, -1210,    60,   850,    60}
+    }
+   ,{{  1350,  -460,   570,  1350,   570}
+    ,{  1300,  -750,   520,  1300,   520}
+    ,{  1350,  -460,   570,  1350,   570}
+    ,{  1300,  -750,   520,  1300,   520}
+    ,{  -270, -1540,  -270,  -740,  -270}
+    }
+   }
+  ,{{{   590,   570,   590,   570,  -320}
+    ,{   390,   370,   390,   370,  -320}
+    ,{   440,   420,   440,   420,  -360}
+    ,{   590,   570,   590,   570,  -420}
+    ,{   330,   310,   330,   310,  -470}
+    }
+   ,{{   270,   220,   270,   220,  -320}
+    ,{   240,   220,   240,   220,  -320}
+    ,{   -60,   -80,   -60,   -80,  -870}
+    ,{   270,    10,   270,    10,  -780}
+    ,{   -60,   -80,   -60,   -80,  -870}
+    }
+   ,{{   390,   370,   390,   370,  -420}
+    ,{   390,   370,   390,   370,  -420}
+    ,{   380,   360,   380,   360,  -420}
+    ,{   390,   370,   390,   370,  -420}
+    ,{   330,   310,   330,   310,  -470}
+    }
+   ,{{   590,   570,   590,   570,  -870}
+    ,{   -10,  -270,   -10,  -270, -1060}
+    ,{   -60,   -80,   -60,   -80,  -870}
+    ,{   590,   570,   590,   570, -1470}
+    ,{   -60,   -80,   -60,   -80,  -870}
+    }
+   ,{{   440,   420,   440,   420,  -360}
+    ,{   390,   370,   390,   370,  -420}
+    ,{   440,   420,   440,   420,  -360}
+    ,{   390,   370,   390,   370,  -420}
+    ,{  -400,  -420,  -400,  -420, -1210}
+    }
+   }
+  }
+ ,{{{{  1320,   850,   720,  1320,   720}
+    ,{  1320,   670,   540,  1320,   540}
+    ,{   870,   220,    90,   870,    90}
+    ,{   960,   850,   720,   960,   720}
+    ,{   870,   250,    90,   870,    90}
+    }
+   ,{{  1320,   670,   540,  1320,   540}
+    ,{  1320,   670,   540,  1320,   540}
+    ,{   870,   220,    90,   870,    90}
+    ,{  -410,  -520,  -410,  -800,  -650}
+    ,{   870,   220,    90,   870,    90}
+    }
+   ,{{   960,   300,   170,   960,   170}
+    ,{   960,   300,   170,   960,   170}
+    ,{   650,     0,  -130,   650,  -130}
+    ,{   960,   300,   170,   960,   170}
+    ,{   650,     0,  -130,   650,  -130}
+    }
+   ,{{   870,   850,   720,   870,   720}
+    ,{    70,   -40,    70,  -320,  -170}
+    ,{   870,   220,    90,   870,    90}
+    ,{   850,   850,   720,   570,   720}
+    ,{   870,   220,    90,   870,    90}
+    }
+   ,{{   960,   300,   170,   960,   170}
+    ,{   960,   300,   170,   960,   170}
+    ,{   340,  -310,  -440,   340,  -440}
+    ,{   960,   300,   170,   960,   170}
+    ,{   250,   250,  -110,  -260,  -110}
+    }
+   }
+  ,{{{   850,   850,   720, -1030,   720}
+    ,{   670,   670,   540, -1030,   540}
+    ,{   220,   220,    90, -1460,    90}
+    ,{   850,   850,   720, -1400,   720}
+    ,{   250,   250,    90, -1460,    90}
+    }
+   ,{{   670,   670,   540, -1030,   540}
+    ,{   670,   670,   540, -1030,   540}
+    ,{   220,   220,    90, -1480,    90}
+    ,{  -520,  -520,  -650, -2220,  -650}
+    ,{   220,   220,    90, -1480,    90}
+    }
+   ,{{   300,   300,   170, -1400,   170}
+    ,{   300,   300,   170, -1400,   170}
+    ,{     0,     0,  -130, -1460,  -130}
+    ,{   300,   300,   170, -1400,   170}
+    ,{     0,     0,  -130, -1460,  -130}
+    }
+   ,{{   850,   850,   720, -1480,   720}
+    ,{   -40,   -40,  -170, -1750,  -170}
+    ,{   220,   220,    90, -1480,    90}
+    ,{   850,   850,   720, -2110,   720}
+    ,{   220,   220,    90, -1480,    90}
+    }
+   ,{{   300,   300,   170, -1400,   170}
+    ,{   300,   300,   170, -1400,   170}
+    ,{  -310,  -310,  -440, -1770,  -440}
+    ,{   300,   300,   170, -1400,   170}
+    ,{   250,   250,  -110, -1690,  -110}
+    }
+   }
+  ,{{{   720,   570,   720,   570,   280}
+    ,{   540,   390,   540,   390,   100}
+    ,{    90,   -60,    90,   -60,  -350}
+    ,{   720,   570,   720,   570,   280}
+    ,{    90,   -60,    90,   -60,  -350}
+    }
+   ,{{   540,   390,   540,   390,   100}
+    ,{   540,   390,   540,   390,   100}
+    ,{    90,   -60,    90,   -60,  -350}
+    ,{  -410,  -800,  -410,  -800,  -850}
+    ,{    90,   -60,    90,   -60,  -350}
+    }
+   ,{{   170,    20,   170,    20,  -260}
+    ,{   170,    20,   170,    20,  -260}
+    ,{  -130,  -280,  -130,  -280,  -570}
+    ,{   170,    20,   170,    20,  -260}
+    ,{  -130,  -280,  -130,  -280,  -570}
+    }
+   ,{{   720,   570,   720,   570,   280}
+    ,{    70,  -320,    70,  -320,  -370}
+    ,{    90,   -60,    90,   -60,  -350}
+    ,{   720,   570,   720,   570,   280}
+    ,{    90,   -60,    90,   -60,  -350}
+    }
+   ,{{   170,    20,   170,    20,  -260}
+    ,{   170,    20,   170,    20,  -260}
+    ,{  -440,  -590,  -440,  -590,  -880}
+    ,{   170,    20,   170,    20,  -260}
+    ,{  -110,  -260,  -110,  -260,  -550}
+    }
+   }
+  ,{{{  1320,  -730,   720,  1320,   720}
+    ,{  1320,  -730,   540,  1320,   540}
+    ,{   870, -1160,    90,   870,    90}
+    ,{   960, -1100,   720,   960,   720}
+    ,{   870, -1160,    90,   870,    90}
+    }
+   ,{{  1320,  -730,   540,  1320,   540}
+    ,{  1320,  -730,   540,  1320,   540}
+    ,{   870, -1180,    90,   870,    90}
+    ,{  -650, -1920,  -650, -1120,  -650}
+    ,{   870, -1180,    90,   870,    90}
+    }
+   ,{{   960, -1100,   170,   960,   170}
+    ,{   960, -1100,   170,   960,   170}
+    ,{   650, -1160,  -130,   650,  -130}
+    ,{   960, -1100,   170,   960,   170}
+    ,{   650, -1160,  -130,   650,  -130}
+    }
+   ,{{   870, -1180,   720,   870,   720}
+    ,{  -170, -1450,  -170,  -640,  -170}
+    ,{   870, -1180,    90,   870,    90}
+    ,{   720, -1810,   720, -1000,   720}
+    ,{   870, -1180,    90,   870,    90}
+    }
+   ,{{   960, -1100,   170,   960,   170}
+    ,{   960, -1100,   170,   960,   170}
+    ,{   340, -1470,  -440,   340,  -440}
+    ,{   960, -1100,   170,   960,   170}
+    ,{  -110, -1390,  -110,  -580,  -110}
+    }
+   }
+  ,{{{   590,   570,   590,   570,  -160}
+    ,{   410,   390,   410,   390,  -160}
+    ,{   -40,   -60,   -40,   -60,  -850}
+    ,{   590,   570,   590,   570,  -760}
+    ,{   -40,   -60,   -40,   -60,  -850}
+    }
+   ,{{   410,   390,   410,   390,  -160}
+    ,{   410,   390,   410,   390,  -160}
+    ,{   -40,   -60,   -40,   -60,  -850}
+    ,{  -540,  -800,  -540,  -800, -1590}
+    ,{   -40,   -60,   -40,   -60,  -850}
+    }
+   ,{{    40,    20,    40,    20,  -760}
+    ,{    40,    20,    40,    20,  -760}
+    ,{  -260,  -280,  -260,  -280, -1070}
+    ,{    40,    20,    40,    20,  -760}
+    ,{  -260,  -280,  -260,  -280, -1070}
+    }
+   ,{{   590,   570,   590,   570,  -850}
+    ,{   -60,  -320,   -60,  -320, -1110}
+    ,{   -40,   -60,   -40,   -60,  -850}
+    ,{   590,   570,   590,   570, -1470}
+    ,{   -40,   -60,   -40,   -60,  -850}
+    }
+   ,{{    40,    20,    40,    20,  -760}
+    ,{    40,    20,    40,    20,  -760}
+    ,{  -570,  -590,  -570,  -590, -1380}
+    ,{    40,    20,    40,    20,  -760}
+    ,{  -240,  -260,  -240,  -260, -1050}
+    }
+   }
+  }
+ ,{{{{  1010,  1010,   880,   730,   880}
+    ,{   410,   -70,    40,   410,  -200}
+    ,{   410,  -240,  -370,   410,  -370}
+    ,{  1010,  1010,   880,   730,   880}
+    ,{   410,     0,  -370,   410,  -370}
+    }
+   ,{{   410,  -240,  -150,   410,  -370}
+    ,{   230,  -420,  -550,   230,  -550}
+    ,{   410,  -240,  -370,   410,  -370}
+    ,{  -150,  -260,  -150,  -540,  -390}
+    ,{   410,  -240,  -370,   410,  -370}
+    }
+   ,{{   410,  -240,  -370,   410,  -370}
+    ,{   410,  -240,  -370,   410,  -370}
+    ,{   410,  -240,  -370,   410,  -370}
+    ,{   410,  -240,  -370,   410,  -370}
+    ,{   410,  -240,  -370,   410,  -370}
+    }
+   ,{{  1010,  1010,   880,   730,   880}
+    ,{    40,   -70,    40,  -350,  -200}
+    ,{   410,  -240,  -370,   410,  -370}
+    ,{  1010,  1010,   880,   730,   880}
+    ,{   410,  -240,  -370,   410,  -370}
+    }
+   ,{{   410,     0,  -370,   410,  -370}
+    ,{   410,  -240,  -370,   410,  -370}
+    ,{   410,  -240,  -370,   410,  -370}
+    ,{   410,  -240,  -370,   410,  -370}
+    ,{     0,     0,  -370,  -520,  -370}
+    }
+   }
+  ,{{{  1010,  1010,   880, -1710,   880}
+    ,{   -70,   -70,  -200, -1770,  -200}
+    ,{  -240,  -240,  -370, -1710,  -370}
+    ,{  1010,  1010,   880, -1950,   880}
+    ,{     0,     0,  -370, -1710,  -370}
+    }
+   ,{{  -240,  -240,  -370, -1950,  -370}
+    ,{  -420,  -420,  -550, -2130,  -550}
+    ,{  -240,  -240,  -370, -1950,  -370}
+    ,{  -260,  -260,  -390, -1960,  -390}
+    ,{  -240,  -240,  -370, -1950,  -370}
+    }
+   ,{{  -240,  -240,  -370, -1710,  -370}
+    ,{  -240,  -240,  -370, -1950,  -370}
+    ,{  -240,  -240,  -370, -1710,  -370}
+    ,{  -240,  -240,  -370, -1950,  -370}
+    ,{  -240,  -240,  -370, -1710,  -370}
+    }
+   ,{{  1010,  1010,   880, -1770,   880}
+    ,{   -70,   -70,  -200, -1770,  -200}
+    ,{  -240,  -240,  -370, -1950,  -370}
+    ,{  1010,  1010,   880, -1950,   880}
+    ,{  -240,  -240,  -370, -1950,  -370}
+    }
+   ,{{     0,     0,  -370, -1710,  -370}
+    ,{  -240,  -240,  -370, -1950,  -370}
+    ,{  -240,  -240,  -370, -1710,  -370}
+    ,{  -240,  -240,  -370, -1950,  -370}
+    ,{     0,     0,  -370, -1950,  -370}
+    }
+   }
+  ,{{{   880,   730,   880,   730,   440}
+    ,{    40,  -350,    40,  -350,  -400}
+    ,{  -370,  -520,  -370,  -520,  -810}
+    ,{   880,   730,   880,   730,   440}
+    ,{  -370,  -520,  -370,  -520,  -810}
+    }
+   ,{{  -150,  -520,  -150,  -520,  -590}
+    ,{  -550,  -700,  -550,  -700,  -990}
+    ,{  -370,  -520,  -370,  -520,  -810}
+    ,{  -150,  -540,  -150,  -540,  -590}
+    ,{  -370,  -520,  -370,  -520,  -810}
+    }
+   ,{{  -370,  -520,  -370,  -520,  -810}
+    ,{  -370,  -520,  -370,  -520,  -810}
+    ,{  -370,  -520,  -370,  -520,  -810}
+    ,{  -370,  -520,  -370,  -520,  -810}
+    ,{  -370,  -520,  -370,  -520,  -810}
+    }
+   ,{{   880,   730,   880,   730,   440}
+    ,{    40,  -350,    40,  -350,  -400}
+    ,{  -370,  -520,  -370,  -520,  -810}
+    ,{   880,   730,   880,   730,   440}
+    ,{  -370,  -520,  -370,  -520,  -810}
+    }
+   ,{{  -370,  -520,  -370,  -520,  -810}
+    ,{  -370,  -520,  -370,  -520,  -810}
+    ,{  -370,  -520,  -370,  -520,  -810}
+    ,{  -370,  -520,  -370,  -520,  -810}
+    ,{  -370,  -520,  -370,  -520,  -810}
+    }
+   }
+  ,{{{   880, -1410,   880,   410,   880}
+    ,{   410, -1470,  -200,   410,  -200}
+    ,{   410, -1410,  -370,   410,  -370}
+    ,{   880, -1650,   880,   410,   880}
+    ,{   410, -1410,  -370,   410,  -370}
+    }
+   ,{{   410, -1650,  -370,   410,  -370}
+    ,{   230, -1830,  -550,   230,  -550}
+    ,{   410, -1650,  -370,   410,  -370}
+    ,{  -390, -1660,  -390,  -860,  -390}
+    ,{   410, -1650,  -370,   410,  -370}
+    }
+   ,{{   410, -1410,  -370,   410,  -370}
+    ,{   410, -1650,  -370,   410,  -370}
+    ,{   410, -1410,  -370,   410,  -370}
+    ,{   410, -1650,  -370,   410,  -370}
+    ,{   410, -1410,  -370,   410,  -370}
+    }
+   ,{{   880, -1470,   880,   410,   880}
+    ,{  -200, -1470,  -200,  -670,  -200}
+    ,{   410, -1650,  -370,   410,  -370}
+    ,{   880, -1650,   880,  -840,   880}
+    ,{   410, -1650,  -370,   410,  -370}
+    }
+   ,{{   410, -1410,  -370,   410,  -370}
+    ,{   410, -1650,  -370,   410,  -370}
+    ,{   410, -1410,  -370,   410,  -370}
+    ,{   410, -1650,  -370,   410,  -370}
+    ,{  -370, -1650,  -370,  -840,  -370}
+    }
+   }
+  ,{{{   750,   730,   750,   730, -1140}
+    ,{   -90,  -350,   -90,  -350, -1140}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    ,{   750,   730,   750,   730, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    }
+   ,{{  -280,  -520,  -280,  -520, -1250}
+    ,{  -680,  -700,  -680,  -700, -1250}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    ,{  -280,  -540,  -280,  -540, -1330}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    }
+   ,{{  -500,  -520,  -500,  -520, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    }
+   ,{{   750,   730,   750,   730, -1140}
+    ,{   -90,  -350,   -90,  -350, -1140}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    ,{   750,   730,   750,   730, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    }
+   ,{{  -500,  -520,  -500,  -520, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    }
+   }
+  }
+ ,{{{{  1560,  1560,  1430,  1470,  1430}
+    ,{  1470,   820,   690,  1470,   690}
+    ,{   960,   310,   180,   960,   180}
+    ,{  1560,  1560,  1430,  1280,  1430}
+    ,{   960,   550,   180,   960,   180}
+    }
+   ,{{  1470,   820,   690,  1470,   690}
+    ,{  1470,   820,   690,  1470,   690}
+    ,{   960,   310,   180,   960,   180}
+    ,{    80,   -30,    80,  -310,  -160}
+    ,{   960,   310,   180,   960,   180}
+    }
+   ,{{   960,   310,   180,   960,   180}
+    ,{   960,   310,   180,   960,   180}
+    ,{   960,   310,   180,   960,   180}
+    ,{   960,   310,   180,   960,   180}
+    ,{   960,   310,   180,   960,   180}
+    }
+   ,{{  1560,  1560,  1430,  1280,  1430}
+    ,{   -90,  -200,   -90,  -480,  -330}
+    ,{   960,   310,   180,   960,   180}
+    ,{  1560,  1560,  1430,  1280,  1430}
+    ,{   960,   310,   180,   960,   180}
+    }
+   ,{{   960,   550,   180,   960,   180}
+    ,{   960,   310,   180,   960,   180}
+    ,{   960,   310,   180,   960,   180}
+    ,{   960,   310,   180,   960,   180}
+    ,{   550,   550,   180,    30,   180}
+    }
+   }
+  ,{{{  1560,  1560,  1430,  -880,  1430}
+    ,{   820,   820,   690,  -880,   690}
+    ,{   310,   310,   180, -1150,   180}
+    ,{  1560,  1560,  1430, -1390,  1430}
+    ,{   550,   550,   180, -1150,   180}
+    }
+   ,{{   820,   820,   690,  -880,   690}
+    ,{   820,   820,   690,  -880,   690}
+    ,{   310,   310,   180, -1390,   180}
+    ,{   -30,   -30,  -160, -1730,  -160}
+    ,{   310,   310,   180, -1390,   180}
+    }
+   ,{{   310,   310,   180, -1150,   180}
+    ,{   310,   310,   180, -1390,   180}
+    ,{   310,   310,   180, -1150,   180}
+    ,{   310,   310,   180, -1390,   180}
+    ,{   310,   310,   180, -1150,   180}
+    }
+   ,{{  1560,  1560,  1430, -1390,  1430}
+    ,{  -200,  -200,  -330, -1900,  -330}
+    ,{   310,   310,   180, -1390,   180}
+    ,{  1560,  1560,  1430, -1390,  1430}
+    ,{   310,   310,   180, -1390,   180}
+    }
+   ,{{   550,   550,   180, -1150,   180}
+    ,{   310,   310,   180, -1390,   180}
+    ,{   310,   310,   180, -1150,   180}
+    ,{   310,   310,   180, -1390,   180}
+    ,{   550,   550,   180, -1390,   180}
+    }
+   }
+  ,{{{  1430,  1280,  1430,  1280,   990}
+    ,{   690,   540,   690,   540,   250}
+    ,{   180,    30,   180,    30,  -260}
+    ,{  1430,  1280,  1430,  1280,   990}
+    ,{   180,    30,   180,    30,  -260}
+    }
+   ,{{   690,   540,   690,   540,   250}
+    ,{   690,   540,   690,   540,   250}
+    ,{   180,    30,   180,    30,  -260}
+    ,{    80,  -310,    80,  -310,  -360}
+    ,{   180,    30,   180,    30,  -260}
+    }
+   ,{{   180,    30,   180,    30,  -260}
+    ,{   180,    30,   180,    30,  -260}
+    ,{   180,    30,   180,    30,  -260}
+    ,{   180,    30,   180,    30,  -260}
+    ,{   180,    30,   180,    30,  -260}
+    }
+   ,{{  1430,  1280,  1430,  1280,   990}
+    ,{   -90,  -480,   -90,  -480,  -530}
+    ,{   180,    30,   180,    30,  -260}
+    ,{  1430,  1280,  1430,  1280,   990}
+    ,{   180,    30,   180,    30,  -260}
+    }
+   ,{{   180,    30,   180,    30,  -260}
+    ,{   180,    30,   180,    30,  -260}
+    ,{   180,    30,   180,    30,  -260}
+    ,{   180,    30,   180,    30,  -260}
+    ,{   180,    30,   180,    30,  -260}
+    }
+   }
+  ,{{{  1470,  -580,  1430,  1470,  1430}
+    ,{  1470,  -580,   690,  1470,   690}
+    ,{   960,  -850,   180,   960,   180}
+    ,{  1430, -1090,  1430,   960,  1430}
+    ,{   960,  -850,   180,   960,   180}
+    }
+   ,{{  1470,  -580,   690,  1470,   690}
+    ,{  1470,  -580,   690,  1470,   690}
+    ,{   960, -1090,   180,   960,   180}
+    ,{  -160, -1430,  -160,  -630,  -160}
+    ,{   960, -1090,   180,   960,   180}
+    }
+   ,{{   960,  -850,   180,   960,   180}
+    ,{   960, -1090,   180,   960,   180}
+    ,{   960,  -850,   180,   960,   180}
+    ,{   960, -1090,   180,   960,   180}
+    ,{   960,  -850,   180,   960,   180}
+    }
+   ,{{  1430, -1090,  1430,   960,  1430}
+    ,{  -330, -1600,  -330,  -800,  -330}
+    ,{   960, -1090,   180,   960,   180}
+    ,{  1430, -1090,  1430,  -290,  1430}
+    ,{   960, -1090,   180,   960,   180}
+    }
+   ,{{   960,  -850,   180,   960,   180}
+    ,{   960, -1090,   180,   960,   180}
+    ,{   960,  -850,   180,   960,   180}
+    ,{   960, -1090,   180,   960,   180}
+    ,{   180, -1090,   180,  -290,   180}
+    }
+   }
+  ,{{{  1300,  1280,  1300,  1280,   -10}
+    ,{   560,   540,   560,   540,   -10}
+    ,{    50,    30,    50,    30,  -760}
+    ,{  1300,  1280,  1300,  1280,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    }
+   ,{{   560,   540,   560,   540,   -10}
+    ,{   560,   540,   560,   540,   -10}
+    ,{    50,    30,    50,    30,  -760}
+    ,{   -50,  -310,   -50,  -310, -1100}
+    ,{    50,    30,    50,    30,  -760}
+    }
+   ,{{    50,    30,    50,    30,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    }
+   ,{{  1300,  1280,  1300,  1280,  -760}
+    ,{  -220,  -480,  -220,  -480, -1270}
+    ,{    50,    30,    50,    30,  -760}
+    ,{  1300,  1280,  1300,  1280,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    }
+   ,{{    50,    30,    50,    30,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    }
+   }
+  }
+ ,{{{{  2050,  1930,  1800,  2050,  1800}
+    ,{  2050,  1400,  1270,  2050,  1270}
+    ,{  1750,  1100,   970,  1750,   970}
+    ,{  1930,  1930,  1800,  1760,  1800}
+    ,{  1750,  1100,   970,  1750,   970}
+    }
+   ,{{  2050,  1400,  1270,  2050,  1270}
+    ,{  2050,  1400,  1270,  2050,  1270}
+    ,{  1740,  1090,   960,  1740,   960}
+    ,{   130,    10,   130,  -260,  -110}
+    ,{  1740,  1090,   960,  1740,   960}
+    }
+   ,{{  1760,  1110,   980,  1760,   980}
+    ,{  1760,  1110,   980,  1760,   980}
+    ,{  1750,  1100,   970,  1750,   970}
+    ,{  1760,  1110,   980,  1760,   980}
+    ,{  1750,  1100,   970,  1750,   970}
+    }
+   ,{{  1930,  1930,  1800,  1740,  1800}
+    ,{   300,   190,   300,   -80,    60}
+    ,{  1740,  1090,   960,  1740,   960}
+    ,{  1930,  1930,  1800,  1650,  1800}
+    ,{  1740,  1090,   960,  1740,   960}
+    }
+   ,{{  1760,  1110,   980,  1760,   980}
+    ,{  1760,  1110,   980,  1760,   980}
+    ,{  1750,  1100,   970,  1750,   970}
+    ,{  1760,  1110,   980,  1760,   980}
+    ,{   360,   360,     0,  -150,     0}
+    }
+   }
+  ,{{{  1930,  1930,  1800,  -300,  1800}
+    ,{  1400,  1400,  1270,  -300,  1270}
+    ,{  1100,  1100,   970,  -360,   970}
+    ,{  1930,  1930,  1800,  -590,  1800}
+    ,{  1100,  1100,   970,  -360,   970}
+    }
+   ,{{  1400,  1400,  1270,  -300,  1270}
+    ,{  1400,  1400,  1270,  -300,  1270}
+    ,{  1090,  1090,   960,  -610,   960}
+    ,{    10,    10,  -110, -1690,  -110}
+    ,{  1090,  1090,   960,  -610,   960}
+    }
+   ,{{  1110,  1110,   980,  -360,   980}
+    ,{  1110,  1110,   980,  -590,   980}
+    ,{  1100,  1100,   970,  -360,   970}
+    ,{  1110,  1110,   980,  -590,   980}
+    ,{  1100,  1100,   970,  -360,   970}
+    }
+   ,{{  1930,  1930,  1800,  -610,  1800}
+    ,{   190,   190,    60, -1510,    60}
+    ,{  1090,  1090,   960,  -610,   960}
+    ,{  1930,  1930,  1800, -1020,  1800}
+    ,{  1090,  1090,   960,  -610,   960}
+    }
+   ,{{  1110,  1110,   980,  -360,   980}
+    ,{  1110,  1110,   980,  -590,   980}
+    ,{  1100,  1100,   970,  -360,   970}
+    ,{  1110,  1110,   980,  -590,   980}
+    ,{   360,   360,     0, -1580,     0}
+    }
+   }
+  ,{{{  1800,  1650,  1800,  1650,  1360}
+    ,{  1270,  1120,  1270,  1120,   830}
+    ,{   970,   820,   970,   820,   530}
+    ,{  1800,  1650,  1800,  1650,  1360}
+    ,{   970,   820,   970,   820,   530}
+    }
+   ,{{  1270,  1120,  1270,  1120,   830}
+    ,{  1270,  1120,  1270,  1120,   830}
+    ,{   960,   810,   960,   810,   520}
+    ,{   130,  -260,   130,  -260,  -310}
+    ,{   960,   810,   960,   810,   520}
+    }
+   ,{{   980,   830,   980,   830,   540}
+    ,{   980,   830,   980,   830,   540}
+    ,{   970,   820,   970,   820,   530}
+    ,{   980,   830,   980,   830,   540}
+    ,{   970,   820,   970,   820,   530}
+    }
+   ,{{  1800,  1650,  1800,  1650,  1360}
+    ,{   300,   -80,   300,   -80,  -130}
+    ,{   960,   810,   960,   810,   520}
+    ,{  1800,  1650,  1800,  1650,  1360}
+    ,{   960,   810,   960,   810,   520}
+    }
+   ,{{   980,   830,   980,   830,   540}
+    ,{   980,   830,   980,   830,   540}
+    ,{   970,   820,   970,   820,   530}
+    ,{   980,   830,   980,   830,   540}
+    ,{     0,  -150,     0,  -150,  -440}
+    }
+   }
+  ,{{{  2050,     0,  1800,  2050,  1800}
+    ,{  2050,     0,  1270,  2050,  1270}
+    ,{  1750,   -60,   970,  1750,   970}
+    ,{  1800,  -290,  1800,  1760,  1800}
+    ,{  1750,   -60,   970,  1750,   970}
+    }
+   ,{{  2050,     0,  1270,  2050,  1270}
+    ,{  2050,     0,  1270,  2050,  1270}
+    ,{  1740,  -310,   960,  1740,   960}
+    ,{  -110, -1390,  -110,  -580,  -110}
+    ,{  1740,  -310,   960,  1740,   960}
+    }
+   ,{{  1760,   -60,   980,  1760,   980}
+    ,{  1760,  -290,   980,  1760,   980}
+    ,{  1750,   -60,   970,  1750,   970}
+    ,{  1760,  -290,   980,  1760,   980}
+    ,{  1750,   -60,   970,  1750,   970}
+    }
+   ,{{  1800,  -310,  1800,  1740,  1800}
+    ,{    60, -1210,    60,  -400,    60}
+    ,{  1740,  -310,   960,  1740,   960}
+    ,{  1800,  -720,  1800,    80,  1800}
+    ,{  1740,  -310,   960,  1740,   960}
+    }
+   ,{{  1760,   -60,   980,  1760,   980}
+    ,{  1760,  -290,   980,  1760,   980}
+    ,{  1750,   -60,   970,  1750,   970}
+    ,{  1760,  -290,   980,  1760,   980}
+    ,{     0, -1280,     0,  -470,     0}
+    }
+   }
+  ,{{{  1670,  1650,  1670,  1650,   570}
+    ,{  1140,  1120,  1140,  1120,   570}
+    ,{   840,   820,   840,   820,    30}
+    ,{  1670,  1650,  1670,  1650,    40}
+    ,{   840,   820,   840,   820,    30}
+    }
+   ,{{  1140,  1120,  1140,  1120,   570}
+    ,{  1140,  1120,  1140,  1120,   570}
+    ,{   830,   810,   830,   810,    20}
+    ,{     0,  -260,     0,  -260, -1050}
+    ,{   830,   810,   830,   810,    20}
+    }
+   ,{{   850,   830,   850,   830,    40}
+    ,{   850,   830,   850,   830,    40}
+    ,{   840,   820,   840,   820,    30}
+    ,{   850,   830,   850,   830,    40}
+    ,{   840,   820,   840,   820,    30}
+    }
+   ,{{  1670,  1650,  1670,  1650,    20}
+    ,{   180,   -80,   180,   -80,  -870}
+    ,{   830,   810,   830,   810,    20}
+    ,{  1670,  1650,  1670,  1650,  -380}
+    ,{   830,   810,   830,   810,    20}
+    }
+   ,{{   850,   830,   850,   830,    40}
+    ,{   850,   830,   850,   830,    40}
+    ,{   840,   820,   840,   820,    30}
+    ,{   850,   830,   850,   830,    40}
+    ,{  -130,  -150,  -130,  -150,  -940}
+    }
+   }
+  }
+ ,{{{{  2120,  2120,  1990,  2120,  1990}
+    ,{  2120,  1470,  1340,  2120,  1340}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  2120,  2120,  1990,  1990,  1990}
+    ,{  1860,  1210,  1080,  1860,  1080}
+    }
+   ,{{  2120,  1470,  1340,  2120,  1340}
+    ,{  2120,  1470,  1340,  2120,  1340}
+    ,{  1840,  1190,  1060,  1840,  1060}
+    ,{   180,    60,   180,  -210,   -60}
+    ,{  1840,  1190,  1060,  1840,  1060}
+    }
+   ,{{  1990,  1340,  1210,  1990,  1210}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  1860,  1210,  1080,  1860,  1080}
+    }
+   ,{{  2120,  2120,  1990,  1840,  1990}
+    ,{  -120,  -230,  -120,  -510,  -360}
+    ,{  1840,  1190,  1060,  1840,  1060}
+    ,{  2120,  2120,  1990,  1840,  1990}
+    ,{  1840,  1190,  1060,  1840,  1060}
+    }
+   ,{{  1990,  1340,  1210,  1990,  1210}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  1550,   900,   770,  1550,   770}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{   640,   640,   270,   120,   270}
+    }
+   }
+  ,{{{  2120,  2120,  1990,  -120,  1990}
+    ,{  1470,  1470,  1340,  -230,  1340}
+    ,{  1340,  1340,  1210,  -120,  1210}
+    ,{  2120,  2120,  1990,  -360,  1990}
+    ,{  1210,  1210,  1080,  -250,  1080}
+    }
+   ,{{  1470,  1470,  1340,  -230,  1340}
+    ,{  1470,  1470,  1340,  -230,  1340}
+    ,{  1190,  1190,  1060,  -510,  1060}
+    ,{    60,    60,   -60, -1640,   -60}
+    ,{  1190,  1190,  1060,  -510,  1060}
+    }
+   ,{{  1340,  1340,  1210,  -120,  1210}
+    ,{  1340,  1340,  1210,  -360,  1210}
+    ,{  1340,  1340,  1210,  -120,  1210}
+    ,{  1340,  1340,  1210,  -360,  1210}
+    ,{  1210,  1210,  1080,  -250,  1080}
+    }
+   ,{{  2120,  2120,  1990,  -510,  1990}
+    ,{  -230,  -230,  -360, -1940,  -360}
+    ,{  1190,  1190,  1060,  -510,  1060}
+    ,{  2120,  2120,  1990,  -830,  1990}
+    ,{  1190,  1190,  1060,  -510,  1060}
+    }
+   ,{{  1340,  1340,  1210,  -360,  1210}
+    ,{  1340,  1340,  1210,  -360,  1210}
+    ,{   900,   900,   770,  -560,   770}
+    ,{  1340,  1340,  1210,  -360,  1210}
+    ,{   640,   640,   270, -1300,   270}
+    }
+   }
+  ,{{{  1990,  1840,  1990,  1840,  1550}
+    ,{  1340,  1190,  1340,  1190,   900}
+    ,{  1210,  1060,  1210,  1060,   770}
+    ,{  1990,  1840,  1990,  1840,  1550}
+    ,{  1080,   930,  1080,   930,   640}
+    }
+   ,{{  1340,  1190,  1340,  1190,   900}
+    ,{  1340,  1190,  1340,  1190,   900}
+    ,{  1060,   910,  1060,   910,   620}
+    ,{   180,  -210,   180,  -210,  -260}
+    ,{  1060,   910,  1060,   910,   620}
+    }
+   ,{{  1210,  1060,  1210,  1060,   770}
+    ,{  1210,  1060,  1210,  1060,   770}
+    ,{  1210,  1060,  1210,  1060,   770}
+    ,{  1210,  1060,  1210,  1060,   770}
+    ,{  1080,   930,  1080,   930,   640}
+    }
+   ,{{  1990,  1840,  1990,  1840,  1550}
+    ,{  -120,  -510,  -120,  -510,  -560}
+    ,{  1060,   910,  1060,   910,   620}
+    ,{  1990,  1840,  1990,  1840,  1550}
+    ,{  1060,   910,  1060,   910,   620}
+    }
+   ,{{  1210,  1060,  1210,  1060,   770}
+    ,{  1210,  1060,  1210,  1060,   770}
+    ,{   770,   620,   770,   620,   330}
+    ,{  1210,  1060,  1210,  1060,   770}
+    ,{   270,   120,   270,   120,  -170}
+    }
+   }
+  ,{{{  2120,   180,  1990,  2120,  1990}
+    ,{  2120,    60,  1340,  2120,  1340}
+    ,{  1990,   180,  1210,  1990,  1210}
+    ,{  1990,   -60,  1990,  1990,  1990}
+    ,{  1860,    50,  1080,  1860,  1080}
+    }
+   ,{{  2120,    60,  1340,  2120,  1340}
+    ,{  2120,    60,  1340,  2120,  1340}
+    ,{  1840,  -210,  1060,  1840,  1060}
+    ,{   -60, -1340,   -60,  -530,   -60}
+    ,{  1840,  -210,  1060,  1840,  1060}
+    }
+   ,{{  1990,   180,  1210,  1990,  1210}
+    ,{  1990,   -60,  1210,  1990,  1210}
+    ,{  1990,   180,  1210,  1990,  1210}
+    ,{  1990,   -60,  1210,  1990,  1210}
+    ,{  1860,    50,  1080,  1860,  1080}
+    }
+   ,{{  1990,  -210,  1990,  1840,  1990}
+    ,{  -360, -1640,  -360,  -830,  -360}
+    ,{  1840,  -210,  1060,  1840,  1060}
+    ,{  1990,  -530,  1990,   270,  1990}
+    ,{  1840,  -210,  1060,  1840,  1060}
+    }
+   ,{{  1990,   -60,  1210,  1990,  1210}
+    ,{  1990,   -60,  1210,  1990,  1210}
+    ,{  1550,  -260,   770,  1550,   770}
+    ,{  1990,   -60,  1210,  1990,  1210}
+    ,{   270, -1000,   270,  -200,   270}
+    }
+   }
+  ,{{{  1860,  1840,  1860,  1840,   640}
+    ,{  1210,  1190,  1210,  1190,   640}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{  1860,  1840,  1860,  1840,   270}
+    ,{   950,   930,   950,   930,   140}
+    }
+   ,{{  1210,  1190,  1210,  1190,   640}
+    ,{  1210,  1190,  1210,  1190,   640}
+    ,{   930,   910,   930,   910,   120}
+    ,{    50,  -210,    50,  -210, -1000}
+    ,{   930,   910,   930,   910,   120}
+    }
+   ,{{  1080,  1060,  1080,  1060,   270}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{   950,   930,   950,   930,   140}
+    }
+   ,{{  1860,  1840,  1860,  1840,   120}
+    ,{  -250,  -510,  -250,  -510, -1300}
+    ,{   930,   910,   930,   910,   120}
+    ,{  1860,  1840,  1860,  1840,  -200}
+    ,{   930,   910,   930,   910,   120}
+    }
+   ,{{  1080,  1060,  1080,  1060,   270}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{   640,   620,   640,   620,  -170}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{   140,   120,   140,   120,  -670}
+    }
+   }
+  }
+ ,{{{{  2120,  2120,  1990,  2120,  1990}
+    ,{  2120,  1470,  1340,  2120,  1340}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  2120,  2120,  1990,  1990,  1990}
+    ,{  1860,  1210,  1080,  1860,  1080}
+    }
+   ,{{  2120,  1470,  1340,  2120,  1340}
+    ,{  2120,  1470,  1340,  2120,  1340}
+    ,{  1840,  1190,  1060,  1840,  1060}
+    ,{   400,   290,   400,    10,   160}
+    ,{  1840,  1190,  1060,  1840,  1060}
+    }
+   ,{{  1990,  1340,  1210,  1990,  1210}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  1860,  1210,  1080,  1860,  1080}
+    }
+   ,{{  2120,  2120,  1990,  1840,  1990}
+    ,{   300,   190,   300,   -80,    60}
+    ,{  1840,  1190,  1060,  1840,  1060}
+    ,{  2120,  2120,  1990,  1840,  1990}
+    ,{  1840,  1190,  1060,  1840,  1060}
+    }
+   ,{{  1990,  1340,  1210,  1990,  1210}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  1750,  1100,   970,  1750,   970}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{   640,   640,   270,   120,   270}
+    }
+   }
+  ,{{{  2120,  2120,  1990,  -120,  1990}
+    ,{  1470,  1470,  1340,  -230,  1340}
+    ,{  1340,  1340,  1210,  -120,  1210}
+    ,{  2120,  2120,  1990,  -360,  1990}
+    ,{  1210,  1210,  1080,  -250,  1080}
+    }
+   ,{{  1470,  1470,  1340,  -230,  1340}
+    ,{  1470,  1470,  1340,  -230,  1340}
+    ,{  1190,  1190,  1060,  -510,  1060}
+    ,{   290,   290,   160, -1410,   160}
+    ,{  1190,  1190,  1060,  -510,  1060}
+    }
+   ,{{  1340,  1340,  1210,  -120,  1210}
+    ,{  1340,  1340,  1210,  -360,  1210}
+    ,{  1340,  1340,  1210,  -120,  1210}
+    ,{  1340,  1340,  1210,  -360,  1210}
+    ,{  1210,  1210,  1080,  -250,  1080}
+    }
+   ,{{  2120,  2120,  1990,  -510,  1990}
+    ,{   190,   190,    60, -1510,    60}
+    ,{  1190,  1190,  1060,  -510,  1060}
+    ,{  2120,  2120,  1990,  -830,  1990}
+    ,{  1190,  1190,  1060,  -510,  1060}
+    }
+   ,{{  1340,  1340,  1210,  -360,  1210}
+    ,{  1340,  1340,  1210,  -360,  1210}
+    ,{  1100,  1100,   970,  -360,   970}
+    ,{  1340,  1340,  1210,  -360,  1210}
+    ,{   640,   640,   270, -1300,   270}
+    }
+   }
+  ,{{{  1990,  1840,  1990,  1840,  1550}
+    ,{  1340,  1190,  1340,  1190,   900}
+    ,{  1210,  1060,  1210,  1060,   770}
+    ,{  1990,  1840,  1990,  1840,  1550}
+    ,{  1080,   930,  1080,   930,   640}
+    }
+   ,{{  1340,  1190,  1340,  1190,   900}
+    ,{  1340,  1190,  1340,  1190,   900}
+    ,{  1060,   910,  1060,   910,   620}
+    ,{   400,    10,   400,    10,   -40}
+    ,{  1060,   910,  1060,   910,   620}
+    }
+   ,{{  1210,  1060,  1210,  1060,   770}
+    ,{  1210,  1060,  1210,  1060,   770}
+    ,{  1210,  1060,  1210,  1060,   770}
+    ,{  1210,  1060,  1210,  1060,   770}
+    ,{  1080,   930,  1080,   930,   640}
+    }
+   ,{{  1990,  1840,  1990,  1840,  1550}
+    ,{   300,   -80,   300,   -80,  -130}
+    ,{  1060,   910,  1060,   910,   620}
+    ,{  1990,  1840,  1990,  1840,  1550}
+    ,{  1060,   910,  1060,   910,   620}
+    }
+   ,{{  1210,  1060,  1210,  1060,   770}
+    ,{  1210,  1060,  1210,  1060,   770}
+    ,{   970,   820,   970,   820,   530}
+    ,{  1210,  1060,  1210,  1060,   770}
+    ,{   270,   120,   270,   120,  -170}
+    }
+   }
+  ,{{{  2120,   180,  1990,  2120,  1990}
+    ,{  2120,    60,  1340,  2120,  1340}
+    ,{  1990,   180,  1210,  1990,  1210}
+    ,{  1990,   -60,  1990,  1990,  1990}
+    ,{  1860,    50,  1080,  1860,  1080}
+    }
+   ,{{  2120,    60,  1340,  2120,  1340}
+    ,{  2120,    60,  1340,  2120,  1340}
+    ,{  1840,  -210,  1060,  1840,  1060}
+    ,{   160, -1110,   160,  -310,   160}
+    ,{  1840,  -210,  1060,  1840,  1060}
+    }
+   ,{{  1990,   180,  1210,  1990,  1210}
+    ,{  1990,   -60,  1210,  1990,  1210}
+    ,{  1990,   180,  1210,  1990,  1210}
+    ,{  1990,   -60,  1210,  1990,  1210}
+    ,{  1860,    50,  1080,  1860,  1080}
+    }
+   ,{{  1990,  -210,  1990,  1840,  1990}
+    ,{    60, -1210,    60,  -400,    60}
+    ,{  1840,  -210,  1060,  1840,  1060}
+    ,{  1990,  -530,  1990,   270,  1990}
+    ,{  1840,  -210,  1060,  1840,  1060}
+    }
+   ,{{  1990,   -60,  1210,  1990,  1210}
+    ,{  1990,   -60,  1210,  1990,  1210}
+    ,{  1750,   -60,   970,  1750,   970}
+    ,{  1990,   -60,  1210,  1990,  1210}
+    ,{   270, -1000,   270,  -200,   270}
+    }
+   }
+  ,{{{  1860,  1840,  1860,  1840,   640}
+    ,{  1210,  1190,  1210,  1190,   640}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{  1860,  1840,  1860,  1840,   270}
+    ,{   950,   930,   950,   930,   140}
+    }
+   ,{{  1210,  1190,  1210,  1190,   640}
+    ,{  1210,  1190,  1210,  1190,   640}
+    ,{   930,   910,   930,   910,   120}
+    ,{   270,    10,   270,    10,  -780}
+    ,{   930,   910,   930,   910,   120}
+    }
+   ,{{  1080,  1060,  1080,  1060,   270}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{   950,   930,   950,   930,   140}
+    }
+   ,{{  1860,  1840,  1860,  1840,   120}
+    ,{   180,   -80,   180,   -80,  -870}
+    ,{   930,   910,   930,   910,   120}
+    ,{  1860,  1840,  1860,  1840,  -200}
+    ,{   930,   910,   930,   910,   120}
+    }
+   ,{{  1080,  1060,  1080,  1060,   270}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{   840,   820,   840,   820,    30}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{   140,   120,   140,   120,  -670}
+    }
+   }
+  }
+ }
+,{{{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  ,{{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   ,{{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    ,{   INF,   INF,   INF,   INF,   INF}
+    }
+   }
+  }
+ ,{{{{  1350,   850,   720,  1350,   720}
+    ,{  1300,   650,   540,  1300,   520}
+    ,{  1350,   700,   570,  1350,   570}
+    ,{  1300,   850,   720,  1300,   720}
+    ,{  1250,   590,   460,  1250,   460}
+    }
+   ,{{  1160,   500,   400,  1160,   370}
+    ,{  1160,   500,   370,  1160,   370}
+    ,{   850,   190,    60,   850,    60}
+    ,{   400,   290,   400,    10,   170}
+    ,{   850,   190,    60,   850,    60}
+    }
+   ,{{  1300,   650,   520,  1300,   520}
+    ,{  1300,   650,   520,  1300,   520}
+    ,{  1290,   640,   510,  1290,   510}
+    ,{  1300,   650,   520,  1300,   520}
+    ,{  1250,   590,   460,  1250,   460}
+    }
+   ,{{   850,   850,   720,   850,   720}
+    ,{   540,     0,   540,  -270,  -120}
+    ,{   850,   190,    60,   850,    60}
+    ,{   850,   850,   720,   570,   720}
+    ,{   850,   190,    60,   850,    60}
+    }
+   ,{{  1350,   700,   570,  1350,   570}
+    ,{  1300,   650,   520,  1300,   520}
+    ,{  1350,   700,   570,  1350,   570}
+    ,{  1300,   650,   520,  1300,   520}
+    ,{   100,   100,  -270,  -230,  -270}
+    }
+   }
+  ,{{{   850,   850,   720,  -330,   720}
+    ,{   650,   650,   520,  -620,   520}
+    ,{   700,   700,   570,  -330,   570}
+    ,{   850,   850,   720,  -620,   720}
+    ,{   590,   590,   460,  -440,   460}
+    }
+   ,{{   500,   500,   370,  -770,   370}
+    ,{   500,   500,   370,  -770,   370}
+    ,{   190,   190,    60, -1070,    60}
+    ,{   290,   290,   160,  -980,   160}
+    ,{   190,   190,    60, -1080,    60}
+    }
+   ,{{   650,   650,   520,  -390,   520}
+    ,{   650,   650,   520,  -620,   520}
+    ,{   640,   640,   510,  -390,   510}
+    ,{   650,   650,   520,  -620,   520}
+    ,{   590,   590,   460,  -440,   460}
+    }
+   ,{{   850,   850,   720, -1080,   720}
+    ,{    10,     0,    10, -1270,  -120}
+    ,{   190,   190,    60, -1080,    60}
+    ,{   850,   850,   720, -1080,   720}
+    ,{   190,   190,    60, -1080,    60}
+    }
+   ,{{   700,   700,   570,  -330,   570}
+    ,{   650,   650,   520,  -620,   520}
+    ,{   700,   700,   570,  -330,   570}
+    ,{   650,   650,   520,  -620,   520}
+    ,{   100,   100,  -270, -1300,  -270}
+    }
+   }
+  ,{{{   720,   570,   720,   570,   480}
+    ,{   540,   370,   540,   370,   280}
+    ,{   570,   420,   570,   420,   340}
+    ,{   720,   570,   720,   570,   480}
+    ,{   460,   310,   460,   310,   230}
+    }
+   ,{{   400,   220,   400,   220,   170}
+    ,{   370,   220,   370,   220,   140}
+    ,{    60,   -80,    60,   -80,  -170}
+    ,{   400,    10,   400,    10,   170}
+    ,{    60,   -80,    60,   -80,  -170}
+    }
+   ,{{   520,   370,   520,   370,   280}
+    ,{   520,   370,   520,   370,   280}
+    ,{   510,   360,   510,   360,   280}
+    ,{   520,   370,   520,   370,   280}
+    ,{   460,   310,   460,   310,   230}
+    }
+   ,{{   720,   570,   720,   570,   480}
+    ,{   540,  -100,   540,  -270,  -120}
+    ,{    60,   -80,    60,   -80,  -170}
+    ,{   720,   570,   720,   570,   480}
+    ,{    60,   -80,    60,   -80,  -170}
+    }
+   ,{{   570,   420,   570,   420,   340}
+    ,{   520,   370,   520,   370,   280}
+    ,{   570,   420,   570,   420,   340}
+    ,{   520,   370,   520,   370,   280}
+    ,{  -270,  -420,  -270,  -420,  -500}
+    }
+   }
+  ,{{{  1350,  -230,   720,  1350,   720}
+    ,{  1300,  -530,   520,  1300,   520}
+    ,{  1350,  -230,   570,  1350,   570}
+    ,{  1300,  -530,   720,  1300,   720}
+    ,{  1250,  -340,   460,  1250,   460}
+    }
+   ,{{  1160,  -670,   370,  1160,   370}
+    ,{  1160,  -670,   370,  1160,   370}
+    ,{   850,  -980,    60,   850,    60}
+    ,{   160,  -890,   160,  -310,   160}
+    ,{   850,  -980,    60,   850,    60}
+    }
+   ,{{  1300,  -290,   520,  1300,   520}
+    ,{  1300,  -530,   520,  1300,   520}
+    ,{  1290,  -290,   510,  1290,   510}
+    ,{  1300,  -530,   520,  1300,   520}
+    ,{  1250,  -340,   460,  1250,   460}
+    }
+   ,{{   850,  -980,   720,   850,   720}
+    ,{  -120, -1170,  -120,  -590,  -120}
+    ,{   850,  -980,    60,   850,    60}
+    ,{   720, -1580,   720, -1000,   720}
+    ,{   850,  -980,    60,   850,    60}
+    }
+   ,{{  1350,  -230,   570,  1350,   570}
+    ,{  1300,  -530,   520,  1300,   520}
+    ,{  1350,  -230,   570,  1350,   570}
+    ,{  1300,  -530,   520,  1300,   520}
+    ,{  -230, -1320,  -270,  -230,  -270}
+    }
+   }
+  ,{{{   590,   570,   590,   570,   -90}
+    ,{   390,   370,   390,   370,   -90}
+    ,{   440,   420,   440,   420,  -360}
+    ,{   590,   570,   590,   570,  -420}
+    ,{   330,   310,   330,   310,  -470}
+    }
+   ,{{   270,   220,   270,   220,  -320}
+    ,{   240,   220,   240,   220,  -320}
+    ,{   -60,   -80,   -60,   -80,  -830}
+    ,{   270,    10,   270,    10,  -780}
+    ,{   -60,   -80,   -60,   -80,  -870}
+    }
+   ,{{   390,   370,   390,   370,   -90}
+    ,{   390,   370,   390,   370,   -90}
+    ,{   380,   360,   380,   360,  -420}
+    ,{   390,   370,   390,   370,  -420}
+    ,{   330,   310,   330,   310,  -470}
+    }
+   ,{{   590,   570,   590,   570,  -810}
+    ,{   -10,  -270,   -10,  -270,  -810}
+    ,{   -60,   -80,   -60,   -80,  -870}
+    ,{   590,   570,   590,   570, -1470}
+    ,{   -60,   -80,   -60,   -80,  -870}
+    }
+   ,{{   440,   420,   440,   420,  -360}
+    ,{   390,   370,   390,   370,  -420}
+    ,{   440,   420,   440,   420,  -360}
+    ,{   390,   370,   390,   370,  -420}
+    ,{  -400,  -420,  -400,  -420, -1210}
+    }
+   }
+  }
+ ,{{{{  1320,   850,   720,  1320,   720}
+    ,{  1320,   670,   540,  1320,   540}
+    ,{   870,   220,    90,   870,    90}
+    ,{   960,   850,   720,   960,   720}
+    ,{   870,   250,    90,   870,    90}
+    }
+   ,{{  1320,   670,   540,  1320,   540}
+    ,{  1320,   670,   540,  1320,   540}
+    ,{   870,   220,    90,   870,    90}
+    ,{  -410,  -520,  -410,  -800,  -640}
+    ,{   870,   220,    90,   870,    90}
+    }
+   ,{{   960,   300,   170,   960,   170}
+    ,{   960,   300,   170,   960,   170}
+    ,{   650,     0,  -130,   650,  -130}
+    ,{   960,   300,   170,   960,   170}
+    ,{   650,     0,  -130,   650,  -130}
+    }
+   ,{{   870,   850,   720,   870,   720}
+    ,{    70,   -40,    70,  -320,  -170}
+    ,{   870,   220,    90,   870,    90}
+    ,{   850,   850,   720,   570,   720}
+    ,{   870,   220,    90,   870,    90}
+    }
+   ,{{   960,   300,   170,   960,   170}
+    ,{   960,   300,   170,   960,   170}
+    ,{   340,  -310,  -440,   340,  -440}
+    ,{   960,   300,   170,   960,   170}
+    ,{   250,   250,   -90,  -260,  -110}
+    }
+   }
+  ,{{{   850,   850,   720,   540,   720}
+    ,{   670,   670,   540,    10,   540}
+    ,{   540,   220,    90,   540,    90}
+    ,{   850,   850,   720,  -970,   720}
+    ,{   250,   250,    90,  -810,    90}
+    }
+   ,{{   670,   670,   540,  -100,   540}
+    ,{   670,   670,   540,  -600,   540}
+    ,{   220,   220,    90,  -100,    90}
+    ,{  -520,  -520,  -650, -1790,  -650}
+    ,{   220,   220,    90, -1050,    90}
+    }
+   ,{{   540,   300,   170,   540,   170}
+    ,{   300,   300,   170,    10,   170}
+    ,{   540,     0,  -130,   540,  -130}
+    ,{   300,   300,   170,  -970,   170}
+    ,{     0,     0,  -130, -1030,  -130}
+    }
+   ,{{   850,   850,   720, -1050,   720}
+    ,{   -40,   -40,  -170, -1320,  -170}
+    ,{   220,   220,    90, -1050,    90}
+    ,{   850,   850,   720, -1680,   720}
+    ,{   220,   220,    90, -1050,    90}
+    }
+   ,{{   300,   300,   170,  -810,   170}
+    ,{   300,   300,   170,  -970,   170}
+    ,{  -310,  -310,  -440, -1340,  -440}
+    ,{   300,   300,   170,  -970,   170}
+    ,{   250,   250,   -90,  -810,  -110}
+    }
+   }
+  ,{{{   720,   570,   720,   570,   480}
+    ,{   540,   390,   540,   390,   300}
+    ,{    90,   -60,    90,   -60,  -140}
+    ,{   720,   570,   720,   570,   480}
+    ,{    90,   -60,    90,   -60,  -140}
+    }
+   ,{{   540,   390,   540,   390,   300}
+    ,{   540,   390,   540,   390,   300}
+    ,{    90,   -60,    90,   -60,  -140}
+    ,{  -410,  -800,  -410,  -800,  -640}
+    ,{    90,   -60,    90,   -60,  -140}
+    }
+   ,{{   170,    20,   170,    20,   -60}
+    ,{   170,    20,   170,    20,   -60}
+    ,{  -130,  -280,  -130,  -280,  -360}
+    ,{   170,    20,   170,    20,   -60}
+    ,{  -130,  -280,  -130,  -280,  -360}
+    }
+   ,{{   720,   570,   720,   570,   480}
+    ,{    70,  -320,    70,  -320,  -170}
+    ,{    90,   -60,    90,   -60,  -140}
+    ,{   720,   570,   720,   570,   480}
+    ,{    90,   -60,    90,   -60,  -140}
+    }
+   ,{{   170,    20,   170,    20,   -60}
+    ,{   170,    20,   170,    20,   -60}
+    ,{  -440,  -590,  -440,  -590,  -670}
+    ,{   170,    20,   170,    20,   -60}
+    ,{  -110,  -260,  -110,  -260,  -350}
+    }
+   }
+  ,{{{  1320,  -350,   720,  1320,   720}
+    ,{  1320,  -730,   540,  1320,   540}
+    ,{   870,  -350,    90,   870,    90}
+    ,{   960,  -870,   720,   960,   720}
+    ,{   870,  -940,    90,   870,    90}
+    }
+   ,{{  1320,  -350,   540,  1320,   540}
+    ,{  1320,  -730,   540,  1320,   540}
+    ,{   870,  -350,    90,   870,    90}
+    ,{  -650, -1920,  -650, -1120,  -650}
+    ,{   870,  -960,    90,   870,    90}
+    }
+   ,{{   960,  -870,   170,   960,   170}
+    ,{   960, -1100,   170,   960,   170}
+    ,{   650,  -940,  -130,   650,  -130}
+    ,{   960,  -870,   170,   960,   170}
+    ,{   650,  -940,  -130,   650,  -130}
+    }
+   ,{{   870,  -960,   720,   870,   720}
+    ,{  -170, -1450,  -170,  -640,  -170}
+    ,{   870,  -960,    90,   870,    90}
+    ,{   720, -1370,   720, -1000,   720}
+    ,{   870,  -960,    90,   870,    90}
+    }
+   ,{{   960,  -870,   170,   960,   170}
+    ,{   960,  -870,   170,   960,   170}
+    ,{   340, -1250,  -440,   340,  -440}
+    ,{   960,  -870,   170,   960,   170}
+    ,{  -110, -1360,  -110,  -580,  -110}
+    }
+   }
+  ,{{{   590,   570,   590,   570,  -160}
+    ,{   410,   390,   410,   390,  -160}
+    ,{   -40,   -60,   -40,   -60,  -850}
+    ,{   590,   570,   590,   570,  -230}
+    ,{   -40,   -60,   -40,   -60,  -850}
+    }
+   ,{{   410,   390,   410,   390,  -160}
+    ,{   410,   390,   410,   390,  -160}
+    ,{   -40,   -60,   -40,   -60,  -850}
+    ,{  -540,  -800,  -540,  -800, -1520}
+    ,{   -40,   -60,   -40,   -60,  -850}
+    }
+   ,{{    40,    20,    40,    20,  -400}
+    ,{    40,    20,    40,    20,  -400}
+    ,{  -260,  -280,  -260,  -280, -1070}
+    ,{    40,    20,    40,    20,  -760}
+    ,{  -260,  -280,  -260,  -280, -1070}
+    }
+   ,{{   590,   570,   590,   570,  -230}
+    ,{   -60,  -320,   -60,  -320, -1110}
+    ,{   -40,   -60,   -40,   -60,  -850}
+    ,{   590,   570,   590,   570,  -230}
+    ,{   -40,   -60,   -40,   -60,  -850}
+    }
+   ,{{    40,    20,    40,    20,  -760}
+    ,{    40,    20,    40,    20,  -760}
+    ,{  -570,  -590,  -570,  -590, -1380}
+    ,{    40,    20,    40,    20,  -760}
+    ,{  -240,  -260,  -240,  -260, -1050}
+    }
+   }
+  }
+ ,{{{{  1010,  1010,   880,   730,   880}
+    ,{   410,   -30,    40,   410,  -190}
+    ,{   410,  -240,  -370,   410,  -370}
+    ,{  1010,  1010,   880,   730,   880}
+    ,{   410,     0,  -370,   410,  -370}
+    }
+   ,{{   410,   -70,  -150,   410,  -370}
+    ,{   230,   -70,  -550,   230,  -550}
+    ,{   410,  -240,  -370,   410,  -370}
+    ,{  -150,  -260,  -150,  -540,  -380}
+    ,{   410,  -240,  -370,   410,  -370}
+    }
+   ,{{   410,  -240,  -370,   410,  -370}
+    ,{   410,  -240,  -370,   410,  -370}
+    ,{   410,  -240,  -370,   410,  -370}
+    ,{   410,  -240,  -370,   410,  -370}
+    ,{   410,  -240,  -370,   410,  -370}
+    }
+   ,{{  1010,  1010,   880,   730,   880}
+    ,{    40,   -30,    40,  -350,  -190}
+    ,{   410,  -240,  -370,   410,  -370}
+    ,{  1010,  1010,   880,   730,   880}
+    ,{   410,  -240,  -370,   410,  -370}
+    }
+   ,{{   410,     0,  -370,   410,  -370}
+    ,{   410,  -240,  -370,   410,  -370}
+    ,{   410,  -240,  -370,   410,  -370}
+    ,{   410,  -240,  -370,   410,  -370}
+    ,{     0,     0,  -370,  -520,  -370}
+    }
+   }
+  ,{{{  1010,  1010,   880, -1280,   880}
+    ,{   -30,   -30,  -200, -1340,  -200}
+    ,{  -240,  -240,  -370, -1280,  -370}
+    ,{  1010,  1010,   880, -1520,   880}
+    ,{     0,     0,  -370, -1280,  -370}
+    }
+   ,{{   -70,   -70,  -370, -1520,  -370}
+    ,{   -70,   -70,  -550, -1700,  -550}
+    ,{  -240,  -240,  -370, -1520,  -370}
+    ,{  -260,  -260,  -390, -1530,  -390}
+    ,{  -240,  -240,  -370, -1520,  -370}
+    }
+   ,{{  -240,  -240,  -370, -1280,  -370}
+    ,{  -240,  -240,  -370, -1520,  -370}
+    ,{  -240,  -240,  -370, -1280,  -370}
+    ,{  -240,  -240,  -370, -1520,  -370}
+    ,{  -240,  -240,  -370, -1280,  -370}
+    }
+   ,{{  1010,  1010,   880, -1340,   880}
+    ,{   -30,   -30,  -200, -1340,  -200}
+    ,{  -240,  -240,  -370, -1520,  -370}
+    ,{  1010,  1010,   880, -1520,   880}
+    ,{  -240,  -240,  -370, -1520,  -370}
+    }
+   ,{{     0,     0,  -370, -1280,  -370}
+    ,{  -240,  -240,  -370, -1520,  -370}
+    ,{  -240,  -240,  -370, -1280,  -370}
+    ,{  -240,  -240,  -370, -1520,  -370}
+    ,{     0,     0,  -370, -1520,  -370}
+    }
+   }
+  ,{{{   880,   730,   880,   730,   640}
+    ,{    40,  -350,    40,  -350,  -190}
+    ,{  -370,  -520,  -370,  -520,  -610}
+    ,{   880,   730,   880,   730,   640}
+    ,{  -370,  -520,  -370,  -520,  -610}
+    }
+   ,{{  -150,  -520,  -150,  -520,  -380}
+    ,{  -550,  -700,  -550,  -700,  -790}
+    ,{  -370,  -520,  -370,  -520,  -610}
+    ,{  -150,  -540,  -150,  -540,  -380}
+    ,{  -370,  -520,  -370,  -520,  -610}
+    }
+   ,{{  -370,  -520,  -370,  -520,  -610}
+    ,{  -370,  -520,  -370,  -520,  -610}
+    ,{  -370,  -520,  -370,  -520,  -610}
+    ,{  -370,  -520,  -370,  -520,  -610}
+    ,{  -370,  -520,  -370,  -520,  -610}
+    }
+   ,{{   880,   730,   880,   730,   640}
+    ,{    40,  -350,    40,  -350,  -190}
+    ,{  -370,  -520,  -370,  -520,  -610}
+    ,{   880,   730,   880,   730,   640}
+    ,{  -370,  -520,  -370,  -520,  -610}
+    }
+   ,{{  -370,  -520,  -370,  -520,  -610}
+    ,{  -370,  -520,  -370,  -520,  -610}
+    ,{  -370,  -520,  -370,  -520,  -610}
+    ,{  -370,  -520,  -370,  -520,  -610}
+    ,{  -370,  -520,  -370,  -520,  -610}
+    }
+   }
+  ,{{{   880, -1180,   880,   410,   880}
+    ,{   410, -1250,  -200,   410,  -200}
+    ,{   410, -1180,  -370,   410,  -370}
+    ,{   880, -1420,   880,   410,   880}
+    ,{   410, -1180,  -370,   410,  -370}
+    }
+   ,{{   410, -1420,  -370,   410,  -370}
+    ,{   230, -1600,  -550,   230,  -550}
+    ,{   410, -1420,  -370,   410,  -370}
+    ,{  -390, -1440,  -390,  -860,  -390}
+    ,{   410, -1420,  -370,   410,  -370}
+    }
+   ,{{   410, -1180,  -370,   410,  -370}
+    ,{   410, -1420,  -370,   410,  -370}
+    ,{   410, -1180,  -370,   410,  -370}
+    ,{   410, -1420,  -370,   410,  -370}
+    ,{   410, -1180,  -370,   410,  -370}
+    }
+   ,{{   880, -1250,   880,   410,   880}
+    ,{  -200, -1250,  -200,  -670,  -200}
+    ,{   410, -1420,  -370,   410,  -370}
+    ,{   880, -1420,   880,  -840,   880}
+    ,{   410, -1420,  -370,   410,  -370}
+    }
+   ,{{   410, -1180,  -370,   410,  -370}
+    ,{   410, -1420,  -370,   410,  -370}
+    ,{   410, -1180,  -370,   410,  -370}
+    ,{   410, -1420,  -370,   410,  -370}
+    ,{  -370, -1420,  -370,  -840,  -370}
+    }
+   }
+  ,{{{   750,   730,   750,   730, -1140}
+    ,{   -90,  -350,   -90,  -350, -1140}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    ,{   750,   730,   750,   730, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    }
+   ,{{  -280,  -520,  -280,  -520, -1250}
+    ,{  -680,  -700,  -680,  -700, -1250}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    ,{  -280,  -540,  -280,  -540, -1330}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    }
+   ,{{  -500,  -520,  -500,  -520, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    }
+   ,{{   750,   730,   750,   730, -1140}
+    ,{   -90,  -350,   -90,  -350, -1140}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    ,{   750,   730,   750,   730, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    }
+   ,{{  -500,  -520,  -500,  -520, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    ,{  -500,  -520,  -500,  -520, -1310}
+    }
+   }
+  }
+ ,{{{{  1560,  1560,  1430,  1470,  1430}
+    ,{  1470,   820,   690,  1470,   690}
+    ,{   960,   310,   180,   960,   180}
+    ,{  1560,  1560,  1430,  1280,  1430}
+    ,{   960,   550,   180,   960,   180}
+    }
+   ,{{  1470,   820,   690,  1470,   690}
+    ,{  1470,   820,   690,  1470,   690}
+    ,{   960,   310,   180,   960,   180}
+    ,{    80,   -30,    80,  -310,  -150}
+    ,{   960,   310,   180,   960,   180}
+    }
+   ,{{   960,   310,   180,   960,   180}
+    ,{   960,   310,   180,   960,   180}
+    ,{   960,   310,   180,   960,   180}
+    ,{   960,   310,   180,   960,   180}
+    ,{   960,   310,   180,   960,   180}
+    }
+   ,{{  1560,  1560,  1430,  1280,  1430}
+    ,{   -90,  -200,   -90,  -480,  -320}
+    ,{   960,   310,   180,   960,   180}
+    ,{  1560,  1560,  1430,  1280,  1430}
+    ,{   960,   310,   180,   960,   180}
+    }
+   ,{{   960,   550,   180,   960,   180}
+    ,{   960,   310,   180,   960,   180}
+    ,{   960,   310,   180,   960,   180}
+    ,{   960,   310,   180,   960,   180}
+    ,{   550,   550,   180,    30,   180}
+    }
+   }
+  ,{{{  1560,  1560,  1430,   -30,  1430}
+    ,{   820,   820,   690,   -30,   690}
+    ,{   310,   310,   180,  -720,   180}
+    ,{  1560,  1560,  1430,  -960,  1430}
+    ,{   550,   550,   180,  -720,   180}
+    }
+   ,{{   820,   820,   690,   -30,   690}
+    ,{   820,   820,   690,   -30,   690}
+    ,{   310,   310,   180,  -960,   180}
+    ,{   -30,   -30,  -160, -1300,  -160}
+    ,{   310,   310,   180,  -960,   180}
+    }
+   ,{{   310,   310,   180,  -720,   180}
+    ,{   310,   310,   180,  -960,   180}
+    ,{   310,   310,   180,  -720,   180}
+    ,{   310,   310,   180,  -960,   180}
+    ,{   310,   310,   180,  -720,   180}
+    }
+   ,{{  1560,  1560,  1430,  -960,  1430}
+    ,{  -200,  -200,  -330, -1470,  -330}
+    ,{   310,   310,   180,  -960,   180}
+    ,{  1560,  1560,  1430,  -960,  1430}
+    ,{   310,   310,   180,  -960,   180}
+    }
+   ,{{   550,   550,   180,  -720,   180}
+    ,{   310,   310,   180,  -960,   180}
+    ,{   310,   310,   180,  -720,   180}
+    ,{   310,   310,   180,  -960,   180}
+    ,{   550,   550,   180,  -960,   180}
+    }
+   }
+  ,{{{  1430,  1280,  1430,  1280,  1200}
+    ,{   690,   540,   690,   540,   450}
+    ,{   180,    30,   180,    30,   -50}
+    ,{  1430,  1280,  1430,  1280,  1200}
+    ,{   180,    30,   180,    30,   -50}
+    }
+   ,{{   690,   540,   690,   540,   450}
+    ,{   690,   540,   690,   540,   450}
+    ,{   180,    30,   180,    30,   -50}
+    ,{    80,  -310,    80,  -310,  -150}
+    ,{   180,    30,   180,    30,   -50}
+    }
+   ,{{   180,    30,   180,    30,   -50}
+    ,{   180,    30,   180,    30,   -50}
+    ,{   180,    30,   180,    30,   -50}
+    ,{   180,    30,   180,    30,   -50}
+    ,{   180,    30,   180,    30,   -50}
+    }
+   ,{{  1430,  1280,  1430,  1280,  1200}
+    ,{   -90,  -480,   -90,  -480,  -320}
+    ,{   180,    30,   180,    30,   -50}
+    ,{  1430,  1280,  1430,  1280,  1200}
+    ,{   180,    30,   180,    30,   -50}
+    }
+   ,{{   180,    30,   180,    30,   -50}
+    ,{   180,    30,   180,    30,   -50}
+    ,{   180,    30,   180,    30,   -50}
+    ,{   180,    30,   180,    30,   -50}
+    ,{   180,    30,   180,    30,   -50}
+    }
+   }
+  ,{{{  1470,  -360,  1430,  1470,  1430}
+    ,{  1470,  -360,   690,  1470,   690}
+    ,{   960,  -630,   180,   960,   180}
+    ,{  1430,  -870,  1430,   960,  1430}
+    ,{   960,  -630,   180,   960,   180}
+    }
+   ,{{  1470,  -360,   690,  1470,   690}
+    ,{  1470,  -360,   690,  1470,   690}
+    ,{   960,  -870,   180,   960,   180}
+    ,{  -160, -1210,  -160,  -630,  -160}
+    ,{   960,  -870,   180,   960,   180}
+    }
+   ,{{   960,  -630,   180,   960,   180}
+    ,{   960,  -870,   180,   960,   180}
+    ,{   960,  -630,   180,   960,   180}
+    ,{   960,  -870,   180,   960,   180}
+    ,{   960,  -630,   180,   960,   180}
+    }
+   ,{{  1430,  -870,  1430,   960,  1430}
+    ,{  -330, -1380,  -330,  -800,  -330}
+    ,{   960,  -870,   180,   960,   180}
+    ,{  1430,  -870,  1430,  -290,  1430}
+    ,{   960,  -870,   180,   960,   180}
+    }
+   ,{{   960,  -630,   180,   960,   180}
+    ,{   960,  -870,   180,   960,   180}
+    ,{   960,  -630,   180,   960,   180}
+    ,{   960,  -870,   180,   960,   180}
+    ,{   180,  -870,   180,  -290,   180}
+    }
+   }
+  ,{{{  1300,  1280,  1300,  1280,   -10}
+    ,{   560,   540,   560,   540,   -10}
+    ,{    50,    30,    50,    30,  -760}
+    ,{  1300,  1280,  1300,  1280,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    }
+   ,{{   560,   540,   560,   540,   -10}
+    ,{   560,   540,   560,   540,   -10}
+    ,{    50,    30,    50,    30,  -760}
+    ,{   -50,  -310,   -50,  -310, -1100}
+    ,{    50,    30,    50,    30,  -760}
+    }
+   ,{{    50,    30,    50,    30,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    }
+   ,{{  1300,  1280,  1300,  1280,  -760}
+    ,{  -220,  -480,  -220,  -480, -1270}
+    ,{    50,    30,    50,    30,  -760}
+    ,{  1300,  1280,  1300,  1280,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    }
+   ,{{    50,    30,    50,    30,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    ,{    50,    30,    50,    30,  -760}
+    }
+   }
+  }
+ ,{{{{  2050,  1930,  1800,  2050,  1800}
+    ,{  2050,  1400,  1270,  2050,  1270}
+    ,{  1750,  1100,   970,  1750,   970}
+    ,{  1930,  1930,  1800,  1760,  1800}
+    ,{  1750,  1100,   970,  1750,   970}
+    }
+   ,{{  2050,  1400,  1270,  2050,  1270}
+    ,{  2050,  1400,  1270,  2050,  1270}
+    ,{  1740,  1090,   960,  1740,   960}
+    ,{   130,    10,   130,  -260,  -110}
+    ,{  1740,  1090,   960,  1740,   960}
+    }
+   ,{{  1760,  1110,   980,  1760,   980}
+    ,{  1760,  1110,   980,  1760,   980}
+    ,{  1750,  1100,   970,  1750,   970}
+    ,{  1760,  1110,   980,  1760,   980}
+    ,{  1750,  1100,   970,  1750,   970}
+    }
+   ,{{  1930,  1930,  1800,  1740,  1800}
+    ,{   300,   190,   300,   -80,    70}
+    ,{  1740,  1090,   960,  1740,   960}
+    ,{  1930,  1930,  1800,  1650,  1800}
+    ,{  1740,  1090,   960,  1740,   960}
+    }
+   ,{{  1760,  1110,   980,  1760,   980}
+    ,{  1760,  1110,   980,  1760,   980}
+    ,{  1750,  1100,   970,  1750,   970}
+    ,{  1760,  1110,   980,  1760,   980}
+    ,{   360,   360,     0,  -150,     0}
+    }
+   }
+  ,{{{  1930,  1930,  1800,   130,  1800}
+    ,{  1400,  1400,  1270,   130,  1270}
+    ,{  1100,  1100,   970,    70,   970}
+    ,{  1930,  1930,  1800,  -160,  1800}
+    ,{  1100,  1100,   970,    70,   970}
+    }
+   ,{{  1400,  1400,  1270,   130,  1270}
+    ,{  1400,  1400,  1270,   130,  1270}
+    ,{  1090,  1090,   960,  -180,   960}
+    ,{    10,    10,  -110, -1260,  -110}
+    ,{  1090,  1090,   960,  -180,   960}
+    }
+   ,{{  1110,  1110,   980,    70,   980}
+    ,{  1110,  1110,   980,  -160,   980}
+    ,{  1100,  1100,   970,    70,   970}
+    ,{  1110,  1110,   980,  -160,   980}
+    ,{  1100,  1100,   970,    70,   970}
+    }
+   ,{{  1930,  1930,  1800,  -180,  1800}
+    ,{   190,   190,    60, -1080,    60}
+    ,{  1090,  1090,   960,  -180,   960}
+    ,{  1930,  1930,  1800,  -590,  1800}
+    ,{  1090,  1090,   960,  -180,   960}
+    }
+   ,{{  1110,  1110,   980,    70,   980}
+    ,{  1110,  1110,   980,  -160,   980}
+    ,{  1100,  1100,   970,    70,   970}
+    ,{  1110,  1110,   980,  -160,   980}
+    ,{   360,   360,     0, -1150,     0}
+    }
+   }
+  ,{{{  1800,  1650,  1800,  1650,  1570}
+    ,{  1270,  1120,  1270,  1120,  1040}
+    ,{   970,   820,   970,   820,   740}
+    ,{  1800,  1650,  1800,  1650,  1570}
+    ,{   970,   820,   970,   820,   740}
+    }
+   ,{{  1270,  1120,  1270,  1120,  1040}
+    ,{  1270,  1120,  1270,  1120,  1040}
+    ,{   960,   810,   960,   810,   730}
+    ,{   130,  -260,   130,  -260,  -110}
+    ,{   960,   810,   960,   810,   730}
+    }
+   ,{{   980,   830,   980,   830,   740}
+    ,{   980,   830,   980,   830,   740}
+    ,{   970,   820,   970,   820,   740}
+    ,{   980,   830,   980,   830,   740}
+    ,{   970,   820,   970,   820,   740}
+    }
+   ,{{  1800,  1650,  1800,  1650,  1570}
+    ,{   300,   -80,   300,   -80,    70}
+    ,{   960,   810,   960,   810,   730}
+    ,{  1800,  1650,  1800,  1650,  1570}
+    ,{   960,   810,   960,   810,   730}
+    }
+   ,{{   980,   830,   980,   830,   740}
+    ,{   980,   830,   980,   830,   740}
+    ,{   970,   820,   970,   820,   740}
+    ,{   980,   830,   980,   830,   740}
+    ,{     0,  -150,     0,  -150,  -240}
+    }
+   }
+  ,{{{  2050,   220,  1800,  2050,  1800}
+    ,{  2050,   220,  1270,  2050,  1270}
+    ,{  1750,   170,   970,  1750,   970}
+    ,{  1800,   -70,  1800,  1760,  1800}
+    ,{  1750,   170,   970,  1750,   970}
+    }
+   ,{{  2050,   220,  1270,  2050,  1270}
+    ,{  2050,   220,  1270,  2050,  1270}
+    ,{  1740,   -80,   960,  1740,   960}
+    ,{  -110, -1160,  -110,  -580,  -110}
+    ,{  1740,   -80,   960,  1740,   960}
+    }
+   ,{{  1760,   170,   980,  1760,   980}
+    ,{  1760,   -70,   980,  1760,   980}
+    ,{  1750,   170,   970,  1750,   970}
+    ,{  1760,   -70,   980,  1760,   980}
+    ,{  1750,   170,   970,  1750,   970}
+    }
+   ,{{  1800,   -80,  1800,  1740,  1800}
+    ,{    60,  -980,    60,  -400,    60}
+    ,{  1740,   -80,   960,  1740,   960}
+    ,{  1800,  -490,  1800,    80,  1800}
+    ,{  1740,   -80,   960,  1740,   960}
+    }
+   ,{{  1760,   170,   980,  1760,   980}
+    ,{  1760,   -70,   980,  1760,   980}
+    ,{  1750,   170,   970,  1750,   970}
+    ,{  1760,   -70,   980,  1760,   980}
+    ,{     0, -1050,     0,  -470,     0}
+    }
+   }
+  ,{{{  1670,  1650,  1670,  1650,   570}
+    ,{  1140,  1120,  1140,  1120,   570}
+    ,{   840,   820,   840,   820,    30}
+    ,{  1670,  1650,  1670,  1650,    40}
+    ,{   840,   820,   840,   820,    30}
+    }
+   ,{{  1140,  1120,  1140,  1120,   570}
+    ,{  1140,  1120,  1140,  1120,   570}
+    ,{   830,   810,   830,   810,    20}
+    ,{     0,  -260,     0,  -260, -1050}
+    ,{   830,   810,   830,   810,    20}
+    }
+   ,{{   850,   830,   850,   830,    40}
+    ,{   850,   830,   850,   830,    40}
+    ,{   840,   820,   840,   820,    30}
+    ,{   850,   830,   850,   830,    40}
+    ,{   840,   820,   840,   820,    30}
+    }
+   ,{{  1670,  1650,  1670,  1650,    20}
+    ,{   180,   -80,   180,   -80,  -870}
+    ,{   830,   810,   830,   810,    20}
+    ,{  1670,  1650,  1670,  1650,  -380}
+    ,{   830,   810,   830,   810,    20}
+    }
+   ,{{   850,   830,   850,   830,    40}
+    ,{   850,   830,   850,   830,    40}
+    ,{   840,   820,   840,   820,    30}
+    ,{   850,   830,   850,   830,    40}
+    ,{  -130,  -150,  -130,  -150,  -940}
+    }
+   }
+  }
+ ,{{{{  2120,  2120,  1990,  2120,  1990}
+    ,{  2120,  1470,  1340,  2120,  1340}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  2120,  2120,  1990,  1990,  1990}
+    ,{  1860,  1210,  1080,  1860,  1080}
+    }
+   ,{{  2120,  1470,  1340,  2120,  1340}
+    ,{  2120,  1470,  1340,  2120,  1340}
+    ,{  1840,  1190,  1060,  1840,  1060}
+    ,{   180,    60,   180,  -210,   -60}
+    ,{  1840,  1190,  1060,  1840,  1060}
+    }
+   ,{{  1990,  1340,  1210,  1990,  1210}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  1860,  1210,  1080,  1860,  1080}
+    }
+   ,{{  2120,  2120,  1990,  1840,  1990}
+    ,{  -120,  -230,  -120,  -510,  -360}
+    ,{  1840,  1190,  1060,  1840,  1060}
+    ,{  2120,  2120,  1990,  1840,  1990}
+    ,{  1840,  1190,  1060,  1840,  1060}
+    }
+   ,{{  1990,  1340,  1210,  1990,  1210}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  1550,   900,   770,  1550,   770}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{   640,   640,   270,   120,   270}
+    }
+   }
+  ,{{{  2120,  2120,  1990,   300,  1990}
+    ,{  1470,  1470,  1340,   190,  1340}
+    ,{  1340,  1340,  1210,   300,  1210}
+    ,{  2120,  2120,  1990,    60,  1990}
+    ,{  1210,  1210,  1080,   180,  1080}
+    }
+   ,{{  1470,  1470,  1340,   190,  1340}
+    ,{  1470,  1470,  1340,   190,  1340}
+    ,{  1190,  1190,  1060,   -80,  1060}
+    ,{    60,    60,   -60, -1210,   -60}
+    ,{  1190,  1190,  1060,   -80,  1060}
+    }
+   ,{{  1340,  1340,  1210,   300,  1210}
+    ,{  1340,  1340,  1210,    60,  1210}
+    ,{  1340,  1340,  1210,   300,  1210}
+    ,{  1340,  1340,  1210,    60,  1210}
+    ,{  1210,  1210,  1080,   180,  1080}
+    }
+   ,{{  2120,  2120,  1990,   -80,  1990}
+    ,{  -230,  -230,  -360, -1510,  -360}
+    ,{  1190,  1190,  1060,   -80,  1060}
+    ,{  2120,  2120,  1990,  -400,  1990}
+    ,{  1190,  1190,  1060,   -80,  1060}
+    }
+   ,{{  1340,  1340,  1210,    60,  1210}
+    ,{  1340,  1340,  1210,    60,  1210}
+    ,{   900,   900,   770,  -130,   770}
+    ,{  1340,  1340,  1210,    60,  1210}
+    ,{   640,   640,   270,  -870,   270}
+    }
+   }
+  ,{{{  1990,  1840,  1990,  1840,  1750}
+    ,{  1340,  1190,  1340,  1190,  1100}
+    ,{  1210,  1060,  1210,  1060,   970}
+    ,{  1990,  1840,  1990,  1840,  1750}
+    ,{  1080,   930,  1080,   930,   840}
+    }
+   ,{{  1340,  1190,  1340,  1190,  1100}
+    ,{  1340,  1190,  1340,  1190,  1100}
+    ,{  1060,   910,  1060,   910,   820}
+    ,{   180,  -210,   180,  -210,   -60}
+    ,{  1060,   910,  1060,   910,   820}
+    }
+   ,{{  1210,  1060,  1210,  1060,   970}
+    ,{  1210,  1060,  1210,  1060,   970}
+    ,{  1210,  1060,  1210,  1060,   970}
+    ,{  1210,  1060,  1210,  1060,   970}
+    ,{  1080,   930,  1080,   930,   840}
+    }
+   ,{{  1990,  1840,  1990,  1840,  1750}
+    ,{  -120,  -510,  -120,  -510,  -360}
+    ,{  1060,   910,  1060,   910,   820}
+    ,{  1990,  1840,  1990,  1840,  1750}
+    ,{  1060,   910,  1060,   910,   820}
+    }
+   ,{{  1210,  1060,  1210,  1060,   970}
+    ,{  1210,  1060,  1210,  1060,   970}
+    ,{   770,   620,   770,   620,   530}
+    ,{  1210,  1060,  1210,  1060,   970}
+    ,{   270,   120,   270,   120,    30}
+    }
+   }
+  ,{{{  2120,   400,  1990,  2120,  1990}
+    ,{  2120,   290,  1340,  2120,  1340}
+    ,{  1990,   400,  1210,  1990,  1210}
+    ,{  1990,   160,  1990,  1990,  1990}
+    ,{  1860,   270,  1080,  1860,  1080}
+    }
+   ,{{  2120,   290,  1340,  2120,  1340}
+    ,{  2120,   290,  1340,  2120,  1340}
+    ,{  1840,    10,  1060,  1840,  1060}
+    ,{   -60, -1110,   -60,  -530,   -60}
+    ,{  1840,    10,  1060,  1840,  1060}
+    }
+   ,{{  1990,   400,  1210,  1990,  1210}
+    ,{  1990,   160,  1210,  1990,  1210}
+    ,{  1990,   400,  1210,  1990,  1210}
+    ,{  1990,   160,  1210,  1990,  1210}
+    ,{  1860,   270,  1080,  1860,  1080}
+    }
+   ,{{  1990,    10,  1990,  1840,  1990}
+    ,{  -360, -1410,  -360,  -830,  -360}
+    ,{  1840,    10,  1060,  1840,  1060}
+    ,{  1990,  -310,  1990,   270,  1990}
+    ,{  1840,    10,  1060,  1840,  1060}
+    }
+   ,{{  1990,   160,  1210,  1990,  1210}
+    ,{  1990,   160,  1210,  1990,  1210}
+    ,{  1550,   -40,   770,  1550,   770}
+    ,{  1990,   160,  1210,  1990,  1210}
+    ,{   270,  -780,   270,  -200,   270}
+    }
+   }
+  ,{{{  1860,  1840,  1860,  1840,   640}
+    ,{  1210,  1190,  1210,  1190,   640}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{  1860,  1840,  1860,  1840,   270}
+    ,{   950,   930,   950,   930,   140}
+    }
+   ,{{  1210,  1190,  1210,  1190,   640}
+    ,{  1210,  1190,  1210,  1190,   640}
+    ,{   930,   910,   930,   910,   120}
+    ,{    50,  -210,    50,  -210, -1000}
+    ,{   930,   910,   930,   910,   120}
+    }
+   ,{{  1080,  1060,  1080,  1060,   270}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{   950,   930,   950,   930,   140}
+    }
+   ,{{  1860,  1840,  1860,  1840,   120}
+    ,{  -250,  -510,  -250,  -510, -1300}
+    ,{   930,   910,   930,   910,   120}
+    ,{  1860,  1840,  1860,  1840,  -200}
+    ,{   930,   910,   930,   910,   120}
+    }
+   ,{{  1080,  1060,  1080,  1060,   270}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{   640,   620,   640,   620,  -170}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{   140,   120,   140,   120,  -670}
+    }
+   }
+  }
+ ,{{{{  2120,  2120,  1990,  2120,  1990}
+    ,{  2120,  1470,  1340,  2120,  1340}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  2120,  2120,  1990,  1990,  1990}
+    ,{  1860,  1210,  1080,  1860,  1080}
+    }
+   ,{{  2120,  1470,  1340,  2120,  1340}
+    ,{  2120,  1470,  1340,  2120,  1340}
+    ,{  1840,  1190,  1060,  1840,  1060}
+    ,{   400,   290,   400,    10,   170}
+    ,{  1840,  1190,  1060,  1840,  1060}
+    }
+   ,{{  1990,  1340,  1210,  1990,  1210}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  1860,  1210,  1080,  1860,  1080}
+    }
+   ,{{  2120,  2120,  1990,  1840,  1990}
+    ,{   540,   190,   540,   -80,    70}
+    ,{  1840,  1190,  1060,  1840,  1060}
+    ,{  2120,  2120,  1990,  1840,  1990}
+    ,{  1840,  1190,  1060,  1840,  1060}
+    }
+   ,{{  1990,  1340,  1210,  1990,  1210}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{  1750,  1100,   970,  1750,   970}
+    ,{  1990,  1340,  1210,  1990,  1210}
+    ,{   640,   640,   270,   120,   270}
+    }
+   }
+  ,{{{  2120,  2120,  1990,   540,  1990}
+    ,{  1470,  1470,  1340,   190,  1340}
+    ,{  1340,  1340,  1210,   540,  1210}
+    ,{  2120,  2120,  1990,    60,  1990}
+    ,{  1210,  1210,  1080,   180,  1080}
+    }
+   ,{{  1470,  1470,  1340,   190,  1340}
+    ,{  1470,  1470,  1340,   190,  1340}
+    ,{  1190,  1190,  1060,   -80,  1060}
+    ,{   290,   290,   160,  -980,   160}
+    ,{  1190,  1190,  1060,   -80,  1060}
+    }
+   ,{{  1340,  1340,  1210,   540,  1210}
+    ,{  1340,  1340,  1210,    60,  1210}
+    ,{  1340,  1340,  1210,   540,  1210}
+    ,{  1340,  1340,  1210,    60,  1210}
+    ,{  1210,  1210,  1080,   180,  1080}
+    }
+   ,{{  2120,  2120,  1990,   -80,  1990}
+    ,{   190,   190,    60, -1080,    60}
+    ,{  1190,  1190,  1060,   -80,  1060}
+    ,{  2120,  2120,  1990,  -400,  1990}
+    ,{  1190,  1190,  1060,   -80,  1060}
+    }
+   ,{{  1340,  1340,  1210,    70,  1210}
+    ,{  1340,  1340,  1210,    60,  1210}
+    ,{  1100,  1100,   970,    70,   970}
+    ,{  1340,  1340,  1210,    60,  1210}
+    ,{   640,   640,   270,  -810,   270}
+    }
+   }
+  ,{{{  1990,  1840,  1990,  1840,  1750}
+    ,{  1340,  1190,  1340,  1190,  1100}
+    ,{  1210,  1060,  1210,  1060,   970}
+    ,{  1990,  1840,  1990,  1840,  1750}
+    ,{  1080,   930,  1080,   930,   840}
+    }
+   ,{{  1340,  1190,  1340,  1190,  1100}
+    ,{  1340,  1190,  1340,  1190,  1100}
+    ,{  1060,   910,  1060,   910,   820}
+    ,{   400,    10,   400,    10,   170}
+    ,{  1060,   910,  1060,   910,   820}
+    }
+   ,{{  1210,  1060,  1210,  1060,   970}
+    ,{  1210,  1060,  1210,  1060,   970}
+    ,{  1210,  1060,  1210,  1060,   970}
+    ,{  1210,  1060,  1210,  1060,   970}
+    ,{  1080,   930,  1080,   930,   840}
+    }
+   ,{{  1990,  1840,  1990,  1840,  1750}
+    ,{   540,   -80,   540,   -80,    70}
+    ,{  1060,   910,  1060,   910,   820}
+    ,{  1990,  1840,  1990,  1840,  1750}
+    ,{  1060,   910,  1060,   910,   820}
+    }
+   ,{{  1210,  1060,  1210,  1060,   970}
+    ,{  1210,  1060,  1210,  1060,   970}
+    ,{   970,   820,   970,   820,   740}
+    ,{  1210,  1060,  1210,  1060,   970}
+    ,{   270,   120,   270,   120,    30}
+    }
+   }
+  ,{{{  2120,   400,  1990,  2120,  1990}
+    ,{  2120,   290,  1340,  2120,  1340}
+    ,{  1990,   400,  1210,  1990,  1210}
+    ,{  1990,   160,  1990,  1990,  1990}
+    ,{  1860,   270,  1080,  1860,  1080}
+    }
+   ,{{  2120,   290,  1340,  2120,  1340}
+    ,{  2120,   290,  1340,  2120,  1340}
+    ,{  1840,    10,  1060,  1840,  1060}
+    ,{   160,  -890,   160,  -310,   160}
+    ,{  1840,    10,  1060,  1840,  1060}
+    }
+   ,{{  1990,   400,  1210,  1990,  1210}
+    ,{  1990,   160,  1210,  1990,  1210}
+    ,{  1990,   400,  1210,  1990,  1210}
+    ,{  1990,   160,  1210,  1990,  1210}
+    ,{  1860,   270,  1080,  1860,  1080}
+    }
+   ,{{  1990,    10,  1990,  1840,  1990}
+    ,{    60,  -980,    60,  -400,    60}
+    ,{  1840,    10,  1060,  1840,  1060}
+    ,{  1990,  -310,  1990,   270,  1990}
+    ,{  1840,    10,  1060,  1840,  1060}
+    }
+   ,{{  1990,   170,  1210,  1990,  1210}
+    ,{  1990,   160,  1210,  1990,  1210}
+    ,{  1750,   170,   970,  1750,   970}
+    ,{  1990,   160,  1210,  1990,  1210}
+    ,{   270,  -780,   270,  -200,   270}
+    }
+   }
+  ,{{{  1860,  1840,  1860,  1840,   640}
+    ,{  1210,  1190,  1210,  1190,   640}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{  1860,  1840,  1860,  1840,   270}
+    ,{   950,   930,   950,   930,   140}
+    }
+   ,{{  1210,  1190,  1210,  1190,   640}
+    ,{  1210,  1190,  1210,  1190,   640}
+    ,{   930,   910,   930,   910,   120}
+    ,{   270,    10,   270,    10,  -780}
+    ,{   930,   910,   930,   910,   120}
+    }
+   ,{{  1080,  1060,  1080,  1060,   270}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{   950,   930,   950,   930,   140}
+    }
+   ,{{  1860,  1840,  1860,  1840,   120}
+    ,{   180,   -80,   180,   -80,  -810}
+    ,{   930,   910,   930,   910,   120}
+    ,{  1860,  1840,  1860,  1840,  -200}
+    ,{   930,   910,   930,   910,   120}
+    }
+   ,{{  1080,  1060,  1080,  1060,   270}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{   840,   820,   840,   820,    30}
+    ,{  1080,  1060,  1080,  1060,   270}
+    ,{   140,   120,   140,   120,  -670}
+    }
+   }
+  }
+ }};
diff --git a/include/list.h b/include/list.h
new file mode 100644
--- /dev/null
+++ b/include/list.h
@@ -0,0 +1,65 @@
+/*
+  $Log: list.h,v $
+  Revision 1.2  2000/10/10 08:50:01  ivo
+  some annotation for lclint
+
+  Revision 1.1  1997/08/04 21:05:32  walter
+  Initial revision
+
+*/
+
+#ifndef	__LIST_H
+#define	__LIST_H
+
+/*---------------------- Macros and type definitions ----------------------*/
+
+typedef struct LST_BUCKET {
+  struct LST_BUCKET *next;
+}
+LST_BUCKET;
+
+typedef struct {
+  int count;			/* Number of elements currently in list */
+  LST_BUCKET *head;		/* Pointer to head element of list      */
+  LST_BUCKET *z;		/* Pointer to last node of list         */
+  LST_BUCKET hz[2];		/* Space for head and z nodes           */
+}
+LIST;
+
+/* Return a pointer to the user space given the address of the header of
+ * a node.
+ */
+
+#define	LST_USERSPACE(h)	((void*)((LST_BUCKET*)(h) + 1))
+
+/* Return a pointer to the header of a node, given the address of the
+ * user space.
+ */
+
+#define	LST_HEADER(n)		((LST_BUCKET*)(n) - 1)
+
+/* Return a pointer to the user space of the list's head node. This user
+ * space does not actually exist, but it is useful to be able to address
+ * it to enable insertion at the start of the list.
+ */
+
+#define	LST_HEAD(l)		LST_USERSPACE((l)->head)
+
+/* Determine if a list is empty
+ */
+
+#define	LST_EMPTY(l)		((l)->count == 0)
+
+/*-------------------------- Function Prototypes --------------------------*/
+
+/*@only@*//*@out@*/ void *lst_newnode (int size);
+void lst_freenode (/*@only@*/ void *node);
+/*@only@*//*@out@*/  LIST *lst_init (void);
+void lst_kill (LIST * l, void (*freeNode) ());
+void lst_insertafter (LIST * l, /*@keep@*/ void *node, void *after);
+void *lst_deletenext (/*@only@*/ LIST * l, void *node);
+/*@dependent@*/ void *lst_first (LIST * l);
+/*@dependent@*/ void *lst_next (void *prev);
+void lst_mergesort (LIST * l, int (*cmp_func) ());
+
+#endif
diff --git a/include/loop_energies.h b/include/loop_energies.h
new file mode 100644
--- /dev/null
+++ b/include/loop_energies.h
@@ -0,0 +1,660 @@
+#ifndef __VIENNA_RNA_PACKAGE_LOOP_ENERGIES_H__
+#define __VIENNA_RNA_PACKAGE_LOOP_ENERGIES_H__
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <ctype.h>
+#include <string.h>
+#include "params.h"
+#include "fold_vars.h"
+#include "energy_par.h"
+
+#ifdef __GNUC__
+# define INLINE inline
+#else
+# define INLINE
+#endif
+
+/**
+ *  \file loop_energies.h
+ *  \brief Energy evaluation for MFE and partition function calculations
+ * 
+ *  <P>
+ *  This file contains functions for the calculation of the free energy \f$\Delta G\f$
+ *  of a hairpin- [ E_Hairpin() ] or interior-loop [ E_IntLoop()] .<BR>
+ *  The unit of the free energy returned is \f$10^{-2} * \mathrm{kcal}/\mathrm{mol}\f$
+ *  </P>
+ *  <P>
+ *  In case of computing the partition function, this file also supplies functions
+ *  which return the Boltzmann weights \f$e^{-\Delta G/kT} \f$ for a hairpin- [ exp_E_Hairpin() ]
+ *  or interior-loop [ exp_E_IntLoop() ].
+ *  </P>
+ */
+
+/**
+ *  \def E_MLstem(A,B,C,D)
+ *  <H2>Compute the Energy contribution of a Multiloop stem</H2>
+ *  This definition is a wrapper for the E_Stem() funtion.
+ *  It is substituted by an E_Stem() funtion call with argument
+ *  extLoop=0, so the energy contribution returned reflects a
+ *  stem introduced in a multiloop.<BR>
+ *  As for the parameters B (si1) and C (sj1) of the substituted
+ *  E_Stem() function, you can inhibit to take 5'-, 3'-dangles
+ *  or mismatch contributions to be taken into account by passing
+ *  -1 to these parameters.
+ * 
+ *  \see    E_Stem()
+ *  \param  A The pair type of the stem-closing pair
+ *  \param  B The 5'-mismatching nucleotide
+ *  \param  C The 3'-mismatching nucleotide
+ *  \param  D The datastructure containing scaled energy parameters
+ *  \return   The energy contribution of the introduced multiloop stem
+ */
+INLINE  PRIVATE int E_MLstem( int type,
+                              int si1,
+                              int sj1,
+                              paramT *P);
+
+/**
+ *  \def exp_E_MLstem(A,B,C,D)
+ *  This is the partition function variant of \ref E_MLstem()
+ *  \see E_MLstem()
+ *  \return The Boltzmann weighted energy contribution of the introduced multiloop stem
+ */
+INLINE  PRIVATE double exp_E_MLstem(int type,
+                                    int si1,
+                                    int sj1,
+                                    pf_paramT *P);
+
+/**
+ *  \def E_ExtLoop(A,B,C,D)
+ *  <H2>Compute the Energy contribution of an Exterior loop stem</H2>
+ *  This definition is a wrapper for the E_Stem() funtion.
+ *  It is substituted by an E_Stem() funtion call with argument
+ *  extLoop=1, so the energy contribution returned reflects a
+ *  stem introduced in an exterior-loop.<BR>
+ *  As for the parameters B (si1) and C (sj1) of the substituted
+ *  E_Stem() function, you can inhibit to take 5'-, 3'-dangles
+ *  or mismatch contributions to be taken into account by passing
+ *  -1 to these parameters.
+ * 
+ *  \see    E_Stem()
+ *  \param  A The pair type of the stem-closing pair
+ *  \param  B The 5'-mismatching nucleotide
+ *  \param  C The 3'-mismatching nucleotide
+ *  \param  D The datastructure containing scaled energy parameters
+ *  \return   The energy contribution of the introduced exterior-loop stem
+ */
+INLINE  PRIVATE int E_ExtLoop(int type,
+                              int si1,
+                              int sj1,
+                              paramT *P);
+
+/**
+ *  \def exp_E_ExtLoop(A,B,C,D)
+ *  This is the partition function variant of \ref E_ExtLoop()
+ *  \see E_ExtLoop()
+ *  \return The Boltzmann weighted energy contribution of the introduced exterior-loop stem
+ */
+INLINE  PRIVATE double exp_E_ExtLoop( int type,
+                                      int si1,
+                                      int sj1,
+                                      pf_paramT *P);
+
+/**
+ *  <H2>Compute the Energy of an interior-loop</H2>
+ *  This function computes the free energy \f$\Delta G\f$ of an interior-loop with the
+ *  following structure: <BR>
+ *  <PRE>
+ *        3'  5'
+ *        |   |
+ *        U - V
+ *    a_n       b_1
+ *     .        .
+ *     .        .
+ *     .        .
+ *    a_1       b_m
+ *        X - Y
+ *        |   |
+ *        5'  3'
+ *  </PRE>
+ *  This general structure depicts an interior-loop that is closed by the base pair (X,Y).
+ *  The enclosed base pair is (V,U) which leaves the unpaired bases a_1-a_n and b_1-b_n
+ *  that constitute the loop. In this example, the length of the interior-loop is \f$(n+m)\f$
+ *  where n or m may be 0 resulting in a bulge-loop or base pair stack.
+ *  The mismatching nucleotides for the closing pair (X,Y) are:<BR>
+ *  5'-mismatch: a_1<BR>
+ *  3'-mismatch: b_m<BR>
+ *  and for the enclosed base pair (V,U):<BR>
+ *  5'-mismatch: b_1<BR>
+ *  3'-mismatch: a_n<BR>
+ *  \note Base pairs are always denoted in 5'->3' direction. Thus the enclosed base pair
+ *  must be 'turned arround' when evaluating the free energy of the interior-loop
+ *  \see scale_parameters()
+ *  \see paramT
+ *  \note This function is threadsafe
+ * 
+ *  \param  n1      The size of the 'left'-loop (number of unpaired nucleotides)
+ *  \param  n2      The size of the 'right'-loop (number of unpaired nucleotides)
+ *  \param  type    The pair type of the base pair closing the interior loop
+ *  \param  type_2  The pair type of the enclosed base pair
+ *  \param  si1     The 5'-mismatching nucleotide of the closing pair
+ *  \param  sj1     The 3'-mismatching nucleotide of the closing pair
+ *  \param  sp1     The 3'-mismatching nucleotide of the enclosed pair
+ *  \param  sq1     The 5'-mismatching nucleotide of the enclosed pair
+ *  \param  P       The datastructure containing scaled energy parameters
+ *  \return The Free energy of the Interior-loop in dcal/mol
+ */
+INLINE  PRIVATE int E_IntLoop(int n1,
+                              int n2,
+                              int type,
+                              int type_2,
+                              int si1,
+                              int sj1,
+                              int sp1,
+                              int sq1,
+                              paramT *P);
+
+
+/**
+ *  <H2>Compute the Energy of a hairpin-loop</H2>
+ *  To evaluate the free energy of a hairpin-loop, several parameters have to be known.
+ *  A general hairpin-loop has this structure:<BR>
+ *  <PRE>
+ *        a3 a4
+ *      a2     a5
+ *      a1     a6
+ *        X - Y
+ *        |   |
+ *        5'  3'
+ *  </PRE>
+ *  where X-Y marks the closing pair [e.g. a <B>(G,C)</B> pair]. The length of this loop is 6 as there are
+ *  six unpaired nucleotides (a1-a6) enclosed by (X,Y). The 5' mismatching nucleotide is
+ *  a1 while the 3' mismatch is a6. The nucleotide sequence of this loop is &quot;a1.a2.a3.a4.a5.a6&quot; <BR>
+ *  \note The parameter sequence should contain the sequence of the loop in capital letters of the nucleic acid
+ *  alphabet if the loop size is below 7. This is useful for unusually stable tri-, tetra- and hexa-loops
+ *  which are treated differently (based on experimental data) if they are tabulated.
+ *  @see scale_parameters()
+ *  @see paramT
+ *  \warning Not (really) thread safe! A threadsafe implementation will replace this function in a future release!\n
+ *  Energy evaluation may change due to updates in global variable "tetra_loop"
+ * 
+ *  \param  size  The size of the loop (number of unpaired nucleotides)
+ *  \param  type  The pair type of the base pair closing the hairpin
+ *  \param  si1   The 5'-mismatching nucleotide
+ *  \param  sj1   The 3'-mismatching nucleotide
+ *  \param  string  The sequence of the loop
+ *  \param  P     The datastructure containing scaled energy parameters
+ *  \return The Free energy of the Hairpin-loop in dcal/mol
+ */
+INLINE  PRIVATE int E_Hairpin(int size,
+                              int type,
+                              int si1,
+                              int sj1,
+                              const char *string,
+                              paramT *P);
+
+/**
+ *  <H2>Compute the energy contribution of a stem branching off a loop-region</H2>
+ *  This function computes the energy contribution of a stem that branches off
+ *  a loop region. This can be the case in multiloops, when a stem branching off
+ *  increases the degree of the loop but also <I>immediately interior base pairs</I>
+ *  of an exterior loop contribute free energy.
+ *  To switch the bahavior of the function according to the evaluation of a multiloop-
+ *  or exterior-loop-stem, you pass the flag 'extLoop'.
+ *  The returned energy contribution consists of a TerminalAU penalty if the pair type
+ *  is greater than 2, dangling end contributions of mismatching nucleotides adjacent to
+ *  the stem if only one of the si1, sj1 parameters is greater than 0 and mismatch energies
+ *  if both mismatching nucleotides are positive values.
+ *  Thus, to avoid incooperating dangling end or mismatch energies just pass a negative number,
+ *  e.g. -1 to the mismatch argument.
+ * 
+ *  This is an illustration of how the energy contribution is assembled:
+ *  <PRE>
+ *        3'  5'
+ *        |   |
+ *        X - Y
+ *  5'-si1     sj1-3'
+ *  </PRE>
+ * 
+ *  Here, (X,Y) is the base pair that closes the stem that branches off a loop region.
+ *  The nucleotides si1 and sj1 are the 5'- and 3'- mismatches, respectively. If the base pair
+ *  type of (X,Y) is greater than 2 (i.e. an A-U or G-U pair, the TerminalAU penalty will be
+ *  included in the energy contribution returned. If si1 and sj1 are both nonnegative numbers,
+ *  mismatch energies will also be included. If one of sij or sj1 is a negtive value, only
+ *  5' or 3' dangling end contributions are taken into account. To prohibit any of these mismatch
+ *  contributions to be incoorporated, just pass a negative number to both, si1 and sj1.
+ *  In case the argument extLoop is 0, the returned energy contribution also includes
+ *  the <I>internal-loop-penalty</I> of a multiloop stem with closing pair type.
+ * 
+ *  \see    E_MLstem()
+ *  \see    E_ExtLoop()
+ *  \note   This function is threadsafe
+ * 
+ *  \param  type    The pair type of the first base pair un the stem
+ *  \param  si1     The 5'-mismatching nucleotide
+ *  \param  sj1     The 3'-mismatching nucleotide
+ *  \param  extLoop A flag that indicates whether the contribution reflects the one of an exterior loop or not
+ *  \param  P       The datastructure containing scaled energy parameters
+ *  \return         The Free energy of the branch off the loop in dcal/mol
+ * 
+ */
+INLINE  PRIVATE int E_Stem( int type,
+                            int si1,
+                            int sj1,
+                            int extLoop,
+                            paramT *P);
+
+/**
+ *  <H2>Compute the Boltzmann weighted energy contribution of a stem branching off a loop-region</H2>
+ *  This is the partition function variant of \ref E_Stem()
+ *  \see E_Stem()
+ *  \note This function is threadsafe
+ * 
+ *  \return The Boltzmann weighted energy contribution of the branch off the loop
+ */
+INLINE  PRIVATE double exp_E_Stem(int type,
+                                  int si1,
+                                  int sj1,
+                                  int extLoop,
+                                  pf_paramT *P);
+
+/**
+ *  <H2>Compute Boltzmann weight \f$e^{-\Delta G/kT} \f$ of a hairpin loop</H2>
+ *  multiply by scale[u+2]
+ *  @see get_scaled_pf_parameters()
+ *  @see pf_paramT
+ *  @see E_Hairpin()
+ *  \warning Not (really) thread safe! A threadsafe implementation will replace this function in a future release!\n
+ *  Energy evaluation may change due to updates in global variable "tetra_loop"
+ * 
+ *  \param  u       The size of the loop (number of unpaired nucleotides)
+ *  \param  type    The pair type of the base pair closing the hairpin
+ *  \param  si1     The 5'-mismatching nucleotide
+ *  \param  sj1     The 3'-mismatching nucleotide
+ *  \param  string  The sequence of the loop
+ *  \param  P       The datastructure containing scaled Boltzmann weights of the energy parameters
+ *  \return The Boltzmann weight of the Hairpin-loop
+ */
+INLINE  PRIVATE double exp_E_Hairpin( int u,
+                                      int type,
+                                      short si1,
+                                      short sj1,
+                                      const char *string,
+                                      pf_paramT *P);
+
+/**
+ *  <H2>Compute Boltzmann weight \f$e^{-\Delta G/kT} \f$ of interior loop</H2>
+ *  multiply by scale[u1+u2+2] for scaling
+ *  @see get_scaled_pf_parameters()
+ *  @see pf_paramT
+ *  @see E_IntLoop()
+ *  \note This function is threadsafe
+ * 
+ *  \param  u1      The size of the 'left'-loop (number of unpaired nucleotides)
+ *  \param  u2      The size of the 'right'-loop (number of unpaired nucleotides)
+ *  \param  type    The pair type of the base pair closing the interior loop
+ *  \param  type2   The pair type of the enclosed base pair
+ *  \param  si1     The 5'-mismatching nucleotide of the closing pair
+ *  \param  sj1     The 3'-mismatching nucleotide of the closing pair
+ *  \param  sp1     The 3'-mismatching nucleotide of the enclosed pair
+ *  \param  sq1     The 5'-mismatching nucleotide of the enclosed pair
+ *  \param  P       The datastructure containing scaled Boltzmann weights of the energy parameters
+ *  \return The Boltzmann weight of the Interior-loop
+ */
+INLINE  PRIVATE double  exp_E_IntLoop(int u1,
+                                      int u2,
+                                      int type,
+                                      int type2,
+                                      short si1,
+                                      short sj1,
+                                      short sp1,
+                                      short sq1,
+                                      pf_paramT *P);
+
+
+/*
+#################################
+# BEGIN OF FUNCTION DEFINITIONS #
+#################################
+*/
+INLINE  PRIVATE int E_Hairpin(int size, int type, int si1, int sj1, const char *string, paramT *P){
+  int energy;
+
+  energy = (size <= 30) ? P->hairpin[size] : P->hairpin[30]+(int)(P->lxc*log((size)/30.));
+  if (P->model_details.special_hp){
+    if (size == 4) { /* check for tetraloop bonus */
+      char tl[7]={0}, *ts;
+      strncpy(tl, string, 6);
+      if ((ts=strstr(P->Tetraloops, tl)))
+        return (P->Tetraloop_E[(ts - P->Tetraloops)/7]);
+    }
+    else if (size == 6) {
+      char tl[9]={0}, *ts;
+      strncpy(tl, string, 8);
+      if ((ts=strstr(P->Hexaloops, tl)))
+        return (energy = P->Hexaloop_E[(ts - P->Hexaloops)/9]);
+    }
+    else if (size == 3) {
+      char tl[6]={0,0,0,0,0,0}, *ts;
+      strncpy(tl, string, 5);
+      if ((ts=strstr(P->Triloops, tl))) {
+        return (P->Triloop_E[(ts - P->Triloops)/6]);
+      }
+      return (energy + (type>2 ? P->TerminalAU : 0));
+    }
+  }
+  energy += P->mismatchH[type][si1][sj1];
+
+  return energy;
+}
+
+INLINE  PRIVATE int E_IntLoop(int n1, int n2, int type, int type_2, int si1, int sj1, int sp1, int sq1, paramT *P){
+  /* compute energy of degree 2 loop (stack bulge or interior) */
+  int nl, ns, energy;
+  energy = INF;
+
+  if (n1>n2) { nl=n1; ns=n2;}
+  else {nl=n2; ns=n1;}
+
+  if (nl == 0)
+    return P->stack[type][type_2];  /* stack */
+
+  if (ns==0) {                      /* bulge */
+    energy = (nl<=MAXLOOP)?P->bulge[nl]:
+      (P->bulge[30]+(int)(P->lxc*log(nl/30.)));
+    if (nl==1) energy += P->stack[type][type_2];
+    else {
+      if (type>2) energy += P->TerminalAU;
+      if (type_2>2) energy += P->TerminalAU;
+    }
+    return energy;
+  }
+  else {                            /* interior loop */
+    if (ns==1) {
+      if (nl==1)                    /* 1x1 loop */
+        return P->int11[type][type_2][si1][sj1];
+      if (nl==2) {                  /* 2x1 loop */
+        if (n1==1)
+          energy = P->int21[type][type_2][si1][sq1][sj1];
+        else
+          energy = P->int21[type_2][type][sq1][si1][sp1];
+        return energy;
+      }
+      else {  /* 1xn loop */
+        energy = (nl+1<=MAXLOOP)?(P->internal_loop[nl+1]) : (P->internal_loop[30]+(int)(P->lxc*log((nl+1)/30.)));
+        energy += MIN2(MAX_NINIO, (nl-ns)*P->ninio[2]);
+        energy += P->mismatch1nI[type][si1][sj1] + P->mismatch1nI[type_2][sq1][sp1];
+        return energy;
+      }
+    }
+    else if (ns==2) {
+      if(nl==2)      {              /* 2x2 loop */
+        return P->int22[type][type_2][si1][sp1][sq1][sj1];}
+      else if (nl==3){              /* 2x3 loop */
+        energy = P->internal_loop[5]+P->ninio[2];
+        energy += P->mismatch23I[type][si1][sj1] + P->mismatch23I[type_2][sq1][sp1];
+        return energy;
+      }
+
+    }
+    { /* generic interior loop (no else here!)*/
+      energy = (n1+n2<=MAXLOOP)?(P->internal_loop[n1+n2]) : (P->internal_loop[30]+(int)(P->lxc*log((n1+n2)/30.)));
+
+      energy += MIN2(MAX_NINIO, (nl-ns)*P->ninio[2]);
+
+      energy += P->mismatchI[type][si1][sj1] + P->mismatchI[type_2][sq1][sp1];
+    }
+  }
+  return energy;
+}
+
+INLINE  PRIVATE int E_Stem(int type, int si1, int sj1, int extLoop, paramT *P){
+  int energy = 0;
+  int d5 = (si1 >= 0) ? P->dangle5[type][si1] : 0;
+  int d3 = (sj1 >= 0) ? P->dangle3[type][sj1] : 0;
+
+  if(type > 2)
+    energy += P->TerminalAU;
+
+  if(si1 >= 0 && sj1 >= 0)
+    energy += (extLoop) ? P->mismatchExt[type][si1][sj1] : P->mismatchM[type][si1][sj1];
+  else
+    energy += d5 + d3;
+
+  if(!extLoop) energy += P->MLintern[type];
+  return energy;
+}
+
+INLINE  PRIVATE int E_ExtLoop(int type, int si1, int sj1, paramT *P){
+  int energy = 0;
+  if(si1 >= 0 && sj1 >= 0){
+    energy += P->mismatchExt[type][si1][sj1];
+  }
+  else if (si1 >= 0){
+    energy += P->dangle5[type][si1];
+  }
+  else if (sj1 >= 0){
+    energy += P->dangle3[type][sj1];
+  }
+
+  if(type > 2)
+    energy += P->TerminalAU;
+
+  return energy;
+}
+
+INLINE  PRIVATE int E_MLstem(int type, int si1, int sj1, paramT *P){
+  int energy = 0;
+  if(si1 >= 0 && sj1 >= 0){
+    energy += P->mismatchM[type][si1][sj1];
+  }
+  else if (si1 >= 0){
+    energy += P->dangle5[type][si1];
+  }
+  else if (sj1 >= 0){
+    energy += P->dangle3[type][sj1];
+  }
+
+  if(type > 2)
+    energy += P->TerminalAU;
+
+  energy += P->MLintern[type];
+
+  return energy;
+}
+
+INLINE  PRIVATE double exp_E_Hairpin(int u, int type, short si1, short sj1, const char *string, pf_paramT *P){
+  double q, kT;
+  kT = P->kT;   /* kT in cal/mol  */
+
+  if(u <= 30)
+    q = P->exphairpin[u];
+  else
+    q = P->exphairpin[30] * exp( -(P->lxc*log( u/30.))*10./kT);
+
+  if(u < 3) return q; /* should only be the case when folding alignments */
+
+  if(P->model_details.special_hp){
+    if(u==4) {
+      char tl[7]={0,0,0,0,0,0,0}, *ts;
+      strncpy(tl, string, 6);
+      if ((ts=strstr(P->Tetraloops, tl))){
+        if(type != 7)
+          return (P->exptetra[(ts-P->Tetraloops)/7]);
+        else
+          q *= P->exptetra[(ts-P->Tetraloops)/7];
+      }
+    }
+    if (u==6) {
+      char tl[9]={0,0,0,0,0,0,0,0,0}, *ts;
+      strncpy(tl, string, 8);
+      if ((ts=strstr(P->Hexaloops, tl)))
+        return  (P->exphex[(ts-P->Hexaloops)/9]);
+    }
+    if (u==3) {
+      char tl[6]={0,0,0,0,0,0}, *ts;
+      strncpy(tl, string, 5);
+      if ((ts=strstr(P->Triloops, tl)))
+        return (P->exptri[(ts-P->Triloops)/6]);
+      if (type>2)
+        return q *= P->expTermAU;
+    }
+  }
+  /* no mismatches for tri-loops */
+  q *= P->expmismatchH[type][si1][sj1];
+
+  return q;
+}
+
+INLINE  PRIVATE double exp_E_IntLoop(int u1, int u2, int type, int type2, short si1, short sj1, short sp1, short sq1, pf_paramT *P){
+  int ul, us, no_close = 0;
+  double z = 0.;
+
+  if ((no_closingGU) && ((type2==3)||(type2==4)||(type==3)||(type==4)))
+    no_close = 1;
+
+  if (u1>u2) { ul=u1; us=u2;}
+  else {ul=u2; us=u1;}
+
+  if (ul==0) /* stack */
+    z = P->expstack[type][type2];
+  else if(!no_close){
+    if (us==0) {                      /* bulge */
+      z = P->expbulge[ul];
+      if (ul==1) z *= P->expstack[type][type2];
+      else {
+        if (type>2) z *= P->expTermAU;
+        if (type2>2) z *= P->expTermAU;
+      }
+      return z;
+    }
+    else if (us==1) {
+      if (ul==1){                    /* 1x1 loop */
+        return P->expint11[type][type2][si1][sj1];
+      }
+      if (ul==2) {                  /* 2x1 loop */
+        if (u1==1)
+          return P->expint21[type][type2][si1][sq1][sj1];
+        else
+          return P->expint21[type2][type][sq1][si1][sp1];
+      }
+      else {  /* 1xn loop */
+        z = P->expinternal[ul+us] * P->expmismatch1nI[type][si1][sj1] * P->expmismatch1nI[type2][sq1][sp1];
+        return z * P->expninio[2][ul-us];
+      }
+    }
+    else if (us==2) {
+      if(ul==2) /* 2x2 loop */
+        return P->expint22[type][type2][si1][sp1][sq1][sj1];
+      else if(ul==3){              /* 2x3 loop */
+        z = P->expinternal[5]*P->expmismatch23I[type][si1][sj1]*P->expmismatch23I[type2][sq1][sp1];
+        return z * P->expninio[2][1];
+      }
+    }
+    /* generic interior loop (no else here!)*/
+    z = P->expinternal[ul+us] * P->expmismatchI[type][si1][sj1] * P->expmismatchI[type2][sq1][sp1];
+    return z * P->expninio[2][ul-us];
+
+  }
+  return z;
+}
+
+INLINE  PRIVATE double exp_E_Stem(int type, int si1, int sj1, int extLoop, pf_paramT *P){
+  double energy = 1.0;
+  double d5 = (si1 >= 0) ? P->expdangle5[type][si1] : 1.;
+  double d3 = (sj1 >= 0) ? P->expdangle3[type][sj1] : 1.;
+
+  if(type > 2)
+    energy *= P->expTermAU;
+
+  if(si1 >= 0 && sj1 >= 0)
+    energy *= (extLoop) ? P->expmismatchExt[type][si1][sj1] : P->expmismatchM[type][si1][sj1];
+  else
+    energy *= d5 * d3;
+
+  if(!extLoop) energy *= P->expMLintern[type];
+  return energy;
+}
+
+INLINE  PRIVATE double exp_E_MLstem(int type, int si1, int sj1, pf_paramT *P){
+  double energy = 1.0;
+  if(si1 >= 0 && sj1 >= 0){
+    energy *= P->expmismatchM[type][si1][sj1];
+  }
+  else if(si1 >= 0){
+    energy *= P->expdangle5[type][si1];
+  }
+  else if(sj1 >= 0){
+    energy *= P->expdangle3[type][sj1];
+  }
+
+  if(type > 2)
+    energy *= P->expTermAU;
+
+  energy *= P->expMLintern[type];
+  return energy;
+}
+
+INLINE  PRIVATE double exp_E_ExtLoop(int type, int si1, int sj1, pf_paramT *P){
+  double energy = 1.0;
+  if(si1 >= 0 && sj1 >= 0){
+    energy *= P->expmismatchExt[type][si1][sj1];
+  }
+  else if(si1 >= 0){
+    energy *= P->expdangle5[type][si1];
+  }
+  else if(sj1 >= 0){
+    energy *= P->expdangle3[type][sj1];
+  }
+
+  if(type > 2)
+    energy *= P->expTermAU;
+
+  return energy;
+}
+
+INLINE  PRIVATE int     E_IntLoop_Co(int type, int type_2, int i, int j, int p, int q, int cutpoint, short si1, short sj1, short sp1, short sq1, int dangles, paramT *P){
+  int energy = 0;
+  if(type > 2)   energy += P->TerminalAU;
+  if(type_2 > 2) energy += P->TerminalAU;
+
+  if(!dangles) return energy;
+
+  int ci = (i>=cutpoint)||((i+1)<cutpoint);
+  int cj = ((j-1)>=cutpoint)||(j<cutpoint);
+  int cp = ((p-1)>=cutpoint)||(p<cutpoint);
+  int cq = (q>=cutpoint)||((q+1)<cutpoint);
+
+  int d3    = ci  ? P->dangle3[type][si1]   : 0;
+  int d5    = cj  ? P->dangle5[type][sj1]   : 0;
+  int d5_2  = cp  ? P->dangle5[type_2][sp1] : 0;
+  int d3_2  = cq  ? P->dangle3[type_2][sq1] : 0;
+
+  int tmm   = (cj && ci) ? P->mismatchExt[type][sj1][si1]   : d5 + d3;
+  int tmm_2 = (cp && cq) ? P->mismatchExt[type_2][sp1][sq1] : d5_2 + d3_2;
+
+  if(dangles == 2) return energy + tmm + tmm_2;
+
+  /* now we may have non-double dangles only */
+  if(i+2 < p){
+    if(q+2 < j){ energy += tmm + tmm_2;}
+    else if(q+2 == j){ energy += (cj && cq) ? MIN2(tmm + d5_2, tmm_2 + d3) : tmm + tmm_2;}
+    else energy += d3 + d5_2;
+  }
+  else if(i+2 == p){
+    if(q+2 < j){ energy += (ci && cp) ? MIN2(tmm + d3_2, tmm_2 + d5) : tmm + tmm_2;}
+    else if(q+2 == j){
+      energy += MIN2(tmm, MIN2(tmm_2, MIN2(d5 + d5_2, d3 + d3_2)));
+    }
+    else energy += MIN2(d3, d5_2);
+  }
+  else{
+    if(q+2 < j){ energy += d5 + d3_2;}
+    else if(q+2 == j){ energy += MIN2(d5, d3_2);}
+  }
+  return energy;
+}
+
+#endif
diff --git a/include/naview.h b/include/naview.h
new file mode 100644
--- /dev/null
+++ b/include/naview.h
@@ -0,0 +1,16 @@
+#ifndef __VIENNA_RNA_PACKAGE_NAVIEW_H__
+#define __VIENNA_RNA_PACKAGE_NAVIEW_H__
+
+/**
+ *  \file naview.h
+ *
+ */
+
+/**
+ *
+ */
+int naview_xy_coordinates(short *pair_table,
+                          float *X,
+                          float *Y);
+
+#endif
diff --git a/include/pair_mat.h b/include/pair_mat.h
new file mode 100644
--- /dev/null
+++ b/include/pair_mat.h
@@ -0,0 +1,148 @@
+#include <ctype.h>
+#include "utils.h"
+#include "fold_vars.h"
+
+#define NBASES 8
+/*@notnull@*/
+
+static const char Law_and_Order[] = "_ACGUTXKI";
+static int BP_pair[NBASES][NBASES]=
+/* _  A  C  G  U  X  K  I */
+{{ 0, 0, 0, 0, 0, 0, 0, 0},
+ { 0, 0, 0, 0, 5, 0, 0, 5},
+ { 0, 0, 0, 1, 0, 0, 0, 0},
+ { 0, 0, 2, 0, 3, 0, 0, 0},
+ { 0, 6, 0, 4, 0, 0, 0, 6},
+ { 0, 0, 0, 0, 0, 0, 2, 0},
+ { 0, 0, 0, 0, 0, 1, 0, 0},
+ { 0, 6, 0, 0, 5, 0, 0, 0}};
+
+#define MAXALPHA 20       /* maximal length of alphabet */
+
+static short alias[MAXALPHA+1];
+static int pair[MAXALPHA+1][MAXALPHA+1];
+/* rtype[pair[i][j]]:=pair[j][i] */
+static int rtype[8] = {0, 2, 1, 4, 3, 6, 5, 7};
+
+#ifdef _OPENMP
+#pragma omp threadprivate(Law_and_Order, BP_pair, alias, pair, rtype)
+#endif
+
+/* for backward compatibility */
+#define ENCODE(c) encode_char(c)
+
+static int encode_char(char c) {
+  /* return numerical representation of base used e.g. in pair[][] */
+  int code;
+  if (energy_set>0) code = (int) (c-'A')+1;
+  else {
+    const char *pos;
+    pos = strchr(Law_and_Order, c);
+    if (pos==NULL) code=0;
+    else code = (int) (pos-Law_and_Order);
+    if (code>5) code = 0;
+    if (code>4) code--; /* make T and U equivalent */
+  }
+  return code;
+}
+
+/*@+boolint +charint@*/
+/*@null@*/
+extern char *nonstandards;
+extern void   nrerror(const char message[]);
+static void make_pair_matrix(void)
+{
+   int i,j;
+
+   if (energy_set==0) {
+      for (i=0; i<5; i++) alias[i] = (short) i;
+      alias[5] = 3; /* X <-> G */
+      alias[6] = 2; /* K <-> C */
+      alias[7] = 0; /* I <-> default base '@' */
+      for (i=0; i<NBASES; i++) {
+          for (j=0; j<NBASES; j++)
+            pair[i][j] = BP_pair[i][j];
+      }
+      if (noGU) pair[3][4] = pair[4][3] =0;
+      if (nonstandards!=NULL) {  /* allow nonstandard bp's */
+         for (i=0; i<(int)strlen(nonstandards); i+=2)
+            pair[encode_char(nonstandards[i])]
+              [encode_char(nonstandards[i+1])]=7;
+      }
+      for (i=0; i<NBASES; i++) {
+          for (j=0; j<NBASES; j++)
+           rtype[pair[i][j]] = pair[j][i];
+      }
+   } else {
+      for (i=0; i<=MAXALPHA; i++) {
+         for (j=0; j<=MAXALPHA; j++)
+            pair[i][j] = 0;
+      }
+      if (energy_set==1) {
+         for (i=1; i<MAXALPHA;) {
+            alias[i++] = 3;  /* A <-> G */
+            alias[i++] = 2;  /* B <-> C */
+         }
+         for (i=1; i<MAXALPHA; i++) {
+            pair[i][i+1] = 2;    /* AB <-> GC */
+            i++;
+            pair[i][i-1] = 1;    /* BA <-> CG */
+         }
+      }
+      else if (energy_set==2) {
+        for (i=1; i<MAXALPHA;) {
+            alias[i++] = 1;  /* A <-> A*/
+            alias[i++] = 4;  /* B <-> U */
+         }
+         for (i=1; i<MAXALPHA; i++) {
+            pair[i][i+1] = 5;    /* AB <-> AU */
+            i++;
+            pair[i][i-1] = 6;    /* BA <-> UA */
+         }
+      }
+      else if (energy_set==3) {
+        for (i=1; i<MAXALPHA-2; ) {
+          alias[i++] = 3;  /* A <-> G */
+          alias[i++] = 2;  /* B <-> C */
+          alias[i++] = 1;  /* C <-> A */
+          alias[i++] = 4;  /* D <-> U */
+        }
+        for (i=1; i<MAXALPHA-2; i++) {
+          pair[i][i+1] = 2;    /* AB <-> GC */
+          i++;
+          pair[i][i-1] = 1;    /* BA <-> CG */
+          i++;
+          pair[i][i+1] = 5;    /* CD <-> AU */
+          i++;
+          pair[i][i-1] = 6;    /* DC <-> UA */
+        }
+      }
+      else nrerror("What energy_set are YOU using??");
+      for (i=0; i<=MAXALPHA; i++) {
+        for (j=0; j<=MAXALPHA; j++)
+          rtype[pair[i][j]] = pair[j][i];
+      }
+   }
+}
+
+static short *encode_sequence(const char *sequence, short how){
+  unsigned int i,l = (unsigned int)strlen(sequence);
+  short         *S = (short *) space(sizeof(short)*(l+2));
+
+  switch(how){
+    /* standard encoding as always used for S */
+    case 0:   for(i=1; i<=l; i++) /* make numerical encoding of sequence */
+                S[i]= (short) encode_char(toupper(sequence[i-1]));
+              S[l+1] = S[1];
+              S[0] = (short) l;
+              break;
+    /* encoding for mismatches of nostandard bases (normally used for S1) */
+    case 1:   for(i=1; i<=l; i++)
+                S[i] = alias[(short) encode_char(toupper(sequence[i-1]))];
+              S[l+1] = S[1];
+              S[0] = S[l];
+              break;
+  }
+
+  return S;
+}
diff --git a/include/params.h b/include/params.h
new file mode 100644
--- /dev/null
+++ b/include/params.h
@@ -0,0 +1,134 @@
+#ifndef __VIENNA_RNA_PACKAGE_PARAMS_H__
+#define __VIENNA_RNA_PACKAGE_PARAMS_H__
+
+#include "energy_const.h"
+#include "data_structures.h"
+
+#ifdef __GNUC__
+#define DEPRECATED(func) func __attribute__ ((deprecated))
+#else
+#define DEPRECATED(func) func
+#endif
+
+/**
+ *  \addtogroup energy_parameters
+ *  \brief All relevant functions to retrieve and copy precalculated energy parameter sets as well as
+ *  reading/writing the energy parameter set from/to file(s).
+ *
+ *  This module covers all relevant functions for precalculation of the energy parameters
+ *  necessary for the folding routines provided by RNAlib. Furthermore, the energy parameter set
+ *  in the RNAlib can be easily exchanged by a user-defined one. It is also possible to write the
+ *  current energy parameter set into a text file.
+ *  @{
+ *
+ *  \file params.h
+ */
+
+/**
+ * \brief Get precomputed energy contributions for all the known loop types
+ *
+ *  \note OpenMP: This function relies on several global model settings variables and thus is
+ *        not to be considered threadsafe. See get_scaled_parameters() for a completely threadsafe
+ *        implementation.
+ *
+ * \return     A set of precomputed energy contributions
+ */
+paramT *scale_parameters(void);
+
+/**
+ * \brief Get precomputed energy contributions for all the known loop types
+ *
+ *  Call this function to retrieve precomputed energy contributions, i.e. scaled
+ *  according to the temperature passed. Furthermore, this function assumes a
+ *  data structure that contains the model details as well, such that subsequent
+ *  folding recursions are able to retrieve the correct model settings
+ *
+ *  \see #model_detailsT, set_model_details()
+ *
+ *  \param temperature  The temperature in degrees Celcius
+ *  \param md           The model details
+ *  \return             precomputed energy contributions and model settings
+ */
+paramT *get_scaled_parameters(double temperature,
+                              model_detailsT md);
+
+paramT *get_parameter_copy(paramT *par);
+
+/**
+ *  get a datastructure of type \ref pf_paramT which contains
+ *  the Boltzmann weights of several energy parameters scaled
+ *  according to the current temperature
+ *  \return The datastructure containing Boltzmann weights for use in partition function calculations
+ */
+pf_paramT *get_scaled_pf_parameters(void);
+
+/**
+ *  \brief Get precomputed Boltzmann factors of the loop type
+ *  dependent energy contributions with independent thermodynamic
+ *  temperature
+ *
+ *  This function returns a data structure that contains
+ *  all necessary precalculated Boltzmann factors for each
+ *  loop type contribution.<br>
+ *  In contrast to get_scaled_pf_parameters(), this function
+ *  enables setting of independent temperatures for both, the
+ *  individual energy contributions as well as the thermodynamic
+ *  temperature used in
+ *  \f$ exp(-\Delta G / kT) \f$
+ *
+ *  \see get_scaled_pf_parameters(), get_boltzmann_factor_copy()
+ *
+ *  \param  temperature   The temperature in degrees Celcius used for (re-)scaling the energy contributions
+ *  \param  betaScale     A scaling value that is used as a multiplication factor for the absolute
+ *                        temperature of the system
+ *  \param  md            The model details to be used
+ *  \param  pf_scale      The scaling factor for the Boltzmann factors
+ *  \return               A set of precomputed Boltzmann factors
+ */
+pf_paramT *get_boltzmann_factors( double temperature,
+                                  double betaScale,
+                                  model_detailsT md,
+                                  double pf_scale);
+
+/**
+ *  \brief Get a copy of already precomputed Boltzmann factors
+ *
+ *  \see get_boltzmann_factors(), get_scaled_pf_parameters()
+ *
+ *  \param  parameters  The input data structure that shall be copied
+ *  \return             A copy of the provided Boltzmann factor dataset
+ */
+pf_paramT *get_boltzmann_factor_copy(pf_paramT *parameters);
+
+/**
+ *  \brief Get precomputed Boltzmann factors of the loop type
+ *  dependent energy contributions (alifold variant)
+ *
+ */
+pf_paramT *get_scaled_alipf_parameters(unsigned int n_seq);
+
+/**
+ *  \brief Get precomputed Boltzmann factors of the loop type
+ *  dependent energy contributions (alifold variant) with
+ *  independent thermodynamic temperature
+ *
+ */
+PUBLIC pf_paramT *get_boltzmann_factors_ali(unsigned int n_seq,
+                                            double temperature,
+                                            double betaScale,
+                                            model_detailsT md,
+                                            double pf_scale);
+
+/**
+ *  @}
+ */
+
+DEPRECATED(paramT     *copy_parameters(void));
+DEPRECATED(paramT     *set_parameters(paramT *dest));
+DEPRECATED(pf_paramT  *scale_pf_parameters(void));
+DEPRECATED(pf_paramT  *copy_pf_param(void));
+DEPRECATED(pf_paramT  *set_pf_param(paramT *dest));
+
+
+
+#endif
diff --git a/include/part_func.h b/include/part_func.h
new file mode 100644
--- /dev/null
+++ b/include/part_func.h
@@ -0,0 +1,443 @@
+#ifndef __VIENNA_RNA_PACKAGE_PART_FUNC_H__
+#define __VIENNA_RNA_PACKAGE_PART_FUNC_H__
+
+#include "data_structures.h"
+
+#ifdef __GNUC__
+#define DEPRECATED(func) func __attribute__ ((deprecated))
+#else
+#define DEPRECATED(func) func
+#endif
+
+
+/**
+ *  \addtogroup pf_fold
+ *  \brief This section provides information about all functions and variables related to
+ *  the calculation of the partition function and base pair probabilities.
+ *
+ *  Instead of the minimum free energy structure the partition function of all possible structures
+ *  and from that the pairing probability for every possible pair can be calculated, using a dynamic
+ *  programming algorithm as described in \cite mccaskill:1990. 
+ *
+ *  @{
+ *    \file part_func.h
+ *    \brief Partition function of single RNA sequences
+ * 
+ *    This file includes (almost) all function declarations within the <b>RNAlib</b> that are related to
+ *    Partion function folding...
+ *  @}
+ */
+
+/**
+ *  \brief Flag indicating that auxilary arrays are needed throughout the computations. This is essential for stochastic backtracking
+ *
+ *  Set this variable to 1 prior to a call of pf_fold() to ensure that all matrices needed for stochastic backtracking
+ *  are filled in the forward recursions
+ *
+ *  \ingroup subopt_stochbt
+ *
+ *  \see pbacktrack(), pbacktrack_circ
+ */
+extern  int st_back;
+
+/*
+#################################################
+# PARTITION FUNCTION COMPUTATION                #
+#################################################
+*/
+
+/**
+ *  \brief Compute the partition function \f$Q\f$ for a given RNA sequence
+ *
+ *  If \a structure is not a NULL pointer on input, it contains on
+ *  return a string consisting of the letters " . , | { } ( ) " denoting
+ *  bases that are essentially unpaired, weakly paired, strongly paired without
+ *  preference, weakly upstream (downstream) paired, or strongly up-
+ *  (down-)stream paired bases, respectively.
+ *  If #fold_constrained is not 0, the \a structure string is
+ *  interpreted on input as a list of constraints for the folding. The
+ *  character "x" marks bases that must be unpaired, matching brackets " ( ) "
+ *  denote base pairs, all other characters are ignored. Any pairs
+ *  conflicting with the constraint will be forbidden. This is usually sufficient
+ *  to ensure the constraints are honored.
+ *  If tha parameter calculate_bppm is set to 0 base pairing probabilities will not
+ *  be computed (saving CPU time), otherwise after calculations took place #pr will
+ *  contain the probability that bases \a i and \a j pair.
+ * 
+ *  \ingroup pf_fold
+ *
+ *  \note           The global array #pr is deprecated and the user who wants the calculated
+ *                  base pair probabilities for further computations is advised to use the function
+ *                  export_bppm()
+ *  \post           After successful run the hidden folding matrices are filled with the appropriate Boltzmann factors.
+ *                  Depending on whether the global variable #do_backtrack was set the base pair probabilities are already
+ *                  computed and may be accessed for further usage via the export_bppm() function.
+ *                  A call of free_pf_arrays() will free all memory allocated by this function.
+ *                  Successive calls will first free previously allocated memory before starting the computation.
+ *  \see            pf_fold(), pf_circ_fold(), bppm_to_structure(), export_bppm(), get_boltzmann_factors(), free_pf_arrays()
+ *  \param[in]      sequence        The RNA sequence input
+ *  \param[in,out]  structure       A pointer to a char array where a base pair probability information can be stored in a
+ *                                  pseudo-dot-bracket notation (may be NULL, too)
+ *  \param[in]      parameters      Data structure containing the precalculated Boltzmann factors
+ *  \param[in]      calculate_bppm  Switch to Base pair probability calculations on/off (0==off)
+ *  \param[in]      is_constrained  Switch to indicate that a structure contraint is passed via the structure argument (0==off)
+ *  \param[in]      is_circular     Switch to (de-)activate postprocessing steps in case RNA sequence is circular (0==off)
+ *  \return         The Gibbs free energy of the ensemble (\f$G = -RT \cdot \log(Q) \f$) in kcal/mol
+ */
+float   pf_fold_par(  const char *sequence,
+                      char *structure,
+                      pf_paramT *parameters,
+                      int calculate_bppm,
+                      int is_constrained,
+                      int is_circular);
+
+/**
+ *  \brief Compute the partition function \f$Q\f$ of an RNA sequence
+ * 
+ *  If \a structure is not a NULL pointer on input, it contains on
+ *  return a string consisting of the letters " . , | { } ( ) " denoting
+ *  bases that are essentially unpaired, weakly paired, strongly paired without
+ *  preference, weakly upstream (downstream) paired, or strongly up-
+ *  (down-)stream paired bases, respectively.
+ *  If #fold_constrained is not 0, the \a structure string is
+ *  interpreted on input as a list of constraints for the folding. The
+ *  character "x" marks bases that must be unpaired, matching brackets " ( ) "
+ *  denote base pairs, all other characters are ignored. Any pairs
+ *  conflicting with the constraint will be forbidden. This is usually sufficient
+ *  to ensure the constraints are honored.
+ *  If #do_backtrack has been set to 0 base pairing probabilities will not
+ *  be computed (saving CPU time), otherwise #pr will contain the probability
+ *  that bases \a i and \a j pair.
+ * 
+ *  \ingroup pf_fold
+ *
+ *  \note   The global array #pr is deprecated and the user who wants the calculated
+ *          base pair probabilities for further computations is advised to use the function
+ *          export_bppm().
+ *  \note   \b OpenMP:
+ *          This function is not entirely threadsafe. While the recursions are working on their
+ *          own copies of data the model details for the recursions are determined from the global
+ *          settings just before entering the recursions. Consider using pf_fold_par() for a
+ *          really threadsafe implementation.
+ *  \pre    This function takes its model details from the global variables provided in \e RNAlib
+ *  \post   After successful run the hidden folding matrices are filled with the appropriate Boltzmann factors.
+ *          Depending on whether the global variable #do_backtrack was set the base pair probabilities are already
+ *          computed and may be accessed for further usage via the export_bppm() function.
+ *          A call of free_pf_arrays() will free all memory allocated by this function.
+ *          Successive calls will first free previously allocated memory before starting the computation.
+ *  \see    pf_fold_par(), pf_circ_fold(), bppm_to_structure(), export_bppm()
+ *  \param sequence   The RNA sequence input
+ *  \param structure  A pointer to a char array where a base pair probability information can be stored in a pseudo-dot-bracket notation (may be NULL, too)
+ *  \return           The Gibbs free energy of the ensemble (\f$G = -RT \cdot \log(Q) \f$) in kcal/mol
+ */
+float   pf_fold(const char *sequence,
+                char *structure);
+
+/**
+ *  \brief Compute the partition function of a circular RNA sequence
+ * 
+ *  \ingroup pf_fold
+ *
+ *  \note           The global array #pr is deprecated and the user who wants the calculated
+ *                  base pair probabilities for further computations is advised to use the function
+ *                  export_bppm().
+ *  \note           \b OpenMP:
+ *                  This function is not entirely threadsafe. While the recursions are working on their
+ *                  own copies of data the model details for the recursions are determined from the global
+ *                  settings just before entering the recursions. Consider using pf_fold_par() for a
+ *                  really threadsafe implementation.
+ *  \pre            This function takes its model details from the global variables provided in \e RNAlib
+ *  \post           After successful run the hidden folding matrices are filled with the appropriate Boltzmann factors.
+ *                  Depending on whether the global variable #do_backtrack was set the base pair probabilities are already
+ *                  computed and may be accessed for further usage via the export_bppm() function.
+ *                  A call of free_pf_arrays() will free all memory allocated by this function.
+ *                  Successive calls will first free previously allocated memory before starting the computation.
+ *  \see            pf_fold_par(), pf_fold()
+ *  \param[in]      sequence   The RNA sequence input
+ *  \param[in,out]  structure  A pointer to a char array where a base pair probability information can be
+ *                  stored in a pseudo-dot-bracket notation (may be NULL, too)
+ *  \return         The Gibbs free energy of the ensemble (\f$G = -RT \cdot \log(Q) \f$) in kcal/mol
+ */
+float   pf_circ_fold( const char *sequence,
+                      char *structure);
+
+/**
+ *  \brief Sample a secondary structure from the Boltzmann ensemble according its probability\n
+ *
+ *  \ingroup subopt_stochbt
+ *  \pre    pf_fold_par() or pf_fold() have to be called first to fill the partition function matrices
+ *
+ *  \param  sequence  The RNA sequence
+ *  \return           A sampled secondary structure in dot-bracket notation
+ */
+char    *pbacktrack(char *sequence);
+
+/**
+ *  \brief Sample a secondary structure of a circular RNA from the Boltzmann ensemble according its probability
+ * 
+ *  This function does the same as \ref pbacktrack() but assumes the RNA molecule to be circular
+ *
+ *  \ingroup subopt_stochbt
+ *  \pre    pf_fold_par() or pf_fold_circ() have to be called first to fill the partition function matrices
+ *
+ *  \param  sequence  The RNA sequence
+ *  \return           A sampled secondary structure in dot-bracket notation
+ */
+char    *pbacktrack_circ(char *sequence);
+
+/**
+ *  \brief Free arrays for the partition function recursions
+ *
+ *  Call this function if you want to free all allocated memory associated with
+ *  the partition function forward recursion.
+ *  \note Successive calls of pf_fold(), pf_circ_fold() already check if they should free
+ *  any memory from a previous run.
+ *  \note <b>OpenMP notice:</b><br>
+ *  This function should be called before leaving a thread in order to avoid leaking memory
+ *  
+ *  \ingroup pf_fold
+ *
+ *  \post   All memory allocated by pf_fold_par(), pf_fold() or pf_circ_fold() will be free'd
+ *  \see    pf_fold_par(), pf_fold(), pf_circ_fold()
+ */
+void  free_pf_arrays(void);
+
+/**
+ *  \brief Recalculate energy parameters
+ * 
+ *  Call this function to recalculate the pair matrix and energy parameters
+ *  after a change in folding parameters like #temperature
+ *
+ *  \ingroup pf_fold
+ *
+ */
+void  update_pf_params(int length);
+
+/**
+ *  \brief Recalculate energy parameters
+ * 
+ *  \ingroup pf_fold
+ *
+ */
+void update_pf_params_par(int length, pf_paramT *parameters);
+
+/**
+ *  \brief Get a pointer to the base pair probability array
+ *  \ingroup  pf_fold
+ *
+ *  Accessing the base pair probabilities for a pair (i,j) is achieved by
+ *  \code
+ *  FLT_OR_DBL *pr  = export_bppm();
+ *  pr_ij           = pr[iindx[i]-j];
+ *  \endcode
+ *
+ *  \pre      Call pf_fold_par(), pf_fold() or pf_circ_fold() first to fill the base pair probability array
+ *
+ *  \see pf_fold(), pf_circ_fold(), get_iindx()
+ *
+ *  \return A pointer to the base pair probability array
+ */
+FLT_OR_DBL  *export_bppm(void);
+
+/*
+#################################################
+# OTHER PARTITION FUNCTION RELATED DECLARATIONS #
+#################################################
+*/
+
+/**
+ *  \brief Create a plist from a probability matrix
+ * 
+ *  The probability matrix given is parsed and all pair probabilities above
+ *  the given threshold are used to create an entry in the plist
+ * 
+ *  The end of the plist is marked by sequence positions i as well as j
+ *  equal to 0. This condition should be used to stop looping over its
+ *  entries
+ * 
+ *  \note This function is threadsafe
+ *  \ingroup            pf_fold
+ *  \param[out] pl      A pointer to the plist that is to be created
+ *  \param[in]  probs   The probability matrix used for creting the plist
+ *  \param[in]  length  The length of the RNA sequence
+ *  \param[in]  cutoff  The cutoff value
+ */
+void  assign_plist_from_pr( plist **pl,
+                            FLT_OR_DBL *probs,
+                            int length,
+                            double cutoff);
+
+/* this doesn't work if free_pf_arrays() is called before */
+void assign_plist_gquad_from_pr(plist **pl,
+                                int length,
+                                double cut_off);
+
+char *get_centroid_struct_gquad_pr(int length,
+                                  double *dist);
+
+/**
+ *  \brief Get the pointers to (almost) all relavant computation arrays used in partition function computation
+ *
+ *  \ingroup    pf_fold
+ *  \pre        In order to assign meaningful pointers, you have to call pf_fold_par() or pf_fold() first!
+ *  \see        pf_fold_par(), pf_fold(), pf_circ_fold()
+ *  \param[out] S_p       A pointer to the 'S' array (integer representation of nucleotides)
+ *  \param[out] S1_p      A pointer to the 'S1' array (2nd integer representation of nucleotides)
+ *  \param[out] ptype_p   A pointer to the pair type matrix
+ *  \param[out] qb_p      A pointer to the Q<sup>B</sup> matrix
+ *  \param[out] qm_p      A pointer to the Q<sup>M</sup> matrix
+ *  \param[out] q1k_p     A pointer to the 5' slice of the Q matrix (\f$q1k(k) = Q(1, k)\f$)
+ *  \param[out] qln_p     A pointer to the 3' slice of the Q matrix (\f$qln(l) = Q(l, n)\f$)
+ *  \return     Non Zero if everything went fine, 0 otherwise
+ */
+int get_pf_arrays(short **S_p,
+                  short **S1_p,
+                  char **ptype_p,
+                  FLT_OR_DBL **qb_p,
+                  FLT_OR_DBL **qm_p,
+                  FLT_OR_DBL **q1k_p,
+                  FLT_OR_DBL **qln_p);
+
+/**
+ *  \brief Get the free energy of a subsequence from the q[] array
+ */
+double get_subseq_F(int i, int j);
+
+/**
+ *  \brief Get the centroid structure of the ensemble
+ * 
+ *  This function is a threadsafe replacement for \ref centroid() with a 'plist' input
+ * 
+ *  The centroid is the structure with the minimal average distance to all other structures
+ *  \n \f$ <d(S)> = \sum_{(i,j) \in S} (1-p_{ij}) + \sum_{(i,j) \notin S} p_{ij} \f$ \n
+ *  Thus, the centroid is simply the structure containing all pairs with \f$p_ij>0.5\f$
+ *  The distance of the centroid to the ensemble is written to the memory adressed by \a dist.
+ *
+ *  \ingroup            centroid_fold
+ *  \param[in]  length  The length of the sequence
+ *  \param[out] dist    A pointer to the distance variable where the centroid distance will be written to
+ *  \param[in]  pl      A pair list containing base pair probability information about the ensemble
+ *  \return             The centroid structure of the ensemble in dot-bracket notation
+ */
+char  *get_centroid_struct_pl(int length,
+                              double *dist,
+                              plist *pl);
+
+/**
+ *  \brief Get the centroid structure of the ensemble
+ * 
+ *  This function is a threadsafe replacement for \ref centroid() with a probability array input
+ * 
+ *  The centroid is the structure with the minimal average distance to all other structures
+ *  \n \f$ <d(S)> = \sum_{(i,j) \in S} (1-p_{ij}) + \sum_{(i,j) \notin S} p_{ij} \f$ \n
+ *  Thus, the centroid is simply the structure containing all pairs with \f$p_ij>0.5\f$
+ *  The distance of the centroid to the ensemble is written to the memory adressed by \a dist.
+ * 
+ *  \ingroup              centroid_fold
+ *  \param[in]    length  The length of the sequence
+ *  \param[out]   dist    A pointer to the distance variable where the centroid distance will be written to
+ *  \param[in]    pr      A upper triangular matrix containing base pair probabilities (access via iindx \ref get_iindx() )
+ *  \return               The centroid structure of the ensemble in dot-bracket notation
+ */
+char  *get_centroid_struct_pr(int length,
+                              double *dist,
+                              FLT_OR_DBL *pr);
+
+/**
+ *  \brief Get the mean base pair distance of the last partition function computation
+ * 
+ *  \note To ensure thread-safety, use the function mean_bp_distance_pr() instead!
+ *
+ *  \ingroup pf_fold
+ *
+ *  \see mean_bp_distance_pr()
+ * 
+ *  \param    length
+ *  \return  mean base pair distance in thermodynamic ensemble
+ */
+double  mean_bp_distance(int length);
+
+/**
+ *  \brief Get the mean base pair distance in the thermodynamic ensemble
+ * 
+ *  This is a threadsafe implementation of \ref mean_bp_dist() !
+ * 
+ *  \f$<d> = \sum_{a,b} p_a p_b d(S_a,S_b)\f$\n
+ *  this can be computed from the pair probs \f$p_ij\f$ as\n
+ *  \f$<d> = \sum_{ij} p_{ij}(1-p_{ij})\f$
+ * 
+ *  \note This function is threadsafe
+ * 
+ *  \ingroup pf_fold
+ *
+ *  \param length The length of the sequence
+ *  \param pr     The matrix containing the base pair probabilities
+ *  \return       The mean pair distance of the structure ensemble
+ */
+double  mean_bp_distance_pr(int length,
+                            FLT_OR_DBL *pr);
+
+/**
+ *  \brief Create a dot-bracket like structure string from base pair probability matrix
+ */
+void  bppm_to_structure(char *structure,
+                        FLT_OR_DBL *pr,
+                        unsigned int length);
+
+plist *stackProb(double cutoff);
+
+/**
+ *  \brief Get a pseudo dot bracket notation for a given probability information
+ */
+char    bppm_symbol(const float *x);
+
+
+/*
+#################################################
+# DEPRECATED FUNCTIONS                          #
+#################################################
+*/
+
+/**
+ *  \brief Allocate space for pf_fold()
+ * 
+ *  \deprecated This function is obsolete and will be removed soon!
+ */
+DEPRECATED(void init_pf_fold(int length));
+
+/**
+ *  \deprecated This function is deprecated and should not be used anymore as it is not threadsafe!
+ *  \see get_centroid_struct_pl(), get_centroid_struct_pr()
+ */
+DEPRECATED(char *centroid(int length,
+                          double *dist));     /* mean pair distance of ensemble */
+
+/**
+ *  get the mean pair distance of ensemble
+ * 
+ *  \deprecated This function is not threadsafe and should not be used anymore. Use \ref mean_bp_distance() instead!
+ */
+DEPRECATED(double mean_bp_dist(int length));
+
+/**
+ *  \deprecated Use \ref exp_E_IntLoop() from loop_energies.h instead
+ */
+DEPRECATED(double expLoopEnergy(int u1,
+                                int u2,
+                                int type,
+                                int type2,
+                                short si1,
+                                short sj1,
+                                short sp1,
+                                short sq1));
+
+/**
+ *  \deprecated Use exp_E_Hairpin() from loop_energies.h instead
+ */
+DEPRECATED(double expHairpinEnergy( int u,
+                                    int type,
+                                    short si1,
+                                    short sj1,
+                                    const char *string));
+
+#endif
diff --git a/include/part_func_co.h b/include/part_func_co.h
new file mode 100644
--- /dev/null
+++ b/include/part_func_co.h
@@ -0,0 +1,235 @@
+#ifndef __VIENNA_RNA_PACKAGE_PART_FUNC_CO_H__
+#define __VIENNA_RNA_PACKAGE_PART_FUNC_CO_H__
+
+#include "data_structures.h"
+
+#ifdef __GNUC__
+#define DEPRECATED(func) func __attribute__ ((deprecated))
+#else
+#define DEPRECATED(func) func
+#endif
+
+/**
+ *  \addtogroup pf_cofold
+ *  \brief Partition Function Cofolding
+ *
+ *  To simplify the implementation the partition function computation is done
+ *  internally in a null model that does not include the duplex initiation
+ *  energy, i.e. the entropic penalty for producing a dimer from two
+ *  monomers). The resulting free energies and pair probabilities are initially
+ *  relative to that null model. In a second step the free energies can be
+ *  corrected to include the dimerization penalty, and the pair probabilities
+ *  can be divided into the conditional pair probabilities given that a re
+ *  dimer is formed or not formed. See \cite bernhart:2006 for further details.
+ *  @{
+ *  \file part_func_co.h
+ * 
+ *  \brief Partition function for two RNA sequences
+ * 
+ *  As for folding one RNA molecule, this computes the partition function
+ *  of all possible structures and the base pair probabilities. Uses the
+ *  same global #pf_scale variable to avoid overflows.
+ * 
+ *  To simplify the implementation the partition function computation is done
+ *  internally in a null model that does not include the duplex initiation
+ *  energy, i.e. the entropic penalty for producing a dimer from two
+ *  monomers). The resulting free energies and pair probabilities are initially
+ *  relative to that null model. In a second step the free energies can be
+ *  corrected to include the dimerization penalty, and the pair probabilities
+ *  can be divided into the conditional pair probabilities given that a re
+ *  dimer is formed or not formed.
+ * 
+ *  After computing the partition functions of all possible dimeres one
+ *  can compute the probabilities of base pairs, the concentrations out of
+ *  start concentrations and sofar and soaway.
+ * 
+ *  Dimer formation is inherently concentration dependent. Given the free
+ *  energies of the monomers A and B and dimers AB, AA, and BB one can compute
+ *  the equilibrium concentrations, given input concentrations of A and B, see
+ *  e.g. Dimitrov & Zuker (2004)
+ */
+
+/**
+ *  \brief Toggles no intrabp in 2nd mol
+ */
+extern int    mirnatog;
+
+/**
+ *  \brief Free energies of the two monomers
+ */
+extern double F_monomer[2];
+
+/**
+ *  \brief Calculate partition function and base pair probabilities
+ *
+ *  This is the cofold partition function folding. The second molecule starts
+ *  at the #cut_point nucleotide.
+ *
+ *  \note OpenMP: Since this function relies on the global parameters
+ *        #do_backtrack, #dangles, #temperature and #pf_scale it is not
+ *        threadsafe according to concurrent changes in these variables!
+ *        Use co_pf_fold_par() instead to circumvent this issue.
+ *
+ *  \see co_pf_fold_par()
+ *
+ *  \param  sequence  Concatenated RNA sequences
+ *  \param  structure Will hold the structure or constraints
+ *  \return           cofoldF structure containing a set of energies needed for
+ *                    concentration computations.
+ */
+cofoldF co_pf_fold( char *sequence,
+                    char *structure);
+
+/**
+ *  \brief Calculate partition function and base pair probabilities
+ *
+ *  This is the cofold partition function folding. The second molecule starts
+ *  at the #cut_point nucleotide.
+ *
+ *  \see get_boltzmann_factors(), co_pf_fold()
+ *
+ *  \param sequence       Concatenated RNA sequences
+ *  \param structure      Pointer to the structure constraint
+ *  \param parameters     Data structure containing the precalculated Boltzmann factors
+ *  \param calculate_bppm Switch to turn Base pair probability calculations on/off (0==off)
+ *  \param is_constrained Switch to indicate that a structure contraint is passed via the
+ *                        structure argument (0==off)
+ *  \return               cofoldF structure containing a set of energies needed for
+ *                        concentration computations.
+ */
+cofoldF co_pf_fold_par( char *sequence,
+                        char *structure,
+                        pf_paramT *parameters,
+                        int calculate_bppm,
+                        int is_constrained);
+
+/**
+ *  \brief Get a pointer to the base pair probability array
+ * 
+ *  Accessing the base pair probabilities for a pair (i,j) is achieved by
+ *  \verbatim FLT_OR_DBL *pr = export_bppm(); pr_ij = pr[iindx[i]-j]; \endverbatim
+ * 
+ *  \see get_iindx()
+ *  \return A pointer to the base pair probability array
+ */
+FLT_OR_DBL *export_co_bppm(void);
+
+/**
+ *  \brief Free the memory occupied by co_pf_fold()
+ */
+void    free_co_pf_arrays(void);
+
+/**
+ *  \brief Recalculate energy parameters
+ *
+ *  This function recalculates all energy parameters given
+ *  the current model settings.
+ *
+ *  \note This function relies on the global variables #pf_scale, #dangles and
+ *        #temperature. Thus it might not be threadsafe in certain situations.
+ *        Use update_co_pf_params_par() instead.
+ *
+ *  \see get_boltzmann_factors(), update_co_pf_params_par()
+ *
+ *  \param    length      Length of the current RNA sequence
+ */
+void    update_co_pf_params(int length);
+
+/**
+ *  \brief Recalculate energy parameters
+ *
+ *  This function recalculates all energy parameters given
+ *  the current model settings.
+ *  It's second argument can either be NULL or a data structure
+ *  containing the precomputed Boltzmann factors. In the first
+ *  scenario, the necessary data structure will be created automatically
+ *  according to the current global model settings, i.e. this
+ *  mode might not be threadsafe.
+ *  However, if the provided data structure is not NULL, threadsafety
+ *  for the model parameters #dangles, #pf_scale and #temperature is regained, since their
+ *  values are taken from this data structure during subsequent calculations.
+ *
+ *  \see get_boltzmann_factors(), update_co_pf_params()
+ *
+ *  \param    length      Length of the current RNA sequence
+ *  \param    parameters  data structure containing the precomputed Boltzmann factors
+ */
+void    update_co_pf_params_par(int length,
+                                pf_paramT *parameters);
+
+/**
+ *  \brief Compute Boltzmann probabilities of dimerization without homodimers
+ * 
+ *  Given the pair probabilities and free energies (in the null model) for a
+ *  dimer AB and the two constituent monomers A and B, compute the conditional pair
+ *  probabilities given that a dimer AB actually forms.
+ *  Null model pair probabilities are given as a list as produced by
+ *  assign_plist_from_pr(), the dimer probabilities 'prAB' are modified in place.
+ * 
+ *  \param FAB      free energy of dimer AB
+ *  \param FEA      free energy of monomer A
+ *  \param FEB      free energy of monomer B
+ *  \param prAB     pair probabilities for dimer
+ *  \param prA      pair probabilities monomer
+ *  \param prB      pair probabilities monomer
+ *  \param Alength  Length of molecule A
+ */
+void    compute_probabilities(double FAB,
+                              double FEA,
+                              double FEB,
+                              struct plist  *prAB,
+                              struct plist  *prA,
+                              struct plist  *prB,
+                              int Alength);
+
+/**
+ *  \brief Given two start monomer concentrations a and b, compute the
+ *  concentrations in thermodynamic equilibrium of all dimers and the monomers.
+ * 
+ *  This function takes an array  'startconc' of input concentrations with alternating
+ *  entries for the initial concentrations of molecules A and B (terminated by
+ *  two zeroes), then computes the resulting equilibrium concentrations
+ *  from the free energies for the dimers. Dimer free energies should be the
+ *  dimer-only free energies, i.e. the FcAB entries from the #cofoldF struct.
+ * 
+ *  \param FEAB       Free energy of AB dimer (FcAB entry)
+ *  \param FEAA       Free energy of AA dimer (FcAB entry)
+ *  \param FEBB       Free energy of BB dimer (FcAB entry)
+ *  \param FEA        Free energy of monomer A
+ *  \param FEB        Free energy of monomer B
+ *  \param startconc  List of start concentrations [a0],[b0],[a1],[b1],...,[an][bn],[0],[0]
+ *  \return ConcEnt array containing the equilibrium energies and start concentrations
+ */
+ConcEnt *get_concentrations(double FEAB,
+                            double FEAA,
+                            double FEBB,
+                            double FEA,
+                            double FEB,
+                            double *startconc);
+
+
+/**
+ *  @}
+ */
+
+/*
+#################################################
+# DEPRECATED FUNCTIONS                          #
+#################################################
+*/
+
+/**
+ *  DO NOT USE THIS FUNCTION ANYMORE
+ *  \deprecated{ This function is deprecated and will be removed soon!}
+ *  use \ref assign_plist_from_pr() instead!
+ */
+DEPRECATED(plist  *get_plist( struct plist *pl,
+                              int length,
+                              double cut_off));
+/**
+ *  DO NOT USE THIS FUNCTION ANYMORE
+ *  \deprecated{ This function is deprecated and will be removed soon!}
+ */
+DEPRECATED(void   init_co_pf_fold(int length));
+
+#endif
diff --git a/include/plot_layouts.h b/include/plot_layouts.h
new file mode 100644
--- /dev/null
+++ b/include/plot_layouts.h
@@ -0,0 +1,106 @@
+/**
+ * \file plot_layouts.h
+ *
+ * \brief Secondary structure plot layout algorithms
+ *
+ *  c Ronny Lorenz
+ *    The ViennaRNA Package
+ */
+#ifndef __VIENNA_RNA_PACKAGE_PLOT_LAYOUTS_H__
+#define __VIENNA_RNA_PACKAGE_PLOT_LAYOUTS_H__
+
+#include "data_structures.h"
+#include "naview.h"
+
+#ifndef PI
+#define  PI       3.141592654
+#endif
+#define  PIHALF       PI/2.
+
+
+/**
+ *  \brief Definition of Plot type <i>simple</i>
+ *
+ *  This is the plot type definition for several RNA structure plotting functions telling
+ *  them to use <b>Simple</b> plotting algorithm
+ *
+ *  \see rna_plot_type, PS_rna_plot_a(), PS_rna_plot(), svg_rna_plot(), gmlRNA(), ssv_rna_plot(), xrna_plot()
+ */
+#define VRNA_PLOT_TYPE_SIMPLE     0
+
+/**
+ *  \brief Definition of Plot type <i>Naview</i>
+ *
+ *  This is the plot type definition for several RNA structure plotting functions telling
+ *  them to use <b>Naview</b> plotting algorithm
+ *
+ *  \see rna_plot_type, PS_rna_plot_a(), PS_rna_plot(), svg_rna_plot(), gmlRNA(), ssv_rna_plot(), xrna_plot()
+ */
+#define VRNA_PLOT_TYPE_NAVIEW     1
+
+/**
+ *  \brief Definition of Plot type <i>Circular</i>
+ *
+ *  This is the plot type definition for several RNA structure plotting functions telling
+ *  them to produce a <b>Circular plot</b>
+ *
+ *  \see rna_plot_type, PS_rna_plot_a(), PS_rna_plot(), svg_rna_plot(), gmlRNA(), ssv_rna_plot(), xrna_plot()
+ */
+#define VRNA_PLOT_TYPE_CIRCULAR   2
+
+
+/**
+ *  \brief Switch for changing the secondary structure layout algorithm
+ *
+ *  Current possibility are 0 for a simple radial drawing or 1 for the modified
+ *  radial drawing taken from the \e naview program of \ref bruccoleri_88 "Bruccoleri & Heinrich (1988)".
+ *
+ *  \note To provide thread safety please do not rely on this global variable in future implementations
+ *  but pass a plot type flag directly to the function that decides which layout algorithm it may use!
+ *
+ *  \see #VRNA_PLOT_TYPE_SIMPLE, #VRNA_PLOT_TYPE_NAVIEW, #VRNA_PLOT_TYPE_CIRCULAR
+ *
+ */
+extern int rna_plot_type;
+
+/**
+ *  \brief Calculate nucleotide coordinates for secondary structure plot the <i>Simple way</i>
+ *
+ *  \see make_pair_table(), rna_plot_type, simple_circplot_coordinates(), naview_xy_coordinates(), PS_rna_plot_a(),
+ *  PS_rna_plot, svg_rna_plot()
+ *
+ *  \param  pair_table  The pair table of the secondary structure
+ *  \param  X           a pointer to an array with enough allocated space to hold the x coordinates
+ *  \param  Y           a pointer to an array with enough allocated space to hold the y coordinates
+ *  \return             length of sequence on success, 0 otherwise
+ */
+int simple_xy_coordinates(short *pair_table,
+                          float *X,
+                          float *Y);
+
+/**
+ *  \brief Calculate nucleotide coordinates for <i>Circular Plot</i>
+ *
+ *  This function calculates the coordinates of nucleotides mapped in equal distancies onto a unit circle.
+ *
+ *  \note In order to draw nice arcs using quadratic bezier curves that connect base pairs one may calculate
+ *  a second tangential point \f$P^t\f$ in addition to the actual R<sup>2</sup> coordinates.
+ *  the simplest way to do so may be to compute a radius scaling factor \f$rs\f$ in the interval \f$[0,1]\f$ that
+ *  weights the proportion of base pair span to the actual length of the sequence. This scaling factor
+ *  can then be used to calculate the coordinates for \f$P^t\f$, i.e. \f$ P^{t}_x[i] = X[i] * rs\f$
+ *  and \f$P^{t}_y[i] = Y[i] * rs\f$.
+ *
+ *  \see make_pair_table(), rna_plot_type, simple_xy_coordinates(), naview_xy_coordinates(), PS_rna_plot_a(),
+ *  PS_rna_plot, svg_rna_plot()
+ *
+ *  \param  pair_table  The pair table of the secondary structure
+ *  \param  x           a pointer to an array with enough allocated space to hold the x coordinates
+ *  \param  y           a pointer to an array with enough allocated space to hold the y coordinates
+ *  \return             length of sequence on success, 0 otherwise
+ */
+int simple_circplot_coordinates(short *pair_table,
+                                float *x,
+                                float *y);
+
+
+#endif
diff --git a/include/subopt.h b/include/subopt.h
new file mode 100644
--- /dev/null
+++ b/include/subopt.h
@@ -0,0 +1,117 @@
+/* subopt.h */
+#ifndef __VIENNA_RNA_PACKAGE_SUBOPT_H__
+#define __VIENNA_RNA_PACKAGE_SUBOPT_H__
+
+#include "data_structures.h"
+
+#define MAXDOS 1000
+
+/**
+ *  \addtogroup subopt_fold Enumerating Suboptimal Structures
+ *  \ingroup folding_routines
+ *  @{
+ *    \file subopt.h
+ *    \brief RNAsubopt and density of states declarations
+ *
+ *  @}
+ */
+
+/**
+ *  \addtogroup subopt_wuchty
+ *  @{
+ *
+ *  @}
+ */
+
+/**
+ *  \brief Returns list of subopt structures or writes to fp
+ * 
+ *  This function produces <b>all</b> suboptimal secondary structures within
+ *  'delta' * 0.01 kcal/mol of the optimum. The results are either
+ *  directly written to a 'fp' (if 'fp' is not NULL), or
+ *  (fp==NULL) returned in a #SOLUTION * list terminated
+ *  by an entry were the 'structure' pointer is NULL.
+ *
+ *  \ingroup subopt_wuchty
+ *
+ *  \param  seq
+ *  \param  structure
+ *  \param  delta
+ *  \param  fp
+ *  \return
+ */
+SOLUTION *subopt (char *seq,
+                  char *structure,
+                  int delta,
+                  FILE *fp);
+
+/**
+ *  \brief Returns list of subopt structures or writes to fp
+ * 
+ *  \ingroup subopt_wuchty
+ */
+SOLUTION *subopt_par( char *seq,
+                      char *structure,
+                      paramT *parameters,
+                      int delta,
+                      int is_constrained,
+                      int is_circular,
+                      FILE *fp);
+
+/**
+ *  \brief Returns list of circular subopt structures or writes to fp
+ * 
+ *  This function is similar to subopt() but calculates secondary structures
+ *  assuming the RNA sequence to be circular instead of linear
+ * 
+ *  \ingroup subopt_wuchty
+ *
+ *  \param  seq
+ *  \param  sequence
+ *  \param  delta
+ *  \param  fp
+ *  \return
+ */
+SOLUTION *subopt_circ ( char *seq,
+                        char *sequence,
+                        int delta,
+                        FILE *fp);
+
+/**
+ *  \brief Sort output by energy
+ * 
+ *  \ingroup subopt_wuchty
+ *
+ */
+extern  int     subopt_sorted;
+
+
+/**
+ *  \brief printing threshold for use with logML
+ * 
+ *  \ingroup subopt_wuchty
+ *
+ */
+extern  double  print_energy;
+
+/**
+ *  \addtogroup dos
+ *  @{
+ */
+
+/**
+ *  \brief The Density of States
+ *
+ *  This array contains the density of states for an RNA sequences after a call to subopt_par(),
+ *  subopt() or subopt_circ().
+ *
+ *  \pre  Call one of the functions subopt_par(), subopt() or subopt_circ() prior accessing the contents
+ *        of this array
+ *  \see  subopt_par(), subopt(), subopt_circ()
+ *
+ */
+extern  int     density_of_states[MAXDOS+1];
+
+/** @} */ /* End of group dos */
+
+#endif
diff --git a/include/utils.h b/include/utils.h
new file mode 100644
--- /dev/null
+++ b/include/utils.h
@@ -0,0 +1,615 @@
+#ifndef __VIENNA_RNA_PACKAGE_UTILS_H__
+#define __VIENNA_RNA_PACKAGE_UTILS_H__
+
+/**
+ *  \file utils.h
+ *  \brief Various utility- and helper-functions used throughout the Vienna RNA package
+ */
+
+/**
+ *  Output flag of \ref get_input_line():  "An ERROR has occured, maybe EOF"
+ */
+#define VRNA_INPUT_ERROR                  1U
+/**
+ *  Output flag of \ref get_input_line():  "the user requested quitting the program"
+ */
+#define VRNA_INPUT_QUIT                   2U
+/**
+ *  Output flag of \ref get_input_line():  "something was read"
+ */
+#define VRNA_INPUT_MISC                   4U
+
+/** Input/Output flag of \ref get_input_line():\n
+ *  if used as input option this tells get_input_line() that the data to be read should comply
+ *  with the FASTA format
+ * 
+ *  the function will return this flag if a fasta header was read
+ */
+#define VRNA_INPUT_FASTA_HEADER           8U
+
+/** Input flag for get_input_line():\n
+ *  Tell get_input_line() that we assume to read a nucleotide sequence
+ * 
+ */
+#define VRNA_INPUT_SEQUENCE               16U
+
+/** Input flag for get_input_line():\n
+ *  Tell get_input_line() that we assume to read a structure constraint
+ * 
+ */
+#define VRNA_INPUT_CONSTRAINT             32U
+
+/**
+ *  Input switch for \ref get_input_line():
+ *  "do not trunkate the line by eliminating white spaces at end of line"
+ */
+#define VRNA_INPUT_NO_TRUNCATION          256U
+
+/**
+ *  Input switch for read_record():  "do fill rest array"
+ */
+#define VRNA_INPUT_NO_REST                512U
+
+/**
+ *  Input switch for read_record():  "never allow data to span more than one line"
+ */
+#define VRNA_INPUT_NO_SPAN                1024U
+
+/**
+ *  Input switch for read_record():  "do not skip empty lines"
+ */
+#define VRNA_INPUT_NOSKIP_BLANK_LINES     2048U
+
+/**
+ *  Output flag for read_record():  "read an empty line"
+ */
+#define VRNA_INPUT_BLANK_LINE             4096U
+
+/**
+ *  Input switch for \ref get_input_line():  "do not skip comment lines"
+ */
+#define VRNA_INPUT_NOSKIP_COMMENTS        128U
+
+/**
+ *  Output flag for read_record():  "read a comment"
+ */
+#define VRNA_INPUT_COMMENT                8192U
+
+
+
+
+/**
+ *  pipe sign '|' switch for structure constraints (paired with another base)
+ */
+#define VRNA_CONSTRAINT_PIPE              1U
+/**
+ *  dot '.' switch for structure constraints (no constraint at all)
+ */
+#define VRNA_CONSTRAINT_DOT               2U
+/**
+ *  'x' switch for structure constraint (base must not pair)
+ */
+#define VRNA_CONSTRAINT_X                 4U
+/**
+ *  angle brackets '<', '>' switch for structure constraint (paired downstream/upstream)
+ */
+#define VRNA_CONSTRAINT_ANG_BRACK         8U
+/**
+ *  round brackets '(',')' switch for structure constraint (base i pairs base j)
+ */
+#define VRNA_CONSTRAINT_RND_BRACK         16U
+/**
+ *  constraint may span over several lines
+ */
+#define VRNA_CONSTRAINT_MULTILINE         32U
+/**
+ *  do not print the header information line
+ */
+#define VRNA_CONSTRAINT_NO_HEADER         64U
+/**
+ *  placeholder for all constraining characters
+ */
+#define VRNA_CONSTRAINT_ALL              128U
+/**
+ *  '+' switch for structure constraint (base is involved in a gquad)
+ */
+#define VRNA_CONSTRAINT_G                256U
+
+
+
+/**
+ * Tell a function that an input is assumed to span several lines if used as input-option
+ * A function might also be returning this state telling that it has read data from
+ * multiple lines.
+ *
+ * \see extract_record_rest_structure(), read_record(), getConstraint()
+ *
+ */
+#define VRNA_OPTION_MULTILINE             32U
+
+
+/**
+ *  Get the minimum of two comparable values
+ */
+#define MIN2(A, B)      ((A) < (B) ? (A) : (B))
+/**
+ *  Get the maximum of two comparable values
+ */
+#define MAX2(A, B)      ((A) > (B) ? (A) : (B))
+/**
+ *  Get the minimum of three comparable values
+ */
+#define MIN3(A, B, C)   (MIN2(  (MIN2((A),(B))) ,(C)))
+/**
+ *  Get the maximum of three comparable values
+ */
+#define MAX3(A, B, C)   (MAX2(  (MAX2((A),(B))) ,(C)))
+
+
+/**
+ * Stringify a macro after expansion
+ */
+#define XSTR(s) STR(s)
+/**
+ * Stringify a macro argument
+ */
+#define STR(s) #s
+
+#ifndef FILENAME_MAX_LENGTH
+/**
+ *  \brief Maximum length of filenames that are generated by our programs
+ *
+ *  This definition should be used throughout the complete ViennaRNA package
+ *  wherever a static array holding filenames of output files is declared.
+ */
+#define FILENAME_MAX_LENGTH   80
+/**
+ *  \brief Maximum length of id taken from fasta header for filename generation
+ *
+ *  this has to be smaller than FILENAME_MAX_LENGTH since in most cases,
+ *  some suffix will be appended to the ID
+ */
+#define FILENAME_ID_LENGTH    42
+#endif
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#ifndef HAVE_STRDUP
+char *strdup(const char *s);
+#endif
+#endif
+#ifdef WITH_DMALLOC
+/* use dmalloc library to check for memory management bugs */
+#include "dmalloc.h"
+#define space(S) calloc(1,(S))
+#else
+
+/**
+ *  \brief Allocate space safely
+ *
+ *  \param size The size of the memory to be allocated in bytes
+ *  \return     A pointer to the allocated memory
+ */
+/*@only@*/ /*@notnull@*/
+void  *space(unsigned size) /*@ensures MaxSet(result) == (size-1);@*/;
+
+/**
+ *  \brief Reallocate space safely
+ *
+ *  \param p    A pointer to the memory region to be reallocated
+ *  \param size The size of the memory to be allocated in bytes
+ *  \return     A pointer to the newly allocated memory
+ */
+/*@only@*/ /*@notnull@*/
+void  *xrealloc(/*@null@*/ /*@only@*/ /*@out@*/ /*@returned@*/ void *p,
+                unsigned size) /*@modifies *p @*/ /*@ensures MaxSet(result) == (size-1) @*/;
+#endif
+
+/**
+ *  \brief Die with an error message
+ *
+ *  \see warn_user()
+ *  \param message The error message to be printed before exiting with 'FAILURE'
+ */
+/*@exits@*/
+void nrerror(const char message[]);
+
+/**
+ *  \brief Print a warning message
+ *
+ *  Print a warning message to \e stderr
+ *
+ *  \param  message   The warning message
+ */
+void warn_user(const char message[]);
+
+/**
+ *  \brief  Make random number seeds
+ */
+void   init_rand(void);
+
+/**
+ * \brief Current 48 bit random number
+ *
+ *  This variable is used by urn(). These should be set to some
+ *  random number seeds before the first call to urn().
+ *
+ *  \see urn()
+ */
+extern unsigned short xsubi[3];
+
+/**
+ *  \brief get a random number from [0..1]
+ *
+ *  \note Usually implemented by calling \e erand48().
+ *  \return   A random number in range [0..1]
+ */
+double urn(void);
+
+/**
+ *  \brief Generates a pseudo random integer in a specified range
+ *
+ *  \param from   The first number in range
+ *  \param to     The last number in range
+ *  \return       A pseudo random number in range [from, to]
+ */
+int    int_urn(int from, int to);
+
+void   filecopy(FILE *from, FILE *to); /* inefficient `cp' */
+
+/**
+ *  \brief Get a timestamp
+ *
+ *  Returns a string containing the current date in the format
+ *  \verbatim Fri Mar 19 21:10:57 1993\endverbatim
+ *
+ *  \return A string containing the timestamp
+ */
+/*@observer@*/
+char  *time_stamp(void);
+
+/**
+ *  \brief Create a random string using characters from a specified symbol set
+ *
+ *  \param l        The length of the sequence
+ *  \param symbols  The symbol set
+ *  \return         A random string of length 'l' containing characters from the symbolset
+ */
+/*@only@*/ /*@notnull@*/
+char  *random_string(int l, const char symbols[]);
+
+/**
+ *  \brief Calculate hamming distance between two sequences
+ *
+ *  Calculate the number of positions in which 
+ *  \param s1   The first sequence
+ *  \param s2   The second sequence
+ *  \return     The hamming distance between s1 and s2
+ */
+int   hamming(const char *s1, const char *s2);
+
+/**
+ *  \brief Calculate hamming distance between two sequences up to a specified length
+ *
+ *  This function is similar to hamming() but instead of comparing both sequences
+ *  up to their actual length only the first 'n' characters are taken into account
+ *  \param s1   The first sequence
+ *  \param s2   The second sequence
+ *  \return     The hamming distance between s1 and s2
+ */
+int   hamming_bound(const char *s1, const char *s2, int n);
+
+/**
+ *  \brief Read a line of arbitrary length from a stream
+ *
+ *  Returns a pointer to the resulting string. The necessary memory is
+ *  allocated and should be released using \e free() when the string is
+ *  no longer needed.
+ *
+ *  \param  fp  A file pointer to the stream where the function should read from
+ *  \return     A pointer to the resulting string
+ */
+/*@only@*/ /*@null@*/
+char  *get_line(FILE *fp);
+
+int skip_comment_lines(char **line);
+
+/**
+ *  Retrieve a line from 'stdin' savely while skipping comment characters and
+ *  other features
+ *  This function returns the type of input it has read if recognized.
+ *  An option argument allows to switch between different reading modes.\n
+ *  Currently available options are:\n
+ *  #VRNA_INPUT_NOPRINT_COMMENTS, #VRNA_INPUT_NOSKIP_COMMENTS, #VRNA_INPUT_NOELIM_WS_SUFFIX
+ * 
+ *  pass a collection of options as one value like this:
+ *  \verbatim get_input_line(string, option_1 | option_2 | option_n) \endverbatim
+ * 
+ *  If the function recognizes the type of input, it will report it in the return
+ *  value. It also reports if a user defined 'quit' command (@-sign on 'stdin')
+ *  was given. Possible return values are:\n
+ *  #VRNA_INPUT_FASTA_HEADER, #VRNA_INPUT_ERROR, #VRNA_INPUT_MISC, #VRNA_INPUT_QUIT
+ * 
+ *  \param string   A pointer to the character array that contains the line read
+ *  \param options  A collection of options for switching the functions behavior
+ *  \return         A flag with information about what has been read
+ */
+unsigned int get_input_line(char **string,
+                            unsigned int options);
+
+unsigned int get_multi_input_line(char **string,
+                                  unsigned int options);
+
+/**
+ *  \brief  Get a data record from stdin
+ * 
+ *  This function may be used to obtain complete datasets from stdin. A dataset is always
+ *  defined to contain at least a sequence. If data on stdin starts with a fasta header,
+ *  i.e. a line like
+ *  \verbatim >some header info \endverbatim
+ *  then read_record() will assume that the sequence that follows the header may span
+ *  over several lines. To disable this behavior and to assign a single line to the argument
+ *  'sequence' one can pass VRNA_INPUT_NO_SPAN in the 'options' argument.
+ *  If no fasta header is read in the beginning of a data block, a sequence must not span over
+ *  multiple lines!\n
+ *  Unless the options #VRNA_INPUT_NOSKIP_COMMENTS or #VRNA_INPUT_NOSKIP_BLANK_LINES are passed,
+ *  a sequence may be interrupted by lines starting with a comment character or empty lines.\n
+ *  A sequence is regarded as completely read if it was either assumed to not span over multiple
+ *  lines, a secondary structure or structure constraint follows the sequence on the next line
+ *  or a new header marks the beginning of a new sequence...\n
+ *  All lines following the sequence (this includes comments) and not initiating a new dataset are
+ *  available through the line-array 'rest'. Here one can usually find the structure constraint or
+ *  other information belonging to the current dataset. Filling of 'rest' may be prevented by
+ *  passing #VRNA_INPUT_NO_REST to the options argument.\n
+ * 
+ *  \note This function will exit any program with an error message if no sequence could be read!
+ * 
+ *  The main purpose of this function is to be able to easily parse blocks of data from stdin
+ *  in the header of a loop where all calculations for the appropriate data is done inside the
+ *  loop. The loop may be then left on certain return values, e.g.:
+ *  \verbatim
+char *id, *seq, **rest;
+int  i;
+while(!(read_record(&id, &seq, &rest, 0) & (VRNA_INPUT_ERROR | VRNA_INPUT_QUIT))){
+  if(id) printf("%s\n", id);
+  printf("%s\n", seq);
+  if(rest)
+    for(i=0;rest[i];i++)
+      printf("%s\n", rest[i]);
+} \endverbatim
+ * 
+ *  In the example above, the while loop will be terminated when read_record() returns either an
+ *  error or a user initiated quit request.\n
+ *  As long as data is read from stdin, the id is printed if it is available for the current block
+ *  of data. The sequence will be printed in any case and if some more lines belong to the current
+ *  block of data each line will be printed as well.
+ * 
+ *  \note Do not forget to free the memory occupied by header, sequence and rest!
+ * 
+ *  \param  header    A pointer which will be set such that it points to the header of the record
+ *  \param  sequence  A pointer which will be set such that it points to the sequence of the record
+ *  \param  rest      A pointer which will be set such that it points to an array of lines which also belong to the record
+ *  \param  options   Some options which may be passed to alter the behavior of the function, use 0 for no options
+ *  \return           A flag with information about what the function actually did read
+ */
+unsigned int read_record( char **header,
+                          char **sequence,
+                          char  ***rest,
+                          unsigned int options);
+
+
+/* \brief Extract a dot-bracket structure string from (multiline)character array
+ *
+ * This function extracts a dot-bracket structure string from the 'rest' array as
+ * returned by read_record() and returns it. All occurences of comments within the
+ * 'lines' array will be skipped as long as they do not break the structure string.
+ * If no structure could be read, this function returns NULL.
+ *
+ * \see read_record()
+ *
+ * \param lines   The (multiline) character array to be parsed
+ * \param length  The assumed length of the dot-bracket string (passing a value < 1 results in no length limit)
+ * \param option  Some options which may be passed to alter the behavior of the function, use 0 for no options
+ * \return        The dot-bracket string read from lines or NULL
+ */
+char *extract_record_rest_structure(const char **lines,
+                                    unsigned int length,
+                                    unsigned int option);
+
+/**
+ *  \brief Pack secondary secondary structure, 5:1 compression using base 3 encoding
+ *
+ *  Returns a binary string encoding of the secondary structure using
+ *  a 5:1 compression scheme. The string is NULL terminated and can
+ *  therefore be used with standard string functions such as strcmp().
+ *  Useful for programs that need to keep many structures in memory.
+ *
+ *  \param struc    The secondary structure in dot-bracket notation
+ *  \return         The binary encoded structure
+ */
+char *pack_structure(const char *struc);
+
+/**
+ *  \brief Unpack secondary structure previously packed with pack_structure()
+ *
+ *  Translate a compressed binary string produced by pack_structure() back into
+ *  the familiar dot-bracket notation.
+ *
+ *  \param packed   The binary encoded packed secondary structure
+ *  \return         The unpacked secondary structure in dot-bracket notation
+ */
+char *unpack_structure(const char *packed);
+
+/**
+ *  \brief Create a pair table of a secondary structure
+ *
+ *  Returns a newly allocated table, such that table[i]=j if (i.j) pair
+ *  or 0 if i is unpaired, table[0] contains the length of the structure.
+ *
+ *  \param  structure The secondary structure in dot-bracket notation
+ *  \return           A pointer to the created pair_table
+ */
+short *make_pair_table(const char *structure);
+
+short *make_pair_table_pk(const char *structure);
+
+/**
+ *  \brief Get an exact copy of a pair table
+ *
+ *  \param pt The pair table to be copied
+ *  \return   A pointer to the copy of 'pt' 
+ */
+short *copy_pair_table(const short *pt);
+
+/**
+***Pair table for snoop align
+***
+***
+**/
+short *alimake_pair_table(const char *structure);
+
+/**
+*** returns a newly allocated table, such that:  table[i]=j if (i.j) pair or
+*** 0 if i is unpaired, table[0] contains the length of the structure.
+*** The special pseudoknotted H/ACA-mRNA structure is taken into account.
+**/
+short *make_pair_table_snoop(const char *structure);
+
+/**
+ *  \brief Compute the "base pair" distance between two secondary structures s1 and s2.
+ * 
+ *  The sequences should have the same length.
+ *  dist = number of base pairs in one structure but not in the other
+ *  same as edit distance with open-pair close-pair as move-set
+ * 
+ *  \param str1   First structure in dot-bracket notation
+ *  \param str2   Second structure in dot-bracket notation
+ *  \return       The base pair distance between str1 and str2
+ */
+
+int *make_loop_index_pt(short *pt);
+
+
+int bp_distance(const char *str1,
+                const char *str2);
+
+/**
+ *  \brief Print a line to \e stdout that asks for an input sequence
+ *
+ *  There will also be a ruler (scale line) printed that helps orientation of the sequence positions
+ */
+void print_tty_input_seq(void);
+
+/**
+ *  \brief Print a line with a user defined string and a ruler to stdout.
+ *
+ *  (usually this is used to ask for user input)
+ *  There will also be a ruler (scale line) printed that helps orientation of the sequence positions
+ * 
+ *  \param s A user defined string that will be printed to stdout
+ */
+void print_tty_input_seq_str(const char *s);
+
+/**
+ *  \brief Print structure constraint characters to stdout
+ *  (full constraint support)
+ *
+ */
+void print_tty_constraint_full(void);
+
+/**
+ *  \brief Print structure constraint characters to stdout.
+ *  (constraint support is specified by option parameter)
+ *
+ *  Currently available options are:\n
+ *  #VRNA_CONSTRAINT_PIPE (paired with another base)\n
+ *  #VRNA_CONSTRAINT_DOT (no constraint at all)\n
+ *  #VRNA_CONSTRAINT_X (base must not pair)\n
+ *  #VRNA_CONSTRAINT_ANG_BRACK (paired downstream/upstream)\n
+ *  #VRNA_CONSTRAINT_RND_BRACK (base i pairs base j)\n
+ * 
+ *  pass a collection of options as one value like this:
+ *  \verbatim print_tty_constraint(option_1 | option_2 | option_n) \endverbatim
+ * 
+ *  \param option Option switch that tells which constraint help will be printed
+ */
+void print_tty_constraint(unsigned int option);
+
+/**
+ *  \brief Convert a DNA input sequence to RNA alphabet
+ *
+ *  This function substitudes <i>T</i> and <i>t</i> with <i>U</i> and <i>u</i>, respectively
+ * 
+ *  \param sequence The sequence to be converted
+ */
+void str_DNA2RNA(char *sequence);
+
+/**
+ *  \brief Convert an input sequence to uppercase
+ * 
+ *  \param sequence The sequence to be converted
+ */
+void  str_uppercase(char *sequence);
+
+/**
+ *  \brief Get an index mapper array (iindx) for accessing the energy matrices, e.g. in partition function related functions.
+ *
+ *  Access of a position "(i,j)" is then accomplished by using \verbatim (i,j) ~ iindx[i]-j \endverbatim
+ *  This function is necessary as most of the two-dimensional energy matrices are actually one-dimensional arrays throughout
+ *  the ViennaRNAPackage
+ * 
+ *  Consult the implemented code to find out about the mapping formula ;)
+ * 
+ *  \see get_indx()
+ *  \param length The length of the RNA sequence
+ *  \return       The mapper array
+ */
+int   *get_iindx(unsigned int length);
+
+/**
+ *  \brief Get an index mapper array (indx) for accessing the energy matrices, e.g. in MFE related functions.
+ *
+ *  Access of a position "(i,j)" is then accomplished by using \verbatim (i,j) ~ indx[j]+i \endverbatim
+ *  This function is necessary as most of the two-dimensional energy matrices are actually one-dimensional arrays throughout
+ *  the ViennaRNAPackage
+ * 
+ *  Consult the implemented code to find out about the mapping formula ;)
+ * 
+ *  \see get_iindx()
+ *  \param length The length of the RNA sequence
+ *  \return       The mapper array
+ * 
+ */
+int   *get_indx(unsigned int length);
+
+void getConstraint( char **cstruc,
+                    const char **lines,
+                    unsigned int option);
+
+/**
+ *  \brief Insert constraining pair types according to constraint structure string
+ *
+ *  \see get_indx(), get_iindx()
+ *
+ *  \param constraint     The structure constraint string
+ *  \param length         The actual length of the sequence (constraint may be shorter)
+ *  \param ptype          A pointer to the basepair type array
+ *  \param min_loop_size  The minimal loop size (usually \ref TURN )
+ *  \param idx_type       Define the access type for base pair type array (0 = indx, 1 = iindx)
+ */
+void constrain_ptypes(const char *constraint,
+                      unsigned int length,
+                      char *ptype,
+                      int *BP,
+                      int min_loop_size,
+                      unsigned int idx_type);
+
+unsigned int  *make_referenceBP_array(short *reference_pt,
+                                      unsigned int turn);
+
+unsigned int  *compute_BPdifferences( short *pt1,
+                                      short *pt2,
+                                      unsigned int turn);
+
+#endif
