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 +1/−1
- ViennaRNA-bindings.cabal +51/−11
- cbits/circfold.inc +211/−0
- cbits/cofold.c +1502/−0
- cbits/energy_par.c +791/−0
- cbits/fold.c +2765/−0
- cbits/fold_vars.c +88/−0
- cbits/gquad.c +1043/−0
- cbits/params.c +751/−0
- cbits/part_func.c +1714/−0
- cbits/part_func_co.c +1046/−0
- cbits/utils.c +1154/−0
- include/1.8.4_epars.h +366/−0
- include/1.8.4_intloops.h +11073/−0
- include/PS_dot.h +197/−0
- include/aln_util.h +10/−0
- include/cofold.h +182/−0
- include/config.h +163/−0
- include/data_structures.h +774/−0
- include/energy_const.h +33/−0
- include/energy_par.h +100/−0
- include/fold.h +604/−0
- include/fold_vars.h +217/−0
- include/gquad.h +725/−0
- include/intl11.h +393/−0
- include/intl11dH.h +393/−0
- include/intl21.h +1993/−0
- include/intl21dH.h +1993/−0
- include/intl22.h +9993/−0
- include/intl22dH.h +9993/−0
- include/list.h +65/−0
- include/loop_energies.h +660/−0
- include/naview.h +16/−0
- include/pair_mat.h +148/−0
- include/params.h +134/−0
- include/part_func.h +443/−0
- include/part_func_co.h +235/−0
- include/plot_layouts.h +106/−0
- include/subopt.h +117/−0
- include/utils.h +615/−0
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 "a1.a2.a3.a4.a5.a6" <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
@@ -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