packages feed

ViennaRNA-bindings 0.0.3.0 → 0.1.0.0

raw patch · 40 files changed

+52858/−12 lines, 40 files

Files

BioInf/ViennaRNA/Bindings/FFI/CoFold.chs view
@@ -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)
ViennaRNA-bindings.cabal view
@@ -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 
+ cbits/circfold.inc view
@@ -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;+    }+  }+}+
+ cbits/cofold.c view
@@ -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 */ }
+ cbits/energy_par.c view
@@ -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"+
+ cbits/fold.c view
@@ -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);+}+
+ cbits/fold_vars.c view
@@ -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;+  }+}
+ cbits/gquad.c view
@@ -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);+                }+            }+        }+      }+}+
+ cbits/params.c view
@@ -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+}
+ cbits/part_func.c view
@@ -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 */+}++
+ cbits/part_func_co.c view
@@ -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 */ }
+ cbits/utils.c view
@@ -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;+}
+ include/1.8.4_epars.h view
@@ -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
+ include/1.8.4_intloops.h view
@@ -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}}}}}};++
+ include/PS_dot.h view
@@ -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
+ include/aln_util.h view
@@ -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
+ include/cofold.h view
@@ -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
+ include/config.h view
@@ -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 */
+ include/data_structures.h view
@@ -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
+ include/energy_const.h view
@@ -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
+ include/energy_par.h view
@@ -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
+ include/fold.h view
@@ -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
+ include/fold_vars.h view
@@ -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
+ include/gquad.h view
@@ -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
+ include/intl11.h view
@@ -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}+  }+ }};
+ include/intl11dH.h view
@@ -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}+  }+ }};
+ include/intl21.h view
@@ -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}+   }+  }+ }};
+ include/intl21dH.h view
@@ -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}+   }+  }+ }};
+ include/intl22.h view
@@ -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}+    }+   }+  }+ }};
+ include/intl22dH.h view
@@ -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}+    }+   }+  }+ }};
+ include/list.h view
@@ -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
+ include/loop_energies.h view
@@ -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
+ include/naview.h view
@@ -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
+ include/pair_mat.h view
@@ -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;+}
+ include/params.h view
@@ -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
+ include/part_func.h view
@@ -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
+ include/part_func_co.h view
@@ -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
+ include/plot_layouts.h view
@@ -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
+ include/subopt.h view
@@ -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
+ include/utils.h view
@@ -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