lrslib-062/0000700001553200155320000000000012722006617010454 5ustar avislrslib-062/lrslib.c0000600001553200155320000044116612722006615012123 0ustar avis/* lrslib.c library code for lrs */ /* modified by Gary Roumanis for multithread plrs compatability */ /* truncate needs mod to supress last pivot */ /* need to add a test for non-degenerate pivot step in reverse I guess */ /* Copyright: David Avis 2005,2011 avis@cs.mcgill.ca */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. */ #include #include #include "lrslib.h" /* Globals; these need to be here, rather than lrslib.h, so they are not multiply defined. */ FILE *lrs_cfp; /* output file for checkpoint information */ FILE *lrs_ifp; /* input file pointer */ FILE *lrs_ofp; /* output file pointer */ static unsigned long dict_count, dict_limit, cache_tries, cache_misses; /* Variables and functions global to this file only */ static long lrs_checkpoint_seconds = 0; static long lrs_global_count = 0; /* Track how many lrs_dat records are allocated */ static lrs_dat_p *lrs_global_list[MAX_LRS_GLOBALS + 1]; static lrs_dic *new_lrs_dic (long m, long d, long m_A); static void cache_dict (lrs_dic ** D_p, lrs_dat * global, long i, long j); static long check_cache (lrs_dic ** D_p, lrs_dat * global, long *i_p, long *j_p); static void save_basis (lrs_dic * D, lrs_dat * Q); static void lrs_dump_state (); static void pushQ (lrs_dat * global, long m, long d, long m_A); #ifdef TIMES static void ptimes (); static double get_time(); #endif /*******************************/ /* signals handling */ /*******************************/ #ifdef SIGNALS static void checkpoint (); static void die_gracefully (); static void setup_signals (); static void timecheck (); #endif /*******************************/ /* functions for external use */ /*******************************/ /*******************************************************/ /* lrs_main is driver for lrs.c does H/V enumeration */ /* showing function calls intended for public use */ /*******************************************************/ long lrs_main (int argc, char *argv[]) { lrs_dic *P; /* structure for holding current dictionary and indices */ lrs_dat *Q; /* structure for holding static problem data */ lrs_mp_vector output; /* holds one line of output; ray,vertex,facet,linearity */ lrs_mp_matrix Lin; /* holds input linearities if any are found */ long col; /* output column index for dictionary */ long startcol = 0; long prune = FALSE; /* if TRUE, getnextbasis will prune tree and backtrack */ /* global variables lrs_ifp and lrs_ofp are file pointers for input and output */ /* they default to stdin and stdout, but may be overidden by command line parms. */ /*************************************************** Step 0: Do some global initialization that should only be done once, no matter how many lrs_dat records are allocated. db ***************************************************/ #ifdef PLRS if (!lrs_mp_init (ZERO, stdin, stdout)) /* initialize arithmetic */ exit(1); #else if ( !lrs_init ("\n*lrs:")) return 1; printf("\n%s",AUTHOR); #endif /*********************************************************************************/ /* Step 1: Allocate lrs_dat, lrs_dic and set up the problem */ /*********************************************************************************/ #ifdef PLRS Q = lrs_alloc_dat (""); /* allocate and init structure for static problem data */ std::ifstream input_file; input_file.open(argv[0]); /* Open input file */ plrs_read_dat(Q, input_file); /* read first part of problem data to get dimensions and problem type: H- or V- input representation */ P = lrs_alloc_dic (Q); /* allocate and initialize lrs_dic */ if (P == NULL) return 1; plrs_read_dic (P, Q, input_file); /* read remainder of input to setup P and Q */ #else Q = lrs_alloc_dat ("LRS globals"); /* allocate and init structure for static problem data */ if (Q == NULL) return 1; if (!lrs_read_dat (Q, argc, argv)) /* read first part of problem data to get dimensions */ return 1; /* and problem type: H- or V- input representation */ P = lrs_alloc_dic (Q); /* allocate and initialize lrs_dic */ if (P == NULL) return 1; if (!lrs_read_dic (P, Q)) /* read remainder of input to setup P and Q */ return 1; #endif output = lrs_alloc_mp_vector (Q->n); /* output holds one line of output from dictionary */ /*********************************************************************************/ /* Step 2: Find a starting cobasis from default of specified order */ /* P is created to hold active dictionary data and may be cached */ /* Lin is created if necessary to hold linearity space */ /* Print linearity space if any, and retrieve output from first dict. */ /*********************************************************************************/ if (!lrs_getfirstbasis (&P, Q, &Lin, FALSE)) return 1; /* Pivot to a starting dictionary */ /* There may have been column redundancy */ /* If so the linearity space is obtained and redundant */ /* columns are removed. User can access linearity space */ /* from lrs_mp_matrix Lin dimensions nredundcol x d+1 */ if (Q->homogeneous && Q->hull) startcol++; /* col zero not treated as redundant */ if(!Q->restart) for (col = startcol; col < Q->nredundcol; col++) /* print linearity space */ lrs_printoutput (Q, Lin[col]); /* Array Lin[][] holds the coeffs. */ /*********************************************************************************/ /* Step 3: Terminate if lponly option set, otherwise initiate a reverse */ /* search from the starting dictionary. Get output for each new dict. */ /*********************************************************************************/ /* We initiate reverse search from this dictionary */ /* getting new dictionaries until the search is complete */ /* User can access each output line from output which is */ /* vertex/ray/facet from the lrs_mp_vector output */ /* prune is TRUE if tree should be pruned at current node */ prune=lrs_checkbound(P,Q); do { //2015.6.5 after maxcobases reached, generate subtrees that have not been enumerated if ((Q->maxcobases > 0) && (Q->count[2] >=Q->maxcobases)) { if(!lrs_leaf(P,Q)) /* do not return cobases of a leaf */ lrs_printcobasis(P,Q,ZERO); prune=TRUE; } // if Q-> maxcobases... for (col = 0; col <= P->d; col++) /* print output vertex/ray if any */ if (lrs_getsolution (P, Q, output, col)) lrs_printoutput (Q, output); }while (!Q->lponly && lrs_getnextbasis (&P, Q, prune)); // do ... if (Q->lponly) lrs_lpoutput(P,Q,output); else lrs_printtotals (P, Q); /* print final totals, including estimates */ lrs_clear_mp_vector(output, Q->n); /* 2015.9.16 fix memory leaks on Gcd Lcm Lin */ if(Q->nredundcol > 0) lrs_clear_mp_matrix(Lin,Q->nredundcol,Q->n); if(Q->runs > 0) { free(Q->isave); free(Q->jsave); } long savem=P->m; /* need this to clear Q*/ lrs_free_dic (P,Q); /* deallocate lrs_dic */ Q->m=savem; lrs_free_dat (Q); /* deallocate lrs_dat */ #ifndef PLRS lrs_close ("lrs:"); #endif return 0; } /*********************************************/ /* end of model test program for lrs library */ /*********************************************/ /***********************************/ /* PLRS */ /***********************************/ #ifdef PLRS void plrs_read_dat (lrs_dat * Q, std::ifstream &input_file) { string line; bool begin = false; if(input_file.is_open()){ while(input_file.good()){ getline(input_file, line); if(line.find("*") == 0){ //Ignore lines starting with * }else if (line.find("H-representation") != string::npos){ Q->hull = FALSE; }else if(line.find("hull")!= string::npos || line.find("V-representation")!= string::npos){ Q->hull = TRUE; Q->polytope = TRUE; }else if(line.find("digits")!= string::npos){ long dec_digits; istringstream ss(line); if(!(ss>>dec_digits) && !lrs_set_digits(dec_digits)){ printf("\nError reading digits data!\n"); exit(1); } }else if(line.find("nonnegative")!= string::npos){ Q->nonnegative = TRUE; }else if(line.find("linearity") != string::npos){ //Remove the following characters char chars[] = "linearity"; for(unsigned int i = 0; i < sizeof(chars); ++i){ line.erase(remove(line.begin(), line.end(), chars[i]), line.end()); } plrs_readlinearity (Q, line); }else if(line.find("begin")!= string::npos){ begin = true; break; }else{ //Q->name = line.c_str(); } } if(Q->hull) Q->getvolume=TRUE; if(!begin){ printf("\nNo begin line!\n"); fprintf(lrs_ofp,"\nNo begin line!\n"); exit(1); } getline(input_file, line); istringstream ss(line); string type; if(!(ss >> Q->m >> Q->n >> type)){ printf("\nNo data in file!\n"); exit(1); } if(!type.find("integer") && !type.find("rational")){ printf("\nData type must be integer or rational!\n"); exit(1); } }else{ printf("\nError reading input file!\n"); exit(1); } if (Q->m == 0) { printf("\nNo input given!\n"); exit(1); } /* inputd may be reduced in preprocessing of linearities and redund cols */ } /* read constraint matrix and set up problem and dictionary */ void plrs_read_dic (lrs_dic * P, lrs_dat * Q, std::ifstream &input_file) { lrs_mp Temp, mpone; lrs_mp_vector oD; /* Denom for objective function */ long i, j; string line; /* assign local variables to structures */ lrs_mp_matrix A; lrs_mp_vector Gcd, Lcm; long hull = Q->hull; long m, d; lrs_alloc_mp(Temp); lrs_alloc_mp(mpone); A = P->A; m = Q->m; d = Q->inputd; Gcd = Q->Gcd; Lcm = Q->Lcm; oD = lrs_alloc_mp_vector (d); itomp (ONE, mpone); itomp (ONE, A[0][0]); itomp (ONE, Lcm[0]); itomp (ONE, Gcd[0]); for (i = 1; i <= m; i++) /* read in input matrix row by row */ { itomp (ONE, Lcm[i]); /* Lcm of denominators */ itomp (ZERO, Gcd[i]); /* Gcd of numerators */ if(!input_file.good()){ printf("\nInput data incorrectly formatted\n"); exit(1); } /* allow embedded CRs in multiline input for matrix rows */ /* there must be an easier way .... but this seems to work */ j=hull; while (j <= d) /* hull data copied to cols 1..d */ { if(!input_file.good()){ printf("\nInput incorrectly formatted\n"); exit(1); } getline(input_file, line); istringstream ss(line); const char* ptr1; int string_length; string_length=1; while ((j<=d) && (string_length !=0)) { string rat; ss>>rat; ptr1=rat.c_str(); string_length=strlen(ptr1); if (string_length!=0) { if (plrs_readrat (A[i][j], A[0][j], ptr1)) lcm (Lcm[i], A[0][j]); /* update lcm of denominators */ copy (Temp, A[i][j]); gcd (Gcd[i], Temp); /* update gcd of numerators */ j++; } } ss.clear(); } if (hull) { itomp (ZERO, A[i][0]); /*for hull, we have to append an extra column of zeroes */ if (!one (A[i][1]) || !one (A[0][1])) /* all rows must have a one in column one */ Q->polytope = FALSE; } if (!zero (A[i][hull])) /* for H-rep, are zero in column 0 */ Q->homogeneous = FALSE; /* for V-rep, all zero in column 1 */ storesign (Gcd[i], POS); storesign (Lcm[i], POS); if (mp_greater (Gcd[i], mpone) || mp_greater (Lcm[i], mpone)) for (j = 0; j <= d; j++) { divint (A[i][j], Gcd[i], Temp); /*reduce numerators by Gcd */ mulint (Lcm[i], Temp, Temp); /*remove denominators */ divint (Temp, A[0][j], A[i][j]); /*reduce by former denominator */ } } /* 2010.4.26 patch */ if(Q->nonnegative) /* set up Gcd and Lcm for nonexistent nongative inequalities */ for (i=m+1;i<=m+d;i++) { itomp (ONE, Lcm[i]); itomp (ONE, Gcd[i]); } //Make new output node for nonfatal option errors //Make stream to collect prat / pmp data stringstream out_stream; if (Q->homogeneous && Q->verbose) { out_stream<<"*Input is homogeneous, column 1 not treated as redundant"<nonnegative){ out_stream<<"*Starting cobasis incompatible with nonegative option:skipped"<givenstart = TRUE; istringstream ss(line); //Trim first word string str; ss >>str; //make string out of facts stringstream facets; facets << ss.rdbuf(); //Readfacets plrs_readfacets(Q, Q->inequality,facets.str()); } }else if(line.find("restart") != string::npos){ Q->restart = TRUE; istringstream ss(line); //Trim first word string str; ss >>str; //Pipe restart data from string stream if(Q->voronoi){ if(!(ss>>Q->count[1]>>Q->count[0]>>Q->count[2]>>P->depth)){ printf("\nError reading restart data!\n"); exit(1); } }else if(hull){ if(!(ss>>Q->count[0]>>Q->count[2]>>P->depth)){ printf("\nError reading restart data!\n"); exit(1); } }else{ if(!(ss>>Q->count[1]>>Q->count[0]>>Q->count[2]>>P->depth)){ printf("\nError reading restart data!\n"); exit(1); } } //Store starting counts to calculate totals for (int i = 0; i<5; i++){ Q->startcount[i] = Q->count[i]; } //Make string out of facets stringstream facets; facets << ss.rdbuf(); plrs_readfacets(Q,Q->facet,facets.str()); }else if(line.find("geometric") != string::npos){ if(hull && !Q->voronoi) out_stream<<"*Geometric option for H-representation or voronoi only, skipped"<geometric = TRUE; }else if(line.find("allbases") != string::npos){ Q->allbases = TRUE; }else if(line.find("countonly") != string::npos){ Q->countonly = TRUE; }else if(line.find("incidence") != string::npos){ Q->incidence = TRUE; }else if(line.find("#incidence") != string::npos){ Q->printcobasis = TRUE; }else if(line.find("printcobasis") != string::npos){ istringstream ss(line); //Trim first word string str; ss >>str; if(!(ss>>Q->frequency)) Q->frequency = 0; Q->printcobasis = TRUE; }else if(line.find("printslack") != string::npos){ Q->printslack = TRUE; }else if(line.find("maxdepth") != string::npos){ istringstream ss(line); //Trim first word string str; ss >>str; if(!(ss>>Q->maxdepth)){ Q->maxdepth = 1; } }else if(line.find("maxoutput") != string::npos){ istringstream ss(line); //Trim first word string str; ss >>str; if(!(ss>>Q->maxoutput)){ Q->maxoutput = 100; } }else if(line.find("maxcobases") != string::npos){ istringstream ss(line); //Trim first word string str; ss >>str; if(!(ss>>Q->maxcobases)){ Q->maxcobases = 1000; } }else if(line.find("lponly")!= string::npos){ printf("\nError: lponly option not supported - use lrs!\n"); exit(1); }else if(line.find("mindepth") != string::npos){ istringstream ss(line); //Trim first word string str; ss >>str; if(!(ss>>Q->mindepth)){ Q->mindepth = 0; } }else if(line.find("estimates") != string::npos){ istringstream ss(line); //Trim first word string str; ss >>str; if (!(ss>>Q->runs)){ Q->runs=1; } }else if(line.find("subtreesize") != string::npos){ istringstream ss(line); //Trim first word string str; ss >>str; if (!(ss>>Q->subtreesize)){ Q->subtreesize=MAXD; } }else if(line.find("truncate") != string::npos){ if(!hull) Q->truncate = TRUE; else out_stream<<"*Truncate option for H-representation only, skipped"<verbose = TRUE; }else if(line.find("bound") != string::npos){ istringstream ss(line); //Trim first word string str; ss>>str; //get rational number ss>>str; plrs_readrat(Q->boundn, Q->boundd, str.c_str()); Q->bound = TRUE; }else if(line.find("nonnegative") != string::npos){ out_stream<<"*Nonnegative option must come before begin line, skipped"<>Q->seed)){ Q->seed = 3142; } }else if(line.find("voronoi") != string::npos || line.find("Voronoi") != string::npos){ if(!hull) out_stream<<"*voronoi requires V-representation - option skipped"<voronoi = TRUE; Q->polytope = FALSE; } } } if (Q->restart && Q->maxcobases > 0) //2015.4.3 adjust for restart Q->maxcobases = Q->maxcobases + Q->count[2]; if (Q->incidence) { Q->printcobasis = TRUE; /* 2010.5.7 No need to reset this, as it may have been set by printcobasis */ /* Q->frequency = ZERO; */ } lrs_clear_mp(Temp); lrs_clear_mp(mpone); lrs_clear_mp_vector (oD,d); //post output in a nonblocking manner (a consumer thread will manage output) post_output("options warning", out_stream.str().c_str()); } /* read and check facet list for obvious errors during start/restart */ /* this must be done after linearity option is processed!! */ void plrs_readfacets (lrs_dat * Q, long facet[], string facets) { long i, j; /* assign local variables to structures */ long m, d; long *linearity = Q->linearity; m = Q->m; d = Q->inputd; istringstream ss(facets); for (j = Q->nlinearity; j < d; j++) /* note we place these after the linearity indices */ { if(!(ss>>facet[j])) { return; } //fprintf (lrs_ofp, " %ld", facet[j]); /* 2010.4.26 nonnegative option needs larger range of indices */ if(Q->nonnegative) if (facet[j] < 1 || facet[j] > m+d) { printf("\nStart/Restart cobasic indices must be in range 1 .. %ld \n",m+d); exit(1); } if(!Q->nonnegative) if (facet[j] < 1 || facet[j] > m) { printf("\nStart/Restart cobasic indices must be in range 1 .. %ld \n",m); exit(1); } for (i = 0; i < Q->nlinearity; i++) if (linearity[i] == facet[j]) { printf("\nStart/Restart cobasic indices should not include linearities\n");; exit(1); } /* bug fix 2011.8.1 reported by Steven Wu*/ for (i = Q->nlinearity; i < j; i++) /* end bug fix 2011.8.1 */ if (facet[i] == facet[j]) { printf("\nStart/Restart cobasic indices must be distinct\n"); exit(1); } } } /* end of readfacets */ extern int PLRS_DEBUG; #endif /*******************************************************/ /* redund_main is driver for redund.c, removes all */ /* redundant rows from an H or V-representation */ /* showing function calls intended for public use */ /*******************************************************/ long redund_main (int argc, char *argv[]) { lrs_mp_matrix Ain; /* holds a copy of the input matrix to output at the end */ long *redineq; /* redineq[i]=0 if ineq i non-red,1 if red,2 linearity */ long ineq; /* input inequality number of current index */ lrs_dic *P; /* structure for holding current dictionary and indices */ lrs_dat *Q; /* structure for holding static problem data */ lrs_mp_matrix Lin; /* holds input linearities if any are found */ long i, j, d, m; long nlinearity; /* number of linearities in input file */ long nredund; /* number of redundant rows in input file */ long lastdv; long debug; long index; /* basic index for redundancy test */ /* global variables lrs_ifp and lrs_ofp are file pointers for input and output */ /* they default to stdin and stdout, but may be overidden by command line parms. */ /* Lin is global 2-d array for linearity space if it is found (redund columns) */ lrs_ifp = stdin; lrs_ofp = stdout; /*************************************************** Step 0: Do some global initialization that should only be done once, no matter how many lrs_dat records are allocated. db ***************************************************/ if ( !lrs_init ("\n*redund:")) return 1; printf ("\n"); printf (AUTHOR); /*********************************************************************************/ /* Step 1: Allocate lrs_dat, lrs_dic and set up the problem */ /*********************************************************************************/ Q = lrs_alloc_dat ("LRS globals"); /* allocate and init structure for static problem data */ if (Q == NULL) return 1; if (!lrs_read_dat (Q, argc, argv)) /* read first part of problem data to get dimensions */ return 1; /* and problem type: H- or V- input representation */ P = lrs_alloc_dic (Q); /* allocate and initialize lrs_dic */ if (P == NULL) return 1; if (!lrs_read_dic (P, Q)) /* read remainder of input to setup P and Q */ return 1; /* if non-negative flag is set, non-negative constraints are not input */ /* explicitly, and are not checked for redundancy */ m = P->m_A; /* number of rows of A matrix */ d = P->d; debug = Q->debug; redineq = (long *) calloc ((m + 1), sizeof (long)); Ain = lrs_alloc_mp_matrix (m, d); /* make a copy of A matrix for output later */ for (i = 1; i <= m; i++) { for (j = 0; j <= d; j++) copy (Ain[i][j], P->A[i][j]); if (debug) lrs_printrow ("*", Q, Ain[i], d); } /*********************************************************************************/ /* Step 2: Find a starting cobasis from default of specified order */ /* Lin is created if necessary to hold linearity space */ /*********************************************************************************/ if (!lrs_getfirstbasis (&P, Q, &Lin, TRUE)) return 1; /* Pivot to a starting dictionary */ /* There may have been column redundancy */ /* If so the linearity space is obtained and redundant */ /* columns are removed. User can access linearity space */ /* from lrs_mp_matrix Lin dimensions nredundcol x d+1 */ /*********************************************************************************/ /* Step 3: Test each row of the dictionary to see if it is redundant */ /*********************************************************************************/ /* note some of these may have been changed in getting initial dictionary */ m = P->m_A; d = P->d; nlinearity = Q->nlinearity; lastdv = Q->lastdv; if (debug) fprintf (lrs_ofp, "\ncheckindex m=%ld, n=%ld, nlinearity=%ld lastdv=%ld", m,d,nlinearity,lastdv); /* linearities are not considered for redundancy */ for (i = 0; i < nlinearity; i++) redineq[Q->linearity[i]] = 2L; /* rows 0..lastdv are cost, decision variables, or linearities */ /* other rows need to be tested */ for (index = lastdv + 1; index <= m + d; index++) { ineq = Q->inequality[index - lastdv]; /* the input inequality number corr. to this index */ redineq[ineq] = checkindex (P, Q, index); if (debug) fprintf (lrs_ofp, "\ncheck index=%ld, inequality=%ld, redineq=%ld", index, ineq, redineq[ineq]); if (redineq[ineq] == ONE) { fprintf (lrs_ofp, "\n*row %ld was redundant and removed", ineq); fflush (lrs_ofp); } } /* end for index ..... */ if (debug) { fprintf (lrs_ofp, "\n*redineq:"); for (i = 1; i <= m; i++) fprintf (lrs_ofp, " %ld", redineq[i]); } if (!Q->hull) fprintf (lrs_ofp, "\nH-representation"); else fprintf (lrs_ofp, "\nV-representation"); /* linearities will be printed first in output */ if (nlinearity > 0) { fprintf (lrs_ofp, "\nlinearity %ld", nlinearity); for (i = 1; i <= nlinearity; i++) fprintf (lrs_ofp, " %ld", i); } nredund = nlinearity; /* count number of non-redundant inequalities */ for (i = 1; i <= m; i++) if (redineq[i] == 0) nredund++; fprintf (lrs_ofp, "\nbegin"); fprintf (lrs_ofp, "\n%ld %ld rational", nredund, Q->n); /* print the linearities first */ for (i = 0; i < nlinearity; i++) lrs_printrow ("", Q, Ain[Q->linearity[i]], Q->inputd); for (i = 1; i <= m; i++) if (redineq[i] == 0) lrs_printrow ("", Q, Ain[i], Q->inputd); fprintf (lrs_ofp, "\nend"); fprintf (lrs_ofp, "\n*Input had %ld rows and %ld columns", m, Q->n); fprintf (lrs_ofp, ": %ld row(s) redundant", m - nredund); /* 2015.9.9 fix memory leak on Gcd Lcm */ long savem=P->m; /* need this to clear Q*/ lrs_free_dic (P,Q); /* deallocate lrs_dic */ Q->m=savem; lrs_free_dat (Q); /* deallocate lrs_dat */ lrs_close ("redund:"); return 0; } /*********************************************/ /* end of redund.c */ /*********************************************/ /*******************/ /* lrs_printoutput */ /*******************/ void lrs_printoutput (lrs_dat * Q, lrs_mp_vector output) { if (Q->countonly) return; #ifdef PLRS //Make new output node char *type=NULL; //Make stream to collect prat / pmp data stringstream ss; if (Q->hull || zero (output[0])){ /*non vertex */ type = "ray"; for (int i = 0; i < Q->n; i++) ss<n; i++) ss<hull || zero (output[0])) /*non vertex */ { for (i = 0; i < Q->n; i++) pmp ("", output[i]); } else { /* vertex */ fprintf (lrs_ofp, " 1 "); for (i = 1; i < Q->n; i++) prat ("", output[i], output[0]); } fflush(lrs_ofp); #endif } /**************************/ /* end of lrs_printoutput */ /**************************/ /****************/ /* lrs_lpoutput */ /****************/ void lrs_lpoutput(lrs_dic * P,lrs_dat * Q, lrs_mp_vector output) { #ifndef LRS_QUIET lrs_mp Temp1, Temp2; long i; lrs_alloc_mp (Temp1); lrs_alloc_mp (Temp2); fprintf (lrs_ofp, "\n*LP solution only requested"); prat ("\n\n*Objective function has value ", P->objnum, P->objden); fprintf (lrs_ofp, "\n\n*Primal: "); for (i = 1; i < Q->n; i++) { fprintf(lrs_ofp,"x_%ld=",i); prat ("", output[i], output[0]); } if(Q->nlinearity > 0) fprintf (lrs_ofp, "\n\n*Linearities in input file - partial dual solution only"); fprintf (lrs_ofp, "\n\n*Dual: "); for (i = 0; i < P->d; i++) { fprintf(lrs_ofp,"y_%ld=",Q->inequality[P->C[i]-Q->lastdv]); changesign(P->A[0][P->Col[i]]); mulint(Q->Lcm[P->Col[i]],P->A[0][P->Col[i]],Temp1); mulint(Q->Gcd[P->Col[i]],P->det,Temp2); prat("",Temp1,Temp2); changesign(P->A[0][P->Col[i]]); } fprintf (lrs_ofp, "\n"); lrs_clear_mp (Temp1); lrs_clear_mp (Temp2); #endif } /***********************/ /* end of lrs_lpoutput */ /***********************/ void lrs_printrow (char name[], lrs_dat * Q, lrs_mp_vector output, long rowd) /* print a row of A matrix in output in "original" form */ /* rowd+1 is the dimension of output vector */ /* if input is H-rep. output[0] contains the RHS */ /* if input is V-rep. vertices are scaled by 1/output[1] */ { long i; fprintf (lrs_ofp, "\n%s", name); if (!Q->hull) /* input was inequalities, print directly */ { for (i = 0; i <= rowd; i++) pmp ("", output[i]); return; } /* input was vertex/ray */ if (zero (output[1])) /*non-vertex */ { for (i = 1; i <= rowd; i++) pmp ("", output[i]); } else { /* vertex */ fprintf (lrs_ofp, " 1 "); for (i = 2; i <= rowd; i++) prat ("", output[i], output[1]); } return; } /* end of lrs_printrow */ long lrs_getsolution (lrs_dic * P, lrs_dat * Q, lrs_mp_vector output, long col) /* check if column indexed by col in this dictionary */ /* contains output */ /* col=0 for vertex 1....d for ray/facet */ { long j; /* cobasic index */ lrs_mp_matrix A = P->A; long *Row = P->Row; if (col == ZERO) /* check for lexmin vertex */ return lrs_getvertex (P, Q, output); /* check for rays: negative in row 0 , positive if lponly */ if (Q->lponly) { if (!positive (A[0][col])) return FALSE; } else if (!negative (A[0][col])) return FALSE; /* and non-negative for all basic non decision variables */ j = Q->lastdv + 1; while (j <= P->m && !negative (A[Row[j]][col])) j++; if (j <= P->m) return FALSE; if (Q->geometric || Q->allbases || lexmin (P, Q, col) || Q->lponly) return lrs_getray (P, Q, col, Q->n, output); return FALSE; /* no more output in this dictionary */ } /* end of lrs_getsolution */ long lrs_init (char *name) /* returns TRUE if successful, else FALSE */ { printf ("%s", name); printf (TITLE); printf (VERSION); printf ("("); printf (BIT); printf (","); printf (ARITH); if (!lrs_mp_init (ZERO, stdin, stdout)) /* initialize arithmetic */ return FALSE; printf (")"); lrs_global_count = 0; lrs_checkpoint_seconds = 0; #ifdef SIGNALS setup_signals (); #endif return TRUE; } void lrs_close (char *name) { fprintf (lrs_ofp, "\n*%s", name); fprintf (lrs_ofp, TITLE); fprintf (lrs_ofp, VERSION); fprintf (lrs_ofp, "("); fprintf (lrs_ofp, BIT); fprintf (lrs_ofp, ","); fprintf (lrs_ofp, ARITH); fprintf (lrs_ofp, ")"); #ifdef MP fprintf (lrs_ofp, " max digits=%ld/%ld", DIG2DEC (lrs_record_digits), DIG2DEC (lrs_digits)); #endif #ifdef TIMES ptimes (); #endif fprintf (lrs_ofp, "\n"); fclose (lrs_ifp); if (lrs_ofp != stdout) fclose (lrs_ofp); } /***********************************/ /* allocate and initialize lrs_dat */ /***********************************/ lrs_dat * lrs_alloc_dat (const char *name) { lrs_dat *Q; long i; if (lrs_global_count >= MAX_LRS_GLOBALS) { fprintf (stderr, "Fatal: Attempt to allocate more than %ld global data blocks\n", MAX_LRS_GLOBALS); exit (1); } Q = (lrs_dat *) malloc (sizeof (lrs_dat)); if (Q == NULL) return Q; /* failure to allocate */ lrs_global_list[lrs_global_count] = Q; Q->id = lrs_global_count; lrs_global_count++; Q->name=(char *) CALLOC ((unsigned) strlen(name)+1, sizeof (char)); strcpy(Q->name,name); /* initialize variables */ Q->m = 0L; Q->n = 0L; Q->inputd = 0L; Q->deepest = 0L; Q->nlinearity = 0L; Q->nredundcol = 0L; Q->runs = 0L; Q->subtreesize=MAXD; Q->seed = 1234L; Q->totalnodes = 0L; for (i = 0; i < 10; i++) { Q->count[i] = 0L; Q->cest[i] = 0.0; if(i < 5) Q->startcount[i] = 0L; } Q->count[2] = 1L; /* basis counter */ Q->startcount[2] = 0L; /* starting basis counter */ /* initialize flags */ Q->allbases = FALSE; Q->bound = FALSE; /* upper/lower bound on objective function given */ Q->countonly = FALSE; /* produce the usual output */ Q->debug = FALSE; Q->frequency = 0L; Q->dualdeg = FALSE; /* TRUE if dual degenerate starting dictionary */ Q->geometric = FALSE; Q->getvolume = FALSE; Q->homogeneous = TRUE; Q->polytope = FALSE; Q->hull = FALSE; Q->incidence = FALSE; Q->lponly = FALSE; Q->maxdepth = MAXD; Q->mindepth = -MAXD; Q->maxoutput = 0L; Q->maxcobases = 0L; /* after maxcobases have been found unexplored subtrees reported */ Q->nash = FALSE; Q->nonnegative = FALSE; Q->printcobasis = FALSE; Q->printslack = FALSE; Q->truncate = FALSE; /* truncate tree when moving from opt vertex */ Q->verbose=FALSE; Q->voronoi = FALSE; Q->maximize = FALSE; /*flag for LP maximization */ Q->minimize = FALSE; /*flag for LP minimization */ Q->restart = FALSE; /* TRUE if restarting from some cobasis */ Q->givenstart = FALSE; /* TRUE if a starting cobasis is given */ Q->strace = -1L; /* turn on debug at basis # strace */ Q->etrace = -1L; /* turn off debug at basis # etrace */ Q->saved_flag = 0; /* no cobasis saved initially, db */ lrs_alloc_mp (Q->Nvolume); lrs_alloc_mp (Q->Dvolume); lrs_alloc_mp (Q->sumdet); lrs_alloc_mp (Q->saved_det); lrs_alloc_mp (Q->boundn); lrs_alloc_mp (Q->boundd); itomp (ZERO, Q->Nvolume); itomp (ONE, Q->Dvolume); itomp (ZERO, Q->sumdet); /* 2012.6.1 */ Q->unbounded = FALSE; return Q; } /* end of allocate and initialize lrs_dat */ /*******************************/ /* lrs_read_dat */ /*******************************/ long lrs_read_dat (lrs_dat * Q, int argc, char *argv[]) { char name[100]; long dec_digits = 0; long infile=0; /*input file number to open if any */ long firstline = TRUE; /*flag for picking off name at line 1 */ int c; /* for fgetc */ if(argc > 1 ) infile=1; if(Q->nash && argc == 2) /* open second nash input file */ infile=2; if (infile > 0) /* command line argument overides stdin */ { if ((lrs_ifp = fopen (argv[infile], "r")) == NULL) { printf ("\nBad input file name\n"); return (FALSE); } else { if (infile==1) printf ("\n*Input taken from file %s", argv[infile]); } } /* command line argument overides stdout */ if ((!Q->nash && argc == 3) || (Q->nash && argc == 4)) { if ((lrs_ofp = fopen (argv[argc-1], "w")) == NULL) { printf ("\nBad output file name\n"); return (FALSE); } else printf ("\n*Output sent to file %s\n", argv[argc-1]); } /* process input file */ if( fscanf (lrs_ifp, "%s", name) == EOF) { fprintf (lrs_ofp, "\nNo begin line"); return (FALSE); } while (strcmp (name, "begin") != 0) /*skip until "begin" found processing options */ { if (strncmp (name, "*", 1) == 0) /* skip any line beginning with * */ { c = name[0]; while (c != EOF && c != '\n') c = fgetc (lrs_ifp); } else if (strcmp (name, "H-representation") == 0) Q->hull = FALSE; else if ((strcmp (name, "hull") == 0) || (strcmp (name, "V-representation") == 0)) { Q->hull = TRUE; Q->polytope = TRUE; /* will be updated as input read */ } else if (strcmp (name, "digits") == 0) { if (fscanf (lrs_ifp, "%ld", &dec_digits) == EOF) { fprintf (lrs_ofp, "\nNo begin line"); return (FALSE); } if (!lrs_set_digits(dec_digits)) return (FALSE); } else if (strcmp (name, "linearity") == 0) { if (!readlinearity (Q)) return FALSE; } else if (strcmp (name, "nonnegative") == 0) { if(Q->nash) fprintf (lrs_ofp, "\nNash incompatibile with nonnegative option - skipped"); else Q->nonnegative = TRUE; } else if (firstline) { stringcpy (Q->fname, name); fprintf (lrs_ofp, "\n%s", Q->fname); firstline = FALSE; } if (fscanf (lrs_ifp, "%s", name) == EOF) { fprintf (lrs_ofp, "\nNo begin line"); return (FALSE); } } /* end of while */ if (fscanf (lrs_ifp, "%ld %ld %s", &Q->m, &Q->n, name) == EOF) { fprintf (lrs_ofp, "\nNo data in file"); return (FALSE); } if (strcmp (name, "integer") != 0 && strcmp (name, "rational") != 0) { fprintf (lrs_ofp, "\nData type must be integer of rational"); return (FALSE); } if (Q->m == 0) { fprintf (lrs_ofp, "\nNo input given"); /* program dies ungracefully */ return (FALSE); } /* inputd may be reduced in preprocessing of linearities and redund cols */ return TRUE; } /* end of lrs_read_dat */ /****************************/ /* set up lrs_dic structure */ /****************************/ long lrs_read_dic (lrs_dic * P, lrs_dat * Q) /* read constraint matrix and set up problem and dictionary */ { lrs_mp Temp,Tempn,Tempd, mpone, mpten; lrs_mp_vector oD; /* Denom for objective function */ long i, j; char name[100]; int c; /* fgetc actually returns an int. db */ /* assign local variables to structures */ lrs_mp_matrix A; lrs_mp_vector Gcd, Lcm; long hull = Q->hull; long m, d; long dualperturb=FALSE; /* dualperturb=TRUE: objective function perturbed */ lrs_alloc_mp(Temp); lrs_alloc_mp(mpone); lrs_alloc_mp(Tempn); lrs_alloc_mp(Tempd); lrs_alloc_mp(mpten); A = P->A; m = Q->m; d = Q->inputd; Gcd = Q->Gcd; Lcm = Q->Lcm; oD = lrs_alloc_mp_vector (d); itomp (ONE, mpone); itomp(10L,mpten); itomp (ONE, A[0][0]); itomp (ONE, Lcm[0]); itomp (ONE, Gcd[0]); for (i = 1; i <= m; i++) /* read in input matrix row by row */ { itomp (ONE, Lcm[i]); /* Lcm of denominators */ itomp (ZERO, Gcd[i]); /* Gcd of numerators */ for (j = hull; j <= d; j++) /* hull data copied to cols 1..d */ { if (readrat (A[i][j], A[0][j])) lcm (Lcm[i], A[0][j]); /* update lcm of denominators */ copy (Temp, A[i][j]); gcd (Gcd[i], Temp); /* update gcd of numerators */ } if (hull) { itomp (ZERO, A[i][0]); /*for hull, we have to append an extra column of zeroes */ if (!one (A[i][1]) || !one (A[0][1])) /* all rows must have a one in column one */ Q->polytope = FALSE; } if (!zero (A[i][hull])) /* for H-rep, are zero in column 0 */ Q->homogeneous = FALSE; /* for V-rep, all zero in column 1 */ storesign (Gcd[i], POS); storesign (Lcm[i], POS); if (mp_greater (Gcd[i], mpone) || mp_greater (Lcm[i], mpone)) for (j = 0; j <= d; j++) { exactdivint (A[i][j], Gcd[i], Temp); /*reduce numerators by Gcd */ mulint (Lcm[i], Temp, Temp); /*remove denominators */ exactdivint (Temp, A[0][j], A[i][j]); /*reduce by former denominator */ } } /* end of for i= */ /* 2010.4.26 patch */ if(Q->nonnegative) /* set up Gcd and Lcm for nonexistent nongative inequalities */ for (i=m+1;i<=m+d;i++) { itomp (ONE, Lcm[i]); itomp (ONE, Gcd[i]); } if (Q->homogeneous && Q->verbose) { fprintf (lrs_ofp, "\n*Input is homogeneous, column 1 not treated as redundant"); } /* read in flags */ while (fscanf (lrs_ifp, "%s", name) != EOF) { if (strncmp (name, "*", 1) == 0) /* skip any line beginning with * */ { c = name[0]; while (c != EOF && c != '\n') c = fgetc (lrs_ifp); } if (strcmp (name, "checkpoint") == 0) { long seconds; if(fscanf (lrs_ifp, "%ld", &seconds) == EOF) { fprintf (lrs_ofp, "\nInvalid checkpoint option"); return (FALSE); } #ifdef SIGNALS if (seconds > 0) { lrs_checkpoint_seconds = seconds; errcheck ("signal", signal (SIGALRM, timecheck)); alarm (lrs_checkpoint_seconds); } #endif } if (strcmp (name, "debug") == 0) { Q->etrace =0; if(fscanf (lrs_ifp, "%ld %ld", &Q->strace, &Q->etrace)==EOF) Q->strace =0; fprintf (lrs_ofp, "\n*%s from B#%ld to B#%ld", name, Q->strace, Q->etrace); Q->verbose=TRUE; if (Q->strace <= 1) Q->debug = TRUE; } if (strcmp (name, "startingcobasis") == 0) { if(Q->nonnegative) fprintf (lrs_ofp, "\n*startingcobasis incompatible with nonnegative option:skipped"); else { fprintf (lrs_ofp, "\n*startingcobasis"); Q->givenstart = TRUE; if (!readfacets (Q, Q->inequality)) return FALSE; } } if (strcmp (name, "restart") == 0) { Q->restart = TRUE; if(Q->voronoi) { if(fscanf (lrs_ifp, "%ld %ld %ld %ld", &Q->count[1], &Q->count[0], &Q->count[2], &P->depth)==EOF) return FALSE; fprintf (lrs_ofp, "\n*%s V#%ld R#%ld B#%ld h=%ld data points", name, Q->count[1], Q->count[0], Q->count[2], P->depth); } else if(hull) { if( fscanf (lrs_ifp, "%ld %ld %ld", &Q->count[0], &Q->count[2], &P->depth)==EOF) fprintf (lrs_ofp, "\n*%s F#%ld B#%ld h=%ld vertices/rays", name, Q->count[0], Q->count[2], P->depth); } else { if(fscanf (lrs_ifp, "%ld %ld %ld %ld", &Q->count[1], &Q->count[0], &Q->count[2], &P->depth)==EOF) return FALSE; fprintf (lrs_ofp, "\n*%s V#%ld R#%ld B#%ld h=%ld facets", name, Q->count[1], Q->count[0], Q->count[2], P->depth); } if (!readfacets (Q, Q->facet)) return FALSE; } /* end of restart */ /* The next flag request a LP solution only */ if (strcmp (name, "lponly") == 0) { if (Q->hull) fprintf (lrs_ofp, "\n*lponly option not valid for V-representation-skipped"); else Q->lponly = TRUE; } /* The LP will be solved after initialization to get starting vertex */ /* Used also with lponly flag */ if (strcmp (name, "maximize") == 0 || strcmp (name, "minimize") == 0) { if (Q->hull) fprintf (lrs_ofp, "\n*%s option not valid for V-representation-skipped", name); else { { if (strcmp (name, "maximize") == 0) Q->maximize = TRUE; else Q->minimize = TRUE; } fprintf (lrs_ofp,"\n*%s", name); if(dualperturb) /* apply a perturbation to objective function */ { fprintf (lrs_ofp, " - Objective function perturbed"); copy(Temp,mpten); for (j = 0; j <= 10; j++) mulint(mpten,Temp,Temp); } fprintf (lrs_ofp, ": "); for (j = 0; j <= d; j++) { if (readrat (A[0][j], oD[j]) || dualperturb ) { if(dualperturb && j > 0 && j < d ) { if (Q->maximize) linrat(A[0][j], oD[j],ONE,mpone,Temp,ONE,Tempn,Tempd); else linrat(A[0][j], oD[j],ONE,mpone,Temp,-1L,Tempn,Tempd); copy(A[0][j],Tempn); copy(oD[j],Tempd); mulint(mpten,Temp,Temp); } reduce (A[0][j], oD[j]); lcm (Q->Lcm[0], oD[j]); /* update lcm of denominators */ } prat ("", A[0][j], oD[j]); if (!Q->maximize) changesign (A[0][j]); } storesign (Q->Lcm[0], POS); if (mp_greater (Q->Lcm[0], mpone)) for (j = 0; j <= d; j++) { mulint (Q->Lcm[0], A[0][j], A[0][j]); /*remove denominators */ copy (Temp, A[0][j]); exactdivint (Temp, oD[j], A[0][j]); } if (Q->debug) printA (P, Q); } } /* end of LP setup */ if (strcmp (name, "volume") == 0) { fprintf (lrs_ofp, "\n*%s", name); Q->getvolume = TRUE; } if (strcmp (name, "geometric") == 0) { fprintf (lrs_ofp, "\n*%s", name); if (hull & !Q->voronoi) fprintf (lrs_ofp, " - option for H-representation or voronoi only, skipped"); else Q->geometric = TRUE; } if (strcmp (name, "allbases") == 0) { fprintf (lrs_ofp, "\n*%s", name); Q->allbases = TRUE; } if (strcmp (name, "countonly") == 0) { fprintf (lrs_ofp, "\n*%s", name); Q->countonly = TRUE; } if (strcmp (name, "dualperturb") == 0) { dualperturb = TRUE; } if (strcmp (name, "incidence") == 0) { fprintf (lrs_ofp, "\n*%s", name); Q->incidence = TRUE; } if (strcmp (name, "#incidence") == 0) /* number of incident inequalities only */ { Q->printcobasis = TRUE; } if (strcmp (name, "printcobasis") == 0) { if(fscanf (lrs_ifp, "%ld", &Q->frequency)==EOF) /*2010.7.7 set default to zero = print only when outputting vertex/ray/facet */ Q->frequency=0; fprintf (lrs_ofp, "\n*%s", name); if (Q->frequency > 0) fprintf(lrs_ofp," %ld", Q->frequency); Q->printcobasis = TRUE; } if (strcmp (name, "printslack") == 0) { Q->printslack = TRUE; } if (strcmp (name, "cache") == 0) { if(fscanf (lrs_ifp, "%ld", &dict_limit)==EOF) dict_limit=1; fprintf (lrs_ofp, "\n*cache %ld", dict_limit); if (dict_limit < 1) dict_limit = 1; } if (strcmp (name, "linearity") == 0) { if (!readlinearity (Q)) return FALSE; } if (strcmp (name, "maxdepth") == 0) { if(fscanf (lrs_ifp, "%ld", &Q->maxdepth)==EOF) Q->maxdepth=MAXD; fprintf (lrs_ofp, "\n*%s %ld", name, Q->maxdepth); } if (strcmp (name, "maxoutput") == 0) { if(fscanf (lrs_ifp, "%ld", &Q->maxoutput)==EOF) Q->maxoutput = 100; fprintf (lrs_ofp, "\n*%s %ld", name, Q->maxoutput); } if (strcmp (name, "maxcobases") == 0) { if(fscanf (lrs_ifp, "%ld", &Q->maxcobases)==EOF) Q->maxcobases = 1000; fprintf (lrs_ofp, "\n*%s %ld", name, Q->maxcobases); } if (strcmp (name, "mindepth") == 0) { if( fscanf (lrs_ifp, "%ld", &Q->mindepth)==EOF) Q->mindepth = 0; fprintf (lrs_ofp, "\n*%s %ld", name, Q->mindepth); } if (strcmp (name, "truncate") == 0) { fprintf (lrs_ofp, "\n*%s", name); if (!hull) Q->truncate = TRUE; else fprintf (lrs_ofp, " - option for H-representation only, skipped"); } if (strcmp (name, "verbose") == 0) Q->verbose = TRUE; if (strcmp (name, "bound") == 0) { readrat(Q->boundn,Q->boundd); Q->bound = TRUE; } if (strcmp (name, "nonnegative") == 0) { fprintf (lrs_ofp, "\n*%s", name); fprintf (lrs_ofp, " - option must come before begin line - skipped"); } if (strcmp (name, "seed") == 0) { if(fscanf (lrs_ifp, "%ld", &Q->seed)==EOF) Q->seed = 3142; fprintf (lrs_ofp, "\n*seed= %ld ", Q->seed); } if (strcmp (name, "estimates") == 0) { if(fscanf (lrs_ifp, "%ld", &Q->runs)==EOF) Q->runs=1; fprintf (lrs_ofp, "\n*%ld %s", Q->runs, name); } // 2015.2.9 Estimates will continue until estimate is less than subtree size if (strcmp (name, "subtreesize") == 0) { if(fscanf (lrs_ifp, "%ld", &Q->subtreesize)==EOF) Q->subtreesize=MAXD; fprintf (lrs_ofp, "\n*%s %ld", name, Q->subtreesize); } if ((strcmp (name, "voronoi") == 0) || (strcmp (name, "Voronoi") == 0)) { if (!hull) fprintf (lrs_ofp, "\n*voronoi requires V-representation - option skipped"); else { Q->voronoi = TRUE; Q->polytope = FALSE; } } } /* end of while for reading flags */ if (Q->polytope) Q->getvolume = TRUE; /* might as well get volume, it doesn't cost much */ if (Q->bound && Q->maximize) prat("\n*Lower bound on objective function:",Q->boundn,Q->boundd); if (Q->bound && Q->minimize) prat("\n*Upper bound on objective function:",Q->boundn,Q->boundd); /* Certain options are incompatible, this is fixed here */ if (Q->restart) Q->getvolume = FALSE; /* otherwise incorrect volume reported */ if (Q->restart && Q->maxcobases > 0) //2015.4.3 adjust for restart Q->maxcobases = Q->maxcobases + Q->count[2]; if (Q->incidence) { Q->printcobasis = TRUE; /* 2010.5.7 No need to reset this, as it may have been set by printcobasis */ /* Q->frequency = ZERO; */ } if (Q->debug) { printA (P, Q); fprintf (lrs_ofp, "\nexiting lrs_read_dic"); } lrs_clear_mp(Temp); lrs_clear_mp(mpone); lrs_clear_mp(Tempn); lrs_clear_mp(Tempd); lrs_clear_mp(mpten); lrs_clear_mp_vector (oD,d); return TRUE; } /* end of if(voronoi) */ /* In lrs_getfirstbasis and lrs_getnextbasis we use D instead of P */ /* since the dictionary P may change, ie. &P in calling routine */ #define D (*D_p) long lrs_getfirstbasis (lrs_dic ** D_p, lrs_dat * Q, lrs_mp_matrix * Lin, long no_output) /* gets first basis, FALSE if none */ /* P may get changed if lin. space Lin found */ /* no_output is TRUE supresses output headers */ { lrs_mp scale, Temp; long i, j, k; /* assign local variables to structures */ lrs_mp_matrix A; long *B, *C, *Col; long *inequality; long *linearity; long hull = Q->hull; long m, d, lastdv, nlinearity, nredundcol; lrs_alloc_mp(Temp); lrs_alloc_mp(scale); if (Q->lponly) no_output = TRUE; m = D->m; d = D->d; lastdv = Q->lastdv; nredundcol = 0L; /* will be set after getabasis */ nlinearity = Q->nlinearity; /* may be reset if new linearity read or in getabasis*/ linearity = Q->linearity; A = D->A; B = D->B; C = D->C; Col = D->Col; inequality = Q->inequality; if (Q->nlinearity > 0 && Q->nonnegative) { fprintf (lrs_ofp, "\n*linearity and nonnegative options incompatible"); fprintf (lrs_ofp, " - all linearities are skipped"); fprintf (lrs_ofp, "\n*add nonnegative constraints explicitly and "); fprintf (lrs_ofp, " remove nonnegative option"); } if (Q->nlinearity && Q->voronoi){ fprintf (lrs_ofp, "\n*linearity and Voronoi options set - results unpredictable"); } if (Q->lponly && !Q->maximize && !Q->minimize) fprintf (lrs_ofp, "\n*LP has no objective function given - assuming all zero"); if (Q->runs > 0) /* arrays for estimator */ { Q->isave = (long *) CALLOC ((unsigned) (m * d), sizeof (long)); Q->jsave = (long *) CALLOC ((unsigned) (m * d), sizeof (long)); } /* default is to look for starting cobasis using linearies first, then */ /* filling in from last rows of input as necessary */ /* linearity array is assumed sorted here */ /* note if restart/given start inequality indices already in place */ /* from nlinearity..d-1 */ for (i = 0; i < nlinearity; i++) /* put linearities first in the order */ inequality[i] = linearity[i]; k = 0; /* index for linearity array */ if (Q->givenstart) k = d; else k = nlinearity; for (i = m; i >= 1; i--) { j = 0; while (j < k && inequality[j] != i) j++; /* see if i is in inequality */ if (j == k) inequality[k++] = i; } #ifndef PLRS if (Q->debug) { fprintf (lrs_ofp, "\n*Starting cobasis uses input row order"); for (i = 0; i < m; i++) fprintf (lrs_ofp, " %ld", inequality[i]); } #endif /* for voronoi convert to h-description using the transform */ /* a_0 .. a_d-1 -> (a_0^2 + ... a_d-1 ^2)-2a_0x_0-...-2a_d-1x_d-1 + x_d >= 0 */ /* note constant term is stored in column d, and column d-1 is all ones */ /* the other coefficients are multiplied by -2 and shifted one to the right */ if (Q->debug) printA (D, Q); if (Q->voronoi) { Q->hull = FALSE; hull = FALSE; for (i = 1; i <= m; i++) { if (zero (A[i][1])) { printf("\nWith voronoi option column one must be all one\n"); return (FALSE); } copy (scale, A[i][1]); /*adjust for scaling to integers of rationals */ itomp (ZERO, A[i][0]); for (j = 2; j <= d; j++) /* transform each input row */ { copy (Temp, A[i][j]); mulint (A[i][j], Temp, Temp); linint (A[i][0], ONE, Temp, ONE); linint (A[i][j - 1], ZERO, A[i][j], -TWO); mulint (scale, A[i][j - 1], A[i][j - 1]); } /* end of for (j=1;..) */ copy (A[i][d], scale); mulint (scale, A[i][d], A[i][d]); }/* end of for (i=1;..) */ #ifndef PLRS if (Q->debug) printA (D, Q); #endif } /* end of if(voronoi) */ if (!Q->maximize && !Q->minimize) for (j = 0; j <= d; j++) itomp (ZERO, A[0][j]); /* Now we pivot to standard form, and then find a primal feasible basis */ /* Note these steps MUST be done, even if restarting, in order to get */ /* the same index/inequality correspondance we had for the original prob. */ /* The inequality array is used to give the insertion order */ /* and is defaulted to the last d rows when givenstart=FALSE */ if(Q->nonnegative) { /* no need for initial pivots here, labelling already done */ Q->lastdv = d; Q->nredundcol = 0; } else { if (!getabasis (D, Q, inequality)) return FALSE; /* bug fix 2009.12.2 */ nlinearity=Q->nlinearity; /*may have been reset if some lins are redundant*/ } #ifndef PLRS if(Q->debug) { fprintf(lrs_ofp,"\nafter getabasis"); printA(D, Q); } #endif nredundcol = Q->nredundcol; lastdv = Q->lastdv; d = D->d; /********************************************************************/ /* now we start printing the output file unless no output requested */ /********************************************************************/ if (!no_output || Q->debug) { if (Q->voronoi){ #ifndef PLRS fprintf (lrs_ofp, "\n*Voronoi Diagram: Voronoi vertices and rays are output"); #else char *type = "header"; char *data = "*Voronoi Diagram: Voronoi vertices and rays are output"; //post output in a nonblocking manner (a consumer thread will manage output) post_output(type,data); #endif } if (hull){ #ifndef PLRS fprintf (lrs_ofp, "\nH-representation"); #else char *type = "header"; char *data = "H-representation"; //post output in a nonblocking manner (a consumer thread will manage output) post_output(type, data); #endif } else{ #ifndef PLRS fprintf (lrs_ofp, "\nV-representation"); #else char *type = "header"; char *data = "V-representation"; //post output in a nonblocking manner (a consumer thread will manage output) post_output(type,data); #endif } /* Print linearity space */ /* Don't print linearity if first column zero in hull computation */ if (hull && Q->homogeneous) k = 1; /* 0 normally, 1 for homogeneous case */ else k = 0; if (nredundcol > k) { #ifndef PLRS fprintf (lrs_ofp, "\nlinearity %ld ", nredundcol - k); /*adjust nredundcol for homog. */ #else stringstream ss; char *type = "header"; ss<<"linearity "<<(nredundcol -k); #endif for (i = 1; i <= nredundcol - k; i++){ #ifndef PLRS fprintf (lrs_ofp, " %ld", i); #else ss<<" "<n); #else char *type = "header"; stringstream ss; ss<<"begin"<n<<" rational"; post_output(type, ss.str().c_str()); #endif } /* end of if !no_output ....... */ /* Reset up the inequality array to remember which index is which input inequality */ /* inequality[B[i]-lastdv] is row number of the inequality with index B[i] */ /* inequality[C[i]-lastdv] is row number of the inequality with index C[i] */ for (i = 1; i <= m; i++) inequality[i] = i; if (nlinearity > 0) /* some cobasic indices will be removed */ { for (i = 0; i < nlinearity; i++) /* remove input linearity indices */ inequality[linearity[i]] = 0; k = 1; /* counter for linearities */ for (i = 1; i <= m - nlinearity; i++) { while (k <= m && inequality[k] == 0) k++; /* skip zeroes in corr. to linearity */ inequality[i] = inequality[k++]; } } /* end if linearity */ #ifndef PLRS if (Q->debug) { fprintf (lrs_ofp, "\ninequality array initialization:"); for (i = 1; i <= m - nlinearity; i++) fprintf (lrs_ofp, " %ld", inequality[i]); } #endif if (nredundcol > 0) { const unsigned int Qn = Q->n; *Lin = lrs_alloc_mp_matrix (nredundcol, Qn); for (i = 0; i < nredundcol; i++) { if (!(Q->homogeneous && Q->hull && i == 0)) /* skip redund col 1 for homog. hull */ { lrs_getray (D, Q, Col[0], D->C[0] + i - hull, (*Lin)[i]); /* adjust index for deletions */ } if (!removecobasicindex (D, Q, 0L)) { lrs_clear_mp_matrix (*Lin, nredundcol, Qn); return FALSE; } } } /* end if nredundcol > 0 */ if (Q->lponly || Q->nash ){ if (Q->verbose) { fprintf (lrs_ofp, "\nNumber of pivots for starting dictionary: %ld",Q->count[3]); if(Q->lponly) printA (D, Q); } } /* Do dual pivots to get primal feasibility */ if (!primalfeasible (D, Q)) { #ifndef LRS_QUIET fprintf (lrs_ofp, "\nNo feasible solution\n"); #endif if (Q->nash && Q->verbose ) { fprintf (lrs_ofp, "\nNumber of pivots for feasible solution: %ld",Q->count[3]); fprintf (lrs_ofp, " - No feasible solution"); } return FALSE; } if (Q->lponly || Q->nash ) if (Q->verbose) { fprintf (lrs_ofp, "\nNumber of pivots for feasible solution: %ld",Q->count[3]); if(Q->lponly) printA (D, Q); } /* Now solve LP if objective function was given */ if (Q->maximize || Q->minimize) { Q->unbounded = !lrs_solvelp (D, Q, Q->maximize); if (Q->lponly) { #ifndef PLRS if (Q->verbose) { fprintf (lrs_ofp, "\nNumber of pivots for optimum solution: %ld",Q->count[3]); printA (D, Q); } #endif lrs_clear_mp(Temp); lrs_clear_mp(scale); return TRUE; } else /* check to see if objective is dual degenerate */ { j = 1; while (j <= d && !zero (A[0][j])) j++; if (j <= d) Q->dualdeg = TRUE; } } else /* re-initialize cost row to -det */ { for (j = 1; j <= d; j++) { copy (A[0][j], D->det); storesign (A[0][j], NEG); } itomp (ZERO, A[0][0]); /* zero optimum objective value */ } /* reindex basis to 0..m if necessary */ /* we use the fact that cobases are sorted by index value */ #ifndef PLRS if (Q->debug) printA (D, Q); #endif while (C[0] <= m) { i = C[0]; j = inequality[B[i] - lastdv]; inequality[B[i] - lastdv] = inequality[C[0] - lastdv]; inequality[C[0] - lastdv] = j; C[0] = B[i]; B[i] = i; reorder1 (C, Col, ZERO, d); } #ifndef PLRS if (Q->debug) { fprintf (lrs_ofp, "\n*Inequality numbers for indices %ld .. %ld : ", lastdv + 1, m + d); for (i = 1; i <= m - nlinearity; i++) fprintf (lrs_ofp, " %ld ", inequality[i]); printA (D, Q); } #endif if (Q->restart) { #ifndef PLRS if (Q->debug) fprintf (lrs_ofp, "\nPivoting to restart co-basis"); #endif if (!restartpivots (D, Q)) return FALSE; D->lexflag = lexmin (D, Q, ZERO); /* see if lexmin basis */ #ifndef PLRS if (Q->debug) printA (D, Q); #endif } /* Check to see if necessary to resize */ if (Q->inputd > d) *D_p = resize (D, Q); lrs_clear_mp(Temp); lrs_clear_mp(scale); return TRUE; } /********* end of lrs_getfirstbasis ***************/ /*****************************************/ /* getnextbasis in reverse search order */ /*****************************************/ long lrs_getnextbasis (lrs_dic ** D_p, lrs_dat * Q, long backtrack) /* gets next reverse search tree basis, FALSE if none */ /* switches to estimator if maxdepth set */ /* backtrack TRUE means backtrack from here */ { /* assign local variables to structures */ long i = 0L, j = 0L; long m = D->m; long d = D->d; long saveflag; long cob_est=0; /* estimated number of cobases in subtree from current node */ if (backtrack && D->depth == 0) return FALSE; /* cannot backtrack from root */ if (Q->maxoutput > 0 && Q->count[0]+Q->count[1]-Q->hull >= Q->maxoutput) return FALSE; /* output limit reached */ while ((j < d) || (D->B[m] != m)) /*main while loop for getnextbasis */ { if (D->depth >= Q->maxdepth) { if (Q->runs > 0 && !backtrack ) /*get an estimate of remaining tree */ { //2015.2.9 do iterative estimation backtracking when estimate is small saveflag=Q->printcobasis; Q->printcobasis=FALSE; cob_est=lrs_estimate (D, Q); Q->printcobasis=saveflag; if(cob_est <= Q->subtreesize) /* stop iterative estimation */ { if(cob_est > 0) /* when zero we are at a leaf */ { lrs_printcobasis(D,Q,ZERO); #ifndef PLRS fprintf(lrs_ofp," cob_est= %ld *subtree",cob_est); #else if (PLRS_DEBUG) { stringstream ss; ss<< "cob_est= " << cob_est << " *subtree" << endl; post_output("debug", ss.str().c_str()); } #endif } backtrack=TRUE; } } else // either not estimating or we are backtracking if (!backtrack && !Q->printcobasis) if(!lrs_leaf(D,Q)) /* 2015.6.5 cobasis returned if not a leaf */ lrs_printcobasis(D,Q,ZERO); backtrack = TRUE; if (Q->maxdepth == 0 && cob_est <= Q->subtreesize) /* root estimate only */ return FALSE; /* no nextbasis */ } // if (D->depth >= Q->maxdepth) /* if ( Q->truncate && negative(D->A[0][0]))*/ /* truncate when moving from opt. vertex */ /* backtrack = TRUE; 2011.7.14 */ if (backtrack) /* go back to prev. dictionary, restore i,j */ { backtrack = FALSE; if (check_cache (D_p, Q, &i, &j)) { if (Q->debug) fprintf (lrs_ofp, "\n Cached Dict. restored to depth %ld\n", D->depth); } else { D->depth--; selectpivot (D, Q, &i, &j); pivot (D, Q, i, j); update (D, Q, &i, &j); /*Update B,C,i,j */ } if (Q->debug) { fprintf (lrs_ofp, "\n Backtrack Pivot: indices i=%ld j=%ld depth=%ld", i, j, D->depth); printA (D, Q); }; j++; /* go to next column */ } /* end of if backtrack */ if (D->depth < Q->mindepth) break; /* try to go down tree */ /* 2011.7.14 patch */ while ((j < d) && (!reverse (D, Q, &i, j) || (Q->truncate && Q->minratio[D->m]==1))) j++; if (j == d ) backtrack = TRUE; else /*reverse pivot found */ { cache_dict (D_p, Q, i, j); /* Note that the next two lines must come _after_ the call to cache_dict */ D->depth++; if (D->depth > Q->deepest) Q->deepest++; pivot (D, Q, i, j); update (D, Q, &i, &j); /*Update B,C,i,j */ D->lexflag = lexmin (D, Q, ZERO); /* see if lexmin basis */ Q->count[2]++; Q->totalnodes++; save_basis (*D_p, Q); if (Q->strace == Q->count[2]) Q->debug = TRUE; if (Q->etrace == Q->count[2]) Q->debug = FALSE; return TRUE; /*return new dictionary */ } } /* end of main while loop for getnextbasis */ return FALSE; /* done, no more bases */ } /*end of lrs_getnextbasis */ /*************************************/ /* print out one line of output file */ /*************************************/ long lrs_getvertex (lrs_dic * P, lrs_dat * Q, lrs_mp_vector output) /*Print out current vertex if it is lexmin and return it in output */ /* return FALSE if no output generated */ { lrs_mp_matrix A = P->A; long i; long ind; /* output index */ long ired; /* counts number of redundant columns */ /* assign local variables to structures */ long *redundcol = Q->redundcol; long *count = Q->count; long *B = P->B; long *Row = P->Row; long lastdv = Q->lastdv; long hull; long lexflag; hull = Q->hull; lexflag = P->lexflag; if (lexflag || Q->allbases) ++(Q->count[1]); #ifdef PLRS // do not print vertex again in PLRS at root if(P->depth == Q->mindepth ){ return FALSE; } #else //If we are at minimum depth and not at root do not print vertex if(P->depth == Q->mindepth && Q->mindepth != 0){ return FALSE; } #endif if (Q->debug) printA (P, Q); linint (Q->sumdet, 1, P->det, 1); if (Q->getvolume) { updatevolume (P, Q); if(Q->verbose) /* this will print out a triangulation */ lrs_printcobasis(P,Q,ZERO); } /*print cobasis if printcobasis=TRUE and count[2] a multiple of frequency */ /* or for lexmin basis, except origin for hull computation - ugly! */ if (Q->printcobasis) if ((lexflag && !hull) || ((Q->frequency > 0) && (count[2] == (count[2] / Q->frequency) * Q->frequency))) if(P->depth != Q->mindepth || Q->mindepth == 0) //Don't print cobasis if this is a restart cobasis lrs_printcobasis(P,Q,ZERO); if (hull) return FALSE; /* skip printing the origin */ if (!lexflag && !Q->allbases && !Q->lponly) /* not lexmin, and not printing forced */ return FALSE; /* copy column 0 to output */ i = 1; ired = 0; copy (output[0], P->det); for (ind = 1; ind < Q->n; ind++) /* extract solution */ if ((ired < Q->nredundcol) && (redundcol[ired] == ind)) /* column was deleted as redundant */ { itomp (ZERO, output[ind]); ired++; } else /* column not deleted as redundant */ { getnextoutput (P, Q, i, ZERO, output[ind]); i++; } reducearray (output, Q->n); if (lexflag && one(output[0])) ++Q->count[4]; /* integer vertex */ /* uncomment to print nonzero basic variables printf("\n nonzero basis: vars"); for(i=1;i<=lastdv; i++) { if ( !zero(A[Row[i]][0]) ) printf(" %ld ",B[i]); } */ /* printslack inequality indices */ if (Q->printslack) { fprintf(lrs_ofp,"\nslack ineq:"); for(i=lastdv+1;i<=P->m; i++) { if (!zero(A[Row[i]][0])) fprintf(lrs_ofp," %ld ", Q->inequality[B[i]-lastdv]); } } return TRUE; } /* end of lrs_getvertex */ long lrs_getray (lrs_dic * P, lrs_dat * Q, long col, long redcol, lrs_mp_vector output) /*Print out solution in col and return it in output */ /*redcol =n for ray/facet 0..n-1 for linearity column */ /*hull=1 implies facets will be recovered */ /* return FALSE if no output generated in column col */ { long i; long ind; /* output index */ long ired; /* counts number of redundant columns */ /* assign local variables to structures */ long *redundcol = Q->redundcol; long *count = Q->count; long hull = Q->hull; long n = Q->n; long *B = P->B; long *Row = P->Row; long lastdv = Q->lastdv; #ifdef PLRS // do not print vertex again in PLRS at root if(P->depth == Q->mindepth ){ return FALSE; } #else //If we are at minimum depth and not at origin do not print ray if(P->depth == Q->mindepth && Q->mindepth != 0){ return FALSE; } #endif if (Q->debug) { printA (P, Q); for (i = 0; i < Q->nredundcol; i++) fprintf (lrs_ofp, " %ld", redundcol[i]); fflush(lrs_ofp); } if (redcol == n) { ++count[0]; if (Q->printcobasis) if(P->depth != Q->mindepth || Q->mindepth == 0) //Don't print cobasis if this is a restart cobasis lrs_printcobasis(P,Q,col); } i = 1; ired = 0; for (ind = 0; ind < n; ind++) /* print solution */ { if (ind == 0 && !hull) /* must have a ray, set first column to zero */ itomp (ZERO, output[0]); else if ((ired < Q->nredundcol) && (redundcol[ired] == ind)) /* column was deleted as redundant */ { if (redcol == ind) /* true for linearity on this cobasic index */ /* we print reduced determinant instead of zero */ copy (output[ind], P->det); else itomp (ZERO, output[ind]); ired++; } else /* column not deleted as redundant */ { getnextoutput (P, Q, i, col, output[ind]); i++; } } reducearray (output, n); /* printslack for rays: 2006.10.10 */ /* printslack inequality indices */ if (Q->printslack) { fprintf(lrs_ofp,"\nslack ineq:"); for(i=lastdv+1;i<=P->m; i++) { if (!zero(P->A[Row[i]][col])) fprintf(lrs_ofp," %ld ", Q->inequality[B[i]-lastdv]); } } return TRUE; } /* end of lrs_getray */ void getnextoutput (lrs_dic * P, lrs_dat * Q, long i, long col, lrs_mp out) /* get A[B[i][col] and copy to out */ { long row; long m = P->m; long d = P->d; long lastdv = Q->lastdv; lrs_mp_matrix A = P->A; long *B = P->B; long *Row = P->Row; long j; if (i == d && Q->voronoi) return; /* skip last column if voronoi set */ row = Row[i]; if (Q->nonnegative) /* if m+i basic get correct value from dictionary */ /* the slack for the inequality m-d+i contains decision */ /* variable x_i. We first see if this is in the basis */ /* otherwise the value of x_i is zero, except for a ray */ /* when it is one (det/det) for the actual column it is in */ { for (j = lastdv+ 1; j <= m; j++) { if ( Q->inequality[B[j]-lastdv] == m-d+i ) { copy (out, A[Row[j]][col]); return; } } /* did not find inequality m-d+i in basis */ if ( i == col ) copy(out,P->det); else itomp(ZERO,out); } else copy (out, A[row][col]); } /* end of getnextoutput */ void lrs_printcobasis (lrs_dic * P, lrs_dat * Q, long col) /* col is output column being printed */ { #ifdef PLRS long i; long rflag;/* used to find inequality number for ray column */ /* assign local variables to structures */ lrs_mp_matrix A = P->A; lrs_mp Nvol, Dvol; /* hold rescaled det of current basis */ long *B = P->B; long *C = P->C; long *Col = P->Col; long *Row = P->Row; long *inequality = Q->inequality; long *temparray = Q->temparray; long *count = Q->count; long hull = Q->hull; long d = P->d; long lastdv = Q->lastdv; long m=P->m; long firstime=TRUE; long nincidence; /* count number of tight inequalities */ //Make new output node char *type = "cobasis"; //Make stream to collect prat / pmp data stringstream ss; lrs_alloc_mp(Nvol); lrs_alloc_mp(Dvol); if (hull) ss<<"F#"<voronoi) ss<<"V#"<incidence ){ if (firstime){ ss<<" :"; firstime = FALSE; } ss<depth); else if (Q->voronoi) fprintf (lrs_ofp, "\nV#%ld R#%ld B#%ld h=%ld data points ", count[1], count[0], count[2], P->depth); else fprintf (lrs_ofp, "\nV#%ld R#%ld B#%ld h=%ld facets ", count[1], count[0], count[2], P->depth); rflag = (-1); for (i = 0; i < d; i++) { temparray[i] = inequality[C[i] - lastdv]; if (Col[i] == col) rflag = temparray[i]; /* look for ray index */ } for (i = 0; i < d; i++) reorder (temparray, d); for (i = 0; i < d; i++) { fprintf (lrs_ofp, " %ld", temparray[i]); if (!(col == ZERO) && (rflag == temparray[i])) /* missing cobasis element for ray */ fprintf (lrs_ofp, "*"); } /* get and print incidence information */ if ( col == 0 ) nincidence = d; else nincidence = d-1; for(i=lastdv+1;i<=m;i++) if ( zero (A[Row[i]][0] )) if( ( col == ZERO ) || zero (A[Row[i]] [col]) ) { nincidence++; if( Q->incidence ) { if (firstime) { fprintf (lrs_ofp," :"); firstime = FALSE; } fprintf(lrs_ofp," %ld",inequality[B[i] - lastdv ] ); } } fprintf(lrs_ofp," I#%ld",nincidence); pmp (" det=", P->det); fflush (lrs_ofp); rescaledet (P, Q, Nvol, Dvol); /* scales determinant in case input rational */ prat(" in_det=",Nvol,Dvol); prat (" z=", P->objnum, P->objden); lrs_clear_mp(Nvol); lrs_clear_mp(Dvol); #endif } /* end of lrs_printcobasis */ /*********************/ /* print final totals */ /*********************/ void lrs_printtotals (lrs_dic * P, lrs_dat * Q) { #ifdef PLRS long *count = Q->count; long *startcount = Q->startcount; std::stringstream ss; //output node number of basis ss.str(""); ss<hull){ //output node for number of facets ss.str(""); ss<Nvolume, Q->Dvolume); ss.str(""); string str1 = prat("",Q->Nvolume,Q->Dvolume); //strip trailing blank introduced by prat //for some reason next line fails for mp library ! 2014.12.3 so no volume is reported! #if (defined(LRSLONG) || defined(GMP)) ss << str1.substr (0,str1.length()-1); #endif post_output("volume", ss.str().c_str()); }else{ //output node for number of vertices ss.str(""); ss<cest; long *count = Q->count; long *inequality = Q->inequality; long *linearity = Q->linearity; long *temparray = Q->temparray; long *C = P->C; long hull = Q->hull; long homogeneous = Q->homogeneous; long nlinearity = Q->nlinearity; long nredundcol = Q->nredundcol; long d, lastdv; d = P->d; lastdv = Q->lastdv; fprintf (lrs_ofp, "\nend"); if (Q->dualdeg) { fprintf (lrs_ofp, "\n*Warning: Starting dictionary is dual degenerate"); fprintf (lrs_ofp, "\n*Complete enumeration may not have been produced"); if (Q->maximize) fprintf(lrs_ofp,"\n*Recommendation: Add dualperturb option before maximize in input file\n"); else fprintf(lrs_ofp,"\n*Recommendation: Add dualperturb option before minimize in input file\n"); } if (Q->unbounded) { fprintf (lrs_ofp, "\n*Warning: Starting dictionary contains rays"); fprintf (lrs_ofp, "\n*Complete enumeration may not have been produced"); if (Q->maximize) fprintf(lrs_ofp,"\n*Recommendation: Change or remove maximize option or add bounds\n"); else fprintf(lrs_ofp,"\n*Recommendation: Change or remove minimize option or add bounds\n"); } if (Q->truncate) fprintf(lrs_ofp,"\n*Tree truncated at each new vertex"); if (Q->maxdepth < MAXD) fprintf (lrs_ofp, "\n*Tree truncated at depth %ld", Q->maxdepth); if (Q->maxoutput > 0L) fprintf (lrs_ofp, "\n*Maximum number of output lines = %ld", Q->maxoutput); #ifdef LRSLONG fprintf (lrs_ofp, "\n*Caution: no overflow checking with long integer arithemtic"); #else if( Q->verbose) { fprintf (lrs_ofp, "\n*Sum of det(B)="); pmp ("", Q->sumdet); } #endif /* next block with volume rescaling must come before estimates are printed */ if (Q->getvolume) { rescalevolume (P, Q, Q->Nvolume, Q->Dvolume); if (Q->polytope) prat ("\n*Volume=", Q->Nvolume, Q->Dvolume); else prat ("\n*Pseudovolume=", Q->Nvolume, Q->Dvolume); } if (hull) /* output things that are specific to hull computation */ { fprintf (lrs_ofp, "\n*Totals: facets=%ld bases=%ld", count[0], count[2]); if (nredundcol > homogeneous) /* don't count column 1 as redundant if homogeneous */ { fprintf (lrs_ofp, " linearities=%ld", nredundcol - homogeneous); fprintf (lrs_ofp, " facets+linearities=%ld",nredundcol-homogeneous+count[0]); } if(lrs_ofp != stdout) { printf ("\n*Totals: facets=%ld bases=%ld", count[0], count[2]); if (nredundcol > homogeneous) /* don't count column 1 as redundant if homogeneous */ { printf (" linearities=%ld", nredundcol - homogeneous); printf (" facets+linearities=%ld",nredundcol-homogeneous+count[0]); } } if ((cest[2] > 0) || (cest[0] > 0)) { fprintf (lrs_ofp, "\n*Estimates: facets=%.0f bases=%.0f", count[0] + cest[0], count[2] + cest[2]); if (Q->getvolume) { rattodouble (Q->Nvolume, Q->Dvolume, &x); for (i = 2; i < d; i++) cest[3] = cest[3] / i; /*adjust for dimension */ fprintf (lrs_ofp, " volume=%g", cest[3] + x); } fprintf (lrs_ofp, "\n*Total number of tree nodes evaluated: %ld", Q->totalnodes); #ifdef TIMES fprintf (lrs_ofp, "\n*Estimated total running time=%.1f secs ",(count[2]+cest[2])/Q->totalnodes*get_time () ); #endif } /* Should not happen since we homogenize */ /* if ( Q-> restart || Q->allbases || (count[0] > 1 && !Q->homogeneous && !Q->polytope)) fprintf (lrs_ofp, "\n*Note! Duplicate facets may be present"); */ } else /* output things specific to vertex/ray computation */ { fprintf (lrs_ofp, "\n*Totals: vertices=%ld rays=%ld bases=%ld", count[1], count[0], count[2]); fprintf (lrs_ofp, " integer_vertices=%ld ",count[4]); if (nredundcol > 0) fprintf (lrs_ofp, " linearities=%ld", nredundcol); if ( count[0] + nredundcol > 0 ) { fprintf (lrs_ofp, " vertices+rays"); if ( nredundcol > 0 ) fprintf (lrs_ofp, "+linearities"); fprintf (lrs_ofp, "=%ld",nredundcol+count[0]+count[1]); } if(lrs_ofp != stdout) { printf ("\n*Totals: vertices=%ld rays=%ld bases=%ld", count[1], count[0], count[2]); printf (" integer_vertices=%ld ",count[4]); if (nredundcol > 0) printf (" linearities=%ld", nredundcol); if ( count[0] + nredundcol > 0 ) { printf (" vertices+rays"); if ( nredundcol > 0 ) printf ("+linearities"); printf ("=%ld",nredundcol+count[0]+count[1]); } } /* end lrs_ofp != stdout */ if ((cest[2] > 0) || (cest[0] > 0)) { fprintf (lrs_ofp, "\n*Estimates: vertices=%.0f rays=%.0f", count[1]+cest[1], count[0]+cest[0]); fprintf (lrs_ofp, " bases=%.0f integer_vertices=%.0f ",count[2]+cest[2], count[4]+cest[4]); if (Q->getvolume) { rattodouble (Q->Nvolume, Q->Dvolume, &x); for (i = 2; i <= d-homogeneous; i++) cest[3] = cest[3] / i; /*adjust for dimension */ fprintf (lrs_ofp, " pseudovolume=%g", cest[3] + x); } fprintf (lrs_ofp, "\n*Total number of tree nodes evaluated: %ld", Q->totalnodes); #ifdef TIMES fprintf (lrs_ofp, "\n*Estimated total running time=%.1f secs ",(count[2]+cest[2])/Q->totalnodes*get_time () ); #endif } if (Q->restart || Q->allbases) /* print warning */ fprintf (lrs_ofp, "\n*Note! Duplicate vertices/rays may be present"); else if ( (count[0] > 1 && !Q->homogeneous)) fprintf (lrs_ofp, "\n*Note! Duplicate rays may be present"); } /* end of output for vertices/rays */ fprintf (lrs_ofp, "\n*Dictionary Cache: max size= %ld misses= %ld/%ld Tree Depth= %ld", dict_count, cache_misses, cache_tries, Q->deepest); if(lrs_ofp != stdout) printf ("\n*Dictionary Cache: max size= %ld misses= %ld/%ld Tree Depth= %ld", dict_count, cache_misses, cache_tries, Q->deepest); if(!Q->verbose) return; fprintf (lrs_ofp, "\n*Input size m=%ld rows n=%ld columns", P->m, Q->n); if (hull) fprintf (lrs_ofp, " working dimension=%ld", d - 1 + homogeneous); else fprintf (lrs_ofp, " working dimension=%ld", d); fprintf (lrs_ofp, "\n*Starting cobasis defined by input rows"); for (i = 0; i < nlinearity; i++) temparray[i] = linearity[i]; for (i = nlinearity; i < lastdv; i++) temparray[i] = inequality[C[i - nlinearity] - lastdv]; for (i = 0; i < lastdv; i++) reorder (temparray, lastdv); for (i = 0; i < lastdv; i++) fprintf (lrs_ofp, " %ld", temparray[i]); #endif } /* end of lrs_printtotals */ /************************/ /* Estimation function */ /************************/ long lrs_estimate (lrs_dic * P, lrs_dat * Q) /*returns estimate of subtree size (no. cobases) from current node */ /*current node is not counted. */ /*cest[0]rays [1]vertices [2]bases [3]volume */ /* [4] integer vertices */ { lrs_mp_vector output; /* holds one line of output; ray,vertex,facet,linearity */ lrs_mp Nvol, Dvol; /* hold volume of current basis */ long estdepth = 0; /* depth of basis/vertex in subtree for estimate */ long i = 0, j = 0, k, nchild, runcount, col; double prod = 0.0; double cave[] = {0.0, 0.0, 0.0, 0.0, 0.0}; double nvertices, nbases, nrays, nvol, nivertices; long rays = 0; double newvol = 0.0; /* assign local variables to structures */ lrs_mp_matrix A = P->A; long *isave = Q->isave; long *jsave = Q->jsave; double *cest = Q->cest; long d = P->d; lrs_alloc_mp(Nvol); lrs_alloc_mp(Dvol); /* Main Loop of Estimator */ output = lrs_alloc_mp_vector (Q->n); /* output holds one line of output from dictionary */ for (runcount = 1; runcount <= Q->runs; runcount++) { /* runcount counts number of random probes */ j = 0; nchild = 1; prod = 1; nvertices = 0.0; nbases = 0.0; nrays = 0.0; nvol = 0.0; nivertices =0.0; while (nchild != 0) /* while not finished yet */ { nchild = 0; while (j < d) { if (reverse (P, Q, &i, j)) { isave[nchild] = i; jsave[nchild] = j; nchild++; } j++; } if (estdepth == 0 && nchild == 0) { cest[0] = cest[0] + rays; /* may be some rays here */ lrs_clear_mp(Nvol); lrs_clear_mp(Dvol); lrs_clear_mp_vector(output, Q->n); return(0L); /*subtree is a leaf */ } prod = prod * nchild; nbases = nbases + prod; if (Q->debug) { fprintf (lrs_ofp, " degree= %ld ", nchild); fprintf (lrs_ofp, "\nPossible reverse pivots: i,j="); for (k = 0; k < nchild; k++) fprintf (lrs_ofp, "%ld,%ld ", isave[k], jsave[k]); } if (nchild > 0) /*reverse pivot found choose random child */ { k = myrandom (Q->seed, nchild); Q->seed = myrandom (Q->seed, 977L); i = isave[k]; j = jsave[k]; if (Q->debug) fprintf (lrs_ofp, " selected pivot k=%ld seed=%ld ", k, Q->seed); estdepth++; Q->totalnodes++; /* calculate total number of nodes evaluated */ pivot (P, Q, i, j); update (P, Q, &i, &j); /*Update B,C,i,j */ if (lexmin (P, Q, ZERO)) /* see if lexmin basis for vertex */ { nvertices = nvertices + prod; /* integer vertex estimate */ if( lrs_getvertex(P,Q,output)) { --Q->count[1]; if (one(output[0] )) { --Q->count[4]; nivertices = nivertices + prod; } } } rays = 0; for (col = 1; col <= d; col++) if (negative (A[0][col]) && (lrs_ratio (P, Q, col) == 0) && lexmin (P, Q, col)) rays++; nrays = nrays + prod * rays; /* update ray info */ if (Q->getvolume) { rescaledet (P, Q, Nvol, Dvol); /* scales determinant in case input rational */ rattodouble (Nvol, Dvol, &newvol); nvol = nvol + newvol * prod; /* adjusts volume for degree */ } j = 0; } } cave[0] = cave[0] + nrays; cave[1] = cave[1] + nvertices; cave[2] = cave[2] + nbases; cave[3] = cave[3] + nvol; cave[4] = cave[4] + nivertices; /* backtrack to root and do it again */ while (estdepth > 0) { estdepth = estdepth - 1; selectpivot (P, Q, &i, &j); pivot (P, Q, i, j); update (P, Q, &i, &j); /*Update B,C,i,j */ /*fprintf(lrs_ofp,"\n0 +++"); */ if (Q->debug) { fprintf (lrs_ofp, "\n Backtrack Pivot: indices i,j %ld %ld ", i, j); printA (P, Q); } j++; } } /* end of for loop on runcount */ j=(long) cave[2]/Q->runs; //2015.2.9 Do not update totals if we do iterative estimating and subtree is too big if(Q->subtreesize == 0 || j <= Q->subtreesize ) for (i = 0; i < 5; i++) cest[i] = cave[i] / Q->runs + cest[i]; lrs_clear_mp(Nvol); lrs_clear_mp(Dvol); lrs_clear_mp_vector(output, Q->n); return(j); } /* end of lrs_estimate */ /*********************************/ /* Internal functions */ /*********************************/ /* Basic Dictionary functions */ /******************************* */ long reverse (lrs_dic * P, lrs_dat * Q, long *r, long s) /* find reverse indices */ /* TRUE if B[*r] C[s] is a reverse lexicographic pivot */ { long i, j, enter, row, col; /* assign local variables to structures */ lrs_mp_matrix A = P->A; long *B = P->B; long *C = P->C; long *Row = P->Row; long *Col = P->Col; long d = P->d; enter = C[s]; col = Col[s]; if (Q->debug) { fprintf (lrs_ofp, "\n+reverse: col index %ld C %ld Col %ld ", s, enter, col); fflush (lrs_ofp); } if (!negative (A[0][col])) { if (Q->debug) fprintf (lrs_ofp, " Pos/Zero Cost Coeff"); Q->minratio[P->m]=0; /* 2011.7.14 */ return (FALSE); } *r = lrs_ratio (P, Q, col); if (*r == 0) /* we have a ray */ { if (Q->debug) fprintf (lrs_ofp, " Pivot col non-negative: ray found"); Q->minratio[P->m]=0; /* 2011.7.14 */ return (FALSE); } row = Row[*r]; /* check cost row after "pivot" for smaller leaving index */ /* ie. j s.t. A[0][j]*A[row][col] < A[0][col]*A[row][j] */ /* note both A[row][col] and A[0][col] are negative */ for (i = 0; i < d && C[i] < B[*r]; i++) if (i != s) { j = Col[i]; if (positive (A[0][j]) || negative (A[row][j])) /*or else sign test fails trivially */ if ((!negative (A[0][j]) && !positive (A[row][j])) || comprod (A[0][j], A[row][col], A[0][col], A[row][j]) == -1) { /*+ve cost found */ if (Q->debug) { fprintf (lrs_ofp, "\nPositive cost found: index %ld C %ld Col %ld", i, C[i], j); fflush(lrs_ofp); } Q->minratio[P->m]=0; /* 2011.7.14 */ return (FALSE); } } if (Q->debug) { fprintf (lrs_ofp, "\n+end of reverse : indices r %ld s %ld \n", *r, s); fflush (stdout); } return (TRUE); } /* end of reverse */ long selectpivot (lrs_dic * P, lrs_dat * Q, long *r, long *s) /* select pivot indices using lexicographic rule */ /* returns TRUE if pivot found else FALSE */ /* pivot variables are B[*r] C[*s] in locations Row[*r] Col[*s] */ { long j, col; /* assign local variables to structures */ lrs_mp_matrix A = P->A; long *Col = P->Col; long d = P->d; *r = 0; *s = d; j = 0; /*find positive cost coef */ while ((j < d) && (!positive (A[0][Col[j]]))) j++; if (j < d) /* pivot column found! */ { *s = j; col = Col[j]; /*find min index ratio */ *r = lrs_ratio (P, Q, col); if (*r != 0) return (TRUE); /* unbounded */ } return (FALSE); } /* end of selectpivot */ /******************************************************* */ void pivot (lrs_dic * P, lrs_dat * Q, long bas, long cob) /* Qpivot routine for array A */ /* indices bas, cob are for Basis B and CoBasis C */ /* corresponding to row Row[bas] and column */ /* Col[cob] respectively */ { long r, s; long i, j; lrs_mp Ns, Nt, Ars; /* assign local variables to structures */ lrs_mp_matrix A = P->A; long *B = P->B; long *C = P->C; long *Row = P->Row; long *Col = P->Col; long d, m_A; lrs_alloc_mp(Ns); lrs_alloc_mp(Nt); lrs_alloc_mp(Ars); d = P->d; m_A = P->m_A; Q->count[3]++; /* count the pivot */ r = Row[bas]; s = Col[cob]; /* Ars=A[r][s] */ if (Q->debug) { fprintf (lrs_ofp, "\n pivot B[%ld]=%ld C[%ld]=%ld ", bas, B[bas], cob, C[cob]); printA(P,Q); fflush (stdout); } copy (Ars, A[r][s]); storesign (P->det, sign (Ars)); /*adjust determinant to new sign */ for (i = 0; i <= m_A; i++) if (i != r) for (j = 0; j <= d; j++) if (j != s) { /* A[i][j]=(A[i][j]*Ars-A[i][s]*A[r][j])/P->det; */ mulint (A[i][j], Ars, Nt); mulint (A[i][s], A[r][j], Ns); decint (Nt, Ns); exactdivint (Nt, P->det, A[i][j]); } /* end if j .... */ if (sign (Ars) == POS) { for (j = 0; j <= d; j++) /* no need to change sign if Ars neg */ /* A[r][j]=-A[r][j]; */ if (!zero (A[r][j])) changesign (A[r][j]); } /* watch out for above "if" when removing this "}" ! */ else for (i = 0; i <= m_A; i++) if (!zero (A[i][s])) changesign (A[i][s]); /* A[r][s]=P->det; */ copy (A[r][s], P->det); /* restore old determinant */ copy (P->det, Ars); storesign (P->det, POS); /* always keep positive determinant */ if (Q->debug) { fprintf (lrs_ofp, " depth=%ld ", P->depth); pmp ("det=", P->det); fflush(stdout); } /* set the new rescaled objective function value */ mulint (P->det, Q->Lcm[0], P->objden); mulint (Q->Gcd[0], A[0][0], P->objnum); if (!Q->maximize) changesign (P->objnum); if (zero (P->objnum)) storesign (P->objnum, POS); else reduce (P->objnum,P->objden); lrs_clear_mp(Ns); lrs_clear_mp(Nt); lrs_clear_mp(Ars); } /* end of pivot */ long primalfeasible (lrs_dic * P, lrs_dat * Q) /* Do dual pivots to get primal feasibility */ /* Note that cost row is all zero, so no ratio test needed for Dual Bland's rule */ { long primalinfeasible = TRUE; long i, j; /* assign local variables to structures */ lrs_mp_matrix A = P->A; long *Row = P->Row; long *Col = P->Col; long m, d, lastdv; m = P->m; d = P->d; lastdv = Q->lastdv; /*temporary: try to get new start after linearity */ while (primalinfeasible) { i=lastdv+1; while (i <= m && !negative (A[Row[i]][0]) ) i++; if (i <= m ) { j = 0; /*find a positive entry for in row */ while (j < d && !positive (A[Row[i]][Col[j]])) j++; if (j >= d) return (FALSE); /* no positive entry */ pivot (P, Q, i, j); update (P, Q, &i, &j); } else primalinfeasible = FALSE; } /* end of while primalinfeasibile */ return (TRUE); } /* end of primalfeasible */ long lrs_solvelp (lrs_dic * P, lrs_dat * Q, long maximize) /* Solve primal feasible lp by Dantzig`s rule and lexicographic ratio test */ /* return TRUE if bounded, FALSE if unbounded */ { long i, j; /* assign local variables to structures */ long d = P->d; while (dan_selectpivot (P, Q, &i, &j)) { Q->count[3]++; pivot (P, Q, i, j); update (P, Q, &i, &j); /*Update B,C,i,j */ } if (Q->debug) printA (P, Q); if (j < d && i == 0) /* selectpivot gives information on unbounded solution */ { #ifndef LRS_QUIET if (Q->lponly) fprintf (lrs_ofp, "\n*Unbounded solution"); #endif return FALSE; } return TRUE; } /* end of lrs_solvelp */ long getabasis (lrs_dic * P, lrs_dat * Q, long order[]) /* Pivot Ax<=b to standard form */ /*Try to find a starting basis by pivoting in the variables x[1]..x[d] */ /*If there are any input linearities, these appear first in order[] */ /* Steps: (a) Try to pivot out basic variables using order */ /* Stop if some linearity cannot be made to leave basis */ /* (b) Permanently remove the cobasic indices of linearities */ /* (c) If some decision variable cobasic, it is a linearity, */ /* and will be removed. */ { long i, j, k; /* assign local variables to structures */ lrs_mp_matrix A = P->A; long *B = P->B; long *C = P->C; long *Row = P->Row; long *Col = P->Col; long *linearity = Q->linearity; long *redundcol = Q->redundcol; long m, d, nlinearity; long nredundcol = 0L; /* will be calculated here */ m = P->m; d = P->d; nlinearity = Q->nlinearity; if (Q->debug) { fprintf (lrs_ofp, "\ngetabasis from inequalities given in order"); for (i = 0l; i < m; i++) fprintf (lrs_ofp, " %ld", order[i]); } for (j = 0l; j < m; j++) { i = 0l; while (i <= m && B[i] != d + order[j]) i++; /* find leaving basis index i */ if (j < nlinearity && i > m) /* cannot pivot linearity to cobasis */ { if (Q->debug) printA (P, Q); #ifndef LRS_QUIET fprintf (lrs_ofp, "\nCannot find linearity in the basis"); #endif return FALSE; } if (i <= m) { /* try to do a pivot */ k = 0l; while (C[k] <= d && zero (A[Row[i]][Col[k]])){ k++; } if (C[k] <= d) { pivot (P, Q, i, k); update (P, Q, &i, &k); } else if (j < nlinearity) { /* cannot pivot linearity to cobasis */ if (zero (A[Row[i]][0])) { #ifndef LRS_QUIET fprintf (lrs_ofp, "\n*Input linearity in row %ld is redundant--converted to inequality", order[j]); #endif linearity[j]=0l; } else { if (Q->debug) printA (P, Q); #ifndef LRS_QUIET fprintf (lrs_ofp, "\n*Input linearity in row %ld is inconsistent with earlier linearities", order[j]); fprintf (lrs_ofp, "\n*No feasible solution"); #endif return FALSE; } } } } /* update linearity array to get rid of redundancies */ i = 0; k = 0; /* counters for linearities */ while (k < nlinearity) { while (k < nlinearity && linearity[k] == 0) k++; if (k < nlinearity) linearity[i++] = linearity[k++]; } nlinearity = i; /* bug fix, 2009.6.27 */ Q->nlinearity = i; /* column dependencies now can be recorded */ /* redundcol contains input column number 0..n-1 where redundancy is */ k = 0; while (k < d && C[k] <= d) { if (C[k] <= d){ /* decision variable still in cobasis */ redundcol[nredundcol++] = C[k] - Q->hull; /* adjust for hull indices */ } k++; } /* now we know how many decision variables remain in problem */ Q->nredundcol = nredundcol; Q->lastdv = d - nredundcol; if (Q->debug) { fprintf (lrs_ofp, "\nend of first phase of getabasis: "); fprintf (lrs_ofp, "lastdv=%ld nredundcol=%ld", Q->lastdv, Q->nredundcol); fprintf (lrs_ofp, "\nredundant cobases:"); for (i = 0; i < nredundcol; i++) fprintf (lrs_ofp, " %ld", redundcol[i]); printA (P, Q); } /* Remove linearities from cobasis for rest of computation */ /* This is done in order so indexing is not screwed up */ for (i = 0; i < nlinearity; i++) { /* find cobasic index */ k = 0; while (k < d && C[k] != linearity[i] + d) k++; if (k >= d) { fprintf (lrs_ofp, "\nError removing linearity"); return FALSE; } if (!removecobasicindex (P, Q, k)) return FALSE; d = P->d; } if (Q->debug && nlinearity > 0) printA (P, Q); /* set index value for first slack variable */ /* Check feasability */ if (Q->givenstart) { i = Q->lastdv + 1; while (i <= m && !negative (A[Row[i]][0])) i++; if (i <= m) fprintf (lrs_ofp, "\n*Infeasible startingcobasis - will be modified"); } return TRUE; } /* end of getabasis */ long removecobasicindex (lrs_dic * P, lrs_dat * Q, long k) /* remove the variable C[k] from the problem */ /* used after detecting column dependency */ { long i, j, cindex, deloc; /* assign local variables to structures */ lrs_mp_matrix A = P->A; long *B = P->B; long *C = P->C; long *Col = P->Col; long m, d; m = P->m; d = P->d; if (Q->debug) fprintf (lrs_ofp, "\nremoving cobasic index k=%ld C[k]=%ld", k, C[k]); cindex = C[k]; /* cobasic index to remove */ deloc = Col[k]; /* matrix column location to remove */ for (i = 1; i <= m; i++) /* reduce basic indices by 1 after index */ if (B[i] > cindex) B[i]--; for (j = k; j < d; j++) /* move down other cobasic variables */ { C[j] = C[j + 1] - 1; /* cobasic index reduced by 1 */ Col[j] = Col[j + 1]; } if (deloc != d) { /* copy col d to deloc */ for (i = 0; i <= m; i++) copy (A[i][deloc], A[i][d]); /* reassign location for moved column */ j = 0; while (Col[j] != d) j++; Col[j] = deloc; } P->d--; if (Q->debug) printA (P, Q); return TRUE; } /* end of removecobasicindex */ lrs_dic * resize (lrs_dic * P, lrs_dat * Q) /* resize the dictionary after some columns are deleted, ie. inputd>d */ /* a new lrs_dic record is created with reduced size, and items copied over */ { lrs_dic *P1; /* to hold new dictionary in case of resizing */ long i, j; long m, d, m_A; m = P->m; d = P->d; m_A = P->m_A; /* get new dictionary record */ P1 = new_lrs_dic (m, d, m_A); /* copy data from P to P1 */ P1->i = P->i; P1->j = P->j; P1->depth = P->depth; P1->m = P->m; P1->d = P1->d_orig = d; P1->lexflag = P->lexflag; P1->m_A = P->m_A; copy (P1->det, P->det); copy (P1->objnum, P->objnum); copy (P1->objden, P->objden); for (i = 0; i <= m; i++) { P1->B[i] = P->B[i]; P1->Row[i] = P->Row[i]; } for (i = 0; i <= m_A; i++) { for (j = 0; j <= d; j++) copy (P1->A[i][j], P->A[i][j]); } for (j = 0; j <= d; j++) { P1->Col[j] = P->Col[j]; P1->C[j] = P->C[j]; } if (Q->debug) { fprintf (lrs_ofp, "\nDictionary resized from d=%ld to d=%ld", Q->inputd, P->d); printA (P1, Q); } lrs_free_dic (P,Q); /* Reassign cache pointers */ Q->Qhead = P1; Q->Qtail = P1; P1->next = P1; P1->prev = P1; return P1; } /********* resize ***************/ long restartpivots (lrs_dic * P, lrs_dat * Q) /* facet contains a list of the inequalities in the cobasis for the restart */ /* inequality contains the relabelled inequalities after initialization */ { long i, j, k; long *Cobasic; /* when restarting, Cobasic[j]=1 if j is in cobasis */ /* assign local variables to structures */ lrs_mp_matrix A = P->A; long *B = P->B; long *C = P->C; long *Row = P->Row; long *Col = P->Col; long *inequality = Q->inequality; long *facet = Q->facet; long nlinearity = Q->nlinearity; long m, d, lastdv; m = P->m; d = P->d; lastdv = Q->lastdv; Cobasic = (long *) CALLOC ((unsigned) m + d + 2, sizeof (long)); if (Q->debug) fprintf(lrs_ofp,"\nCobasic flags in restartpivots"); /* set Cobasic flags */ for (i = 0; i < m + d + 1; i++) Cobasic[i] = 0; for (i = 0; i < d; i++) /* find index corresponding to facet[i] */ { j = 1; while (facet[i + nlinearity] != inequality[j]) j++; Cobasic[j + lastdv] = 1; if (Q->debug) fprintf(lrs_ofp," %ld %ld;",facet[i+nlinearity],j+lastdv); } /* Note that the order of doing the pivots is important, as */ /* the B and C vectors are reordered after each pivot */ /* code below replaced 2006.10.30 */ /* for (i = m; i >= d + 1; i--) if (Cobasic[B[i]]) { k = d - 1; while ((k >= 0) && (zero (A[Row[i]][Col[k]]) || Cobasic[C[k]])) k--; if (k >= 0) { pivot (P, Q, i, k); update (P, Q, &i, &k); } else { fprintf (lrs_ofp, "\nInvalid Co-basis - does not have correct rank"); free(Cobasic); return FALSE; } } */ /*end of code that was replaced */ /* Suggested new code from db starts */ i=m; while (i>d){ while(Cobasic[B[i]]){ k = d - 1; while ((k >= 0) && (zero (A[Row[i]][Col[k]]) || Cobasic[C[k]])){ k--; } if (k >= 0) { /*db asks: should i really be modified here? (see old code) */ /*da replies: modifying i only makes is larger, and so */ /*the second while loop will put it back where it was */ /*faster (and safer) as done below */ long ii=i; pivot (P, Q, ii, k); update (P, Q, &ii, &k); } else { fprintf (lrs_ofp, "\nInvalid Co-basis - does not have correct rank"); free(Cobasic); return FALSE; } } i--; } /* Suggested new code from db ends */ if (lexmin (P, Q, ZERO)) --Q->count[1]; /* decrement vertex count if lexmin */ /* check restarting from a primal feasible dictionary */ for (i = lastdv + 1; i <= m; i++) if (negative (A[Row[i]][0])) { fprintf (lrs_ofp, "\nTrying to restart from infeasible dictionary"); free(Cobasic); return FALSE; } free(Cobasic); return TRUE; } /* end of restartpivots */ long lrs_ratio (lrs_dic * P, lrs_dat * Q, long col) /*find lex min. ratio */ /* find min index ratio -aig/ais, ais<0 */ /* if multiple, checks successive basis columns */ /* recoded Dec 1997 */ { long i, j, comp, ratiocol, basicindex, start, nstart, cindex, bindex; long firstime; /*For ratio test, true on first pass,else false */ lrs_mp Nmin, Dmin; long degencount, ndegencount; /* assign local variables to structures */ lrs_mp_matrix A = P->A; long *B = P->B; long *Row = P->Row; long *Col = P->Col; long *minratio = Q->minratio; long m, d, lastdv; m = P->m; d = P->d; lastdv = Q->lastdv; nstart=0; ndegencount=0; degencount = 0; minratio[P->m]=1; /*2011.7.14 non-degenerate pivot flag */ for (j = lastdv + 1; j <= m; j++) { /* search rows with negative coefficient in dictionary */ /* minratio contains indices of min ratio cols */ if (negative (A[Row[j]][col])) { minratio[degencount++] = j; if(zero (A[Row[j]][0])) minratio[P->m]=0; /*2011.7.14 degenerate pivot flag */ } } /* end of for loop */ if (Q->debug) { fprintf (lrs_ofp, " Min ratios: "); for (i = 0; i < degencount; i++) fprintf (lrs_ofp, " %ld ", B[minratio[i]]); } if (degencount == 0) return (degencount); /* non-negative pivot column */ lrs_alloc_mp(Nmin); lrs_alloc_mp(Dmin); ratiocol = 0; /* column being checked, initially rhs */ start = 0; /* starting location in minratio array */ bindex = d + 1; /* index of next basic variable to consider */ cindex = 0; /* index of next cobasic variable to consider */ basicindex = d; /* index of basis inverse for current ratio test, except d=rhs test */ while (degencount > 1) /*keep going until unique min ratio found */ { if (B[bindex] == basicindex) /* identity col in basis inverse */ { if (minratio[start] == bindex) /* remove this index, all others stay */ { start++; degencount--; } bindex++; } else /* perform ratio test on rhs or column of basis inverse */ { firstime = TRUE; /*get next ratio column and increment cindex */ if (basicindex != d) ratiocol = Col[cindex++]; for (j = start; j < start + degencount; j++) { i = Row[minratio[j]]; /* i is the row location of the next basic variable */ comp = 1; /* 1: lhs>rhs; 0:lhs=rhs; -1: lhsdebug) { fprintf (lrs_ofp, " ratiocol=%ld degencount=%ld ", ratiocol, degencount); fprintf (lrs_ofp, " Min ratios: "); for (i = start; i < start + degencount; i++) fprintf (lrs_ofp, " %ld ", B[minratio[i]]); } } /*end of while loop */ lrs_clear_mp(Nmin); lrs_clear_mp(Dmin); return (minratio[start]); } /* end of ratio */ long lexmin (lrs_dic * P, lrs_dat * Q, long col) /*test if basis is lex-min for vertex or ray, if so TRUE */ /* FALSE if a_r,g=0, a_rs !=0, r > s */ { /*do lexmin test for vertex if col=0, otherwise for ray */ long r, s, i, j; /* assign local variables to structures */ lrs_mp_matrix A = P->A; long *B = P->B; long *C = P->C; long *Row = P->Row; long *Col = P->Col; long m = P->m; long d = P->d; for (i = Q->lastdv + 1; i <= m; i++) { r = Row[i]; if (zero (A[r][col])) /* necessary for lexmin to fail */ for (j = 0; j < d; j++) { s = Col[j]; if (B[i] > C[j]) /* possible pivot to reduce basis */ { if (zero (A[r][0])) /* no need for ratio test, any pivot feasible */ { if (!zero (A[r][s])) return (FALSE); } else if (negative (A[r][s]) && ismin (P, Q, r, s)) { return (FALSE); } } /* end of if B[i] ... */ } } if ((col != ZERO) && Q->debug) { fprintf (lrs_ofp, "\n lexmin ray in col=%ld ", col); printA (P, Q); } return (TRUE); } /* end of lexmin */ long ismin (lrs_dic * P, lrs_dat * Q, long r, long s) /*test if A[r][s] is a min ratio for col s */ { long i; /* assign local variables to structures */ lrs_mp_matrix A = P->A; long m_A = P->m_A; for (i = 1; i <= m_A; i++) if ((i != r) && negative (A[i][s]) && comprod (A[i][0], A[r][s], A[i][s], A[r][0])) { return (FALSE); } return (TRUE); } void update (lrs_dic * P, lrs_dat * Q, long *i, long *j) /*update the B,C arrays after a pivot */ /* involving B[bas] and C[cob] */ { long leave, enter; /* assign local variables to structures */ long *B = P->B; long *C = P->C; long *Row = P->Row; long *Col = P->Col; long m = P->m; long d = P->d; leave = B[*i]; enter = C[*j]; B[*i] = enter; reorder1 (B, Row, *i, m + 1); C[*j] = leave; reorder1 (C, Col, *j, d); /* restore i and j to new positions in basis */ for (*i = 1; B[*i] != enter; (*i)++); /*Find basis index */ for (*j = 0; C[*j] != leave; (*j)++); /*Find co-basis index */ } /* end of update */ long lrs_degenerate (lrs_dic * P, lrs_dat * Q) /* TRUE if the current dictionary is primal degenerate */ /* not thoroughly tested 2000/02/15 */ { long i; long *Row; lrs_mp_matrix A = P->A; long d = P->d; long m = P->m; Row = P->Row; for (i = d + 1; i <= m; i++) if (zero (A[Row[i]][0])) return TRUE; return FALSE; } /*********************************************************/ /* Miscellaneous */ /******************************************************* */ void reorder (long a[], long range) /*reorder array in increasing order with one misplaced element */ { long i, temp; for (i = 0; i < range - 1; i++) if (a[i] > a[i + 1]) { temp = a[i]; a[i] = a[i + 1]; a[i + 1] = temp; } for (i = range - 2; i >= 0; i--) if (a[i] > a[i + 1]) { temp = a[i]; a[i] = a[i + 1]; a[i + 1] = temp; } } /* end of reorder */ void reorder1 (long a[], long b[], long newone, long range) /*reorder array a in increasing order with one misplaced element at index newone */ /*elements of array b are updated to stay aligned with a */ { long temp; while (newone > 0 && a[newone] < a[newone - 1]) { temp = a[newone]; a[newone] = a[newone - 1]; a[newone - 1] = temp; temp = b[newone]; b[newone] = b[newone - 1]; b[--newone] = temp; } while (newone < range - 1 && a[newone] > a[newone + 1]) { temp = a[newone]; a[newone] = a[newone + 1]; a[newone + 1] = temp; temp = b[newone]; b[newone] = b[newone + 1]; b[++newone] = temp; } } /* end of reorder1 */ void rescaledet (lrs_dic * P, lrs_dat * Q, lrs_mp Vnum, lrs_mp Vden) /* rescale determinant to get its volume */ /* Vnum/Vden is volume of current basis */ { lrs_mp gcdprod; /* to hold scale factors */ long i; /* assign local variables to structures */ long *B = P->B; long *C = P->C; long m, d, lastdv; lrs_alloc_mp(gcdprod); m = P->m; d = P->d; lastdv = Q->lastdv; itomp (ONE, gcdprod); itomp (ONE, Vden); for (i = 0; i < d; i++) if (B[i] <= m) { mulint (Q->Gcd[Q->inequality[C[i] - lastdv]], gcdprod, gcdprod); mulint (Q->Lcm[Q->inequality[C[i] - lastdv]], Vden, Vden); } mulint (P->det, gcdprod, Vnum); reduce (Vnum, Vden); lrs_clear_mp(gcdprod); } /* end rescaledet */ void rescalevolume (lrs_dic * P, lrs_dat * Q, lrs_mp Vnum, lrs_mp Vden) /* adjust volume for dimension */ { lrs_mp temp, dfactorial; /* assign local variables to structures */ long lastdv = Q->lastdv; lrs_alloc_mp(temp); lrs_alloc_mp(dfactorial); /*reduce Vnum by d factorial */ getfactorial (dfactorial, lastdv); mulint (dfactorial, Vden, Vden); if (Q->hull && !Q->homogeneous) { /* For hull option multiply by d to correct for lifting */ itomp (lastdv, temp); mulint (temp, Vnum, Vnum); } reduce (Vnum, Vden); lrs_clear_mp(temp); lrs_clear_mp(dfactorial); } void updatevolume (lrs_dic * P, lrs_dat * Q) /* rescale determinant and update the volume */ { lrs_mp tN, tD, Vnum, Vden; lrs_alloc_mp(tN); lrs_alloc_mp(tD); lrs_alloc_mp(Vnum); lrs_alloc_mp(Vden); rescaledet (P, Q, Vnum, Vden); copy (tN, Q->Nvolume); copy (tD, Q->Dvolume); linrat (tN, tD, ONE, Vnum, Vden, ONE, Q->Nvolume, Q->Dvolume); if (Q->debug) { prat ("\n*Volume=", Q->Nvolume, Q->Dvolume); pmp (" Vnum=", Vnum); pmp (" Vden=", Vden); } lrs_clear_mp(tN); lrs_clear_mp(tD); lrs_clear_mp(Vnum); lrs_clear_mp(Vden); } /* end of updatevolume */ /***************************************************/ /* Routines for redundancy checking */ /***************************************************/ long checkredund (lrs_dic * P, lrs_dat * Q) /* Solve primal feasible lp by least subscript and lex min basis method */ /* to check redundancy of a row in objective function */ /* returns TRUE if redundant, else FALSE */ { lrs_mp Ns, Nt; long i, j; long r, s; /* assign local variables to structures */ lrs_mp_matrix A = P->A; long *Row, *Col; long d = P->d; lrs_alloc_mp(Ns); lrs_alloc_mp(Nt); Row = P->Row; Col = P->Col; while (selectpivot (P, Q, &i, &j)) { Q->count[2]++; /* sign of new value of A[0][0] */ /* is A[0][s]*A[r][0]-A[0][0]*A[r][s] */ r = Row[i]; s = Col[j]; mulint (A[0][s], A[r][0], Ns); mulint (A[0][0], A[r][s], Nt); if (mp_greater (Ns, Nt)) { lrs_clear_mp(Ns); lrs_clear_mp(Nt); return FALSE; /* non-redundant */ } pivot (P, Q, i, j); update (P, Q, &i, &j); /*Update B,C,i,j */ } lrs_clear_mp(Ns); lrs_clear_mp(Nt); return !(j < d && i == 0); /* unbounded is also non-redundant */ } /* end of checkredund */ long checkcobasic (lrs_dic * P, lrs_dat * Q, long index) /* TRUE if index is cobasic and nonredundant */ /* FALSE if basic, or degen. cobasic, where it will get pivoted out */ { /* assign local variables to structures */ lrs_mp_matrix A = P->A; long *B, *C, *Row, *Col; long d = P->d; long m = P->m; long debug = Q->debug; long i = 0; long j = 0; long s; B = P->B; C = P->C; Row = P->Row; Col = P->Col; while ((j < d) && C[j] != index) j++; if (j == d) return FALSE; /* not cobasic index */ /* index is cobasic */ if (debug) fprintf (lrs_ofp, "\nindex=%ld cobasic", index); /* not debugged for new LOC s=LOC[index]; */ s = Col[j]; i = Q->lastdv + 1; while ((i <= m) && (zero (A[Row[i]][s]) || !zero (A[Row[i]][0]))) i++; if (i > m) { if (debug) fprintf (lrs_ofp, " is non-redundant"); return TRUE; } if (debug) fprintf (lrs_ofp, " is degenerate B[i]=%ld", B[i]); pivot (P, Q, i, j); update (P, Q, &i, &j); /*Update B,C,i,j */ return FALSE; /*index is no longer cobasic */ } /* end of checkcobasic */ long checkindex (lrs_dic * P, lrs_dat * Q, long index) /* 0 if index is non-redundant inequality */ /* 1 if index is redundant inequality */ /* 2 if index is input linearity */ /*NOTE: row is returned all zero if redundant!! */ { long i, j; lrs_mp_matrix A = P->A; long *Row = P->Row; long *B = P->B; long d = P->d; long m = P->m; if (Q->debug) printA (P, Q); /* each slack index must be checked for redundancy */ /* if in cobasis, it is pivoted out if degenerate */ /* else it is non-redundant */ if (checkcobasic (P, Q, index)) return ZERO; /* index is basic */ /* not debugged for new LOC i=LOC[index]; */ j = 1; while ((j <= m) && (B[j] != index)) j++; i = Row[j]; /* copy row i to cost row, and set it to zero */ for (j = 0; j <= d; j++) { copy (A[0][j], A[i][j]); changesign (A[0][j]); itomp (ZERO, A[i][j]); } if (checkredund (P, Q)) return ONE; /* non-redundant, copy back and change sign */ for (j = 0; j <= d; j++) { copy (A[i][j], A[0][j]); changesign (A[i][j]); } return ZERO; } /* end of checkindex */ /***************************************************************/ /* */ /* Package of I/O routines */ /* */ /***************************************************************/ void lprat (const char *name, long Nt, long Dt) /*print the long precision rational Nt/Dt without reducing */ { if ( Nt > 0 ) fprintf (lrs_ofp, " "); fprintf (lrs_ofp, "%s%ld", name, Nt); if (Dt != 1) fprintf (lrs_ofp, "/%ld", Dt); fprintf (lrs_ofp, " "); } /* lprat */ long lreadrat (long *Num, long *Den) /* read a rational string and convert to long */ /* returns true if denominator is not one */ { char in[MAXINPUT], num[MAXINPUT], den[MAXINPUT]; if(fscanf (lrs_ifp, "%s", in) == EOF) return(FALSE); atoaa (in, num, den); /*convert rational to num/dem strings */ *Num = atol (num); if (den[0] == '\0') { *Den = 1L; return (FALSE); } *Den = atol (den); return (TRUE); } void lrs_getinput(lrs_dic *P,lrs_dat *Q,long *num,long *den, long m, long d) /* code for reading data matrix in lrs/cdd format */ { long j,row; printf("\nEnter each row: b_i a_ij j=1..%ld",d); for (row=1;row<=m;row++) { printf("\nEnter row %ld: ",row ); for(j=0;j<=d;j++) { lreadrat(&num[j],&den[j]); lprat(" ",num[j],den[j]); } lrs_set_row(P,Q,row,num,den,GE); } printf("\nEnter objective row c_j j=1..%ld: ",d); num[0]=0; den[0]=1; for(j=1;j<=d;j++) { lreadrat(&num[j],&den[j]); lprat(" ",num[j],den[j]); } lrs_set_obj(P,Q,num,den,MAXIMIZE); } long readlinearity (lrs_dat * Q) /* read in and check linearity list */ { long i, j; long nlinearity; if(fscanf (lrs_ifp, "%ld", &nlinearity)==EOF ) { fprintf (lrs_ofp, "\nLinearity option invalid, no indices "); return (FALSE); } if (nlinearity < 1) { fprintf (lrs_ofp, "\nLinearity option invalid, indices must be positive"); return (FALSE); } Q->linearity = (long int*) CALLOC ((nlinearity + 1), sizeof (long)); for (i = 0; i < nlinearity; i++) { if(fscanf (lrs_ifp, "%ld", &j)==EOF) { fprintf (lrs_ofp, "\nLinearity option invalid, missing indices"); return (FALSE); } Q->linearity[i] = j; } for (i = 1; i < nlinearity; i++) /*sort in order */ reorder (Q->linearity, nlinearity); Q->nlinearity = nlinearity; Q->polytope = FALSE; return TRUE; } /* end readlinearity */ #ifdef PLRS void plrs_readlinearity(lrs_dat *Q, string line){ istringstream ss(line); long nlinearity; if(!(ss>>nlinearity)){ printf("\nLinearity option invalid, no indices\n"); exit(1); } if(nlinearity < 1) { printf("\nLinearity option invalid, indices must be positive\n"); exit(1); } Q->linearity = (long int*) CALLOC ((nlinearity + 1), sizeof (long)); for (int i = 0; i < nlinearity; i++) { if(!(ss>>Q->linearity[i])){ printf("\nLinearity option invalid, missing indices\n"); exit(1); } } for(int i = 1; i < nlinearity; i++) reorder (Q->linearity, nlinearity); Q->nlinearity = nlinearity; Q->polytope = FALSE; } #endif long readfacets (lrs_dat * Q, long facet[]) /* read and check facet list for obvious errors during start/restart */ /* this must be done after linearity option is processed!! */ { long i, j; /* assign local variables to structures */ long m, d; long *linearity = Q->linearity; m = Q->m; d = Q->inputd; for (j = Q->nlinearity; j < d; j++) /* note we place these after the linearity indices */ { if(fscanf (lrs_ifp, "%ld", &facet[j])==EOF) { fprintf (lrs_ofp, "\nrestart: facet list missing indices"); return (FALSE); } fprintf (lrs_ofp, " %ld", facet[j]); /* 2010.4.26 nonnegative option needs larger range of indices */ if(Q->nonnegative) if (facet[j] < 1 || facet[j] > m+d) { fprintf (lrs_ofp, "\n Start/Restart cobasic indices must be in range 1 .. %ld ", m+d); return FALSE; } if(!Q->nonnegative) if (facet[j] < 1 || facet[j] > m) { fprintf (lrs_ofp, "\n Start/Restart cobasic indices must be in range 1 .. %ld ", m); return FALSE; } for (i = 0; i < Q->nlinearity; i++) if (linearity[i] == facet[j]) { fprintf (lrs_ofp, "\n Start/Restart cobasic indices should not include linearities"); return FALSE; } /* bug fix 2011.8.1 reported by Steven Wu*/ for (i = Q->nlinearity; i < j; i++) /* end bug fix 2011.8.1 */ if (facet[i] == facet[j]) { fprintf (lrs_ofp, "\n Start/Restart cobasic indices must be distinct"); return FALSE; } } return TRUE; } /* end of readfacets */ void printA (lrs_dic * P, lrs_dat * Q) /* print the integer m by n array A with B,C,Row,Col vectors */ { long i, j; /* assign local variables to structures */ lrs_mp_matrix A = P->A; long *B = P->B; long *C = P->C; long *Row = P->Row; long *Col = P->Col; long m, d; m = P->m; d = P->d; fprintf (lrs_ofp, "\n Basis "); for (i = 0; i <= m; i++) fprintf (lrs_ofp, "%ld ", B[i]); fprintf (lrs_ofp, " Row "); for (i = 0; i <= m; i++) fprintf (lrs_ofp, "%ld ", Row[i]); fprintf (lrs_ofp, "\n Co-Basis "); for (i = 0; i <= d; i++) fprintf (lrs_ofp, "%ld ", C[i]); fprintf (lrs_ofp, " Column "); for (i = 0; i <= d; i++) fprintf (lrs_ofp, "%ld ", Col[i]); pmp (" det=", P->det); fprintf (lrs_ofp, "\n"); i=0; while ( i<= m ) { for (j = 0; j <= d; j++) pimat (P, i, j, A[Row[i]][Col[j]], "A"); fprintf (lrs_ofp, "\n"); if (i==0 && Q->nonnegative) /* skip basic rows - don't exist! */ i=d; i++; fflush (stdout); } fflush (stdout); } void pimat (lrs_dic * P, long r, long s, lrs_mp Nt, char name[]) /*print the long precision integer in row r col s of matrix A */ { long *B = P->B; long *C = P->C; if (s == 0) fprintf (lrs_ofp, "%s[%ld][%ld]=", name, B[r], C[s]); else fprintf (lrs_ofp, "[%ld]=", C[s]); pmp ("", Nt); } /***************************************************************/ /* */ /* Routines for caching, allocating etc. */ /* */ /***************************************************************/ /* From here mostly Bremner's handiwork */ static void cache_dict (lrs_dic ** D_p, lrs_dat * global, long i, long j) { if (dict_limit > 1) { /* save row, column indicies */ (*D_p)->i = i; (*D_p)->j = j; /* Make a new, blank spot at the end of the queue to copy into */ pushQ (global, (*D_p)->m, (*D_p)->d, (*D_p)->m_A); copy_dict (global, global->Qtail, *D_p); /* Copy current dictionary */ } *D_p = global->Qtail; } void copy_dict (lrs_dat * global, lrs_dic * dest, lrs_dic * src) { long m = src->m; long m_A = src->m_A; /* number of rows in A */ long d = src->d; long r,s; #ifdef GMP for ( r=0;r<=m_A;r++) for( s=0;s<=d;s++) copy(dest->A[r][s],src->A[r][s]); #else /* fast copy for MP and LRSLONG arithmetic */ /* Note that the "A" pointer trees need not be copied, since they always point to the same places within the corresponding space */ /* I wish I understood the above remark. For the time being, do it the easy way for Nash */ if(global->nash) { for ( r=0;r<=m_A;r++) for( s=0;s<=d;s++) copy(dest->A[r][s],src->A[r][s]); } else memcpy (dest->A[0][0], (global->Qtail->prev)->A[0][0], (d + 1) * (lrs_digits + 1) * (m_A + 1) * sizeof (long)); #endif dest->i = src->i; dest->j = src->j; dest->m = m; dest->d = d; dest->m_A = src->m_A; dest->depth = src->depth; dest->lexflag = src->lexflag; copy (dest->det, src->det); copy (dest->objnum, src->objnum); copy (dest->objden, src->objden); if (global->debug) fprintf (lrs_ofp, "\nSaving dict at depth %ld\n", src->depth); memcpy (dest->B, src->B, (m + 1) * sizeof (long)); memcpy (dest->C, src->C, (d + 1) * sizeof (long)); memcpy (dest->Row, src->Row, (m + 1) * sizeof (long)); memcpy (dest->Col, src->Col, (d + 1) * sizeof (long)); } /* * pushQ(lrs_dat *globals,m,d): * this routine ensures that Qtail points to a record that * may be copied into. * * It may create a new record, or it may just move the head pointer * forward so that know that the old record has been overwritten. */ #if 0 #define TRACE(s) fprintf(stderr,"\n%s %p %p\n",s,global->Qhead,global->Qtail); #else #define TRACE(s) #endif static void pushQ (lrs_dat * global, long m, long d ,long m_A) { if ((global->Qtail->next) == global->Qhead) { /* the Queue is full */ if (dict_count < dict_limit) { /* but we are allowed to create more */ lrs_dic *p; p = new_lrs_dic (m, d, m_A); if (p) { /* we successfully created another record */ p->next = global->Qtail->next; (global->Qtail->next)->prev = p; (global->Qtail->next) = p; p->prev = global->Qtail; dict_count++; global->Qtail = p; TRACE ("Added new record to Q"); } else { /* virtual memory exhausted. bummer */ global->Qhead = global->Qhead->next; global->Qtail = global->Qtail->next; TRACE ("VM exhausted"); } } else { /* * user defined limit reached. start overwriting the * beginning of Q */ global->Qhead = global->Qhead->next; global->Qtail = global->Qtail->next; TRACE ("User limit"); } } else { global->Qtail = global->Qtail->next; TRACE ("Reusing"); } } lrs_dic * lrs_getdic(lrs_dat *Q) /* create another dictionary for Q without copying any values */ /* derived from lrs_alloc_dic, used by nash.c */ { lrs_dic *p; long m; m = Q->m; /* nonnegative flag set means that problem is d rows "bigger" */ /* since nonnegative constraints are not kept explicitly */ if(Q->nonnegative) m = m+Q->inputd; p = new_lrs_dic (m, Q->inputd, Q->m); if (!p) return NULL; p->next = p; p->prev = p; Q->Qhead = p; Q->Qtail = p; return p; } #define NULLRETURN(e) if (!(e)) return NULL; static lrs_dic * new_lrs_dic (long m, long d, long m_A) { lrs_dic *p; NULLRETURN (p = (lrs_dic *) malloc (sizeof (lrs_dic))); NULLRETURN (p->B = (long int*) calloc ((m + 1), sizeof (long))); NULLRETURN (p->Row = (long int*) calloc ((m + 1), sizeof (long))); NULLRETURN (p->C = (long int*) calloc ((d + 1), sizeof (long))); NULLRETURN (p->Col = (long int*) calloc ((d + 1), sizeof (long))); #ifdef GMP lrs_alloc_mp(p->det); lrs_alloc_mp(p->objnum); lrs_alloc_mp(p->objden); #endif p->d_orig=d; p->A=lrs_alloc_mp_matrix(m_A,d); return p; } void lrs_free_dic (lrs_dic * P, lrs_dat *Q) { /* do the same steps as for allocation, but backwards */ /* gmp variables cannot be cleared using free: use lrs_clear_mp* */ lrs_dic *P1; /* repeat until cache is empty */ do { /* I moved these here because I'm not certain the cached dictionaries need to be the same size. Well, it doesn't cost anything to be safe. db */ long d = P->d_orig; long m_A = P->m_A; lrs_clear_mp_matrix (P->A,m_A,d); /* "it is a ghastly error to free something not assigned my malloc" KR167 */ /* so don't try: free (P->det); */ lrs_clear_mp (P->det); lrs_clear_mp (P->objnum); lrs_clear_mp (P->objden); free (P->Row); free (P->Col); free (P->C); free (P->B); /* go to next record in cache if any */ P1 =P->next; free (P); P=P1; } while (Q->Qhead != P ); } void lrs_free_dic2 (lrs_dic * P, lrs_dat *Q) { /* do the same steps as for allocation, but backwards */ /* same as lrs_free_dic except no cache for P */ /* I moved these here because I'm not certain the cached dictionaries need to be the same size. Well, it doesn't cost anything to be safe. db */ long d = P->d_orig; long m_A = P->m_A; lrs_clear_mp_matrix (P->A,m_A,d); /* "it is a ghastly error to free something not assigned my malloc" KR167 */ /* so don't try: free (P->det); */ printf("\n hello 2"); fflush(stdout); lrs_clear_mp (P->det); lrs_clear_mp (P->objnum); lrs_clear_mp (P->objden); printf("\n hello 2"); fflush(stdout); free (P->Row); free (P->Col); free (P->C); free (P->B); printf("\n hello 2"); fflush(stdout); free (P); } void lrs_free_dat ( lrs_dat *Q ) { long m=Q->m; /* most of these items were allocated in lrs_alloc_dic */ lrs_clear_mp_vector (Q->Gcd,m); lrs_clear_mp_vector (Q->Lcm,m); lrs_clear_mp (Q->sumdet); lrs_clear_mp (Q->Nvolume); lrs_clear_mp (Q->Dvolume); lrs_clear_mp (Q->saved_det); lrs_clear_mp (Q->boundd); lrs_clear_mp (Q->boundn); free (Q->inequality); free (Q->facet); free (Q->redundcol); free (Q->linearity); free (Q->minratio); free (Q->temparray); free (Q->name); free (Q->saved_C); lrs_global_count--; free(Q); } static long check_cache (lrs_dic ** D_p, lrs_dat * global, long *i_p, long *j_p) { /* assign local variables to structures */ cache_tries++; if (global->Qtail == global->Qhead) { TRACE ("cache miss"); /* Q has only one element */ cache_misses++; return 0; } else { global->Qtail = global->Qtail->prev; *D_p = global->Qtail; *i_p = global->Qtail->i; *j_p = global->Qtail->j; TRACE ("restoring dict"); return 1; } } lrs_dic * lrs_alloc_dic (lrs_dat * Q) /* allocate and initialize lrs_dic */ { lrs_dic *p; long i, j; long m, d, m_A; if (Q->hull) /* d=col dimension of A */ Q->inputd = Q->n; /* extra column for hull */ else Q->inputd = Q->n - 1; m = Q->m; d = Q->inputd; m_A = m; /* number of rows in A */ /* nonnegative flag set means that problem is d rows "bigger" */ /* since nonnegative constraints are not kept explicitly */ if(Q->nonnegative) m = m+d; p = new_lrs_dic (m, d, m_A); if (!p) return NULL; p->next = p; p->prev = p; Q->Qhead = p; Q->Qtail = p; dict_count = 1; dict_limit = 50; cache_tries = 0; cache_misses = 0; /* Initializations */ p->d = p->d_orig = d; p->m = m; p->m_A = m_A; p->depth = 0L; p->lexflag = TRUE; itomp (ONE, p->det); itomp (ZERO, p->objnum); itomp (ONE, p->objden); /*m+d+1 is the number of variables, labelled 0,1,2,...,m+d */ /* initialize array to zero */ for (i = 0; i <= m_A; i++) for (j = 0; j <= d; j++) itomp (ZERO, p->A[i][j]); Q->inequality = (long int*) CALLOC ((m + 1), sizeof (long)); if (Q->nlinearity == ZERO) /* linearity may already be allocated */ Q->linearity = (long int*) CALLOC ((m + 1), sizeof (long)); Q->facet = (long int*) CALLOC ((unsigned) d + 1, sizeof (long)); Q->redundcol = (long int*) CALLOC ((d + 1), sizeof (long)); Q->minratio = (long int*) CALLOC ((m + 1), sizeof (long)); /* 2011.7.14 minratio[m]=0 for degen =1 for nondegen pivot*/ Q->temparray = (long int*) CALLOC ((unsigned) d + 1, sizeof (long)); Q->inequality[0] = 2L; Q->Gcd = lrs_alloc_mp_vector(m); Q->Lcm = lrs_alloc_mp_vector(m); Q->saved_C = (long int*) CALLOC (d + 1, sizeof (long)); Q->lastdv = d; /* last decision variable may be decreased */ /* if there are redundant columns */ /*initialize basis and co-basis indices, and row col locations */ /*if nonnegative, we label differently to avoid initial pivots */ /* set basic indices and rows */ if(Q->nonnegative) for (i = 0; i <= m; i++) { p->B[i] = i; if (i <= d ) p->Row[i]=0; /* no row for decision variables */ else p->Row[i]=i-d; } else for (i = 0; i <= m; i++) { if (i == 0 ) p->B[0]=0; else p->B[i] = d + i; p->Row[i] = i; } for (j = 0; j < d; j++) { if(Q->nonnegative) p->C[j] = m+j+1; else p->C[j] = j + 1; p->Col[j] = j + 1; } p->C[d] = m + d + 1; p->Col[d] = 0; return p; } /* end of lrs_alloc_dic */ /* this routine makes a copy of the information needed to restart, so that we can guarantee that if a signal is received, we can guarantee that nobody is messing with it. This as opposed to adding all kinds of critical regions in the main line code. It is also used to make sure that in case of overflow, we have a valid cobasis to restart from. */ static void save_basis (lrs_dic * P, lrs_dat * Q) { int i; /* assign local variables to structures */ long *C = P->C; long d; #ifdef SIGNALS sigset_t oset, blockset; sigemptyset (&blockset); sigaddset (&blockset, SIGTERM); sigaddset (&blockset, SIGHUP); sigaddset (&blockset, SIGUSR1); errcheck ("sigprocmask", sigprocmask (SIG_BLOCK, &blockset, &oset)); #endif d = P->d; Q->saved_flag = 1; for (i = 0; i < 3; i++) Q->saved_count[i] = Q->count[i]; for (i = 0; i < d + 1; i++) Q->saved_C[i] = C[i]; copy (Q->saved_det, P->det); Q->saved_d = P->d; Q->saved_depth = P->depth; #ifdef SIGNALS errcheck ("sigprocmask", sigprocmask (SIG_SETMASK, &oset, 0)); #endif } /* digits overflow is a call from lrs_mp package */ void digits_overflow () { fprintf (lrs_ofp, "\nOverflow at digits=%ld", DIG2DEC (lrs_digits)); fprintf (lrs_ofp, "\nRerun with option: digits n, where n > %ld\n", DIG2DEC (lrs_digits)); lrs_dump_state (); notimpl(""); } static void lrs_dump_state () { long i; fprintf (stderr, "\n\nlrs_lib: checkpointing:\n"); fprintf (stderr, "lrs_lib: Current digits at %ld out of %ld\n", DIG2DEC (lrs_record_digits), DIG2DEC (lrs_digits)); for (i = 0; i < lrs_global_count; i++) { print_basis (stderr, lrs_global_list[i]); } fprintf (stderr, "lrs_lib: checkpoint finished\n"); } /* print out the saved copy of the basis */ void print_basis (FILE * fp, lrs_dat * global) { int i; /* assign local variables to structures */ fprintf (fp, "lrs_lib: State #%ld: (%s)\t", global->id, global->name); if (global->saved_flag) { fprintf (fp, "V#%ld R#%ld B#%ld h=%ld facets ", global->saved_count[1], global->saved_count[0], global->saved_count[2], global->saved_depth); for (i = 0; i < global->saved_d; i++) fprintf (fp, "%ld ", global->inequality[global->saved_C[i] - global->lastdv]); pmp (" det=", global->saved_det); fprintf (fp, "\n"); } else { fprintf (fp, "lrs_lib: Computing initial basis\n"); } fflush (fp); } #ifdef SIGNALS /* If given a signal USR1 print current cobasis and continue TERM print current cobasis and terminate INT (ctrl-C) ditto HUP ditto */ static void setup_signals () { errcheck ("signal", signal (SIGTERM, die_gracefully)); errcheck ("signal", signal (SIGALRM, timecheck)); errcheck ("signal", signal (SIGHUP, die_gracefully)); errcheck ("signal", signal (SIGINT, die_gracefully)); errcheck ("signal", signal (SIGUSR1, checkpoint)); } static void timecheck () { lrs_dump_state (); errcheck ("signal", signal (SIGALRM, timecheck)); alarm (lrs_checkpoint_seconds); } static void checkpoint () { lrs_dump_state (); errcheck ("signal", signal (SIGUSR1, checkpoint)); } static void die_gracefully () { lrs_dump_state (); exit (1); } #endif #ifdef TIMES /* * Not sure about the portability of this yet, * - db */ #include #define double_time(t) ((double)(t.tv_sec)+(double)(t.tv_usec)/1000000) static void ptimes () { struct rusage rusage; getrusage (RUSAGE_SELF, &rusage); fprintf (lrs_ofp, "\n*%0.3fu %0.3fs %ldKb %ld flts %ld swaps %ld blks-in %ld blks-out \n", double_time (rusage.ru_utime), double_time (rusage.ru_stime), rusage.ru_maxrss, rusage.ru_majflt, rusage.ru_nswap, rusage.ru_inblock, rusage.ru_oublock); if(lrs_ofp != stdout) printf ("\n*%0.3fu %0.3fs %ldKb %ld flts %ld swaps %ld blks-in %ld blks-out \n", double_time (rusage.ru_utime), double_time (rusage.ru_stime), rusage.ru_maxrss, rusage.ru_majflt, rusage.ru_nswap, rusage.ru_inblock, rusage.ru_oublock); } static double get_time() { struct rusage rusage; getrusage (RUSAGE_SELF, &rusage); return ( double_time (rusage.ru_utime)); } #endif /* Routines based on lp_solve */ void lrs_set_row(lrs_dic *P, lrs_dat *Q, long row, long num[], long den[], long ineq) /* convert to lrs_mp then call lrs_set_row */ { lrs_mp_vector Num, Den; long d; long j; d = P->d; Num=lrs_alloc_mp_vector(d+1); Den=lrs_alloc_mp_vector(d+1); for (j=0;j<=d;j++) { itomp(num[j],Num[j]); itomp(den[j],Den[j]); } lrs_set_row_mp(P,Q,row,Num,Den,ineq); lrs_clear_mp_vector(Num,d+1); lrs_clear_mp_vector(Den,d+1); } void lrs_set_row_mp(lrs_dic *P, lrs_dat *Q, long row, lrs_mp_vector num, lrs_mp_vector den, long ineq) /* set row of dictionary using num and den arrays for rational input */ /* ineq = 1 (GE) - ordinary row */ /* = 0 (EQ) - linearity */ { lrs_mp Temp, mpone; lrs_mp_vector oD; /* denominator for row */ long i, j; /* assign local variables to structures */ lrs_mp_matrix A; lrs_mp_vector Gcd, Lcm; long hull; long m, d; lrs_alloc_mp(Temp); lrs_alloc_mp(mpone); hull = Q->hull; A = P->A; m = P->m; d = P->d; Gcd = Q->Gcd; Lcm = Q->Lcm; oD = lrs_alloc_mp_vector (d); itomp (ONE, mpone); itomp (ONE, oD[0]); i=row; itomp (ONE, Lcm[i]); /* Lcm of denominators */ itomp (ZERO, Gcd[i]); /* Gcd of numerators */ for (j = hull; j <= d; j++) /* hull data copied to cols 1..d */ { copy( A[i][j],num[j-hull]); copy(oD[j],den[j-hull]); if (!one(oD[j])) lcm (Lcm[i], oD[j]); /* update lcm of denominators */ copy (Temp, A[i][j]); gcd (Gcd[i], Temp); /* update gcd of numerators */ } if (hull) { itomp (ZERO, A[i][0]); /*for hull, we have to append an extra column of zeroes */ if (!one (A[i][1]) || !one (oD[1])) /* all rows must have a one in column one */ Q->polytope = FALSE; } if (!zero (A[i][hull])) /* for H-rep, are zero in column 0 */ Q->homogeneous = FALSE; /* for V-rep, all zero in column 1 */ storesign (Gcd[i], POS); storesign (Lcm[i], POS); if (mp_greater (Gcd[i], mpone) || mp_greater (Lcm[i], mpone)) for (j = 0; j <= d; j++) { exactdivint (A[i][j], Gcd[i], Temp); /*reduce numerators by Gcd */ mulint (Lcm[i], Temp, Temp); /*remove denominators */ exactdivint (Temp, oD[j], A[i][j]); /*reduce by former denominator */ } if ( ineq == EQ ) /* input is linearity */ { Q->linearity[Q->nlinearity]=row; Q->nlinearity++; } /* 2010.4.26 Set Gcd and Lcm for the non-existant rows when nonnegative set */ if(Q->nonnegative && row==m) for(j=1;j<=d;j++) { itomp (ONE, Lcm[m+j]); itomp (ONE, Gcd[m+j]); } lrs_clear_mp_vector (oD,d); lrs_clear_mp(Temp); lrs_clear_mp(mpone); } /* end of lrs_set_row_mp */ void lrs_set_obj(lrs_dic *P, lrs_dat *Q, long num[], long den[], long max) { long i; if (max == MAXIMIZE) Q->maximize=TRUE; else { Q->minimize=TRUE; for(i=0;i<=P->d;i++) num[i]=-num[i]; } lrs_set_row(P,Q,0L,num,den,GE); } void lrs_set_obj_mp(lrs_dic *P, lrs_dat *Q, lrs_mp_vector num, lrs_mp_vector den, long max) { long i; if (max == MAXIMIZE) Q->maximize=TRUE; else { Q->minimize=TRUE; for(i=0;i<=P->d;i++) changesign(num[i]); } lrs_set_row_mp(P,Q,0L,num,den,GE); } long lrs_solve_lp(lrs_dic *P, lrs_dat *Q) /* user callable function to solve lp only */ { lrs_mp_matrix Lin; /* holds input linearities if any are found */ long col; Q->lponly = TRUE; if (!lrs_getfirstbasis (&P, Q, &Lin, FALSE)) return FALSE; /* There may have been column redundancy */ /* If so the linearity space is obtained and redundant */ /* columns are removed. User can access linearity space */ /* from lrs_mp_matrix Lin dimensions nredundcol x d+1 */ for (col = 0; col < Q->nredundcol; col++) /* print linearity space */ lrs_printoutput (Q, Lin[col]); /* Array Lin[][] holds the coeffs. */ return TRUE; } /* end of lrs_solve_lp */ long dan_selectpivot (lrs_dic * P, lrs_dat * Q, long *r, long *s) /* select pivot indices using dantzig simplex method */ /* largest coefficient with lexicographic rule to avoid cycling */ /* Bohdan Kaluzny's handiwork */ /* returns TRUE if pivot found else FALSE */ /* pivot variables are B[*r] C[*s] in locations Row[*r] Col[*s] */ { long j,k,col; lrs_mp coeff; /* assign local variables to structures */ lrs_mp_matrix A = P->A; long *Col = P->Col; long d = P->d; lrs_alloc_mp (coeff); *r = 0; *s = d; j = 0; k = 0; itomp(0,coeff); /*find positive cost coef */ while (k < d) { if(mp_greater(A[0][Col[k]],coeff)) { j = k; copy(coeff,A[0][Col[j]]); } k++; } if (positive(coeff)) /* pivot column found! */ { *s = j; col = Col[j]; /*find min index ratio */ *r = lrs_ratio (P, Q, col); if (*r != 0) { lrs_clear_mp(coeff); return (TRUE); /* unbounded */ } } lrs_clear_mp(coeff); return (FALSE); } /* end of dan_selectpivot */ long phaseone (lrs_dic * P, lrs_dat * Q) /* Do a dual pivot to get primal feasibility (pivot in X_0)*/ /* Bohdan Kaluzny's handiwork */ { long i, j, k; /* assign local variables to structures */ lrs_mp_matrix A = P->A; long *Row = P->Row; long *Col = P->Col; long m, d; lrs_mp b_vector; lrs_alloc_mp (b_vector); m = P->m; d = P->d; i = 0; k = d+1; itomp(0,b_vector); fprintf (lrs_ofp, "\nLP: Phase One: Dual pivot on artificial variable"); /*find most negative b vector */ while (k <= m) { if(mp_greater(b_vector,A[Row[k]][0])) { i = k; copy(b_vector,A[Row[i]][0]); } k++; } if (negative(b_vector)) /* pivot row found! */ { j = 0; /*find a positive entry for in row */ while (j < d && !positive (A[Row[i]][Col[j]])) j++; if (j >= d) { lrs_clear_mp (b_vector); return (FALSE); /* no positive entry */ } pivot (P, Q, i, j); update (P, Q, &i, &j); } lrs_clear_mp (b_vector); return (TRUE); } long lrs_set_digits(long dec_digits) { /* convert user specified decimal digits to mp digits */ fprintf (lrs_ofp, "\n*digits %ld", dec_digits); if (dec_digits > 0) lrs_digits = DEC2DIG (dec_digits); if (lrs_digits > MAX_DIGITS) { fprintf (lrs_ofp, "\nDigits must be at most %ld\nChange MAX_DIGITS and recompile", DIG2DEC (MAX_DIGITS)); fflush(stdout); return (FALSE); } return (TRUE); } long lrs_checkbound(lrs_dic *P, lrs_dat *Q) { /* check bound on objective and return TRUE if exceeded */ if(!Q->bound) return FALSE; if( Q->maximize && comprod(Q->boundn,P->objden,P->objnum,Q->boundd) == 1 ) { #ifndef PLRS if(Q->verbose) { prat(" \nObj value: ",P->objnum,P->objden); fprintf(lrs_ofp," Pruning "); } #endif return TRUE; } if( Q->minimize && comprod(Q->boundn,P->objden,P->objnum,Q->boundd) == -1 ) { #ifndef PLRS if(Q->verbose) { prat(" \nObj value: ",P->objnum,P->objden); fprintf(lrs_ofp," Pruning "); } #endif return TRUE; } return FALSE; } long lrs_leaf(lrs_dic *P, lrs_dat *Q) { /* check if current dictionary is a leaf of reverse search tree */ long col=0; long tmp=0; while (col < P->d && !reverse(P,Q,&tmp,col)) col++; if(col < P->d) return 0; /* dictionary is not a leaf */ else return 1; } lrslib-062/lrsmp.c0000600001553200155320000005763112722006616011772 0ustar avis/* lrsmp.c library code for lrs extended precision arithmetic */ /* Version 4.0c, August 26, 2009 */ /* minor change to check result of fscanf */ /* Copyright: David Avis 1999, avis@cs.mcgill.ca */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. */ #ifdef PLRS #include #include #endif #include #include #include #include "lrsmp.h" long lrs_digits; /* max permitted no. of digits */ long lrs_record_digits; /* this is the biggest acheived so far. */ /******************************************************************/ /* digit overflow is caught by digits_overflow at the end of this */ /* file, make sure it is either user supplied or uncomment */ /* the define below */ /******************************************************************/ #define digits_overflow() lrs_default_digits_overflow() /*********************************************************/ /* Initialization and allocation procedures - must use! */ /******************************************************* */ long lrs_mp_init (long dec_digits, FILE * fpin, FILE * fpout) /* max number of decimal digits for the computation */ { /* global variables lrs_ifp and lrs_ofp are file pointers for input and output */ lrs_ifp = fpin; lrs_ofp = fpout; lrs_record_digits = 0; if (dec_digits <= 0) dec_digits = DEFAULT_DIGITS; lrs_digits = DEC2DIG (dec_digits); /* max permitted no. of digits */ if (lrs_digits > MAX_DIGITS) { #ifdef PLRS cout<<"Digits must be at most "< 0; i--) { cy = cy * BASE + a[i]; a[i] = 0; cy -= (c[i] = cy / t) * t; } a[1] = cy; storesign (a, (cy == 0) ? POS : sign (a)); storelength (a, TWO); /* set sign of c to sig (**mod**) */ storesign (c, sig); normalize (c); return; } else { /* mp's are actually DIGITS+1 in length, so if length of a or b = */ /* DIGITS, there will still be room after normalization. */ /****************************************************/ /* Step D1 - normalize numbers so b > floor(BASE/2) */ d1 = BASE / (b[lb - 1] + 1); if (d1 > 1) { cy = 0; for (i = 1; i < la; i++) { cy = (a[i] = a[i] * d1 + cy) / BASE; a[i] %= BASE; } a[i] = cy; cy = 0; for (i = 1; i < lb; i++) { cy = (b[i] = b[i] * d1 + cy) / BASE; b[i] %= BASE; } b[i] = cy; } else { a[la] = 0; /* if la or lb = DIGITS this won't work */ b[lb] = 0; } /*********************************************/ /* Steps D2 & D7 - start and end of the loop */ for (j = 0; j <= la - lb; j++) { /*************************************/ /* Step D3 - determine trial divisor */ if (a[la - j] == b[lb - 1]) qh = BASE - 1; else { s = (a[la - j] * BASE + a[la - j - 1]); qh = s / b[lb - 1]; while (qh * b[lb - 2] > (s - qh * b[lb - 1]) * BASE + a[la - j - 2]) qh--; } /*******************************************************/ /* Step D4 - divide through using qh as quotient digit */ cy = 0; for (i = 1; i <= lb; i++) { s = qh * b[i] + cy; a[la - j - lb + i] -= s % BASE; cy = s / BASE; if (a[la - j - lb + i] < 0) { a[la - j - lb + i] += BASE; cy++; } } /*****************************************************/ /* Step D6 - adjust previous step if qh is 1 too big */ if (cy) { qh--; cy = 0; for (i = 1; i <= lb; i++) /* add a back in */ { a[la - j - lb + i] += b[i] + cy; cy = a[la - j - lb + i] / BASE; a[la - j - lb + i] %= BASE; } } /***********************************************************************/ /* Step D5 - write final value of qh. Saves calculating array indices */ /* to do it here instead of before D6 */ c[la - lb - j + 1] = qh; } /**********************************************************************/ /* Step D8 - unnormalize a and b to get correct remainder and divisor */ for (i = lc; c[i - 1] == 0 && i > 2; i--); /* strip excess 0's from quotient */ storelength (c, i); if (i == 2 && c[1] == 0) storesign (c, POS); cy = 0; for (i = lb - 1; i >= 1; i--) { cy = (a[i] += cy * BASE) % d1; a[i] /= d1; } for (i = la; a[i - 1] == 0 && i > 2; i--); /* strip excess 0's from quotient */ storelength (a, i); if (i == 2 && a[1] == 0) storesign (a, POS); if (cy){ fprintf (stdout, "divide error"); exit(1); } for (i = lb - 1; i >= 1; i--) { cy = (b[i] += cy * BASE) % d1; b[i] /= d1; } } } /* end of divint */ void gcd (lrs_mp u, lrs_mp v) /*returns u=gcd(u,v) destroying v */ /*Euclid's algorithm. Knuth, II, p.320 modified to avoid copies r=u,u=v,v=r Switches to single precision when possible for greater speed */ { lrs_mp r; unsigned long ul, vl; long i; static unsigned long maxspval = MAXD; /* Max value for the last digit to guarantee */ /* fitting into a single long integer. */ static long maxsplen; /* Maximum digits for a number that will fit */ /* into a single long integer. */ static long firstime = TRUE; if (firstime) /* initialize constants */ { for (maxsplen = 2; maxspval >= BASE; maxsplen++) maxspval /= BASE; firstime = FALSE; } if (mp_greater (v, u)) goto bigv; bigu: if (zero (v)) return; if ((i = length (u)) < maxsplen || (i == maxsplen && u[maxsplen - 1] < maxspval)) goto quickfinish; divint (u, v, r); normalize (u); bigv: if (zero (u)) { copy (u, v); return; } if ((i = length (v)) < maxsplen || (i == maxsplen && v[maxsplen - 1] < maxspval)) goto quickfinish; divint (v, u, r); normalize (v); goto bigu; /* Base 10000 only at the moment */ /* when u and v are small enough, transfer to single precision integers */ /* and finish with euclid's algorithm, then transfer back to lrs_mp */ quickfinish: ul = vl = 0; for (i = length (u) - 1; i > 0; i--) ul = BASE * ul + u[i]; for (i = length (v) - 1; i > 0; i--) vl = BASE * vl + v[i]; if (ul > vl) goto qv; qu: if (!vl) { for (i = 1; ul; i++) { u[i] = ul % BASE; ul = ul / BASE; } storelength (u, i); return; } ul %= vl; qv: if (!ul) { for (i = 1; vl; i++) { u[i] = vl % BASE; vl = vl / BASE; } storelength (u, i); return; } vl %= ul; goto qu; } long compare (lrs_mp a, lrs_mp b) /* a ? b and returns -1,0,1 for <,=,> */ { long i; if (a[0] > b[0]) return 1L; if (a[0] < b[0]) return -1L; for (i = length (a) - 1; i >= 1; i--) { if (a[i] < b[i]) { if (sign (a) == POS) return -1L; else return 1L; } if (a[i] > b[i]) { if (sign (a) == NEG) return -1L; else return 1L; } } return 0L; } long mp_greater (lrs_mp a, lrs_mp b) /* tests if a > b and returns (TRUE=POS) */ { long i; if (a[0] > b[0]) return (TRUE); if (a[0] < b[0]) return (FALSE); for (i = length (a) - 1; i >= 1; i--) { if (a[i] < b[i]) { if (sign (a) == POS) return (0); else return (1); } if (a[i] > b[i]) { if (sign (a) == NEG) return (0); else return (1); } } return (0); } void itomp (long in, lrs_mp a) /* convert integer i to multiple precision with base BASE */ { long i; a[0] = 2; /* initialize to zero */ for (i = 1; i < lrs_digits; i++) a[i] = 0; if (in < 0) { storesign (a, NEG); in = in * (-1); } i = 0; while (in != 0) { i++; a[i] = in - BASE * (in / BASE); in = in / BASE; storelength (a, i + 1); } } /* end of itomp */ void linint (lrs_mp a, long ka, lrs_mp b, long kb) /*compute a*ka+b*kb --> a */ /***Handbook of Algorithms and Data Structures P.239 ***/ { long i, la, lb; la = length (a); lb = length (b); for (i = 1; i < la; i++) a[i] *= ka; if (sign (a) != sign (b)) kb = (-kb); if (lb > la) { storelength (a, lb); for (i = la; i < lb; i++) a[i] = 0; } for (i = 1; i < lb; i++) a[i] += kb * b[i]; normalize (a); } /***end of linint***/ void mptodouble (lrs_mp a, double *x) /* convert lrs_mp to double */ { long i, la; double y = 1.0; (*x) = 0; la = length (a); for (i = 1; i < la; i++) { (*x) = (*x) + y * a[i]; y = y * BASE; } if (negative (a)) (*x)= -(*x); } void mulint (lrs_mp a, lrs_mp b, lrs_mp c) /* multiply two integers a*b --> c */ /***Handbook of Algorithms and Data Structures, p239 ***/ { long nlength, i, j, la, lb; /*** b and c may coincide ***/ la = length (a); lb = length (b); nlength = la + lb - 2; if (nlength > lrs_digits) digits_overflow (); for (i = 0; i < la - 2; i++) c[lb + i] = 0; for (i = lb - 1; i > 0; i--) { for (j = 2; j < la; j++) if ((c[i + j - 1] += b[i] * a[j]) > MAXD - (BASE - 1) * (BASE - 1) - MAXD / BASE) { c[i + j - 1] -= (MAXD / BASE) * BASE; c[i + j] += MAXD / BASE; } c[i] = b[i] * a[1]; } storelength (c, nlength); storesign (c, sign (a) == sign (b) ? POS : NEG); normalize (c); } /***end of mulint ***/ void normalize (lrs_mp a) { long cy, i, la; la = length (a); start: cy = 0; for (i = 1; i < la; i++) { cy = (a[i] += cy) / BASE; a[i] -= cy * BASE; if (a[i] < 0) { a[i] += BASE; cy--; } } while (cy > 0) { a[i++] = cy % BASE; cy /= BASE; } if (cy < 0) { a[la - 1] += cy * BASE; for (i = 1; i < la; i++) a[i] = (-a[i]); storesign (a, sign (a) == POS ? NEG : POS); goto start; } while (a[i - 1] == 0 && i > 2) i--; if (i > lrs_record_digits) { if ((lrs_record_digits = i) > lrs_digits) digits_overflow (); }; storelength (a, i); if (i == 2 && a[1] == 0) storesign (a, POS); } /* end of normalize */ long length (lrs_mp a) { /* formerly a macro but conflicts with string length */ return ((a[0] > 0) ? a[0] : -a[0]); } long mptoi (lrs_mp a) /* convert lrs_mp to long integer */ { long len = length (a); if (len == 2) return sign (a) * a[1]; if (len == 3) return sign (a) * (a[1] + BASE * a[2]); notimpl ("mp to large for conversion to long"); return 0; /* never executed */ } #ifdef PLRS string prat (char name[], lrs_mp Nin, lrs_mp Din) /*reduce and print Nin/Din */ { lrs_mp Nt, Dt; long i; //create stream to collect output stringstream ss; string str; ss<= 1; i--) ss<= 1; i--) ss<= 1; i--) ss<= 1; i--) fprintf (lrs_ofp, FORMAT, Nt[i]); if (!(Dt[0] == 2 && Dt[1] == 1)) /* rational */ { fprintf (lrs_ofp, "/"); fprintf (lrs_ofp, "%lu", Dt[length (Dt) - 1]); for (i = length (Dt) - 2; i >= 1; i--) fprintf (lrs_ofp, FORMAT, Dt[i]); } fprintf (lrs_ofp, " "); } void pmp (char name[], lrs_mp a) /*print the long precision integer a */ { long i; fprintf (lrs_ofp, "%s", name); if (sign (a) == NEG) fprintf (lrs_ofp, "-"); else fprintf (lrs_ofp, " "); fprintf (lrs_ofp, "%lu", a[length (a) - 1]); for (i = length (a) - 2; i >= 1; i--) fprintf (lrs_ofp, FORMAT, a[i]); fprintf (lrs_ofp, " "); } #endif long readrat (lrs_mp Na, lrs_mp Da) /* read a rational or integer and convert to lrs_mp with base BASE */ /* returns true if denominator is not one */ /* returns 999 if premature end of file */ { char in[MAXINPUT], num[MAXINPUT], den[MAXINPUT]; if(fscanf (lrs_ifp, "%s", in)==EOF) { fprintf (lrs_ofp, "\nInvalid input: check you have entered enough data!\n"); exit(1); } if(!strcmp(in,"end")) /*premature end of input file */ { return (999L); } atoaa (in, num, den); /*convert rational to num/dem strings */ atomp (num, Na); if (den[0] == '\0') { itomp (1L, Da); return (FALSE); } atomp (den, Da); return (TRUE); } void addint (lrs_mp a, lrs_mp b, lrs_mp c) /* compute c=a+b */ { copy (c, a); linint (c, 1, b, 1); } void atomp (char s[], lrs_mp a) /*convert string to lrs_mp integer */ { lrs_mp mpone; long diff, ten, i, sig; itomp (1L, mpone); ten = 10L; for (i = 0; s[i] == ' ' || s[i] == '\n' || s[i] == '\t'; i++); /*skip white space */ sig = POS; if (s[i] == '+' || s[i] == '-') /* sign */ sig = (s[i++] == '+') ? POS : NEG; itomp (0L, a); while (s[i] >= '0' && s[i] <= '9') { diff = s[i] - '0'; linint (a, ten, mpone, diff); i++; } storesign (a, sig); if (s[i]) { fprintf (stderr, "\nIllegal character in number: '%s'\n", s + i); exit (1); } } /* end of atomp */ void subint (lrs_mp a, lrs_mp b, lrs_mp c) /* compute c=a-b */ { copy (c, a); linint (a, 1, b, -1); } void decint (lrs_mp a, lrs_mp b) /* compute a=a-b */ { linint (a, 1, b, -1); } long myrandom (long num, long nrange) /* return a random number in range 0..nrange-1 */ { long i; i = (num * 401 + 673) % nrange; return (i); } long atos (char s[]) /* convert s to integer */ { long i, j; j = 0; for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i) j = 10 * j + s[i] - '0'; return (j); } void stringcpy (char *s, char *t) /*copy t to s pointer version */ { while (((*s++) = (*t++)) != '\0'); } void rattodouble (lrs_mp a, lrs_mp b, double *x) /* convert lrs_mp rational to double */ { double y; mptodouble (a, &y); mptodouble (b, x); *x = y / (*x); } void atoaa (char in[], char num[], char den[]) /* convert rational string in to num/den strings */ { long i, j; for (i = 0; in[i] != '\0' && in[i] != '/'; i++) num[i] = in[i]; num[i] = '\0'; den[0] = '\0'; if (in[i] == '/') { for (j = 0; in[j + i + 1] != '\0'; j++) den[j] = in[i + j + 1]; den[j] = '\0'; } } /* end of atoaa */ void lcm (lrs_mp a, lrs_mp b) /* a = least common multiple of a, b; b is preserved */ { lrs_mp u, v; copy (u, a); copy (v, b); gcd (u, v); exactdivint (a, u, v); /* v=a/u no remainder*/ mulint (v, b, a); } /* end of lcm */ void reducearray (lrs_mp_vector p, long n) /* find largest gcd of p[0]..p[n-1] and divide through */ { lrs_mp divisor; lrs_mp Temp; long i = 0L; while ((i < n) && zero (p[i])) i++; if (i == n) return; copy (divisor, p[i]); storesign (divisor, POS); i++; while (i < n) { if (!zero (p[i])) { copy (Temp, p[i]); storesign (Temp, POS); gcd (divisor, Temp); } i++; } /* reduce by divisor */ for (i = 0; i < n; i++) if (!zero (p[i])) reduceint (p[i], divisor); } /* end of reducearray */ void reduceint (lrs_mp Na, lrs_mp Da) /* divide Na by Da and return */ { lrs_mp Temp; copy (Temp, Na); exactdivint (Temp, Da, Na); } void reduce (lrs_mp Na, lrs_mp Da) /* reduces Na Da by gcd(Na,Da) */ { lrs_mp Nb, Db, Nc, Dc; copy (Nb, Na); copy (Db, Da); storesign (Nb, POS); storesign (Db, POS); copy (Nc, Na); copy (Dc, Da); gcd (Nb, Db); /* Nb is the gcd(Na,Da) */ exactdivint (Nc, Nb, Na); exactdivint (Dc, Nb, Da); } long comprod (lrs_mp Na, lrs_mp Nb, lrs_mp Nc, lrs_mp Nd) /* +1 if Na*Nb > Nc*Nd */ /* -1 if Na*Nb < Nc*Nd */ /* 0 if Na*Nb = Nc*Nd */ { lrs_mp mc, md; mulint (Na, Nb, mc); mulint (Nc, Nd, md); linint (mc, ONE, md, -ONE); if (positive (mc)) return (1); if (negative (mc)) return (-1); return (0); } void notimpl (char s[]) { fflush (stdout); fprintf (stderr, "\nAbnormal Termination %s\n", s); exit (1); } void getfactorial (lrs_mp factorial, long k) /* compute k factorial in lrs_mp */ { lrs_mp temp; long i; itomp (ONE, factorial); for (i = 2; i <= k; i++) { itomp (i, temp); mulint (temp, factorial, factorial); } } /* end of getfactorial */ /***************************************************************/ /* Package of routines for rational arithmetic */ /***************************************************************/ void scalerat (lrs_mp Na, lrs_mp Da, long ka) /* scales rational by ka */ { lrs_mp Nt; copy (Nt, Na); itomp (ZERO, Na); linint (Na, ZERO, Nt, ka); reduce (Na, Da); } void linrat (lrs_mp Na, lrs_mp Da, long ka, lrs_mp Nb, lrs_mp Db, long kb, lrs_mp Nc, lrs_mp Dc) /* computes Nc/Dc = ka*Na/Da +kb* Nb/Db and reduces answer by gcd(Nc,Dc) */ { lrs_mp c; mulint (Na, Db, Nc); mulint (Da, Nb, c); linint (Nc, ka, c, kb); /* Nc = (ka*Na*Db)+(kb*Da*Nb) */ mulint (Da, Db, Dc); /* Dc = Da*Db */ reduce (Nc, Dc); } void divrat (lrs_mp Na, lrs_mp Da, lrs_mp Nb, lrs_mp Db, lrs_mp Nc, lrs_mp Dc) /* computes Nc/Dc = (Na/Da) / ( Nb/Db ) and reduces answer by gcd(Nc,Dc) */ { mulint (Na, Db, Nc); mulint (Da, Nb, Dc); reduce (Nc, Dc); } void mulrat (lrs_mp Na, lrs_mp Da, lrs_mp Nb, lrs_mp Db, lrs_mp Nc, lrs_mp Dc) /* computes Nc/Dc = Na/Da * Nb/Db and reduces by gcd(Nc,Dc) */ { mulint (Na, Nb, Nc); mulint (Da, Db, Dc); reduce (Nc, Dc); } /* End package of routines for rational arithmetic */ /***************************************************************/ /* */ /* End of package for multiple precision arithmetic */ /* */ /***************************************************************/ void * xcalloc (long n, long s, long l, char *f) { void *tmp; tmp = calloc (n, s); if (tmp == 0) { char buf[200]; sprintf (buf, "\n\nFatal error on line %ld of %s", l, f); perror (buf); exit (1); } return tmp; } void lrs_getdigits (long *a, long *b) { /* send digit information to user */ *a = DIG2DEC (lrs_digits); *b = DIG2DEC (lrs_record_digits); return; } void lrs_default_digits_overflow () { fprintf (stdout, "\nOverflow at digits=%ld", DIG2DEC (lrs_digits)); fprintf (stdout, "\nInitialize lrs_mp_init with n > %ldL\n", DIG2DEC (lrs_digits)); exit (1); } #ifdef PLRS /* read a rational or integer and convert to lrs_mp with base BASE */ /* returns true if denominator is not one */ /* returns 999 if premature end of file */ long plrs_readrat (lrs_mp Na, lrs_mp Da, const char* rat) { char in[MAXINPUT], num[MAXINPUT], den[MAXINPUT]; strcpy(in, rat); atoaa (in, num, den); /*convert rational to num/dem strings */ atomp (num, Na); if (den[0] == '\0') { itomp (1L, Da); return (FALSE); } atomp (den, Da); return (TRUE); } #endif /* end of lrsmp.c */ lrslib-062/ext/0000700001553200155320000000000012722006425011251 5ustar avislrslib-062/ext/test/0000700001553200155320000000000012722006425012230 5ustar avislrslib-062/ext/test/cut16_11.ext0000600001553200155320000000101412722006425014213 0ustar aviscut16_11.ext V-representation *5 point cut polytope begin 16 11 integer 1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 end lrslib-062/ext/test/cyclic25_13.ext0000600001553200155320000000612012722006425014673 0ustar aviscyclic25_13.ine H-representation digits 300 begin 25 13 integer 1 -156 1690 -22464 265018 -3234816 38683450 -465813504 5585476858 -67077144576 804783054010 -9659108818944 115904429355898 1 -143 1391 -17303 185783 -2093663 22895951 -253333223 2782380263 -30653319983 337043838911 -3709051717943 40794692425943 1 -130 1118 -13000 125450 -1300000 12865658 -130000000 1295714810 -13000000000 129857319098 -1300000000000 12995123528570 1 -117 871 -9477 80743 -767637 6774391 -62178597 555322183 -5036466357 45185516311 -407953774917 3666707502823 1 -104 650 -6656 48698 -425984 3273530 -27262976 213818618 -1744830464 13815962810 -111669149696 888476726138 1 -91 455 -4459 26663 -218491 1395095 -10706059 70657223 -524596891 3529497335 -25705247659 175060262183 1 -78 286 -2808 12298 -101088 472186 -3639168 17549818 -131010048 643379386 -4716361728 23421698938 1 -65 143 -1625 3575 -40625 68783 -1015625 792935 -25390625 -15727777 -634765625 -1702643305 1 -52 26 -832 -1222 -13312 -81094 -212992 -3433222 -3407872 -129049414 -54525952 -4658367622 1 -39 -65 -351 -3497 -3159 -124865 -28431 -4199897 -255879 -141913265 -2302911 -4869562697 1 -26 -130 -104 -4342 -416 -133510 -1664 -4281862 -6656 -142667590 -26624 -4876418182 1 -13 -169 -13 -4537 -13 -134329 -13 -4285177 -13 -142680889 -13 -4876471417 1 0 -182 0 -4550 0 -134342 0 -4285190 0 -142680902 0 -4876471430 1 13 -169 13 -4537 13 -134329 13 -4285177 13 -142680889 13 -4876471417 1 26 -130 104 -4342 416 -133510 1664 -4281862 6656 -142667590 26624 -4876418182 1 39 -65 351 -3497 3159 -124865 28431 -4199897 255879 -141913265 2302911 -4869562697 1 52 26 832 -1222 13312 -81094 212992 -3433222 3407872 -129049414 54525952 -4658367622 1 65 143 1625 3575 40625 68783 1015625 792935 25390625 -15727777 634765625 -1702643305 1 78 286 2808 12298 101088 472186 3639168 17549818 131010048 643379386 4716361728 23421698938 1 91 455 4459 26663 218491 1395095 10706059 70657223 524596891 3529497335 25705247659 175060262183 1 104 650 6656 48698 425984 3273530 27262976 213818618 1744830464 13815962810 111669149696 888476726138 1 117 871 9477 80743 767637 6774391 62178597 555322183 5036466357 45185516311 407953774917 3666707502823 1 130 1118 13000 125450 1300000 12865658 130000000 1295714810 13000000000 129857319098 1300000000000 12995123528570 1 143 1391 17303 185783 2093663 22895951 253333223 2782380263 30653319983 337043838911 3709051717943 40794692425943 1 156 1690 22464 265018 3234816 38683450 465813504 5585476858 67077144576 804783054010 9659108818944 115904429355898 end lrslib-062/ext/test/tsp5.ext0000600001553200155320000000071312722006425013650 0ustar avistsp5.ext V-representation begin 12 11 rational 1 0 0 1 1 1 1 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 0 0 1 0 1 0 1 1 1 0 0 0 1 1 0 1 1 0 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 0 0 1 1 1 1 0 1 0 0 0 1 1 1 0 1 1 0 1 0 1 0 0 0 1 1 1 0 0 1 1 1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 0 1 end lrslib-062/ext/test/cut32_16.ext0000600001553200155320000000343512722006425014227 0ustar aviscut32_16.ext digits 50 V-representation *6 point cut polytope begin 32 16 integer 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 end lrslib-062/ext/metric/0000700001553200155320000000000012722006425012534 5ustar avislrslib-062/ext/metric/cp6.ext0000600001553200155320000000306212722006425013751 0ustar aviscp6.ext digits 50 V-representation *6 point cut cone begin 32 16 integer 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 1 1 0 1 0 0 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 0 0 0 1 0 1 0 1 1 1 0 1 1 1 0 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 0 1 1 1 0 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 1 0 0 0 1 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 1 1 0 1 1 0 1 0 0 1 1 1 0 0 1 1 1 1 1 0 0 1 0 1 1 0 1 1 0 0 1 1 1 1 1 0 1 0 0 1 0 1 1 0 1 1 0 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 1 0 0 0 1 1 0 0 1 1 0 1 1 1 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 1 0 0 1 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 1 1 1 0 0 1 1 0 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 end lrslib-062/ext/metric/cp7.ext0000600001553200155320000000577612722006425013770 0ustar aviscp7.ext *Complete Cut Polytope on 7 vertices *The number of facets is 116,764. V-representation begin 64 22 integer 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 0 1 1 1 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 1 1 0 1 1 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 1 0 1 1 1 1 0 1 1 1 1 0 0 0 1 1 1 0 0 0 1 0 1 1 0 1 1 1 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 0 1 1 1 0 1 1 1 1 0 1 0 0 1 0 0 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 0 1 0 1 1 1 0 1 0 0 1 0 1 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 1 0 0 1 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0 1 0 0 1 1 0 0 1 1 1 0 0 1 1 1 1 1 1 0 0 1 0 0 1 1 0 0 1 1 0 1 1 0 0 1 1 1 1 1 1 0 1 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 1 1 0 1 1 1 1 0 1 0 0 0 1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 0 0 0 1 0 0 1 0 1 1 0 1 0 1 1 1 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 1 1 0 0 1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 1 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 0 1 1 0 1 1 0 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 0 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 1 1 0 1 1 0 0 1 0 1 1 0 1 1 0 0 1 1 1 1 0 1 0 0 1 1 0 1 1 0 1 0 0 1 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 1 1 0 1 1 0 0 1 0 0 1 1 1 1 0 0 0 1 1 1 1 0 1 1 1 0 0 0 1 0 1 1 1 0 1 1 1 0 0 0 1 0 1 1 1 1 1 0 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 0 0 1 0 1 1 1 0 1 1 1 0 0 1 1 0 1 1 1 1 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 0 0 1 1 0 1 1 1 1 0 1 0 0 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 1 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 0 1 0 0 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 0 0 0 1 1 1 1 0 1 0 1 0 0 0 1 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 1 1 0 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 0 1 0 1 0 1 1 1 0 0 1 0 0 1 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 end lrslib-062/ext/metric/mp5.ext0000600001553200155320000000266212722006425013767 0ustar avismp5.ext V-representation begin 32 11 rational 1 1 1 1 1 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 1 0 1 2/3 2/3 2/3 2/3 2/3 2/3 2/3 2/3 2/3 2/3 1 1 0 1 1 1 0 0 1 1 0 1 0 1 1 1 1 1 1 0 0 0 1 2/3 2/3 1/3 1/3 2/3 1/3 1/3 1/3 1/3 2/3 1 0 1 0 1 1 0 1 1 0 1 1 1 1 0 1 0 1 0 1 0 1 1 1/3 2/3 2/3 2/3 1/3 1/3 1/3 2/3 2/3 2/3 1 0 1 1 0 1 1 0 0 1 1 1 1 1 1 0 0 0 1 0 1 1 1 1/3 1/3 2/3 2/3 2/3 1/3 1/3 1/3 1/3 2/3 1 0 0 0 1 0 0 1 0 1 1 1 1 0 0 1 1 1 0 0 1 1 1 2/3 1/3 2/3 2/3 1/3 2/3 2/3 1/3 1/3 2/3 1 1/3 2/3 1/3 1/3 1/3 2/3 2/3 1/3 1/3 2/3 1 2/3 1/3 1/3 1/3 1/3 1/3 1/3 2/3 2/3 2/3 1 0 0 1 0 0 1 0 1 0 1 1 2/3 2/3 2/3 1/3 2/3 2/3 1/3 2/3 1/3 1/3 1 1 0 1 0 1 0 1 1 0 1 1 2/3 1/3 1/3 2/3 1/3 1/3 2/3 2/3 1/3 1/3 1 1/3 1/3 1/3 2/3 2/3 2/3 1/3 2/3 1/3 1/3 1 1/3 1/3 1/3 1/3 2/3 2/3 2/3 2/3 2/3 2/3 1 0 1 0 0 1 0 0 1 1 0 1 2/3 1/3 2/3 1/3 1/3 2/3 1/3 1/3 2/3 1/3 1 1/3 2/3 1/3 2/3 1/3 2/3 1/3 1/3 2/3 1/3 1 1/3 1/3 2/3 1/3 2/3 1/3 2/3 1/3 2/3 1/3 1 1 1 0 0 0 1 1 1 1 0 1 1/3 2/3 2/3 1/3 1/3 1/3 2/3 2/3 1/3 1/3 1 1 0 0 0 1 1 1 0 0 0 1 2/3 2/3 1/3 2/3 2/3 1/3 2/3 1/3 2/3 1/3 1 0 0 0 0 0 0 0 0 0 0 end lrslib-062/ext/metric/cp4.ext0000600001553200155320000000030512722006425013744 0ustar aviscp4.ext V-representation begin 8 7 integer 1 0 0 0 0 0 0 1 0 1 1 1 1 0 1 0 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 0 0 1 0 1 0 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 0 1 end startingcobasis 2 3 4 5 6 7 8 lrslib-062/ext/metric/cp5.ext0000600001553200155320000000114512722006425013750 0ustar aviscp5.ext V-representation *5 point cut polytope digits 40 begin 16 11 integer 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 0 0 1 1 0 1 1 1 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 0 0 1 1 1 1 0 1 0 1 0 1 1 0 1 1 1 1 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 0 0 0 1 1 1 0 0 0 end lrslib-062/game20000600001553200155320000000020512722006425011366 0ustar avis*game: player 2 H-representation linearity 1 6 begin 6 4 rational 0 0 -6 1 0 -2 -5 1 0 -3 -3 1 0 1 0 0 0 0 1 0 -1 1 1 0 end lrslib-062/ine/0000700001553200155320000000000012722006616011226 5ustar avislrslib-062/ine/test-062/0000700001553200155320000000000012722006617012513 5ustar avislrslib-062/ine/test-062/zfw91nn.ine0000600001553200155320000001056212722006616014531 0ustar avis*Wang Zengfu's problem: wangzengfu@gmail.com *with nonnegative option: for use by lrs only nonnegative H-representation begin 54 38 integer 1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 -1 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1 -1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 end lrslib-062/ine/test-062/bv7.ine0000600001553200155320000002002212722006616013703 0ustar avis*ext form for perm H-representation linearity 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 begin 69 57 integer 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 -1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 end lrslib-062/ine/test-062/zfw91.ine0000600001553200155320000001610012722006616014167 0ustar avis*Wang Zengfu's problem: wangzengfu@gmail.com nonnegative H-representation begin 91 38 integer 1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 -1 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1 -1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 end lrslib-062/ine/test-062/mit71-61.ine0000600001553200155320000002272512722006616014406 0ustar avismit71.ine begin 71 61 rational 64 -384 0 192 0 0 768 0 0 -512 0 0 0 -768 0 0 0 0 0 768 0 0 0 0 0 0 0 0 0 0 0 0 0 192 0 0 0 0 0 -384 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -6 6 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 6 -6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -2 -2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 2 2 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 -2 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -6 -6 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 4 -8 16 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 -4 -8 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 4 -8 -16 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 -8 0 0 0 -24 24 0 24 -24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 0 0 0 -24 -24 0 24 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 -64 0 0 0 0 96 0 0 -64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -6 12 3 -12 -8 3 12 -6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -4 4 1 0 0 -1 -4 4 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -2 0 -1 4 0 -1 0 -2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -2 -4 3 -4 8 3 -4 -2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -4 1 0 0 -1 4 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 -3 0 0 3 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 -4 3 4 -8 3 -4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 -1 -4 0 -1 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 4 1 0 0 -1 -4 -4 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 12 3 12 8 3 12 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -8 -2 8 4 8 -4 -8 -8 8 2 -2 -2 10 -16 -4 12 8 -2 -8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -4 -2 4 0 0 0 0 4 -4 -2 2 -2 6 -4 0 -4 0 2 4 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -8 2 -8 4 8 4 8 -8 -8 2 2 -2 6 0 -4 4 -8 -2 8 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -4 2 -4 0 0 0 0 4 4 -2 -2 -2 2 4 0 -4 0 2 -4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 -2 0 4 -8 -4 8 0 0 2 -2 -2 2 8 -4 4 -8 -2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 -2 0 -4 0 4 0 0 0 2 -2 -2 2 0 4 -4 0 -2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 4 -8 4 -8 0 0 2 2 -2 -2 8 -4 -4 8 -2 0 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 -4 0 -4 0 0 0 2 2 -2 -2 0 4 4 0 -2 0 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 -2 -4 0 0 0 0 -4 4 -2 2 -2 -2 4 0 4 0 2 -4 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 2 4 0 0 0 0 -4 -4 -2 -2 -2 -6 -4 0 4 0 2 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 8 -2 -8 4 8 -4 -8 8 -8 2 -2 -2 -6 0 -4 -4 8 -2 8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 8 2 8 4 8 4 8 8 8 2 2 -2 -10 -16 -4 -12 -8 -2 -8 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 -8 4 16 4 -8 -8 4 0 0 0 0 0 0 0 0 0 0 0 -8 24 8 -24 -8 -16 8 16 8 -8 0 0 4 -16 20 4 -8 -8 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 -8 -4 0 4 8 0 -4 0 0 0 0 0 0 0 0 0 0 0 -8 16 0 8 -8 0 0 -16 0 8 0 0 4 -8 -4 4 0 8 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 0 4 0 -4 0 8 -4 0 0 0 0 0 0 0 0 0 0 0 -8 8 8 -8 8 0 -8 0 -8 8 0 0 4 -8 4 -4 8 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 -8 4 -16 4 -8 8 4 0 0 0 0 0 0 0 0 0 0 0 -8 8 -8 8 -8 16 -8 16 -8 -8 0 0 4 0 -12 4 8 -8 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 -4 0 -4 0 0 4 0 0 0 0 0 0 0 0 0 0 0 -8 0 0 8 8 0 0 0 0 -8 0 0 4 0 -4 -4 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 8 4 -16 4 8 -8 4 0 0 0 0 0 0 0 0 0 0 0 -8 -8 8 8 -8 16 8 -16 8 -8 0 0 4 0 -12 4 -8 8 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 0 4 0 -4 0 -8 -4 0 0 0 0 0 0 0 0 0 0 0 -8 -8 -8 -8 8 0 8 0 8 8 0 0 4 8 4 -4 -8 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 8 -4 0 4 -8 0 -4 0 0 0 0 0 0 0 0 0 0 0 -8 -16 0 8 -8 0 0 16 0 8 0 0 4 8 -4 4 0 -8 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 8 4 16 4 8 8 4 0 0 0 0 0 0 0 0 0 0 0 -8 -24 -8 -24 -8 -16 -8 -16 -8 -8 0 0 4 16 20 4 8 8 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -16 8 16 -16 4 -8 32 0 0 -16 -32 0 0 32 0 -8 0 4 -16 16 8 -16 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 0 0 8 -4 -8 16 0 0 0 0 0 0 -16 0 8 0 4 -8 0 0 8 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 8 -16 0 4 -8 0 0 0 -16 32 0 0 0 0 -8 0 4 0 -16 8 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 -8 0 0 4 -8 0 0 0 16 0 0 0 0 0 -8 0 4 0 0 -8 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 0 0 -8 -4 -8 -16 0 0 0 0 0 0 16 0 8 0 4 8 0 0 -8 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 16 8 16 16 4 -8 -32 0 0 -16 -32 0 0 -32 0 -8 0 4 16 16 8 16 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 -8 -16 16 8 -8 -16 16 32 0 -32 -16 0 16 0 0 0 0 0 0 -8 24 -8 -16 8 0 24 -64 -8 16 24 32 -8 0 -16 0 0 0 -8 24 -16 -8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 -16 -16 8 8 -16 -16 32 0 32 -16 0 -16 0 0 0 0 0 0 -8 8 -8 16 -8 0 24 -32 8 -16 24 -32 8 0 16 0 0 0 -8 8 16 -8 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 -8 0 0 -8 8 -16 16 0 0 0 16 0 -16 0 0 0 0 0 0 -8 8 8 0 -8 0 24 -16 -8 0 -24 0 8 0 16 0 0 0 -8 8 0 8 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 0 0 -8 -8 -16 -16 0 0 0 16 0 16 0 0 0 0 0 0 -8 -8 8 0 8 0 24 16 8 0 -24 0 -8 0 -16 0 0 0 -8 -8 0 8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 -8 16 -16 8 -8 -16 16 -32 0 32 -16 0 16 0 0 0 0 0 0 -8 -8 -8 16 8 0 24 32 -8 -16 24 -32 -8 0 -16 0 0 0 -8 -8 16 -8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 16 16 8 8 -16 -16 -32 0 -32 -16 0 -16 0 0 0 0 0 0 -8 -24 -8 -16 -8 0 24 64 8 16 24 32 8 0 16 0 0 0 -8 -24 -16 -8 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 -24 24 -8 0 0 0 0 0 0 -24 48 24 -24 -48 0 24 0 0 0 0 0 0 0 0 0 0 0 0 0 24 -48 -24 48 0 24 0 -24 0 0 0 0 -8 24 -24 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 8 -8 -8 8 0 0 0 0 0 0 -24 16 8 8 16 0 -24 0 0 0 0 0 0 0 0 0 0 0 0 0 24 -16 -8 -16 0 -8 0 24 0 0 0 0 -8 8 8 0 0 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 -8 -8 0 0 0 0 0 0 -24 -16 -8 8 16 0 24 0 0 0 0 0 0 0 0 0 0 0 0 0 24 16 8 -16 0 -8 0 -24 0 0 0 0 -8 -8 8 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 8 24 24 8 0 0 0 0 0 0 -24 -48 -24 -24 -48 0 -24 0 0 0 0 0 0 0 0 0 0 0 0 0 24 48 24 48 0 24 0 24 0 0 0 0 -8 -24 -24 0 0 -8 0 0 0 0 0 0 0 16 -32 16 0 0 0 0 0 0 0 -64 0 128 0 -64 0 64 0 -128 0 0 64 0 0 0 0 0 0 0 0 32 -64 32 0 0 0 -64 128 0 0 -64 0 0 0 0 0 0 0 16 -32 0 16 0 0 0 0 0 0 0 0 0 16 0 -16 0 0 0 0 0 0 0 -64 0 0 0 64 0 64 0 0 0 0 -64 0 0 0 0 0 0 0 0 32 0 -32 0 0 0 -64 0 0 0 64 0 0 0 0 0 0 0 16 0 0 -16 0 0 0 0 0 0 0 0 0 16 32 16 0 0 0 0 0 0 0 -64 0 -128 0 -64 0 64 0 128 0 0 64 0 0 0 0 0 0 0 0 32 64 32 0 0 0 -64 -128 0 0 -64 0 0 0 0 0 0 0 16 32 0 16 0 0 0 0 0 0 0 0 0 0 0 0 16 -32 16 -32 64 -32 0 -32 32 32 -32 0 0 80 -96 -64 16 64 0 0 0 0 0 0 0 0 0 16 -32 0 16 0 0 -64 96 32 -32 0 -32 0 0 0 0 0 0 16 -32 16 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 -16 -32 0 32 0 -32 0 0 32 0 0 80 0 0 -16 -64 0 0 0 0 0 0 0 0 0 16 0 0 -16 0 0 -64 0 0 32 0 32 0 0 0 0 0 0 16 0 -16 0 0 0 0 0 0 0 0 0 0 0 0 0 16 32 16 -32 -64 -32 0 -32 -32 -32 -32 0 0 80 96 64 16 64 0 0 0 0 0 0 0 0 0 16 32 0 16 0 0 -64 -96 -32 -32 0 -32 0 0 0 0 0 0 16 32 16 0 0 0 0 0 0 0 0 32 -32 -32 32 0 -128 128 0 128 -128 0 0 192 -64 -128 0 0 0 -256 128 128 0 0 0 0 0 0 0 0 0 0 0 -64 64 0 0 0 0 160 -128 -32 0 0 0 0 0 0 0 0 0 -32 32 0 0 0 0 0 0 0 0 0 32 32 -32 -32 0 -128 -128 0 128 128 0 0 192 64 128 0 0 0 -256 -128 -128 0 0 0 0 0 0 0 0 0 0 0 -64 -64 0 0 0 0 160 128 32 0 0 0 0 0 0 0 0 0 -32 -32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -4 6 -4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -2 0 2 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 -2 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 end lrslib-062/ine/test-062/perm10.ine0000600001553200155320000007023312722006617014323 0ustar avis*permutahedron n=10 H-representation linearity 1 1 begin 1023 11 integer -55 1 1 1 1 1 1 1 1 1 1 54 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 54 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 54 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 54 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 54 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 54 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 54 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 54 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 54 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 54 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 52 -1 -1 -1 -1 -1 -1 -1 -1 0 0 52 -1 -1 -1 -1 -1 -1 -1 0 -1 0 52 -1 -1 -1 -1 -1 -1 -1 0 0 -1 52 -1 -1 -1 -1 -1 -1 0 -1 -1 0 52 -1 -1 -1 -1 -1 -1 0 -1 0 -1 52 -1 -1 -1 -1 -1 -1 0 0 -1 -1 52 -1 -1 -1 -1 -1 0 -1 -1 -1 0 52 -1 -1 -1 -1 -1 0 -1 -1 0 -1 52 -1 -1 -1 -1 -1 0 -1 0 -1 -1 52 -1 -1 -1 -1 -1 0 0 -1 -1 -1 52 -1 -1 -1 -1 0 -1 -1 -1 -1 0 52 -1 -1 -1 -1 0 -1 -1 -1 0 -1 52 -1 -1 -1 -1 0 -1 -1 0 -1 -1 52 -1 -1 -1 -1 0 -1 0 -1 -1 -1 52 -1 -1 -1 -1 0 0 -1 -1 -1 -1 52 -1 -1 -1 0 -1 -1 -1 -1 -1 0 52 -1 -1 -1 0 -1 -1 -1 -1 0 -1 52 -1 -1 -1 0 -1 -1 -1 0 -1 -1 52 -1 -1 -1 0 -1 -1 0 -1 -1 -1 52 -1 -1 -1 0 -1 0 -1 -1 -1 -1 52 -1 -1 -1 0 0 -1 -1 -1 -1 -1 52 -1 -1 0 -1 -1 -1 -1 -1 -1 0 52 -1 -1 0 -1 -1 -1 -1 -1 0 -1 52 -1 -1 0 -1 -1 -1 -1 0 -1 -1 52 -1 -1 0 -1 -1 -1 0 -1 -1 -1 52 -1 -1 0 -1 -1 0 -1 -1 -1 -1 52 -1 -1 0 -1 0 -1 -1 -1 -1 -1 52 -1 -1 0 0 -1 -1 -1 -1 -1 -1 52 -1 0 -1 -1 -1 -1 -1 -1 -1 0 52 -1 0 -1 -1 -1 -1 -1 -1 0 -1 52 -1 0 -1 -1 -1 -1 -1 0 -1 -1 52 -1 0 -1 -1 -1 -1 0 -1 -1 -1 52 -1 0 -1 -1 -1 0 -1 -1 -1 -1 52 -1 0 -1 -1 0 -1 -1 -1 -1 -1 52 -1 0 -1 0 -1 -1 -1 -1 -1 -1 52 -1 0 0 -1 -1 -1 -1 -1 -1 -1 52 0 -1 -1 -1 -1 -1 -1 -1 -1 0 52 0 -1 -1 -1 -1 -1 -1 -1 0 -1 52 0 -1 -1 -1 -1 -1 -1 0 -1 -1 52 0 -1 -1 -1 -1 -1 0 -1 -1 -1 52 0 -1 -1 -1 -1 0 -1 -1 -1 -1 52 0 -1 -1 -1 0 -1 -1 -1 -1 -1 52 0 -1 -1 0 -1 -1 -1 -1 -1 -1 52 0 -1 0 -1 -1 -1 -1 -1 -1 -1 52 0 0 -1 -1 -1 -1 -1 -1 -1 -1 49 -1 -1 -1 -1 -1 -1 -1 0 0 0 49 -1 -1 -1 -1 -1 -1 0 -1 0 0 49 -1 -1 -1 -1 -1 -1 0 0 -1 0 49 -1 -1 -1 -1 -1 -1 0 0 0 -1 49 -1 -1 -1 -1 -1 0 -1 -1 0 0 49 -1 -1 -1 -1 -1 0 -1 0 -1 0 49 -1 -1 -1 -1 -1 0 -1 0 0 -1 49 -1 -1 -1 -1 -1 0 0 -1 -1 0 49 -1 -1 -1 -1 -1 0 0 -1 0 -1 49 -1 -1 -1 -1 -1 0 0 0 -1 -1 49 -1 -1 -1 -1 0 -1 -1 -1 0 0 49 -1 -1 -1 -1 0 -1 -1 0 -1 0 49 -1 -1 -1 -1 0 -1 -1 0 0 -1 49 -1 -1 -1 -1 0 -1 0 -1 -1 0 49 -1 -1 -1 -1 0 -1 0 -1 0 -1 49 -1 -1 -1 -1 0 -1 0 0 -1 -1 49 -1 -1 -1 -1 0 0 -1 -1 -1 0 49 -1 -1 -1 -1 0 0 -1 -1 0 -1 49 -1 -1 -1 -1 0 0 -1 0 -1 -1 49 -1 -1 -1 -1 0 0 0 -1 -1 -1 49 -1 -1 -1 0 -1 -1 -1 -1 0 0 49 -1 -1 -1 0 -1 -1 -1 0 -1 0 49 -1 -1 -1 0 -1 -1 -1 0 0 -1 49 -1 -1 -1 0 -1 -1 0 -1 -1 0 49 -1 -1 -1 0 -1 -1 0 -1 0 -1 49 -1 -1 -1 0 -1 -1 0 0 -1 -1 49 -1 -1 -1 0 -1 0 -1 -1 -1 0 49 -1 -1 -1 0 -1 0 -1 -1 0 -1 49 -1 -1 -1 0 -1 0 -1 0 -1 -1 49 -1 -1 -1 0 -1 0 0 -1 -1 -1 49 -1 -1 -1 0 0 -1 -1 -1 -1 0 49 -1 -1 -1 0 0 -1 -1 -1 0 -1 49 -1 -1 -1 0 0 -1 -1 0 -1 -1 49 -1 -1 -1 0 0 -1 0 -1 -1 -1 49 -1 -1 -1 0 0 0 -1 -1 -1 -1 49 -1 -1 0 -1 -1 -1 -1 -1 0 0 49 -1 -1 0 -1 -1 -1 -1 0 -1 0 49 -1 -1 0 -1 -1 -1 -1 0 0 -1 49 -1 -1 0 -1 -1 -1 0 -1 -1 0 49 -1 -1 0 -1 -1 -1 0 -1 0 -1 49 -1 -1 0 -1 -1 -1 0 0 -1 -1 49 -1 -1 0 -1 -1 0 -1 -1 -1 0 49 -1 -1 0 -1 -1 0 -1 -1 0 -1 49 -1 -1 0 -1 -1 0 -1 0 -1 -1 49 -1 -1 0 -1 -1 0 0 -1 -1 -1 49 -1 -1 0 -1 0 -1 -1 -1 -1 0 49 -1 -1 0 -1 0 -1 -1 -1 0 -1 49 -1 -1 0 -1 0 -1 -1 0 -1 -1 49 -1 -1 0 -1 0 -1 0 -1 -1 -1 49 -1 -1 0 -1 0 0 -1 -1 -1 -1 49 -1 -1 0 0 -1 -1 -1 -1 -1 0 49 -1 -1 0 0 -1 -1 -1 -1 0 -1 49 -1 -1 0 0 -1 -1 -1 0 -1 -1 49 -1 -1 0 0 -1 -1 0 -1 -1 -1 49 -1 -1 0 0 -1 0 -1 -1 -1 -1 49 -1 -1 0 0 0 -1 -1 -1 -1 -1 49 -1 0 -1 -1 -1 -1 -1 -1 0 0 49 -1 0 -1 -1 -1 -1 -1 0 -1 0 49 -1 0 -1 -1 -1 -1 -1 0 0 -1 49 -1 0 -1 -1 -1 -1 0 -1 -1 0 49 -1 0 -1 -1 -1 -1 0 -1 0 -1 49 -1 0 -1 -1 -1 -1 0 0 -1 -1 49 -1 0 -1 -1 -1 0 -1 -1 -1 0 49 -1 0 -1 -1 -1 0 -1 -1 0 -1 49 -1 0 -1 -1 -1 0 -1 0 -1 -1 49 -1 0 -1 -1 -1 0 0 -1 -1 -1 49 -1 0 -1 -1 0 -1 -1 -1 -1 0 49 -1 0 -1 -1 0 -1 -1 -1 0 -1 49 -1 0 -1 -1 0 -1 -1 0 -1 -1 49 -1 0 -1 -1 0 -1 0 -1 -1 -1 49 -1 0 -1 -1 0 0 -1 -1 -1 -1 49 -1 0 -1 0 -1 -1 -1 -1 -1 0 49 -1 0 -1 0 -1 -1 -1 -1 0 -1 49 -1 0 -1 0 -1 -1 -1 0 -1 -1 49 -1 0 -1 0 -1 -1 0 -1 -1 -1 49 -1 0 -1 0 -1 0 -1 -1 -1 -1 49 -1 0 -1 0 0 -1 -1 -1 -1 -1 49 -1 0 0 -1 -1 -1 -1 -1 -1 0 49 -1 0 0 -1 -1 -1 -1 -1 0 -1 49 -1 0 0 -1 -1 -1 -1 0 -1 -1 49 -1 0 0 -1 -1 -1 0 -1 -1 -1 49 -1 0 0 -1 -1 0 -1 -1 -1 -1 49 -1 0 0 -1 0 -1 -1 -1 -1 -1 49 -1 0 0 0 -1 -1 -1 -1 -1 -1 49 0 -1 -1 -1 -1 -1 -1 -1 0 0 49 0 -1 -1 -1 -1 -1 -1 0 -1 0 49 0 -1 -1 -1 -1 -1 -1 0 0 -1 49 0 -1 -1 -1 -1 -1 0 -1 -1 0 49 0 -1 -1 -1 -1 -1 0 -1 0 -1 49 0 -1 -1 -1 -1 -1 0 0 -1 -1 49 0 -1 -1 -1 -1 0 -1 -1 -1 0 49 0 -1 -1 -1 -1 0 -1 -1 0 -1 49 0 -1 -1 -1 -1 0 -1 0 -1 -1 49 0 -1 -1 -1 -1 0 0 -1 -1 -1 49 0 -1 -1 -1 0 -1 -1 -1 -1 0 49 0 -1 -1 -1 0 -1 -1 -1 0 -1 49 0 -1 -1 -1 0 -1 -1 0 -1 -1 49 0 -1 -1 -1 0 -1 0 -1 -1 -1 49 0 -1 -1 -1 0 0 -1 -1 -1 -1 49 0 -1 -1 0 -1 -1 -1 -1 -1 0 49 0 -1 -1 0 -1 -1 -1 -1 0 -1 49 0 -1 -1 0 -1 -1 -1 0 -1 -1 49 0 -1 -1 0 -1 -1 0 -1 -1 -1 49 0 -1 -1 0 -1 0 -1 -1 -1 -1 49 0 -1 -1 0 0 -1 -1 -1 -1 -1 49 0 -1 0 -1 -1 -1 -1 -1 -1 0 49 0 -1 0 -1 -1 -1 -1 -1 0 -1 49 0 -1 0 -1 -1 -1 -1 0 -1 -1 49 0 -1 0 -1 -1 -1 0 -1 -1 -1 49 0 -1 0 -1 -1 0 -1 -1 -1 -1 49 0 -1 0 -1 0 -1 -1 -1 -1 -1 49 0 -1 0 0 -1 -1 -1 -1 -1 -1 49 0 0 -1 -1 -1 -1 -1 -1 -1 0 49 0 0 -1 -1 -1 -1 -1 -1 0 -1 49 0 0 -1 -1 -1 -1 -1 0 -1 -1 49 0 0 -1 -1 -1 -1 0 -1 -1 -1 49 0 0 -1 -1 -1 0 -1 -1 -1 -1 49 0 0 -1 -1 0 -1 -1 -1 -1 -1 49 0 0 -1 0 -1 -1 -1 -1 -1 -1 49 0 0 0 -1 -1 -1 -1 -1 -1 -1 45 -1 -1 -1 -1 -1 -1 0 0 0 0 45 -1 -1 -1 -1 -1 0 -1 0 0 0 45 -1 -1 -1 -1 -1 0 0 -1 0 0 45 -1 -1 -1 -1 -1 0 0 0 -1 0 45 -1 -1 -1 -1 -1 0 0 0 0 -1 45 -1 -1 -1 -1 0 -1 -1 0 0 0 45 -1 -1 -1 -1 0 -1 0 -1 0 0 45 -1 -1 -1 -1 0 -1 0 0 -1 0 45 -1 -1 -1 -1 0 -1 0 0 0 -1 45 -1 -1 -1 -1 0 0 -1 -1 0 0 45 -1 -1 -1 -1 0 0 -1 0 -1 0 45 -1 -1 -1 -1 0 0 -1 0 0 -1 45 -1 -1 -1 -1 0 0 0 -1 -1 0 45 -1 -1 -1 -1 0 0 0 -1 0 -1 45 -1 -1 -1 -1 0 0 0 0 -1 -1 45 -1 -1 -1 0 -1 -1 -1 0 0 0 45 -1 -1 -1 0 -1 -1 0 -1 0 0 45 -1 -1 -1 0 -1 -1 0 0 -1 0 45 -1 -1 -1 0 -1 -1 0 0 0 -1 45 -1 -1 -1 0 -1 0 -1 -1 0 0 45 -1 -1 -1 0 -1 0 -1 0 -1 0 45 -1 -1 -1 0 -1 0 -1 0 0 -1 45 -1 -1 -1 0 -1 0 0 -1 -1 0 45 -1 -1 -1 0 -1 0 0 -1 0 -1 45 -1 -1 -1 0 -1 0 0 0 -1 -1 45 -1 -1 -1 0 0 -1 -1 -1 0 0 45 -1 -1 -1 0 0 -1 -1 0 -1 0 45 -1 -1 -1 0 0 -1 -1 0 0 -1 45 -1 -1 -1 0 0 -1 0 -1 -1 0 45 -1 -1 -1 0 0 -1 0 -1 0 -1 45 -1 -1 -1 0 0 -1 0 0 -1 -1 45 -1 -1 -1 0 0 0 -1 -1 -1 0 45 -1 -1 -1 0 0 0 -1 -1 0 -1 45 -1 -1 -1 0 0 0 -1 0 -1 -1 45 -1 -1 -1 0 0 0 0 -1 -1 -1 45 -1 -1 0 -1 -1 -1 -1 0 0 0 45 -1 -1 0 -1 -1 -1 0 -1 0 0 45 -1 -1 0 -1 -1 -1 0 0 -1 0 45 -1 -1 0 -1 -1 -1 0 0 0 -1 45 -1 -1 0 -1 -1 0 -1 -1 0 0 45 -1 -1 0 -1 -1 0 -1 0 -1 0 45 -1 -1 0 -1 -1 0 -1 0 0 -1 45 -1 -1 0 -1 -1 0 0 -1 -1 0 45 -1 -1 0 -1 -1 0 0 -1 0 -1 45 -1 -1 0 -1 -1 0 0 0 -1 -1 45 -1 -1 0 -1 0 -1 -1 -1 0 0 45 -1 -1 0 -1 0 -1 -1 0 -1 0 45 -1 -1 0 -1 0 -1 -1 0 0 -1 45 -1 -1 0 -1 0 -1 0 -1 -1 0 45 -1 -1 0 -1 0 -1 0 -1 0 -1 45 -1 -1 0 -1 0 -1 0 0 -1 -1 45 -1 -1 0 -1 0 0 -1 -1 -1 0 45 -1 -1 0 -1 0 0 -1 -1 0 -1 45 -1 -1 0 -1 0 0 -1 0 -1 -1 45 -1 -1 0 -1 0 0 0 -1 -1 -1 45 -1 -1 0 0 -1 -1 -1 -1 0 0 45 -1 -1 0 0 -1 -1 -1 0 -1 0 45 -1 -1 0 0 -1 -1 -1 0 0 -1 45 -1 -1 0 0 -1 -1 0 -1 -1 0 45 -1 -1 0 0 -1 -1 0 -1 0 -1 45 -1 -1 0 0 -1 -1 0 0 -1 -1 45 -1 -1 0 0 -1 0 -1 -1 -1 0 45 -1 -1 0 0 -1 0 -1 -1 0 -1 45 -1 -1 0 0 -1 0 -1 0 -1 -1 45 -1 -1 0 0 -1 0 0 -1 -1 -1 45 -1 -1 0 0 0 -1 -1 -1 -1 0 45 -1 -1 0 0 0 -1 -1 -1 0 -1 45 -1 -1 0 0 0 -1 -1 0 -1 -1 45 -1 -1 0 0 0 -1 0 -1 -1 -1 45 -1 -1 0 0 0 0 -1 -1 -1 -1 45 -1 0 -1 -1 -1 -1 -1 0 0 0 45 -1 0 -1 -1 -1 -1 0 -1 0 0 45 -1 0 -1 -1 -1 -1 0 0 -1 0 45 -1 0 -1 -1 -1 -1 0 0 0 -1 45 -1 0 -1 -1 -1 0 -1 -1 0 0 45 -1 0 -1 -1 -1 0 -1 0 -1 0 45 -1 0 -1 -1 -1 0 -1 0 0 -1 45 -1 0 -1 -1 -1 0 0 -1 -1 0 45 -1 0 -1 -1 -1 0 0 -1 0 -1 45 -1 0 -1 -1 -1 0 0 0 -1 -1 45 -1 0 -1 -1 0 -1 -1 -1 0 0 45 -1 0 -1 -1 0 -1 -1 0 -1 0 45 -1 0 -1 -1 0 -1 -1 0 0 -1 45 -1 0 -1 -1 0 -1 0 -1 -1 0 45 -1 0 -1 -1 0 -1 0 -1 0 -1 45 -1 0 -1 -1 0 -1 0 0 -1 -1 45 -1 0 -1 -1 0 0 -1 -1 -1 0 45 -1 0 -1 -1 0 0 -1 -1 0 -1 45 -1 0 -1 -1 0 0 -1 0 -1 -1 45 -1 0 -1 -1 0 0 0 -1 -1 -1 45 -1 0 -1 0 -1 -1 -1 -1 0 0 45 -1 0 -1 0 -1 -1 -1 0 -1 0 45 -1 0 -1 0 -1 -1 -1 0 0 -1 45 -1 0 -1 0 -1 -1 0 -1 -1 0 45 -1 0 -1 0 -1 -1 0 -1 0 -1 45 -1 0 -1 0 -1 -1 0 0 -1 -1 45 -1 0 -1 0 -1 0 -1 -1 -1 0 45 -1 0 -1 0 -1 0 -1 -1 0 -1 45 -1 0 -1 0 -1 0 -1 0 -1 -1 45 -1 0 -1 0 -1 0 0 -1 -1 -1 45 -1 0 -1 0 0 -1 -1 -1 -1 0 45 -1 0 -1 0 0 -1 -1 -1 0 -1 45 -1 0 -1 0 0 -1 -1 0 -1 -1 45 -1 0 -1 0 0 -1 0 -1 -1 -1 45 -1 0 -1 0 0 0 -1 -1 -1 -1 45 -1 0 0 -1 -1 -1 -1 -1 0 0 45 -1 0 0 -1 -1 -1 -1 0 -1 0 45 -1 0 0 -1 -1 -1 -1 0 0 -1 45 -1 0 0 -1 -1 -1 0 -1 -1 0 45 -1 0 0 -1 -1 -1 0 -1 0 -1 45 -1 0 0 -1 -1 -1 0 0 -1 -1 45 -1 0 0 -1 -1 0 -1 -1 -1 0 45 -1 0 0 -1 -1 0 -1 -1 0 -1 45 -1 0 0 -1 -1 0 -1 0 -1 -1 45 -1 0 0 -1 -1 0 0 -1 -1 -1 45 -1 0 0 -1 0 -1 -1 -1 -1 0 45 -1 0 0 -1 0 -1 -1 -1 0 -1 45 -1 0 0 -1 0 -1 -1 0 -1 -1 45 -1 0 0 -1 0 -1 0 -1 -1 -1 45 -1 0 0 -1 0 0 -1 -1 -1 -1 45 -1 0 0 0 -1 -1 -1 -1 -1 0 45 -1 0 0 0 -1 -1 -1 -1 0 -1 45 -1 0 0 0 -1 -1 -1 0 -1 -1 45 -1 0 0 0 -1 -1 0 -1 -1 -1 45 -1 0 0 0 -1 0 -1 -1 -1 -1 45 -1 0 0 0 0 -1 -1 -1 -1 -1 45 0 -1 -1 -1 -1 -1 -1 0 0 0 45 0 -1 -1 -1 -1 -1 0 -1 0 0 45 0 -1 -1 -1 -1 -1 0 0 -1 0 45 0 -1 -1 -1 -1 -1 0 0 0 -1 45 0 -1 -1 -1 -1 0 -1 -1 0 0 45 0 -1 -1 -1 -1 0 -1 0 -1 0 45 0 -1 -1 -1 -1 0 -1 0 0 -1 45 0 -1 -1 -1 -1 0 0 -1 -1 0 45 0 -1 -1 -1 -1 0 0 -1 0 -1 45 0 -1 -1 -1 -1 0 0 0 -1 -1 45 0 -1 -1 -1 0 -1 -1 -1 0 0 45 0 -1 -1 -1 0 -1 -1 0 -1 0 45 0 -1 -1 -1 0 -1 -1 0 0 -1 45 0 -1 -1 -1 0 -1 0 -1 -1 0 45 0 -1 -1 -1 0 -1 0 -1 0 -1 45 0 -1 -1 -1 0 -1 0 0 -1 -1 45 0 -1 -1 -1 0 0 -1 -1 -1 0 45 0 -1 -1 -1 0 0 -1 -1 0 -1 45 0 -1 -1 -1 0 0 -1 0 -1 -1 45 0 -1 -1 -1 0 0 0 -1 -1 -1 45 0 -1 -1 0 -1 -1 -1 -1 0 0 45 0 -1 -1 0 -1 -1 -1 0 -1 0 45 0 -1 -1 0 -1 -1 -1 0 0 -1 45 0 -1 -1 0 -1 -1 0 -1 -1 0 45 0 -1 -1 0 -1 -1 0 -1 0 -1 45 0 -1 -1 0 -1 -1 0 0 -1 -1 45 0 -1 -1 0 -1 0 -1 -1 -1 0 45 0 -1 -1 0 -1 0 -1 -1 0 -1 45 0 -1 -1 0 -1 0 -1 0 -1 -1 45 0 -1 -1 0 -1 0 0 -1 -1 -1 45 0 -1 -1 0 0 -1 -1 -1 -1 0 45 0 -1 -1 0 0 -1 -1 -1 0 -1 45 0 -1 -1 0 0 -1 -1 0 -1 -1 45 0 -1 -1 0 0 -1 0 -1 -1 -1 45 0 -1 -1 0 0 0 -1 -1 -1 -1 45 0 -1 0 -1 -1 -1 -1 -1 0 0 45 0 -1 0 -1 -1 -1 -1 0 -1 0 45 0 -1 0 -1 -1 -1 -1 0 0 -1 45 0 -1 0 -1 -1 -1 0 -1 -1 0 45 0 -1 0 -1 -1 -1 0 -1 0 -1 45 0 -1 0 -1 -1 -1 0 0 -1 -1 45 0 -1 0 -1 -1 0 -1 -1 -1 0 45 0 -1 0 -1 -1 0 -1 -1 0 -1 45 0 -1 0 -1 -1 0 -1 0 -1 -1 45 0 -1 0 -1 -1 0 0 -1 -1 -1 45 0 -1 0 -1 0 -1 -1 -1 -1 0 45 0 -1 0 -1 0 -1 -1 -1 0 -1 45 0 -1 0 -1 0 -1 -1 0 -1 -1 45 0 -1 0 -1 0 -1 0 -1 -1 -1 45 0 -1 0 -1 0 0 -1 -1 -1 -1 45 0 -1 0 0 -1 -1 -1 -1 -1 0 45 0 -1 0 0 -1 -1 -1 -1 0 -1 45 0 -1 0 0 -1 -1 -1 0 -1 -1 45 0 -1 0 0 -1 -1 0 -1 -1 -1 45 0 -1 0 0 -1 0 -1 -1 -1 -1 45 0 -1 0 0 0 -1 -1 -1 -1 -1 45 0 0 -1 -1 -1 -1 -1 -1 0 0 45 0 0 -1 -1 -1 -1 -1 0 -1 0 45 0 0 -1 -1 -1 -1 -1 0 0 -1 45 0 0 -1 -1 -1 -1 0 -1 -1 0 45 0 0 -1 -1 -1 -1 0 -1 0 -1 45 0 0 -1 -1 -1 -1 0 0 -1 -1 45 0 0 -1 -1 -1 0 -1 -1 -1 0 45 0 0 -1 -1 -1 0 -1 -1 0 -1 45 0 0 -1 -1 -1 0 -1 0 -1 -1 45 0 0 -1 -1 -1 0 0 -1 -1 -1 45 0 0 -1 -1 0 -1 -1 -1 -1 0 45 0 0 -1 -1 0 -1 -1 -1 0 -1 45 0 0 -1 -1 0 -1 -1 0 -1 -1 45 0 0 -1 -1 0 -1 0 -1 -1 -1 45 0 0 -1 -1 0 0 -1 -1 -1 -1 45 0 0 -1 0 -1 -1 -1 -1 -1 0 45 0 0 -1 0 -1 -1 -1 -1 0 -1 45 0 0 -1 0 -1 -1 -1 0 -1 -1 45 0 0 -1 0 -1 -1 0 -1 -1 -1 45 0 0 -1 0 -1 0 -1 -1 -1 -1 45 0 0 -1 0 0 -1 -1 -1 -1 -1 45 0 0 0 -1 -1 -1 -1 -1 -1 0 45 0 0 0 -1 -1 -1 -1 -1 0 -1 45 0 0 0 -1 -1 -1 -1 0 -1 -1 45 0 0 0 -1 -1 -1 0 -1 -1 -1 45 0 0 0 -1 -1 0 -1 -1 -1 -1 45 0 0 0 -1 0 -1 -1 -1 -1 -1 45 0 0 0 0 -1 -1 -1 -1 -1 -1 40 -1 -1 -1 -1 -1 0 0 0 0 0 40 -1 -1 -1 -1 0 -1 0 0 0 0 40 -1 -1 -1 -1 0 0 -1 0 0 0 40 -1 -1 -1 -1 0 0 0 -1 0 0 40 -1 -1 -1 -1 0 0 0 0 -1 0 40 -1 -1 -1 -1 0 0 0 0 0 -1 40 -1 -1 -1 0 -1 -1 0 0 0 0 40 -1 -1 -1 0 -1 0 -1 0 0 0 40 -1 -1 -1 0 -1 0 0 -1 0 0 40 -1 -1 -1 0 -1 0 0 0 -1 0 40 -1 -1 -1 0 -1 0 0 0 0 -1 40 -1 -1 -1 0 0 -1 -1 0 0 0 40 -1 -1 -1 0 0 -1 0 -1 0 0 40 -1 -1 -1 0 0 -1 0 0 -1 0 40 -1 -1 -1 0 0 -1 0 0 0 -1 40 -1 -1 -1 0 0 0 -1 -1 0 0 40 -1 -1 -1 0 0 0 -1 0 -1 0 40 -1 -1 -1 0 0 0 -1 0 0 -1 40 -1 -1 -1 0 0 0 0 -1 -1 0 40 -1 -1 -1 0 0 0 0 -1 0 -1 40 -1 -1 -1 0 0 0 0 0 -1 -1 40 -1 -1 0 -1 -1 -1 0 0 0 0 40 -1 -1 0 -1 -1 0 -1 0 0 0 40 -1 -1 0 -1 -1 0 0 -1 0 0 40 -1 -1 0 -1 -1 0 0 0 -1 0 40 -1 -1 0 -1 -1 0 0 0 0 -1 40 -1 -1 0 -1 0 -1 -1 0 0 0 40 -1 -1 0 -1 0 -1 0 -1 0 0 40 -1 -1 0 -1 0 -1 0 0 -1 0 40 -1 -1 0 -1 0 -1 0 0 0 -1 40 -1 -1 0 -1 0 0 -1 -1 0 0 40 -1 -1 0 -1 0 0 -1 0 -1 0 40 -1 -1 0 -1 0 0 -1 0 0 -1 40 -1 -1 0 -1 0 0 0 -1 -1 0 40 -1 -1 0 -1 0 0 0 -1 0 -1 40 -1 -1 0 -1 0 0 0 0 -1 -1 40 -1 -1 0 0 -1 -1 -1 0 0 0 40 -1 -1 0 0 -1 -1 0 -1 0 0 40 -1 -1 0 0 -1 -1 0 0 -1 0 40 -1 -1 0 0 -1 -1 0 0 0 -1 40 -1 -1 0 0 -1 0 -1 -1 0 0 40 -1 -1 0 0 -1 0 -1 0 -1 0 40 -1 -1 0 0 -1 0 -1 0 0 -1 40 -1 -1 0 0 -1 0 0 -1 -1 0 40 -1 -1 0 0 -1 0 0 -1 0 -1 40 -1 -1 0 0 -1 0 0 0 -1 -1 40 -1 -1 0 0 0 -1 -1 -1 0 0 40 -1 -1 0 0 0 -1 -1 0 -1 0 40 -1 -1 0 0 0 -1 -1 0 0 -1 40 -1 -1 0 0 0 -1 0 -1 -1 0 40 -1 -1 0 0 0 -1 0 -1 0 -1 40 -1 -1 0 0 0 -1 0 0 -1 -1 40 -1 -1 0 0 0 0 -1 -1 -1 0 40 -1 -1 0 0 0 0 -1 -1 0 -1 40 -1 -1 0 0 0 0 -1 0 -1 -1 40 -1 -1 0 0 0 0 0 -1 -1 -1 40 -1 0 -1 -1 -1 -1 0 0 0 0 40 -1 0 -1 -1 -1 0 -1 0 0 0 40 -1 0 -1 -1 -1 0 0 -1 0 0 40 -1 0 -1 -1 -1 0 0 0 -1 0 40 -1 0 -1 -1 -1 0 0 0 0 -1 40 -1 0 -1 -1 0 -1 -1 0 0 0 40 -1 0 -1 -1 0 -1 0 -1 0 0 40 -1 0 -1 -1 0 -1 0 0 -1 0 40 -1 0 -1 -1 0 -1 0 0 0 -1 40 -1 0 -1 -1 0 0 -1 -1 0 0 40 -1 0 -1 -1 0 0 -1 0 -1 0 40 -1 0 -1 -1 0 0 -1 0 0 -1 40 -1 0 -1 -1 0 0 0 -1 -1 0 40 -1 0 -1 -1 0 0 0 -1 0 -1 40 -1 0 -1 -1 0 0 0 0 -1 -1 40 -1 0 -1 0 -1 -1 -1 0 0 0 40 -1 0 -1 0 -1 -1 0 -1 0 0 40 -1 0 -1 0 -1 -1 0 0 -1 0 40 -1 0 -1 0 -1 -1 0 0 0 -1 40 -1 0 -1 0 -1 0 -1 -1 0 0 40 -1 0 -1 0 -1 0 -1 0 -1 0 40 -1 0 -1 0 -1 0 -1 0 0 -1 40 -1 0 -1 0 -1 0 0 -1 -1 0 40 -1 0 -1 0 -1 0 0 -1 0 -1 40 -1 0 -1 0 -1 0 0 0 -1 -1 40 -1 0 -1 0 0 -1 -1 -1 0 0 40 -1 0 -1 0 0 -1 -1 0 -1 0 40 -1 0 -1 0 0 -1 -1 0 0 -1 40 -1 0 -1 0 0 -1 0 -1 -1 0 40 -1 0 -1 0 0 -1 0 -1 0 -1 40 -1 0 -1 0 0 -1 0 0 -1 -1 40 -1 0 -1 0 0 0 -1 -1 -1 0 40 -1 0 -1 0 0 0 -1 -1 0 -1 40 -1 0 -1 0 0 0 -1 0 -1 -1 40 -1 0 -1 0 0 0 0 -1 -1 -1 40 -1 0 0 -1 -1 -1 -1 0 0 0 40 -1 0 0 -1 -1 -1 0 -1 0 0 40 -1 0 0 -1 -1 -1 0 0 -1 0 40 -1 0 0 -1 -1 -1 0 0 0 -1 40 -1 0 0 -1 -1 0 -1 -1 0 0 40 -1 0 0 -1 -1 0 -1 0 -1 0 40 -1 0 0 -1 -1 0 -1 0 0 -1 40 -1 0 0 -1 -1 0 0 -1 -1 0 40 -1 0 0 -1 -1 0 0 -1 0 -1 40 -1 0 0 -1 -1 0 0 0 -1 -1 40 -1 0 0 -1 0 -1 -1 -1 0 0 40 -1 0 0 -1 0 -1 -1 0 -1 0 40 -1 0 0 -1 0 -1 -1 0 0 -1 40 -1 0 0 -1 0 -1 0 -1 -1 0 40 -1 0 0 -1 0 -1 0 -1 0 -1 40 -1 0 0 -1 0 -1 0 0 -1 -1 40 -1 0 0 -1 0 0 -1 -1 -1 0 40 -1 0 0 -1 0 0 -1 -1 0 -1 40 -1 0 0 -1 0 0 -1 0 -1 -1 40 -1 0 0 -1 0 0 0 -1 -1 -1 40 -1 0 0 0 -1 -1 -1 -1 0 0 40 -1 0 0 0 -1 -1 -1 0 -1 0 40 -1 0 0 0 -1 -1 -1 0 0 -1 40 -1 0 0 0 -1 -1 0 -1 -1 0 40 -1 0 0 0 -1 -1 0 -1 0 -1 40 -1 0 0 0 -1 -1 0 0 -1 -1 40 -1 0 0 0 -1 0 -1 -1 -1 0 40 -1 0 0 0 -1 0 -1 -1 0 -1 40 -1 0 0 0 -1 0 -1 0 -1 -1 40 -1 0 0 0 -1 0 0 -1 -1 -1 40 -1 0 0 0 0 -1 -1 -1 -1 0 40 -1 0 0 0 0 -1 -1 -1 0 -1 40 -1 0 0 0 0 -1 -1 0 -1 -1 40 -1 0 0 0 0 -1 0 -1 -1 -1 40 -1 0 0 0 0 0 -1 -1 -1 -1 40 0 -1 -1 -1 -1 -1 0 0 0 0 40 0 -1 -1 -1 -1 0 -1 0 0 0 40 0 -1 -1 -1 -1 0 0 -1 0 0 40 0 -1 -1 -1 -1 0 0 0 -1 0 40 0 -1 -1 -1 -1 0 0 0 0 -1 40 0 -1 -1 -1 0 -1 -1 0 0 0 40 0 -1 -1 -1 0 -1 0 -1 0 0 40 0 -1 -1 -1 0 -1 0 0 -1 0 40 0 -1 -1 -1 0 -1 0 0 0 -1 40 0 -1 -1 -1 0 0 -1 -1 0 0 40 0 -1 -1 -1 0 0 -1 0 -1 0 40 0 -1 -1 -1 0 0 -1 0 0 -1 40 0 -1 -1 -1 0 0 0 -1 -1 0 40 0 -1 -1 -1 0 0 0 -1 0 -1 40 0 -1 -1 -1 0 0 0 0 -1 -1 40 0 -1 -1 0 -1 -1 -1 0 0 0 40 0 -1 -1 0 -1 -1 0 -1 0 0 40 0 -1 -1 0 -1 -1 0 0 -1 0 40 0 -1 -1 0 -1 -1 0 0 0 -1 40 0 -1 -1 0 -1 0 -1 -1 0 0 40 0 -1 -1 0 -1 0 -1 0 -1 0 40 0 -1 -1 0 -1 0 -1 0 0 -1 40 0 -1 -1 0 -1 0 0 -1 -1 0 40 0 -1 -1 0 -1 0 0 -1 0 -1 40 0 -1 -1 0 -1 0 0 0 -1 -1 40 0 -1 -1 0 0 -1 -1 -1 0 0 40 0 -1 -1 0 0 -1 -1 0 -1 0 40 0 -1 -1 0 0 -1 -1 0 0 -1 40 0 -1 -1 0 0 -1 0 -1 -1 0 40 0 -1 -1 0 0 -1 0 -1 0 -1 40 0 -1 -1 0 0 -1 0 0 -1 -1 40 0 -1 -1 0 0 0 -1 -1 -1 0 40 0 -1 -1 0 0 0 -1 -1 0 -1 40 0 -1 -1 0 0 0 -1 0 -1 -1 40 0 -1 -1 0 0 0 0 -1 -1 -1 40 0 -1 0 -1 -1 -1 -1 0 0 0 40 0 -1 0 -1 -1 -1 0 -1 0 0 40 0 -1 0 -1 -1 -1 0 0 -1 0 40 0 -1 0 -1 -1 -1 0 0 0 -1 40 0 -1 0 -1 -1 0 -1 -1 0 0 40 0 -1 0 -1 -1 0 -1 0 -1 0 40 0 -1 0 -1 -1 0 -1 0 0 -1 40 0 -1 0 -1 -1 0 0 -1 -1 0 40 0 -1 0 -1 -1 0 0 -1 0 -1 40 0 -1 0 -1 -1 0 0 0 -1 -1 40 0 -1 0 -1 0 -1 -1 -1 0 0 40 0 -1 0 -1 0 -1 -1 0 -1 0 40 0 -1 0 -1 0 -1 -1 0 0 -1 40 0 -1 0 -1 0 -1 0 -1 -1 0 40 0 -1 0 -1 0 -1 0 -1 0 -1 40 0 -1 0 -1 0 -1 0 0 -1 -1 40 0 -1 0 -1 0 0 -1 -1 -1 0 40 0 -1 0 -1 0 0 -1 -1 0 -1 40 0 -1 0 -1 0 0 -1 0 -1 -1 40 0 -1 0 -1 0 0 0 -1 -1 -1 40 0 -1 0 0 -1 -1 -1 -1 0 0 40 0 -1 0 0 -1 -1 -1 0 -1 0 40 0 -1 0 0 -1 -1 -1 0 0 -1 40 0 -1 0 0 -1 -1 0 -1 -1 0 40 0 -1 0 0 -1 -1 0 -1 0 -1 40 0 -1 0 0 -1 -1 0 0 -1 -1 40 0 -1 0 0 -1 0 -1 -1 -1 0 40 0 -1 0 0 -1 0 -1 -1 0 -1 40 0 -1 0 0 -1 0 -1 0 -1 -1 40 0 -1 0 0 -1 0 0 -1 -1 -1 40 0 -1 0 0 0 -1 -1 -1 -1 0 40 0 -1 0 0 0 -1 -1 -1 0 -1 40 0 -1 0 0 0 -1 -1 0 -1 -1 40 0 -1 0 0 0 -1 0 -1 -1 -1 40 0 -1 0 0 0 0 -1 -1 -1 -1 40 0 0 -1 -1 -1 -1 -1 0 0 0 40 0 0 -1 -1 -1 -1 0 -1 0 0 40 0 0 -1 -1 -1 -1 0 0 -1 0 40 0 0 -1 -1 -1 -1 0 0 0 -1 40 0 0 -1 -1 -1 0 -1 -1 0 0 40 0 0 -1 -1 -1 0 -1 0 -1 0 40 0 0 -1 -1 -1 0 -1 0 0 -1 40 0 0 -1 -1 -1 0 0 -1 -1 0 40 0 0 -1 -1 -1 0 0 -1 0 -1 40 0 0 -1 -1 -1 0 0 0 -1 -1 40 0 0 -1 -1 0 -1 -1 -1 0 0 40 0 0 -1 -1 0 -1 -1 0 -1 0 40 0 0 -1 -1 0 -1 -1 0 0 -1 40 0 0 -1 -1 0 -1 0 -1 -1 0 40 0 0 -1 -1 0 -1 0 -1 0 -1 40 0 0 -1 -1 0 -1 0 0 -1 -1 40 0 0 -1 -1 0 0 -1 -1 -1 0 40 0 0 -1 -1 0 0 -1 -1 0 -1 40 0 0 -1 -1 0 0 -1 0 -1 -1 40 0 0 -1 -1 0 0 0 -1 -1 -1 40 0 0 -1 0 -1 -1 -1 -1 0 0 40 0 0 -1 0 -1 -1 -1 0 -1 0 40 0 0 -1 0 -1 -1 -1 0 0 -1 40 0 0 -1 0 -1 -1 0 -1 -1 0 40 0 0 -1 0 -1 -1 0 -1 0 -1 40 0 0 -1 0 -1 -1 0 0 -1 -1 40 0 0 -1 0 -1 0 -1 -1 -1 0 40 0 0 -1 0 -1 0 -1 -1 0 -1 40 0 0 -1 0 -1 0 -1 0 -1 -1 40 0 0 -1 0 -1 0 0 -1 -1 -1 40 0 0 -1 0 0 -1 -1 -1 -1 0 40 0 0 -1 0 0 -1 -1 -1 0 -1 40 0 0 -1 0 0 -1 -1 0 -1 -1 40 0 0 -1 0 0 -1 0 -1 -1 -1 40 0 0 -1 0 0 0 -1 -1 -1 -1 40 0 0 0 -1 -1 -1 -1 -1 0 0 40 0 0 0 -1 -1 -1 -1 0 -1 0 40 0 0 0 -1 -1 -1 -1 0 0 -1 40 0 0 0 -1 -1 -1 0 -1 -1 0 40 0 0 0 -1 -1 -1 0 -1 0 -1 40 0 0 0 -1 -1 -1 0 0 -1 -1 40 0 0 0 -1 -1 0 -1 -1 -1 0 40 0 0 0 -1 -1 0 -1 -1 0 -1 40 0 0 0 -1 -1 0 -1 0 -1 -1 40 0 0 0 -1 -1 0 0 -1 -1 -1 40 0 0 0 -1 0 -1 -1 -1 -1 0 40 0 0 0 -1 0 -1 -1 -1 0 -1 40 0 0 0 -1 0 -1 -1 0 -1 -1 40 0 0 0 -1 0 -1 0 -1 -1 -1 40 0 0 0 -1 0 0 -1 -1 -1 -1 40 0 0 0 0 -1 -1 -1 -1 -1 0 40 0 0 0 0 -1 -1 -1 -1 0 -1 40 0 0 0 0 -1 -1 -1 0 -1 -1 40 0 0 0 0 -1 -1 0 -1 -1 -1 40 0 0 0 0 -1 0 -1 -1 -1 -1 40 0 0 0 0 0 -1 -1 -1 -1 -1 34 -1 -1 -1 -1 0 0 0 0 0 0 34 -1 -1 -1 0 -1 0 0 0 0 0 34 -1 -1 -1 0 0 -1 0 0 0 0 34 -1 -1 -1 0 0 0 -1 0 0 0 34 -1 -1 -1 0 0 0 0 -1 0 0 34 -1 -1 -1 0 0 0 0 0 -1 0 34 -1 -1 -1 0 0 0 0 0 0 -1 34 -1 -1 0 -1 -1 0 0 0 0 0 34 -1 -1 0 -1 0 -1 0 0 0 0 34 -1 -1 0 -1 0 0 -1 0 0 0 34 -1 -1 0 -1 0 0 0 -1 0 0 34 -1 -1 0 -1 0 0 0 0 -1 0 34 -1 -1 0 -1 0 0 0 0 0 -1 34 -1 -1 0 0 -1 -1 0 0 0 0 34 -1 -1 0 0 -1 0 -1 0 0 0 34 -1 -1 0 0 -1 0 0 -1 0 0 34 -1 -1 0 0 -1 0 0 0 -1 0 34 -1 -1 0 0 -1 0 0 0 0 -1 34 -1 -1 0 0 0 -1 -1 0 0 0 34 -1 -1 0 0 0 -1 0 -1 0 0 34 -1 -1 0 0 0 -1 0 0 -1 0 34 -1 -1 0 0 0 -1 0 0 0 -1 34 -1 -1 0 0 0 0 -1 -1 0 0 34 -1 -1 0 0 0 0 -1 0 -1 0 34 -1 -1 0 0 0 0 -1 0 0 -1 34 -1 -1 0 0 0 0 0 -1 -1 0 34 -1 -1 0 0 0 0 0 -1 0 -1 34 -1 -1 0 0 0 0 0 0 -1 -1 34 -1 0 -1 -1 -1 0 0 0 0 0 34 -1 0 -1 -1 0 -1 0 0 0 0 34 -1 0 -1 -1 0 0 -1 0 0 0 34 -1 0 -1 -1 0 0 0 -1 0 0 34 -1 0 -1 -1 0 0 0 0 -1 0 34 -1 0 -1 -1 0 0 0 0 0 -1 34 -1 0 -1 0 -1 -1 0 0 0 0 34 -1 0 -1 0 -1 0 -1 0 0 0 34 -1 0 -1 0 -1 0 0 -1 0 0 34 -1 0 -1 0 -1 0 0 0 -1 0 34 -1 0 -1 0 -1 0 0 0 0 -1 34 -1 0 -1 0 0 -1 -1 0 0 0 34 -1 0 -1 0 0 -1 0 -1 0 0 34 -1 0 -1 0 0 -1 0 0 -1 0 34 -1 0 -1 0 0 -1 0 0 0 -1 34 -1 0 -1 0 0 0 -1 -1 0 0 34 -1 0 -1 0 0 0 -1 0 -1 0 34 -1 0 -1 0 0 0 -1 0 0 -1 34 -1 0 -1 0 0 0 0 -1 -1 0 34 -1 0 -1 0 0 0 0 -1 0 -1 34 -1 0 -1 0 0 0 0 0 -1 -1 34 -1 0 0 -1 -1 -1 0 0 0 0 34 -1 0 0 -1 -1 0 -1 0 0 0 34 -1 0 0 -1 -1 0 0 -1 0 0 34 -1 0 0 -1 -1 0 0 0 -1 0 34 -1 0 0 -1 -1 0 0 0 0 -1 34 -1 0 0 -1 0 -1 -1 0 0 0 34 -1 0 0 -1 0 -1 0 -1 0 0 34 -1 0 0 -1 0 -1 0 0 -1 0 34 -1 0 0 -1 0 -1 0 0 0 -1 34 -1 0 0 -1 0 0 -1 -1 0 0 34 -1 0 0 -1 0 0 -1 0 -1 0 34 -1 0 0 -1 0 0 -1 0 0 -1 34 -1 0 0 -1 0 0 0 -1 -1 0 34 -1 0 0 -1 0 0 0 -1 0 -1 34 -1 0 0 -1 0 0 0 0 -1 -1 34 -1 0 0 0 -1 -1 -1 0 0 0 34 -1 0 0 0 -1 -1 0 -1 0 0 34 -1 0 0 0 -1 -1 0 0 -1 0 34 -1 0 0 0 -1 -1 0 0 0 -1 34 -1 0 0 0 -1 0 -1 -1 0 0 34 -1 0 0 0 -1 0 -1 0 -1 0 34 -1 0 0 0 -1 0 -1 0 0 -1 34 -1 0 0 0 -1 0 0 -1 -1 0 34 -1 0 0 0 -1 0 0 -1 0 -1 34 -1 0 0 0 -1 0 0 0 -1 -1 34 -1 0 0 0 0 -1 -1 -1 0 0 34 -1 0 0 0 0 -1 -1 0 -1 0 34 -1 0 0 0 0 -1 -1 0 0 -1 34 -1 0 0 0 0 -1 0 -1 -1 0 34 -1 0 0 0 0 -1 0 -1 0 -1 34 -1 0 0 0 0 -1 0 0 -1 -1 34 -1 0 0 0 0 0 -1 -1 -1 0 34 -1 0 0 0 0 0 -1 -1 0 -1 34 -1 0 0 0 0 0 -1 0 -1 -1 34 -1 0 0 0 0 0 0 -1 -1 -1 34 0 -1 -1 -1 -1 0 0 0 0 0 34 0 -1 -1 -1 0 -1 0 0 0 0 34 0 -1 -1 -1 0 0 -1 0 0 0 34 0 -1 -1 -1 0 0 0 -1 0 0 34 0 -1 -1 -1 0 0 0 0 -1 0 34 0 -1 -1 -1 0 0 0 0 0 -1 34 0 -1 -1 0 -1 -1 0 0 0 0 34 0 -1 -1 0 -1 0 -1 0 0 0 34 0 -1 -1 0 -1 0 0 -1 0 0 34 0 -1 -1 0 -1 0 0 0 -1 0 34 0 -1 -1 0 -1 0 0 0 0 -1 34 0 -1 -1 0 0 -1 -1 0 0 0 34 0 -1 -1 0 0 -1 0 -1 0 0 34 0 -1 -1 0 0 -1 0 0 -1 0 34 0 -1 -1 0 0 -1 0 0 0 -1 34 0 -1 -1 0 0 0 -1 -1 0 0 34 0 -1 -1 0 0 0 -1 0 -1 0 34 0 -1 -1 0 0 0 -1 0 0 -1 34 0 -1 -1 0 0 0 0 -1 -1 0 34 0 -1 -1 0 0 0 0 -1 0 -1 34 0 -1 -1 0 0 0 0 0 -1 -1 34 0 -1 0 -1 -1 -1 0 0 0 0 34 0 -1 0 -1 -1 0 -1 0 0 0 34 0 -1 0 -1 -1 0 0 -1 0 0 34 0 -1 0 -1 -1 0 0 0 -1 0 34 0 -1 0 -1 -1 0 0 0 0 -1 34 0 -1 0 -1 0 -1 -1 0 0 0 34 0 -1 0 -1 0 -1 0 -1 0 0 34 0 -1 0 -1 0 -1 0 0 -1 0 34 0 -1 0 -1 0 -1 0 0 0 -1 34 0 -1 0 -1 0 0 -1 -1 0 0 34 0 -1 0 -1 0 0 -1 0 -1 0 34 0 -1 0 -1 0 0 -1 0 0 -1 34 0 -1 0 -1 0 0 0 -1 -1 0 34 0 -1 0 -1 0 0 0 -1 0 -1 34 0 -1 0 -1 0 0 0 0 -1 -1 34 0 -1 0 0 -1 -1 -1 0 0 0 34 0 -1 0 0 -1 -1 0 -1 0 0 34 0 -1 0 0 -1 -1 0 0 -1 0 34 0 -1 0 0 -1 -1 0 0 0 -1 34 0 -1 0 0 -1 0 -1 -1 0 0 34 0 -1 0 0 -1 0 -1 0 -1 0 34 0 -1 0 0 -1 0 -1 0 0 -1 34 0 -1 0 0 -1 0 0 -1 -1 0 34 0 -1 0 0 -1 0 0 -1 0 -1 34 0 -1 0 0 -1 0 0 0 -1 -1 34 0 -1 0 0 0 -1 -1 -1 0 0 34 0 -1 0 0 0 -1 -1 0 -1 0 34 0 -1 0 0 0 -1 -1 0 0 -1 34 0 -1 0 0 0 -1 0 -1 -1 0 34 0 -1 0 0 0 -1 0 -1 0 -1 34 0 -1 0 0 0 -1 0 0 -1 -1 34 0 -1 0 0 0 0 -1 -1 -1 0 34 0 -1 0 0 0 0 -1 -1 0 -1 34 0 -1 0 0 0 0 -1 0 -1 -1 34 0 -1 0 0 0 0 0 -1 -1 -1 34 0 0 -1 -1 -1 -1 0 0 0 0 34 0 0 -1 -1 -1 0 -1 0 0 0 34 0 0 -1 -1 -1 0 0 -1 0 0 34 0 0 -1 -1 -1 0 0 0 -1 0 34 0 0 -1 -1 -1 0 0 0 0 -1 34 0 0 -1 -1 0 -1 -1 0 0 0 34 0 0 -1 -1 0 -1 0 -1 0 0 34 0 0 -1 -1 0 -1 0 0 -1 0 34 0 0 -1 -1 0 -1 0 0 0 -1 34 0 0 -1 -1 0 0 -1 -1 0 0 34 0 0 -1 -1 0 0 -1 0 -1 0 34 0 0 -1 -1 0 0 -1 0 0 -1 34 0 0 -1 -1 0 0 0 -1 -1 0 34 0 0 -1 -1 0 0 0 -1 0 -1 34 0 0 -1 -1 0 0 0 0 -1 -1 34 0 0 -1 0 -1 -1 -1 0 0 0 34 0 0 -1 0 -1 -1 0 -1 0 0 34 0 0 -1 0 -1 -1 0 0 -1 0 34 0 0 -1 0 -1 -1 0 0 0 -1 34 0 0 -1 0 -1 0 -1 -1 0 0 34 0 0 -1 0 -1 0 -1 0 -1 0 34 0 0 -1 0 -1 0 -1 0 0 -1 34 0 0 -1 0 -1 0 0 -1 -1 0 34 0 0 -1 0 -1 0 0 -1 0 -1 34 0 0 -1 0 -1 0 0 0 -1 -1 34 0 0 -1 0 0 -1 -1 -1 0 0 34 0 0 -1 0 0 -1 -1 0 -1 0 34 0 0 -1 0 0 -1 -1 0 0 -1 34 0 0 -1 0 0 -1 0 -1 -1 0 34 0 0 -1 0 0 -1 0 -1 0 -1 34 0 0 -1 0 0 -1 0 0 -1 -1 34 0 0 -1 0 0 0 -1 -1 -1 0 34 0 0 -1 0 0 0 -1 -1 0 -1 34 0 0 -1 0 0 0 -1 0 -1 -1 34 0 0 -1 0 0 0 0 -1 -1 -1 34 0 0 0 -1 -1 -1 -1 0 0 0 34 0 0 0 -1 -1 -1 0 -1 0 0 34 0 0 0 -1 -1 -1 0 0 -1 0 34 0 0 0 -1 -1 -1 0 0 0 -1 34 0 0 0 -1 -1 0 -1 -1 0 0 34 0 0 0 -1 -1 0 -1 0 -1 0 34 0 0 0 -1 -1 0 -1 0 0 -1 34 0 0 0 -1 -1 0 0 -1 -1 0 34 0 0 0 -1 -1 0 0 -1 0 -1 34 0 0 0 -1 -1 0 0 0 -1 -1 34 0 0 0 -1 0 -1 -1 -1 0 0 34 0 0 0 -1 0 -1 -1 0 -1 0 34 0 0 0 -1 0 -1 -1 0 0 -1 34 0 0 0 -1 0 -1 0 -1 -1 0 34 0 0 0 -1 0 -1 0 -1 0 -1 34 0 0 0 -1 0 -1 0 0 -1 -1 34 0 0 0 -1 0 0 -1 -1 -1 0 34 0 0 0 -1 0 0 -1 -1 0 -1 34 0 0 0 -1 0 0 -1 0 -1 -1 34 0 0 0 -1 0 0 0 -1 -1 -1 34 0 0 0 0 -1 -1 -1 -1 0 0 34 0 0 0 0 -1 -1 -1 0 -1 0 34 0 0 0 0 -1 -1 -1 0 0 -1 34 0 0 0 0 -1 -1 0 -1 -1 0 34 0 0 0 0 -1 -1 0 -1 0 -1 34 0 0 0 0 -1 -1 0 0 -1 -1 34 0 0 0 0 -1 0 -1 -1 -1 0 34 0 0 0 0 -1 0 -1 -1 0 -1 34 0 0 0 0 -1 0 -1 0 -1 -1 34 0 0 0 0 -1 0 0 -1 -1 -1 34 0 0 0 0 0 -1 -1 -1 -1 0 34 0 0 0 0 0 -1 -1 -1 0 -1 34 0 0 0 0 0 -1 -1 0 -1 -1 34 0 0 0 0 0 -1 0 -1 -1 -1 34 0 0 0 0 0 0 -1 -1 -1 -1 27 -1 -1 -1 0 0 0 0 0 0 0 27 -1 -1 0 -1 0 0 0 0 0 0 27 -1 -1 0 0 -1 0 0 0 0 0 27 -1 -1 0 0 0 -1 0 0 0 0 27 -1 -1 0 0 0 0 -1 0 0 0 27 -1 -1 0 0 0 0 0 -1 0 0 27 -1 -1 0 0 0 0 0 0 -1 0 27 -1 -1 0 0 0 0 0 0 0 -1 27 -1 0 -1 -1 0 0 0 0 0 0 27 -1 0 -1 0 -1 0 0 0 0 0 27 -1 0 -1 0 0 -1 0 0 0 0 27 -1 0 -1 0 0 0 -1 0 0 0 27 -1 0 -1 0 0 0 0 -1 0 0 27 -1 0 -1 0 0 0 0 0 -1 0 27 -1 0 -1 0 0 0 0 0 0 -1 27 -1 0 0 -1 -1 0 0 0 0 0 27 -1 0 0 -1 0 -1 0 0 0 0 27 -1 0 0 -1 0 0 -1 0 0 0 27 -1 0 0 -1 0 0 0 -1 0 0 27 -1 0 0 -1 0 0 0 0 -1 0 27 -1 0 0 -1 0 0 0 0 0 -1 27 -1 0 0 0 -1 -1 0 0 0 0 27 -1 0 0 0 -1 0 -1 0 0 0 27 -1 0 0 0 -1 0 0 -1 0 0 27 -1 0 0 0 -1 0 0 0 -1 0 27 -1 0 0 0 -1 0 0 0 0 -1 27 -1 0 0 0 0 -1 -1 0 0 0 27 -1 0 0 0 0 -1 0 -1 0 0 27 -1 0 0 0 0 -1 0 0 -1 0 27 -1 0 0 0 0 -1 0 0 0 -1 27 -1 0 0 0 0 0 -1 -1 0 0 27 -1 0 0 0 0 0 -1 0 -1 0 27 -1 0 0 0 0 0 -1 0 0 -1 27 -1 0 0 0 0 0 0 -1 -1 0 27 -1 0 0 0 0 0 0 -1 0 -1 27 -1 0 0 0 0 0 0 0 -1 -1 27 0 -1 -1 -1 0 0 0 0 0 0 27 0 -1 -1 0 -1 0 0 0 0 0 27 0 -1 -1 0 0 -1 0 0 0 0 27 0 -1 -1 0 0 0 -1 0 0 0 27 0 -1 -1 0 0 0 0 -1 0 0 27 0 -1 -1 0 0 0 0 0 -1 0 27 0 -1 -1 0 0 0 0 0 0 -1 27 0 -1 0 -1 -1 0 0 0 0 0 27 0 -1 0 -1 0 -1 0 0 0 0 27 0 -1 0 -1 0 0 -1 0 0 0 27 0 -1 0 -1 0 0 0 -1 0 0 27 0 -1 0 -1 0 0 0 0 -1 0 27 0 -1 0 -1 0 0 0 0 0 -1 27 0 -1 0 0 -1 -1 0 0 0 0 27 0 -1 0 0 -1 0 -1 0 0 0 27 0 -1 0 0 -1 0 0 -1 0 0 27 0 -1 0 0 -1 0 0 0 -1 0 27 0 -1 0 0 -1 0 0 0 0 -1 27 0 -1 0 0 0 -1 -1 0 0 0 27 0 -1 0 0 0 -1 0 -1 0 0 27 0 -1 0 0 0 -1 0 0 -1 0 27 0 -1 0 0 0 -1 0 0 0 -1 27 0 -1 0 0 0 0 -1 -1 0 0 27 0 -1 0 0 0 0 -1 0 -1 0 27 0 -1 0 0 0 0 -1 0 0 -1 27 0 -1 0 0 0 0 0 -1 -1 0 27 0 -1 0 0 0 0 0 -1 0 -1 27 0 -1 0 0 0 0 0 0 -1 -1 27 0 0 -1 -1 -1 0 0 0 0 0 27 0 0 -1 -1 0 -1 0 0 0 0 27 0 0 -1 -1 0 0 -1 0 0 0 27 0 0 -1 -1 0 0 0 -1 0 0 27 0 0 -1 -1 0 0 0 0 -1 0 27 0 0 -1 -1 0 0 0 0 0 -1 27 0 0 -1 0 -1 -1 0 0 0 0 27 0 0 -1 0 -1 0 -1 0 0 0 27 0 0 -1 0 -1 0 0 -1 0 0 27 0 0 -1 0 -1 0 0 0 -1 0 27 0 0 -1 0 -1 0 0 0 0 -1 27 0 0 -1 0 0 -1 -1 0 0 0 27 0 0 -1 0 0 -1 0 -1 0 0 27 0 0 -1 0 0 -1 0 0 -1 0 27 0 0 -1 0 0 -1 0 0 0 -1 27 0 0 -1 0 0 0 -1 -1 0 0 27 0 0 -1 0 0 0 -1 0 -1 0 27 0 0 -1 0 0 0 -1 0 0 -1 27 0 0 -1 0 0 0 0 -1 -1 0 27 0 0 -1 0 0 0 0 -1 0 -1 27 0 0 -1 0 0 0 0 0 -1 -1 27 0 0 0 -1 -1 -1 0 0 0 0 27 0 0 0 -1 -1 0 -1 0 0 0 27 0 0 0 -1 -1 0 0 -1 0 0 27 0 0 0 -1 -1 0 0 0 -1 0 27 0 0 0 -1 -1 0 0 0 0 -1 27 0 0 0 -1 0 -1 -1 0 0 0 27 0 0 0 -1 0 -1 0 -1 0 0 27 0 0 0 -1 0 -1 0 0 -1 0 27 0 0 0 -1 0 -1 0 0 0 -1 27 0 0 0 -1 0 0 -1 -1 0 0 27 0 0 0 -1 0 0 -1 0 -1 0 27 0 0 0 -1 0 0 -1 0 0 -1 27 0 0 0 -1 0 0 0 -1 -1 0 27 0 0 0 -1 0 0 0 -1 0 -1 27 0 0 0 -1 0 0 0 0 -1 -1 27 0 0 0 0 -1 -1 -1 0 0 0 27 0 0 0 0 -1 -1 0 -1 0 0 27 0 0 0 0 -1 -1 0 0 -1 0 27 0 0 0 0 -1 -1 0 0 0 -1 27 0 0 0 0 -1 0 -1 -1 0 0 27 0 0 0 0 -1 0 -1 0 -1 0 27 0 0 0 0 -1 0 -1 0 0 -1 27 0 0 0 0 -1 0 0 -1 -1 0 27 0 0 0 0 -1 0 0 -1 0 -1 27 0 0 0 0 -1 0 0 0 -1 -1 27 0 0 0 0 0 -1 -1 -1 0 0 27 0 0 0 0 0 -1 -1 0 -1 0 27 0 0 0 0 0 -1 -1 0 0 -1 27 0 0 0 0 0 -1 0 -1 -1 0 27 0 0 0 0 0 -1 0 -1 0 -1 27 0 0 0 0 0 -1 0 0 -1 -1 27 0 0 0 0 0 0 -1 -1 -1 0 27 0 0 0 0 0 0 -1 -1 0 -1 27 0 0 0 0 0 0 -1 0 -1 -1 27 0 0 0 0 0 0 0 -1 -1 -1 19 -1 -1 0 0 0 0 0 0 0 0 19 -1 0 -1 0 0 0 0 0 0 0 19 -1 0 0 -1 0 0 0 0 0 0 19 -1 0 0 0 -1 0 0 0 0 0 19 -1 0 0 0 0 -1 0 0 0 0 19 -1 0 0 0 0 0 -1 0 0 0 19 -1 0 0 0 0 0 0 -1 0 0 19 -1 0 0 0 0 0 0 0 -1 0 19 -1 0 0 0 0 0 0 0 0 -1 19 0 -1 -1 0 0 0 0 0 0 0 19 0 -1 0 -1 0 0 0 0 0 0 19 0 -1 0 0 -1 0 0 0 0 0 19 0 -1 0 0 0 -1 0 0 0 0 19 0 -1 0 0 0 0 -1 0 0 0 19 0 -1 0 0 0 0 0 -1 0 0 19 0 -1 0 0 0 0 0 0 -1 0 19 0 -1 0 0 0 0 0 0 0 -1 19 0 0 -1 -1 0 0 0 0 0 0 19 0 0 -1 0 -1 0 0 0 0 0 19 0 0 -1 0 0 -1 0 0 0 0 19 0 0 -1 0 0 0 -1 0 0 0 19 0 0 -1 0 0 0 0 -1 0 0 19 0 0 -1 0 0 0 0 0 -1 0 19 0 0 -1 0 0 0 0 0 0 -1 19 0 0 0 -1 -1 0 0 0 0 0 19 0 0 0 -1 0 -1 0 0 0 0 19 0 0 0 -1 0 0 -1 0 0 0 19 0 0 0 -1 0 0 0 -1 0 0 19 0 0 0 -1 0 0 0 0 -1 0 19 0 0 0 -1 0 0 0 0 0 -1 19 0 0 0 0 -1 -1 0 0 0 0 19 0 0 0 0 -1 0 -1 0 0 0 19 0 0 0 0 -1 0 0 -1 0 0 19 0 0 0 0 -1 0 0 0 -1 0 19 0 0 0 0 -1 0 0 0 0 -1 19 0 0 0 0 0 -1 -1 0 0 0 19 0 0 0 0 0 -1 0 -1 0 0 19 0 0 0 0 0 -1 0 0 -1 0 19 0 0 0 0 0 -1 0 0 0 -1 19 0 0 0 0 0 0 -1 -1 0 0 19 0 0 0 0 0 0 -1 0 -1 0 19 0 0 0 0 0 0 -1 0 0 -1 19 0 0 0 0 0 0 0 -1 -1 0 19 0 0 0 0 0 0 0 -1 0 -1 19 0 0 0 0 0 0 0 0 -1 -1 10 -1 0 0 0 0 0 0 0 0 0 10 0 -1 0 0 0 0 0 0 0 0 10 0 0 -1 0 0 0 0 0 0 0 10 0 0 0 -1 0 0 0 0 0 0 10 0 0 0 0 -1 0 0 0 0 0 10 0 0 0 0 0 -1 0 0 0 0 10 0 0 0 0 0 0 -1 0 0 0 10 0 0 0 0 0 0 0 -1 0 0 10 0 0 0 0 0 0 0 0 -1 0 10 0 0 0 0 0 0 0 0 0 -1 end lrslib-062/ine/test-062/m6.ine0000600001553200155320000000731712722006617013544 0ustar avism6.ine begin 80 16 integer 0 -1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 -1 0 0 0 0 0 0 0 0 0 2 -1 -1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 2 -1 0 -1 0 0 0 -1 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 2 -1 0 0 -1 0 0 0 -1 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 2 -1 0 0 0 -1 0 0 0 -1 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 -1 0 0 0 0 0 2 0 -1 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 -1 0 0 0 0 2 0 -1 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 -1 0 0 0 2 0 -1 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 -1 0 0 2 0 0 -1 -1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 -1 0 2 0 0 -1 0 -1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 -1 2 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 -1 0 0 0 0 0 2 0 0 0 0 0 -1 -1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 -1 0 0 0 0 2 0 0 0 0 0 -1 0 -1 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 -1 0 0 0 2 0 0 0 0 0 -1 0 0 -1 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 -1 0 0 2 0 0 0 0 0 0 -1 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 -1 0 2 0 0 0 0 0 0 -1 0 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 -1 2 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 -1 0 0 2 0 0 0 0 0 0 0 0 0 -1 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 -1 0 2 0 0 0 0 0 0 0 0 0 -1 0 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 -1 2 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 -1 2 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 end lrslib-062/ine/test-062/c30-15.ext0000600001553200155320000001121212722006616014043 0ustar avis*cyclic polytope n=30, d=15 V-representation begin 30 16 integer 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 1 3 9 27 81 243 729 2187 6561 19683 59049 177147 531441 1594323 4782969 14348907 1 4 16 64 256 1024 4096 16384 65536 262144 1048576 4194304 16777216 67108864 268435456 1073741824 1 5 25 125 625 3125 15625 78125 390625 1953125 9765625 48828125 244140625 1220703125 6103515625 30517578125 1 6 36 216 1296 7776 46656 279936 1679616 10077696 60466176 362797056 2176782336 13060694016 78364164096 470184984576 1 7 49 343 2401 16807 117649 823543 5764801 40353607 282475249 1977326743 13841287201 96889010407 678223072849 4747561509943 1 8 64 512 4096 32768 262144 2097152 16777216 134217728 1073741824 8589934592 68719476736 549755813888 4398046511104 35184372088832 1 9 81 729 6561 59049 531441 4782969 43046721 387420489 3486784401 31381059609 282429536481 2541865828329 22876792454961 205891132094649 1 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000 100000000000 1000000000000 10000000000000 100000000000000 1000000000000000 1 11 121 1331 14641 161051 1771561 19487171 214358881 2357947691 25937424601 285311670611 3138428376721 34522712143931 379749833583241 4177248169415651 1 12 144 1728 20736 248832 2985984 35831808 429981696 5159780352 61917364224 743008370688 8916100448256 106993205379072 1283918464548864 15407021574586368 1 13 169 2197 28561 371293 4826809 62748517 815730721 10604499373 137858491849 1792160394037 23298085122481 302875106592253 3937376385699289 51185893014090757 1 14 196 2744 38416 537824 7529536 105413504 1475789056 20661046784 289254654976 4049565169664 56693912375296 793714773254144 11112006825558016 155568095557812224 1 15 225 3375 50625 759375 11390625 170859375 2562890625 38443359375 576650390625 8649755859375 129746337890625 1946195068359375 29192926025390625 437893890380859375 1 16 256 4096 65536 1048576 16777216 268435456 4294967296 68719476736 1099511627776 17592186044416 281474976710656 4503599627370496 72057594037927936 1152921504606846976 1 17 289 4913 83521 1419857 24137569 410338673 6975757441 118587876497 2015993900449 34271896307633 582622237229761 9904578032905937 168377826559400929 2862423051509815793 1 18 324 5832 104976 1889568 34012224 612220032 11019960576 198359290368 3570467226624 64268410079232 1156831381426176 20822964865671168 374813367582081024 6746640616477458432 1 19 361 6859 130321 2476099 47045881 893871739 16983563041 322687697779 6131066257801 116490258898219 2213314919066161 42052983462257059 799006685782884121 15181127029874798299 1 20 400 8000 160000 3200000 64000000 1280000000 25600000000 512000000000 10240000000000 204800000000000 4096000000000000 81920000000000000 1638400000000000000 32768000000000000000 1 21 441 9261 194481 4084101 85766121 1801088541 37822859361 794280046581 16679880978201 350277500542221 7355827511386641 154472377739119461 3243919932521508681 68122318582951682301 1 22 484 10648 234256 5153632 113379904 2494357888 54875873536 1207269217792 26559922791424 584318301411328 12855002631049216 282810057883082752 6221821273427820544 136880068015412051968 1 23 529 12167 279841 6436343 148035889 3404825447 78310985281 1801152661463 41426511213649 952809757913927 21914624432020321 504036361936467383 11592836324538749809 266635235464391245607 1 24 576 13824 331776 7962624 191102976 4586471424 110075314176 2641807540224 63403380965376 1521681143169024 36520347436056576 876488338465357824 21035720123168587776 504857282956046106624 1 25 625 15625 390625 9765625 244140625 6103515625 152587890625 3814697265625 95367431640625 2384185791015625 59604644775390625 1490116119384765625 37252902984619140625 931322574615478515625 1 26 676 17576 456976 11881376 308915776 8031810176 208827064576 5429503678976 141167095653376 3670344486987776 95428956661682176 2481152873203736576 64509974703297150976 1677259342285725925376 1 27 729 19683 531441 14348907 387420489 10460353203 282429536481 7625597484987 205891132094649 5559060566555523 150094635296999121 4052555153018976267 109418989131512359209 2954312706550833698643 1 28 784 21952 614656 17210368 481890304 13492928512 377801998336 10578455953408 296196766695424 8293509467471872 232218265089212416 6502111422497947648 182059119829942534144 5097655355238390956032 1 29 841 24389 707281 20511149 594823321 17249876309 500246412961 14507145975869 420707233300201 12200509765705829 353814783205469041 10260628712958602189 297558232675799463481 8629188747598184440949 1 30 900 27000 810000 24300000 729000000 21870000000 656100000000 19683000000000 590490000000000 17714700000000000 531441000000000000 15943230000000000000 478296900000000000000 14348907000000000000000 endlrslib-062/ine/test-062/mit.ine0000600001553200155320000005040512722006616014006 0ustar avismit.ine begin 729 9 integer 72 0 0 -4 -4 -2 0 0 0 216 -2 -2 -10 -12 -6 0 0 0 192 -4 -2 -8 -8 -8 0 0 0 288 -12 6 8 -16 -8 0 0 0 96 -4 2 0 -4 -4 0 0 0 144 -5 1 -4 -6 -6 0 0 0 288 -8 -2 -10 -12 -12 0 0 0 96 -4 2 -4 -2 -4 0 0 0 240 -7 -1 -10 -8 -10 0 0 0 288 -8 -2 -12 -8 -12 0 0 0 288 -8 -2 -8 -16 -8 0 0 0 96 -4 2 -8 0 0 0 0 0 0 0 6 -8 4 8 0 0 0 0 4 6 -8 0 8 0 0 0 24 2 2 -4 -2 2 0 0 0 864 -24 -6 -40 -16 -32 0 0 0 24 0 0 -2 -2 2 0 0 0 0 4 10 -16 0 24 0 0 0 0 1 1 -4 0 12 0 0 0 0 0 6 -16 8 40 0 0 0 96 -4 2 -16 16 32 0 0 0 288 -8 -2 -16 0 0 0 0 0 96 -4 2 8 -8 8 0 0 0 288 -8 -2 8 -24 24 0 0 0 0 0 2 -8 8 24 0 0 0 96 -1 -1 -4 -8 8 0 0 0 576 -12 -6 -16 -40 16 0 0 0 192 -4 -2 0 -16 16 0 0 0 576 -8 -6 -24 -32 -16 0 0 0 576 -12 -6 -20 -32 -16 0 0 0 960 -16 -10 -40 -56 -16 0 0 0 160 0 0 -7 -7 -6 -1 0 -1 480 -4 -4 -21 -21 -18 -1 0 -3 192 -4 -4 -12 -4 -8 4 2 -4 640 -16 -8 -28 -28 -24 4 2 -4 640 -8 -6 -28 -28 -24 0 0 -4 192 -8 0 -8 -8 -8 4 2 0 384 -12 -4 -16 -16 -16 4 2 0 960 -20 -12 -42 -42 -36 4 2 -6 240 -9 -1 -11 -9 -10 3 2 -1 0 2 2 4 0 0 -4 -2 0 640 -22 -4 -24 -28 -24 8 4 -4 1920 -60 -20 -76 -84 -72 20 10 -12 1920 -32 -22 -84 -84 -72 4 2 -12 960 -28 -10 -44 -36 -40 8 4 -4 1152 -36 -12 -52 -44 -48 12 6 -4 720 -23 -7 -33 -27 -30 7 4 -3 1920 -48 -24 -88 -72 -80 12 6 -8 3456 -96 -40 -160 -128 -144 28 14 -16 576 -15 -7 -26 -20 -24 4 2 -4 384 -12 -4 -20 -12 -16 4 2 0 336 -11 -3 -17 -11 -14 3 2 -1 192 -8 0 -12 -4 -8 4 2 0 0 0 0 -4 4 0 4 2 0 0 0 2 -8 8 0 8 4 -2 192 -12 12 -28 12 -8 20 10 -4 192 -12 12 -20 4 -8 12 6 -2 1920 -48 -24 -92 -60 -80 12 6 -4 576 -15 -7 -28 -18 -24 4 2 -2 1536 -42 -18 -76 -40 -64 12 6 -8 384 -12 -4 -20 4 -16 4 2 -4 1920 -60 -20 -102 18 -76 14 10 -18 1920 -60 -20 -102 -46 -76 14 10 -2 672 -22 -6 -37 -17 -26 5 4 -1 640 -22 -4 -36 -16 -24 4 4 0 960 -40 0 -64 -16 -32 8 10 0 64 -4 4 -8 0 0 0 2 0 0 0 8 -6 2 4 -2 2 0 0 8 18 -8 0 8 -8 2 0 64 36 60 -28 -4 24 -28 6 -4 192 28 36 -20 -12 8 -20 2 -4 96 4 4 -5 -5 -2 -3 0 -1 64 4 6 -4 -4 0 -4 0 0 96 0 0 -5 -5 -2 -1 0 -1 16 0 0 -1 -1 0 0 0 0 192 -6 0 -8 12 -8 0 0 -4 192 -6 0 -8 -4 -8 0 0 0 960 -30 -8 -48 -20 -40 8 4 -4 960 -32 -8 -52 -20 -40 12 6 -4 960 -32 -8 -52 44 -40 12 6 -20 960 -30 -8 -48 12 -40 8 4 -12 576 -16 -6 -28 -12 -24 4 2 -4 208 -8 0 -8 -8 -8 4 2 -2 160 -7 1 -5 -7 -6 3 2 -1 192 -12 12 0 -8 -8 8 6 0 160 -9 7 -1 -7 -6 5 4 -1 640 -20 -4 -20 -28 -24 4 2 -4 96 -5 3 -2 -4 -4 2 2 0 192 -6 0 -4 -8 -8 0 0 0 480 -18 -2 -17 -21 -18 7 4 -3 528 -19 -3 -20 -22 -20 8 4 -4 960 -30 -4 -32 -36 -40 4 2 -4 1152 -36 -4 -32 -40 -48 0 2 -8 1152 -36 -12 -48 -40 -48 8 6 -8 192 -8 0 -4 -4 -8 4 2 -4 192 -6 0 0 -4 -8 0 0 -4 384 -12 -4 -8 -8 -16 4 2 -8 1920 -48 -24 -48 -40 -80 12 6 -40 384 -16 2 -20 -12 -16 4 4 0 576 -24 0 -32 -16 -24 8 6 0 432 -17 -1 -23 -13 -18 5 4 -1 576 -28 12 -36 -12 -24 12 10 -4 960 -52 36 -92 12 -40 52 26 -12 0 0 4 -14 10 4 6 6 -2 2688 -72 -32 -120 -104 -112 16 10 -8 0 0 8 -20 12 56 -12 2 -4 64 -4 4 -16 8 24 -4 2 0 192 -8 0 -16 0 0 0 2 0 64 8 16 -20 -4 24 -12 2 -4 0 2 4 -4 0 8 -4 0 0 288 -13 3 -12 -10 -12 6 4 -2 336 -14 2 -15 -11 -14 7 4 -3 96 3 1 -8 -6 4 0 0 -2 192 12 0 -20 -12 8 4 2 -4 0 4 8 -6 2 4 -2 2 -2 192 -12 12 -28 28 -8 20 10 -12 0 0 0 -4 16 0 4 2 -6 0 0 0 -4 40 0 4 2 -12 192 -8 0 -12 44 -8 4 2 -12 0 0 2 0 32 0 0 0 -8 192 -12 12 -20 300 -8 12 6 -76 960 -40 0 -64 208 -32 8 10 -56 2112 -72 -16 -120 120 -80 16 14 -48 512 -16 -4 -26 6 -20 2 2 -6 512 -16 -4 -26 -10 -20 2 2 -2 448 -16 0 -24 -8 -16 0 2 0 448 24 8 -68 -20 56 12 6 -20 192 8 2 -24 -8 16 4 2 -8 192 16 0 -36 -4 24 12 6 -12 448 -13 -5 -23 -13 -18 3 2 -1 64 -2 0 -4 0 0 0 0 0 0 2 -2 -4 4 0 4 2 -2 0 0 0 -22 22 4 14 10 0 0 0 0 -22 82 4 14 10 -30 0 0 4 -14 34 4 6 6 -14 480 -21 3 -20 -18 -20 8 6 -2 480 -19 1 -16 -18 -20 4 4 -2 1344 -52 0 -44 -52 -56 12 10 -4 576 -22 0 -12 -24 -24 4 4 0 768 -28 -4 -24 -32 -32 8 6 0 768 -28 -4 40 -32 -32 -8 6 0 576 -22 0 20 -24 -24 -4 4 0 320 -12 0 10 -14 -12 -2 2 -2 160 -7 1 3 -7 -6 1 2 -1 0 2 2 -12 8 16 4 2 -4 0 22 14 -52 16 80 12 6 -16 192 32 16 -68 -4 88 12 6 -20 128 18 10 -36 -8 48 4 2 -8 64 8 8 -20 -4 24 -4 2 -4 0 4 2 -4 4 8 0 0 -4 0 4 8 -14 2 20 -4 2 -2 0 1 7 -11 3 14 -3 2 -1 0 0 8 -12 4 16 -4 2 0 0 4 12 -20 4 32 -8 2 0 0 0 24 -44 20 64 -16 6 0 0 0 4 -10 6 12 -2 2 -2 0 14 22 -44 8 64 -12 6 -8 0 6 10 -18 2 28 -6 2 -2 192 28 36 -52 -12 72 -36 2 -12 96 3 3 -8 -6 4 -4 0 -2 0 1 1 -2 0 4 0 0 0 0 0 12 -10 6 12 -6 2 -2 48 0 0 -3 -3 2 -1 0 -1 192 16 24 -44 -12 72 -28 2 -12 0 4 12 -14 2 20 -8 2 -2 0 1 9 -11 3 14 -5 2 -1 192 32 40 -68 -4 88 -36 6 -20 16 1 1 -3 -1 6 -1 0 -1 64 4 6 -12 -4 24 -8 0 -4 0 4 12 -20 4 40 -12 2 -4 0 0 10 -16 8 24 -8 2 0 192 -12 12 -40 16 32 -8 6 0 0 0 24 -34 14 44 -14 6 -2 64 -4 4 -16 8 16 0 2 0 0 0 8 -20 12 32 0 2 0 0 0 4 -14 10 20 2 2 -2 0 0 2 -2 2 4 -2 0 0 0 0 24 -44 20 72 -20 6 -4 0 0 24 -60 36 104 -4 6 -4 0 6 10 -16 4 24 -8 2 -4 0 1 1 -1 1 2 -1 0 -1 0 6 18 -16 4 24 -12 2 -4 384 0 -2 -20 -20 -8 0 0 -4 384 -12 -4 -12 -20 -8 4 2 -4 640 -16 -8 -20 -36 -8 4 2 -4 960 -20 -12 -32 -56 -8 4 2 -4 96 -1 -1 -4 -6 0 0 0 0 1280 -6 -14 -60 -80 0 -4 2 0 1024 -2 -10 -52 -64 0 -4 2 0 1024 -12 -12 -48 -56 -16 0 2 -8 384 8 -4 -24 -24 0 0 2 0 256 4 -4 -16 -16 0 2 2 0 1024 0 -16 -56 -56 -16 8 6 -8 960 0 -16 -52 -52 -16 12 6 -8 6400 -96 -72 -280 -280 -240 8 6 -40 960 -16 -12 -42 -42 -36 2 2 -6 3840 -48 -40 -168 -168 -144 0 2 -24 4032 -72 -48 -178 -178 -148 10 6 -26 1152 -20 -14 -52 -52 -40 4 2 -8 0 2 -2 0 0 0 2 2 0 192 -6 0 12 -8 -8 -4 0 0 192 -4 -4 -8 -8 -8 4 2 0 6912 -176 -88 -288 -288 -288 40 26 0 1920 -48 -24 -80 -80 -80 10 6 0 576 -12 -10 -24 -24 -24 6 4 0 5760 -168 -64 -264 -216 -240 48 26 -24 960 -48 24 -36 -36 -40 20 18 -4 960 -44 12 -28 -36 -40 12 14 -4 192 -12 12 4 -4 -8 4 6 -4 960 -56 48 -20 -36 -40 28 26 -4 640 -20 0 -4 -28 -24 -2 0 -4 576 -24 0 -28 -12 -24 4 6 -4 0 0 0 4 8 0 -2 0 -4 192 -6 0 -4 12 -8 -4 0 -6 960 -30 0 -32 -12 -40 -8 0 -6 960 -32 0 -36 -20 -40 -4 2 -4 640 -20 0 -28 -4 -24 -4 0 -2 0 0 20 -4 12 8 -12 0 -2 16 0 0 -1 -1 6 -1 0 -1 720 -23 -3 -25 -27 -30 3 2 -3 624 -21 -1 -27 -17 -26 1 2 -1 768 -26 0 -32 -20 -32 0 2 0 1536 -62 0 -80 -44 -64 16 14 0 1344 -42 -12 -64 -44 -56 12 6 -4 2880 -90 -28 -128 -108 -120 28 14 -12 960 -30 0 -12 -32 -40 -6 0 -8 768 -30 0 -24 -28 -32 6 6 -4 576 -24 0 -20 -20 -24 8 6 -4 576 -24 0 -15 -23 -22 9 6 -5 192 -8 0 12 -4 -8 -4 2 -4 0 0 2 -4 4 8 0 0 0 0 0 0 -8 8 8 4 2 0 192 -12 12 -76 76 88 20 10 -12 0 0 6 -28 28 40 8 4 -6 576 -15 -7 -29 -15 -22 3 2 -1 448 -13 -5 -25 -7 -14 3 2 -1 512 -14 -6 -26 -14 -20 4 2 -2 448 -13 -5 -23 -5 -18 3 2 -3 384 -6 -4 -16 -20 -8 0 0 -4 0 6 8 -16 4 40 -4 0 -4 0 8 8 -24 8 48 0 2 -8 96 -1 -1 0 -6 36 -4 0 -6 192 -4 -4 12 -12 72 -4 2 -12 0 0 0 -6 6 4 2 2 0 384 -12 -4 -22 -6 -12 2 2 0 1216 -31 -15 -59 -37 -50 7 4 -3 960 -20 -16 -42 -42 -36 10 6 -6 2304 -72 -20 -112 -64 -96 16 10 -8 1344 -42 -12 -64 -36 -56 8 6 -6 1152 -36 -12 -56 -32 -48 8 6 -4 384 -12 -4 -16 -8 -16 0 2 0 192 -6 0 -4 0 -8 -4 0 0 912 -26 -10 -43 -31 -38 5 4 -1 960 -27 -11 -46 -32 -40 6 4 -2 1344 -39 -15 -66 -44 -56 10 6 -4 4224 -120 -48 -200 -152 -176 32 18 -16 4992 -132 -60 -240 -168 -208 32 18 -16 3456 -96 -40 -168 -104 -144 24 14 -16 2688 -76 -28 -128 -72 -112 16 10 -16 960 -29 -9 -46 -28 -40 6 4 -4 0 2 -2 12 0 0 -4 2 0 960 -20 -20 134 -42 -36 -38 10 -6 1920 -60 -20 148 -84 -72 -36 10 -12 1920 -68 -12 100 -84 -72 -20 14 -12 320 -12 0 -6 -14 -12 2 2 -2 960 -40 0 -26 -42 -36 18 10 -6 576 -12 -8 -22 -30 -12 2 2 -6 576 -12 -10 -8 -24 -24 -2 4 0 2304 -56 -32 -80 -96 -96 8 10 0 960 -20 -20 -38 -42 -36 20 10 -6 192 -6 0 -4 -4 -8 -2 0 -2 0 0 0 1 1 2 -1 0 -1 192 -8 0 -4 28 -8 -4 2 -12 192 -8 0 -4 60 -8 -4 2 -20 0 0 2 -4 4 16 -4 0 0 1792 -28 -20 -80 -88 -48 0 2 -16 384 -3 -3 -18 -20 -8 -2 0 -4 8064 -204 -100 -384 -264 -336 48 26 -24 1920 -48 -24 -88 -56 -80 8 6 -8 384 -12 -4 -16 8 -16 0 2 -8 192 -12 12 -12 -4 -8 4 6 0 192 -12 12 -12 12 -8 4 6 -8 192 -12 12 4 60 -8 -12 6 -28 0 0 0 -8 8 16 0 2 0 192 -4 -2 -4 -4 -8 0 0 -4 192 -4 -4 16 -12 0 -4 2 0 768 -20 -12 40 -48 0 -8 6 0 512 -14 -6 20 -32 0 -4 2 0 64 -2 0 0 -4 0 0 0 0 1344 -60 12 -68 -44 -56 20 18 -4 2112 -92 12 -116 -60 -88 28 26 -4 960 -44 12 -52 -28 -40 12 14 0 1920 -48 -24 -72 -56 -80 8 6 -24 96 -5 3 -4 -2 -4 0 2 0 0 0 2 -8 24 0 8 4 -10 0 4 4 -16 8 112 -16 2 -8 384 -12 -4 -24 0 0 0 2 0 0 2 -2 -4 16 0 4 2 -8 64 -4 4 -20 20 24 4 2 -2 128 -6 2 -20 16 16 4 2 -2 192 -8 0 -20 12 8 4 2 0 96 -4 0 -14 10 8 4 2 -2 448 -20 4 -76 60 56 20 10 -12 192 -4 -2 -4 -12 8 0 0 -4 384 -12 -4 0 -24 16 4 2 -8 192 -8 0 4 -12 8 4 2 -4 192 12 20 -20 -12 8 -12 2 -4 192 12 4 -20 -12 8 -4 2 -4 192 76 20 -84 -12 72 -4 18 -12 64 20 12 -28 -4 24 -4 6 -4 64 20 44 -28 -4 24 -20 6 -4 0 12 36 -22 2 20 -14 6 -2 0 4 10 -8 0 8 -4 2 0 0 4 6 -8 0 8 -2 2 0 0 4 0 -6 2 4 2 2 -2 0 0 4 -6 2 4 0 2 0 192 4 2 -12 -12 0 -4 0 0 0 8 8 -16 0 24 -4 2 0 64 20 4 -28 -4 24 4 6 -4 0 20 4 -24 0 24 4 6 0 0 8 0 -8 0 8 4 2 0 0 5 -1 -6 2 4 4 2 -2 64 24 0 -28 -4 24 12 6 -4 96 46 -10 -42 -6 36 18 14 -6 32 18 -6 -14 -2 12 10 6 -2 192 112 -40 -84 -12 72 76 38 -12 0 6 -2 -4 0 4 4 2 0 0 0 0 0 16 0 0 2 -8 192 -12 12 4 28 -8 4 6 -20 960 -40 0 38 -42 -36 2 10 -6 960 -40 8 -20 -36 -40 4 10 -4 192 -8 2 0 -8 -8 0 2 0 384 -18 6 -4 -16 -16 4 6 0 192 -8 0 8 -8 -8 0 2 0 320 -20 20 10 -14 -12 14 10 -2 576 -8 -6 -20 -36 24 -4 0 -12 96 -1 -1 -4 -6 4 0 0 -2 192 16 -8 -20 -12 8 12 6 -4 960 12 -20 -60 -52 -8 20 10 -12 576 -12 -8 -26 -26 -20 4 2 -4 1920 -48 -24 -68 -100 -40 12 6 -20 640 -16 -8 -32 -16 -24 4 2 0 384 -12 -4 -24 0 -8 4 2 0 192 -8 0 -36 44 24 12 6 -12 192 -8 0 -36 76 24 12 6 -20 128 -6 2 -20 40 16 4 2 -8 64 -4 4 -20 60 24 4 2 -12 0 0 2 -4 20 8 0 0 -4 624 -21 -5 -34 -16 -24 4 4 0 400 -12 -4 -20 -12 -16 2 2 0 192 1 -1 -10 -12 0 -2 0 0 640 -16 -8 -8 -40 48 0 2 -16 1920 -48 -24 -24 -120 80 8 6 -40 96 8 8 -22 -6 36 -10 2 -6 0 8 8 -16 0 32 -8 2 0 2112 -72 -16 -120 -40 -80 16 14 -8 3456 -100 -36 -160 -120 -144 24 14 -16 1152 -36 -12 -59 -27 -46 7 6 -3 1920 -48 -24 -96 -32 -64 8 6 0 640 -16 -8 -32 0 0 0 2 0 240 -2 -2 -11 -15 10 -3 0 -5 960 -20 -12 -32 -56 16 0 2 -16 1920 -48 -24 216 -80 -80 -64 6 0 384 -12 -4 32 -16 -16 -8 2 0 320 -10 0 18 -14 -12 -6 0 -2 192 -6 0 20 -4 -8 -8 0 -4 320 -10 0 -14 18 -12 -2 0 -6 32 -1 1 -4 6 20 -4 0 -2 192 -8 0 -16 32 0 0 2 -8 192 -8 0 -20 28 8 4 2 -4 0 0 0 -8 28 8 4 2 -8 0 0 0 -6 34 4 2 2 -10 384 -12 -4 -22 2 -12 2 2 -2 192 -12 12 28 -12 8 12 6 -4 576 -24 0 -8 -24 -16 8 6 -8 192 -8 0 -2 -10 -4 4 2 -2 768 0 -8 -40 -40 -16 0 2 -8 3840 0 -56 -200 -200 -80 24 18 -40 384 0 -6 -20 -20 -8 4 2 -4 768 -12 -10 -36 -36 -24 4 2 -6 192 -8 0 -20 28 88 -12 2 -4 64 -4 4 -20 52 200 -28 2 -12 0 0 8 -24 72 336 -48 2 -24 0 1 1 -2 4 40 -6 0 -4 0 0 2 -4 12 48 -8 0 -4 1792 -4 -20 -88 -112 0 -8 6 0 768 4 -12 -40 -48 0 0 6 0 192 0 -4 -10 -10 -4 2 2 -2 96 -5 3 1 -5 -2 3 2 -1 96 6 -2 -10 -6 4 2 2 -2 528 9 -11 -35 -29 -2 9 6 -7 480 38 -18 -50 -30 20 22 14 -10 640 12 -12 -40 -40 0 8 6 0 48 -3 3 -14 8 24 -4 2 0 384 2 -6 -20 -24 144 4 2 -24 192 -4 -2 -6 -10 -4 0 0 -2 1344 -24 -16 -56 -72 -16 0 2 -16 2880 -60 -36 -112 -152 -56 12 6 -28 1344 -24 -16 -56 -72 -24 4 2 -12 384 -6 -6 -12 -24 0 0 2 0 64 -4 4 4 -4 0 4 2 0 384 -12 -4 48 -8 -16 -16 2 -8 192 -6 0 12 -4 -8 -6 0 -4 576 -18 0 -23 -3 -22 -5 0 -3 0 0 0 -22 194 4 14 10 -58 64 -4 4 -8 96 0 0 2 -24 0 0 10 -2 154 4 -6 0 -38 384 -12 -4 16 -24 80 0 2 -16 64 -2 0 8 -4 24 0 0 -4 384 -12 -4 48 -24 144 0 2 -24 192 -8 0 4 -12 0 4 2 0 384 -12 -4 16 -24 16 0 2 -8 0 0 6 1 9 2 -5 0 -3 0 0 2 4 16 0 -4 0 -6 1344 -56 8 -60 -44 -56 12 14 -4 192 -4 -2 32 -4 -8 -12 0 -4 1920 -48 -24 296 -40 -80 -104 6 -40 192 -4 -2 24 -8 -8 -8 0 0 960 -20 -10 114 -42 -36 -38 0 -6 640 -16 -8 68 -28 -24 -20 2 -4 0 10 2 -12 0 160 -20 2 0 0 3 -1 -6 4 40 -2 2 -4 0 8 -8 -24 24 80 8 10 -8 0 116 -36 -80 0 80 64 38 0 0 136 -56 -120 40 80 104 58 -40 0 14 -6 -12 4 8 12 6 -4 0 10 -6 -12 8 16 12 6 -8 192 8 -8 -20 -4 88 12 6 -20 960 0 -16 -52 -52 248 12 6 -52 0 0 2 -4 20 80 -12 0 -4 64 -2 0 -4 8 24 -4 0 0 1920 -40 -20 -68 -84 -72 -2 0 -12 576 -12 -6 -19 -23 -22 -1 0 -5 1920 -48 -24 -72 -72 -80 4 6 -8 192 -4 -4 4 -4 -8 -4 2 -4 1920 -68 -12 -60 -84 -72 20 14 -12 0 1 1 -2 4 24 -4 0 -4 0 0 2 -4 12 32 -6 0 -4 64 -4 4 -20 52 72 -12 2 -12 192 -8 0 -20 28 24 -4 2 -4 448 -16 0 -36 28 56 -12 2 -4 288 -8 -4 -2 -18 12 2 2 -6 192 -4 -4 12 -12 8 -4 2 -4 192 -12 12 14 -10 -4 10 6 -2 192 -8 0 36 -12 72 4 2 -12 1344 -24 -16 -36 -84 120 -12 2 -36 960 -20 -12 -20 -60 72 -4 2 -24 640 -16 -8 -20 -36 0 4 2 -8 576 -12 -8 -18 -34 -4 2 2 -2 192 -4 -4 -4 -12 0 4 2 0 192 -4 -4 -6 -10 -4 4 2 -2 192 -4 -4 36 -4 -8 -12 2 -4 192 -4 -4 28 -8 -8 -8 2 0 192 -4 -4 4 -8 -8 -2 2 0 960 -20 -20 22 -42 -36 -10 10 -6 384 -12 -4 16 -8 -16 -8 2 -8 576 -12 -6 0 -16 -24 -10 0 -8 1920 -48 -24 -24 -56 -80 -16 6 -24 1920 -48 -24 72 -40 -80 -48 6 -40 192 -4 -2 8 -4 -8 -6 0 -4 576 -12 -6 -15 -23 -22 -3 0 -5 0 0 0 -8 24 80 -8 2 -8 64 -4 4 -20 20 72 -12 2 -4 192 -8 0 -20 12 24 -4 2 0 192 -6 0 -12 8 8 -4 0 0 0 0 0 -8 24 16 0 2 -8 0 0 2 -4 20 16 -4 0 -4 0 0 2 -4 12 24 -4 0 -4 96 -4 0 -14 10 20 -2 2 -2 64 -4 4 -20 52 40 -4 2 -12 192 -12 12 -60 188 152 -28 6 -36 192 -4 -2 -4 -12 0 0 0 0 0 16 24 -52 12 120 -12 2 -12 0 0 14 -18 6 20 -6 4 0 576 -8 -8 -20 -36 24 -4 2 -12 640 -16 -8 24 -40 48 -8 2 -16 192 -6 0 8 -12 8 0 0 -4 640 -20 -4 16 -40 48 0 2 -16 960 -20 -12 -4 -60 168 -12 2 -36 640 -16 -8 24 -40 176 -8 2 -32 640 -16 -8 56 -40 240 -8 2 -40 960 -20 -12 28 -60 296 -20 2 -52 192 -4 -2 12 -12 72 -4 0 -12 1920 -48 -24 156 -100 -40 -44 6 -20 384 -12 -4 20 -20 -8 -4 2 -4 192 -8 0 6 -10 -4 2 2 -2 0 0 0 8 4 0 -4 0 -2 192 -12 12 4 12 -8 -12 6 -4 192 -8 0 -4 4 -8 -4 2 0 192 -6 0 -4 20 -8 -4 0 -8 0 3 11 -9 1 10 -5 2 -1 576 -12 -6 -16 -16 -24 -2 0 -8 1920 -48 -24 -48 -112 32 8 6 -32 640 -16 -8 -8 -40 16 0 2 -8 1152 -12 -12 -52 -60 -24 -4 2 -12 2880 -60 -36 -112 -152 -48 8 6 -32 0 8 16 -36 12 120 -28 2 -12 0 2 4 -8 4 40 -8 0 -4 0 0 4 -16 16 48 -8 2 -4 0 4 4 -16 8 48 -8 2 -8 128 -6 2 -2 -6 -4 2 2 0 160 -7 1 1 -9 -2 3 2 -1 288 -8 -4 -2 -18 0 2 2 0 768 -20 -12 8 -48 0 0 6 0 0 8 0 0 0 96 -16 2 0 192 4 -4 12 -12 72 -20 2 -12 0 6 -2 12 0 48 -12 2 0 0 12 -4 -8 0 96 -8 6 0 192 16 -16 -12 -12 72 4 14 -12 0 14 -10 -4 0 48 4 10 0 640 -16 -8 32 -40 0 -8 2 0 1920 -48 -24 104 -120 80 -24 6 -40 1920 -48 -24 116 -108 8 -36 6 -28 640 -16 -8 24 -40 16 -8 2 -8 192 -4 -2 12 -12 8 -4 0 -4 192 -4 -2 13 -11 2 -5 0 -3 576 -12 -6 28 -36 16 -12 0 -8 192 -4 -2 12 -12 0 -4 0 0 192 -4 -2 18 -10 -4 -6 0 -2 384 -12 -4 16 -24 0 0 2 0 384 -12 -4 0 -24 0 4 2 0 1920 -48 -24 -56 -56 -80 -8 6 -8 0 20 4 -24 0 288 -40 6 0 0 2 0 4 0 8 -4 0 0 0 10 -6 -4 0 16 4 6 0 0 14 -6 -8 0 8 8 6 0 0 20 -4 -16 0 16 8 6 0 0 8 2 -8 0 8 0 2 0 0 32 0 -32 0 32 8 10 0 48 19 -1 -21 -3 18 5 6 -3 1152 -18 -14 -50 -62 -20 2 2 -10 0 2 -2 -2 2 4 2 2 -2 192 -4 -2 4 -12 40 -4 0 -8 192 -4 -2 4 -12 24 -4 0 -6 128 -3 -1 2 -8 16 -2 0 -4 64 -4 4 -20 20 40 -4 2 -4 192 -12 12 -52 36 104 -20 6 -4 0 0 6 -12 20 40 -8 0 -4 384 -12 -4 -24 32 64 -8 2 0 0 0 0 -6 18 4 2 2 -6 0 0 0 -8 20 8 4 2 -6 0 0 8 -24 40 208 -32 2 -16 0 0 8 -24 40 144 -24 2 -16 0 0 8 -24 40 112 -16 2 -16 192 -8 0 -20 60 152 -20 2 -4 64 -4 4 -20 84 264 -36 2 -12 960 -16 -12 -26 -42 -36 -6 2 -6 960 -20 -12 -34 -42 -36 0 2 -6 960 -20 -16 -18 -42 -36 -2 6 -6 576 -8 -8 -20 -36 88 -4 2 -20 192 132 -60 -84 -12 72 76 58 -12 192 20 -12 -20 -12 8 12 10 -4 96 3 -3 -6 -6 0 2 2 0 768 16 -16 -48 -48 0 8 10 0 96 -1 -1 0 -6 20 -4 0 -4 0 3 5 -10 8 72 -14 0 -8 0 4 12 -32 24 176 -32 2 -16 192 -12 12 -60 60 152 -28 6 -4 192 -12 12 -76 76 184 -28 10 -12 0 0 0 0 48 0 0 2 -16 576 -12 -8 -12 -36 24 0 2 -12 192 -4 -4 -4 -12 8 4 2 -4 0 0 12 -32 32 96 -16 2 -8 0 24 -8 -24 8 16 16 10 -8 0 52 -28 -64 40 80 48 30 -40 192 -12 12 20 156 -8 -28 6 -60 192 -12 12 20 380 -8 -28 6 -116 0 0 2 4 40 0 -4 0 -12 0 0 6 8 24 0 -8 0 -10 0 0 8 -36 28 152 -20 6 -4 32 -2 2 -12 8 32 -4 2 0 0 0 2 4 4 0 -4 0 0 0 0 6 8 8 0 -8 0 -2 0 0 6 1 5 2 -5 0 -1 1024 -16 -12 -48 -48 -32 4 2 -8 1248 -23 -15 -55 -57 -42 3 2 -9 1344 -24 -16 -58 -66 -36 2 2 -12 1056 -21 -13 -45 -51 -30 3 2 -9 960 -20 -12 -40 -48 -24 4 2 -8 0 0 8 -24 24 112 -20 2 -8 0 4 12 -32 24 144 -24 2 -16 0 0 8 -24 24 80 -12 2 -8 0 8 0 -8 24 80 -8 2 -24 0 6 -2 -4 16 48 4 2 -16 0 14 -10 -20 16 48 20 10 -16 0 20 -12 -32 24 80 16 14 -24 0 14 -2 -20 8 16 12 6 -8 0 12 -4 -16 8 16 8 6 -8 0 2 0 0 4 8 0 0 -4 192 4 -4 -12 -4 88 4 2 -20 96 1 -3 -4 -6 36 0 2 -6 192 4 -12 -4 -12 72 12 10 -12 192 -4 -4 22 -10 -4 -6 2 -2 1344 -28 -16 -54 -62 -44 2 2 -10 2688 -36 -28 -120 -144 -32 -8 2 -32 640 -8 -6 -28 -36 0 -4 0 -8 112 -1 -1 -5 -7 2 -1 0 -1 48 2 2 -7 -3 18 -5 0 -3 0 1 1 -2 0 8 -2 0 0 0 12 20 -48 24 240 -48 2 -24 4864 -80 -56 -216 -216 -176 8 6 -32 2304 -32 -24 -104 -104 -80 0 2 -16 1152 -24 -14 -44 -60 -24 4 2 -12 384 -6 -4 -12 -24 24 -4 0 -8 1728 -28 -20 -64 -104 48 -8 2 -32 1344 -24 -16 -36 -84 88 -12 2 -28 192 8 -8 -12 -12 8 4 6 -4 192 48 -32 -28 -12 72 20 30 -12 1920 -48 -24 -44 -108 8 4 6 -28 960 -20 -12 -20 -60 40 -4 2 -16 1344 -28 -16 -28 -84 40 -4 2 -20 768 -14 -8 -20 -48 24 -4 0 -12 2112 -32 -24 -68 -132 152 -20 2 -52 192 -4 -2 -3 -11 2 -1 0 -3 576 -12 -6 -4 -36 16 -4 0 -8 192 -4 -2 4 -12 16 -4 0 -4 1728 -36 -18 -59 -75 -62 -3 0 -13 192 4 -4 -12 -12 0 4 2 0 96 -1 -1 -3 -5 -2 -1 0 -1 192 0 -2 -4 -12 0 -4 0 0 2496 -36 -28 -96 -152 16 -8 2 -16 960 -12 -12 -36 -60 8 -4 2 -4 1920 -18 -26 -76 -120 0 -4 6 0 2688 -42 -34 -116 -144 -48 4 6 -24 864 -17 -11 -37 -43 -22 3 2 -7 2880 -60 -36 -118 -142 -76 10 6 -26 192 -6 0 -10 10 -4 -2 0 -2 192 -6 0 -10 2 -4 -2 0 0 0 0 2 -2 26 4 -2 0 -6 192 -12 12 -40 240 32 -8 6 -56 480 -7 -5 -12 -30 52 -8 0 -14 0 0 4 -16 16 80 -12 2 -4 0 4 6 -12 4 48 -12 0 -4 1152 -36 -12 -60 -20 -40 4 6 -4 0 2 8 -16 12 56 -12 0 -4 0 10 16 -32 12 120 -28 0 -12 96 9 -1 16 -6 36 -20 0 -6 96 1 -1 0 -6 4 -4 0 -2 416 -10 -6 -12 -24 16 4 2 -8 192 -4 -4 6 -10 -4 -2 2 -2 192 -4 -4 8 -12 0 -2 2 0 0 4 -2 -3 1 2 3 2 -1 960 -12 -12 -44 -52 -16 4 2 -8 576 -8 -8 -28 -28 -16 4 2 -4 0 3 5 -9 1 10 -1 2 -1 0 3 7 -9 1 10 -3 2 -1 1792 -16 -24 -88 -88 -48 8 6 -16 864 -15 -11 -39 -41 -26 3 2 -7 672 -11 -9 -31 -33 -18 3 2 -5 960 -16 -12 -42 -50 -20 2 2 -8 3200 -80 -40 -154 -90 -132 18 10 -6 1920 -48 -24 -94 -46 -76 10 6 -2 1056 -12 -12 -50 -58 -4 -2 2 -14 960 -12 -12 -44 -52 -8 4 2 -12 0 0 6 -20 20 56 -8 2 -6 192 8 8 -24 -8 16 -8 2 -8 0 3 1 -2 4 8 -2 0 -4 0 11 1 -2 20 40 -6 0 -20 0 0 18 -3 13 10 -13 0 -3 400 -6 -4 -16 -20 -8 -2 0 -4 3648 -64 -40 -144 -176 -96 -8 2 -32 624 -8 -6 -26 -34 -4 -4 0 -8 576 0 -6 -28 -36 0 -4 2 0 4608 -60 -52 -200 -240 -96 -8 6 -48 1152 -18 -14 -48 -60 -24 0 2 -12 1920 -34 -22 -80 -92 -56 0 2 -16 1728 -36 -22 -74 -82 -52 8 4 -14 1344 -28 -20 -40 -80 96 8 6 -32 576 -12 -8 -12 -36 56 0 2 -16 528 -13 -7 -16 -30 4 4 2 -8 192 -12 12 -48 40 80 -16 6 -8 192 -12 12 -48 200 80 -16 6 -48 0 0 6 -12 52 40 -8 0 -12 0 0 2 -3 21 10 -3 0 -5 256 -8 0 -12 12 -8 -2 0 -4 192 -6 0 -7 13 -6 -3 0 -5 512 -16 0 -24 0 -16 -4 0 -2 512 -14 -6 -4 -32 0 2 2 0 640 -16 -8 -8 -40 0 2 2 0 960 -20 -14 -20 -60 0 2 4 0 960 -20 -12 -4 -60 72 -12 2 -20 960 -20 -12 -4 -60 104 -12 2 -28 192 -12 12 20 36 -8 -28 6 0 0 0 2 -3 5 10 -3 0 -1 192 28 -4 -44 -4 24 20 10 -12 64 8 0 -12 -4 8 4 2 -2 256 14 6 -36 -16 32 4 2 -8 48 4 6 -10 -2 20 -8 0 -4 16 2 4 -4 0 8 -4 0 -2 0 12 36 -28 12 56 -28 2 -12 0 4 4 -8 0 8 0 2 0 64 4 8 -12 -4 8 -4 2 0 448 12 12 -36 -28 8 -12 2 -4 768 -10 -8 -28 -48 8 -4 0 -4 1536 -22 -16 -52 -96 56 -12 0 -28 1792 -16 -16 -88 -88 -48 0 2 -16 384 6 -10 -20 -24 0 4 6 0 2304 -12 -28 -104 -144 0 -8 6 0 3840 -48 -40 -168 -200 -80 -8 2 -40 0 0 8 -6 10 4 -2 2 -4 0 4 8 -6 18 4 -2 2 -10 768 -16 -10 -16 -48 24 -2 2 -12 2304 -56 -32 -32 -144 96 8 10 -48 1792 -48 -24 -16 -112 0 8 10 0 2304 -56 -32 -32 -144 0 8 10 0 192 -6 0 -7 5 -6 -3 0 -3 448 -14 0 -19 1 -14 -5 0 -3 576 -18 0 -24 4 -16 -8 0 -4 2880 -60 -36 -96 -168 -16 8 6 -16 192 -6 0 10 -10 -4 -2 0 -2 256 -8 0 12 -12 -8 -4 0 -2 512 -16 0 0 -24 -16 -2 0 -4 192 -6 0 2 -10 -4 0 0 -2 576 -18 0 4 -24 -16 -4 0 -8 448 -14 0 1 -19 -14 -3 0 -5 576 -18 0 -3 -23 -22 -3 0 -5 192 -6 0 5 -7 -6 -3 0 -3 192 -6 0 13 -7 -6 -5 0 -3 64 -4 4 20 -4 24 4 2 -4 2304 -56 -32 -96 -96 -96 16 10 0 768 -30 0 -32 -28 -32 8 6 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 end lrslib-062/ine/test-062/c40-20.ext0000600001553200155320000002634012722006616014050 0ustar avis*cyclic polytope n=40, d=21 V-representation begin 40 21 integer 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 1 3 9 27 81 243 729 2187 6561 19683 59049 177147 531441 1594323 4782969 14348907 43046721 129140163 387420489 1162261467 3486784401 1 4 16 64 256 1024 4096 16384 65536 262144 1048576 4194304 16777216 67108864 268435456 1073741824 4294967296 17179869184 68719476736 274877906944 1099511627776 1 5 25 125 625 3125 15625 78125 390625 1953125 9765625 48828125 244140625 1220703125 6103515625 30517578125 152587890625 762939453125 3814697265625 19073486328125 95367431640625 1 6 36 216 1296 7776 46656 279936 1679616 10077696 60466176 362797056 2176782336 13060694016 78364164096 470184984576 2821109907456 16926659444736 101559956668416 609359740010496 3656158440062976 1 7 49 343 2401 16807 117649 823543 5764801 40353607 282475249 1977326743 13841287201 96889010407 678223072849 4747561509943 33232930569601 232630513987207 1628413597910449 11398895185373143 79792266297612001 1 8 64 512 4096 32768 262144 2097152 16777216 134217728 1073741824 8589934592 68719476736 549755813888 4398046511104 35184372088832 281474976710656 2251799813685248 18014398509481984 144115188075855872 1152921504606846976 1 9 81 729 6561 59049 531441 4782969 43046721 387420489 3486784401 31381059609 282429536481 2541865828329 22876792454961 205891132094649 1853020188851841 16677181699666569 150094635296999121 1350851717672992089 12157665459056928801 1 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000 100000000000 1000000000000 10000000000000 100000000000000 1000000000000000 10000000000000000 100000000000000000 1000000000000000000 10000000000000000000 100000000000000000000 1 11 121 1331 14641 161051 1771561 19487171 214358881 2357947691 25937424601 285311670611 3138428376721 34522712143931 379749833583241 4177248169415651 45949729863572161 505447028499293771 5559917313492231481 61159090448414546291 672749994932560009201 1 12 144 1728 20736 248832 2985984 35831808 429981696 5159780352 61917364224 743008370688 8916100448256 106993205379072 1283918464548864 15407021574586368 184884258895036416 2218611106740436992 26623333280885243904 319479999370622926848 3833759992447475122176 1 13 169 2197 28561 371293 4826809 62748517 815730721 10604499373 137858491849 1792160394037 23298085122481 302875106592253 3937376385699289 51185893014090757 665416609183179841 8650415919381337933 112455406951957393129 1461920290375446110677 19004963774880799438801 1 14 196 2744 38416 537824 7529536 105413504 1475789056 20661046784 289254654976 4049565169664 56693912375296 793714773254144 11112006825558016 155568095557812224 2177953337809371136 30491346729331195904 426878854210636742656 5976303958948914397184 83668255425284801560576 1 15 225 3375 50625 759375 11390625 170859375 2562890625 38443359375 576650390625 8649755859375 129746337890625 1946195068359375 29192926025390625 437893890380859375 6568408355712890625 98526125335693359375 1477891880035400390625 22168378200531005859375 332525673007965087890625 1 16 256 4096 65536 1048576 16777216 268435456 4294967296 68719476736 1099511627776 17592186044416 281474976710656 4503599627370496 72057594037927936 1152921504606846976 18446744073709551616 295147905179352825856 4722366482869645213696 75557863725914323419136 1208925819614629174706176 1 17 289 4913 83521 1419857 24137569 410338673 6975757441 118587876497 2015993900449 34271896307633 582622237229761 9904578032905937 168377826559400929 2862423051509815793 48661191875666868481 827240261886336764177 14063084452067724991009 239072435685151324847153 4064231406647572522401601 1 18 324 5832 104976 1889568 34012224 612220032 11019960576 198359290368 3570467226624 64268410079232 1156831381426176 20822964865671168 374813367582081024 6746640616477458432 121439531096594251776 2185911559738696531968 39346408075296537575424 708235345355337676357632 12748236216396078174437376 1 19 361 6859 130321 2476099 47045881 893871739 16983563041 322687697779 6131066257801 116490258898219 2213314919066161 42052983462257059 799006685782884121 15181127029874798299 288441413567621167681 5480386857784802185939 104127350297911241532841 1978419655660313589123979 37589973457545958193355601 1 20 400 8000 160000 3200000 64000000 1280000000 25600000000 512000000000 10240000000000 204800000000000 4096000000000000 81920000000000000 1638400000000000000 32768000000000000000 655360000000000000000 13107200000000000000000 262144000000000000000000 5242880000000000000000000 104857600000000000000000000 1 21 441 9261 194481 4084101 85766121 1801088541 37822859361 794280046581 16679880978201 350277500542221 7355827511386641 154472377739119461 3243919932521508681 68122318582951682301 1430568690241985328321 30041942495081691894741 630880792396715529789561 13248496640331026125580781 278218429446951548637196401 1 22 484 10648 234256 5153632 113379904 2494357888 54875873536 1207269217792 26559922791424 584318301411328 12855002631049216 282810057883082752 6221821273427820544 136880068015412051968 3011361496339065143296 66249952919459433152512 1457498964228107529355264 32064977213018365645815808 705429498686404044207947776 1 23 529 12167 279841 6436343 148035889 3404825447 78310985281 1801152661463 41426511213649 952809757913927 21914624432020321 504036361936467383 11592836324538749809 266635235464391245607 6132610415680998648961 141050039560662968926103 3244150909895248285300369 74615470927590710561908487 1716155831334586342923895201 1 24 576 13824 331776 7962624 191102976 4586471424 110075314176 2641807540224 63403380965376 1521681143169024 36520347436056576 876488338465357824 21035720123168587776 504857282956046106624 12116574790945106558976 290797794982682557415424 6979147079584381377970176 167499529910025153071284224 4019988717840603673710821376 1 25 625 15625 390625 9765625 244140625 6103515625 152587890625 3814697265625 95367431640625 2384185791015625 59604644775390625 1490116119384765625 37252902984619140625 931322574615478515625 23283064365386962890625 582076609134674072265625 14551915228366851806640625 363797880709171295166015625 9094947017729282379150390625 1 26 676 17576 456976 11881376 308915776 8031810176 208827064576 5429503678976 141167095653376 3670344486987776 95428956661682176 2481152873203736576 64509974703297150976 1677259342285725925376 43608742899428874059776 1133827315385150725554176 29479510200013918864408576 766467265200361890474622976 19928148895209409152340197376 1 27 729 19683 531441 14348907 387420489 10460353203 282429536481 7625597484987 205891132094649 5559060566555523 150094635296999121 4052555153018976267 109418989131512359209 2954312706550833698643 79766443076872509863361 2153693963075557766310747 58149737003040059690390169 1570042899082081611640534563 42391158275216203514294433201 1 28 784 21952 614656 17210368 481890304 13492928512 377801998336 10578455953408 296196766695424 8293509467471872 232218265089212416 6502111422497947648 182059119829942534144 5097655355238390956032 142734349946674946768896 3996561798506898509529088 111903730358193158266814464 3133304450029408431470804992 87732524600823436081182539776 1 29 841 24389 707281 20511149 594823321 17249876309 500246412961 14507145975869 420707233300201 12200509765705829 353814783205469041 10260628712958602189 297558232675799463481 8629188747598184440949 250246473680347348787521 7257147736730073114838109 210457284365172120330305161 6103261246589991489578849669 176994576151109753197786640401 1 30 900 27000 810000 24300000 729000000 21870000000 656100000000 19683000000000 590490000000000 17714700000000000 531441000000000000 15943230000000000000 478296900000000000000 14348907000000000000000 430467210000000000000000 12914016300000000000000000 387420489000000000000000000 11622614670000000000000000000 348678440100000000000000000000 1 31 961 29791 923521 28629151 887503681 27512614111 852891037441 26439622160671 819628286980801 25408476896404831 787662783788549761 24417546297445042591 756943935220796320321 23465261991844685929951 727423121747185263828481 22550116774162743178682911 699053619999045038539170241 21670662219970396194714277471 671790528819082282036142601601 1 32 1024 32768 1048576 33554432 1073741824 34359738368 1099511627776 35184372088832 1125899906842624 36028797018963968 1152921504606846976 36893488147419103232 1180591620717411303424 37778931862957161709568 1208925819614629174706176 38685626227668133590597632 1237940039285380274899124224 39614081257132168796771975168 1267650600228229401496703205376 1 33 1089 35937 1185921 39135393 1291467969 42618442977 1406408618241 46411484401953 1531578985264449 50542106513726817 1667889514952984961 55040353993448503713 1816331681783800622529 59938945498865420543457 1977985201462558877934081 65273511648264442971824673 2154025884392726618070214209 71082854184959978396317068897 2345734188103679287078463273601 1 34 1156 39304 1336336 45435424 1544804416 52523350144 1785793904896 60716992766464 2064377754059776 70188843638032384 2386420683693101056 81138303245565435904 2758702310349224820736 93795878551873643905024 3189059870763703892770816 108428035605965932354207744 3686553210602841700043063296 125342809160496617801464152064 4261655511456885005249781170176 1 35 1225 42875 1500625 52521875 1838265625 64339296875 2251875390625 78815638671875 2758547353515625 96549157373046875 3379220508056640625 118272717781982421875 4139545122369384765625 144884079282928466796875 5070942774902496337890625 177482997121587371826171875 6211904899255558013916015625 217416671473944530487060546875 7609583501588058567047119140625 1 36 1296 46656 1679616 60466176 2176782336 78364164096 2821109907456 101559956668416 3656158440062976 131621703842267136 4738381338321616896 170581728179578208256 6140942214464815497216 221073919720733357899776 7958661109946400884391936 286511799958070431838109696 10314424798490535546171949056 371319292745659279662190166016 13367494538843734067838845976576 1 37 1369 50653 1874161 69343957 2565726409 94931877133 3512479453921 129961739795077 4808584372417849 177917621779460413 6582952005840035281 243569224216081305397 9012061295995008299689 333446267951815307088493 12337511914217166362274241 456487940826035155404146917 16890053810563300749953435929 624931990990842127748277129373 23122483666661158726686253786801 1 38 1444 54872 2085136 79235168 3010936384 114415582592 4347792138496 165216101262848 6278211847988224 238572050223552512 9065737908494995456 344498040522809827328 13090925539866773438464 497455170514937390661632 18903296479567620845142016 718325266223569592115396608 27296360116495644500385071104 1037261684426834491014632701952 39415944008219710658556042674176 1 39 1521 59319 2313441 90224199 3518743761 137231006679 5352009260481 208728361158759 8140406085191601 317475837322472439 12381557655576425121 482880748567480579719 18832349194131742609041 734461618571137961752599 28644003124274380508351361 1117116121846700839825703079 43567528752021332753202420081 1699133621328831977374894383159 66266211231824447117620880943201 1 40 1600 64000 2560000 102400000 4096000000 163840000000 6553600000000 262144000000000 10485760000000000 419430400000000000 16777216000000000000 671088640000000000000 26843545600000000000000 1073741824000000000000000 42949672960000000000000000 1717986918400000000000000000 68719476736000000000000000000 2748779069440000000000000000000 109951162777600000000000000000000 end lrslib-062/ine/test-062/cp6.ine0000600001553200155320000004330512722006616013706 0ustar aviscp6.ine *6 point cut polytope H-representation begin 368 16 integer 2 0 1 1 1 1 0 0 0 0 -1 -1 -1 -1 -1 -1 2 1 0 1 1 1 0 -1 -1 -1 0 0 0 -1 -1 -1 2 1 1 0 1 1 -1 0 -1 -1 0 -1 -1 0 0 -1 0 1 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 -1 2 2 2 2 2 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 1 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -2 2 2 2 2 1 1 1 1 -1 -1 -1 -1 -1 -1 0 -2 1 1 1 1 2 2 2 2 -1 -1 -1 -1 -1 -1 0 1 -1 2 -1 -1 1 -2 1 1 2 -1 -1 2 2 -1 0 1 -1 -1 2 -1 1 1 -2 1 -1 2 -1 2 -1 2 2 -2 1 1 -1 -1 2 2 -2 -2 -1 1 1 1 1 -1 0 -1 2 1 -1 -1 2 1 -1 -1 -2 2 2 1 1 -1 2 -2 1 -1 -1 1 2 -2 -2 2 1 1 -1 -1 1 1 0 -1 2 -1 -1 1 2 -1 -1 1 2 2 -2 -1 1 1 2 -1 2 1 1 1 2 1 1 1 -2 -2 -2 -1 -1 -1 2 -2 1 -1 1 -1 2 -2 2 -2 1 -1 1 1 -1 1 0 -1 2 -1 1 -1 2 -1 1 -1 2 -2 2 1 -1 1 0 1 -1 -1 -1 2 1 1 1 -2 -1 -1 2 -1 2 2 0 0 0 0 0 0 1 0 0 -1 0 0 1 0 0 0 0 -1 1 1 1 0 1 1 1 0 -1 -1 0 -1 0 0 2 1 -2 -1 -1 1 2 1 1 -1 -2 -2 2 -1 1 1 0 2 -1 -1 -1 1 2 2 2 -2 -1 -1 1 -1 1 1 0 0 1 1 1 -1 0 0 0 0 -1 -1 1 -1 1 1 0 -1 2 1 1 -1 2 1 1 -1 -2 -2 2 -1 1 1 0 0 0 0 0 0 1 1 1 -1 -1 -1 1 -1 1 1 0 1 2 -1 -1 -1 -2 1 1 1 2 2 2 -1 -1 -1 2 -2 2 -2 2 -2 1 -1 1 -1 1 -1 1 1 -1 1 2 -1 1 -1 1 -2 1 -1 1 -2 1 -1 2 1 -2 2 0 0 1 0 0 -1 0 0 0 0 0 0 1 0 0 0 2 -1 2 -1 -1 -1 2 -1 -1 -1 2 2 2 -1 -1 -1 6 -1 1 -1 -1 -2 1 -1 -1 -2 1 1 2 -1 -2 -2 2 0 1 -1 -1 -1 0 0 0 0 1 1 1 -1 -1 -1 2 -1 1 -1 0 -1 1 -1 0 -1 1 0 1 0 -1 0 2 -1 1 0 -1 -1 1 0 -1 -1 0 1 1 0 0 -1 2 0 0 0 0 0 1 -1 -1 -1 1 1 1 -1 -1 -1 2 1 -1 1 1 2 1 -1 -1 -2 1 1 2 -1 -2 -2 0 -2 1 1 1 -1 2 2 2 -2 -1 -1 1 -1 1 1 0 -1 1 0 1 -1 1 0 1 -1 0 -1 1 0 0 1 0 -1 1 1 0 -1 1 1 0 -1 -1 0 1 0 1 0 2 -1 0 0 0 -1 0 0 0 -1 0 0 0 0 0 0 0 -1 0 1 1 -1 0 1 1 -1 0 0 0 -1 1 1 0 -2 2 2 2 -2 1 1 1 -1 -1 -1 1 -1 1 1 2 -2 -2 2 2 -2 -1 1 1 -1 1 1 -1 -1 1 1 2 -1 -1 1 1 -2 -1 1 1 -2 1 1 -2 -1 2 2 12 -1 -1 -1 -1 -2 -1 -1 -1 -2 -1 -1 -2 -1 -2 -2 0 0 0 0 0 0 1 0 -1 0 0 1 0 0 0 0 0 -1 1 1 0 1 1 1 0 1 -1 0 -1 0 -1 0 2 1 -2 -1 1 -1 2 1 -1 1 -2 2 -2 1 -1 1 0 2 -1 -1 1 -1 2 2 -2 2 -1 1 -1 1 -1 1 0 0 1 1 -1 1 0 0 0 0 -1 1 -1 1 -1 1 0 -1 2 1 -1 1 2 1 -1 1 -2 2 -2 1 -1 1 0 0 0 0 0 0 1 1 -1 1 -1 1 -1 1 -1 1 0 0 0 0 0 0 1 1 0 0 -1 0 0 0 0 0 0 1 -1 0 1 1 1 0 -1 -1 0 1 1 0 0 -1 2 1 -1 -2 1 -1 1 2 -1 1 -2 1 -1 2 -2 1 2 -2 -1 1 -1 1 -2 2 -2 2 1 -1 1 1 -1 1 0 -1 -1 2 -1 1 -1 2 -1 1 2 -1 1 2 -2 1 2 -1 1 2 1 1 1 2 1 1 -2 -1 -1 -2 -2 -1 2 1 -1 1 2 1 1 -1 -2 -1 1 2 1 -2 -1 -2 0 0 0 0 0 0 0 0 0 0 -1 1 0 1 0 0 0 1 -1 -1 1 0 1 1 -1 0 -1 1 0 1 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 1 0 0 0 1 0 -1 1 1 0 1 -1 -1 0 0 0 1 1 -1 0 2 -1 -1 1 1 2 2 -2 -2 -1 1 1 1 1 -1 2 1 1 -1 2 1 -1 1 -2 -1 1 -2 -1 2 1 -2 0 1 -1 -1 2 1 1 1 -2 -1 -1 2 1 2 1 -2 0 -1 1 2 -1 -1 1 2 -1 -1 -2 1 1 2 2 -1 0 -1 1 1 -1 0 1 1 -1 0 -1 1 0 1 0 0 0 -1 1 2 -1 1 1 2 -1 1 -2 1 -1 2 -2 1 0 0 0 0 0 0 1 1 -1 -1 -1 1 1 1 1 -1 2 -2 -1 1 1 -1 -2 2 2 -2 1 1 -1 -1 1 1 0 -1 -1 2 1 -1 -1 2 1 -1 2 1 -1 -2 2 1 0 0 1 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 -1 0 -2 1 1 -1 1 2 2 -2 2 -1 1 -1 1 -1 1 0 -1 1 0 -1 1 1 0 -1 1 0 1 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 1 0 0 1 -2 -1 1 1 2 1 -1 -1 -2 2 2 1 1 -1 0 1 -1 -1 0 1 1 1 0 -1 -1 0 1 0 1 0 2 -2 2 -2 -2 2 1 -1 -1 1 1 1 -1 -1 1 1 2 -1 1 -1 -2 1 1 -1 -2 1 1 2 -1 -2 1 2 2 1 -1 -2 -1 1 1 2 1 -1 -2 -1 1 -2 2 1 6 -1 1 -1 -2 -1 1 -1 -2 -1 1 2 1 -2 -1 -2 2 -1 1 -1 -1 0 1 -1 -1 0 1 1 0 -1 0 0 0 1 -1 -2 1 1 1 2 -1 -1 -2 1 1 2 2 -1 0 -1 1 2 1 -1 1 2 1 -1 -2 -1 1 -2 2 1 6 -1 -1 1 -2 -1 -1 1 -2 -1 1 -2 -1 2 1 -2 2 -1 -1 1 -1 0 -1 1 -1 0 1 -1 0 1 0 0 2 -1 0 0 -1 0 0 0 -1 0 0 0 0 0 0 0 0 -1 0 1 -1 1 0 1 -1 1 0 0 0 1 -1 1 0 -2 2 2 -2 2 1 1 -1 1 -1 1 -1 1 -1 1 2 -2 -2 2 -2 2 -1 1 -1 1 1 -1 1 1 -1 1 2 -1 -1 1 -2 1 -1 1 -2 1 1 -2 1 2 -1 2 12 -1 -1 -1 -2 -1 -1 -1 -2 -1 -1 -2 -1 -2 -1 -2 0 1 -1 -1 1 2 1 1 -1 -2 -1 1 2 1 2 -2 2 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 1 0 0 -1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 0 0 0 1 0 2 -1 -1 2 -1 -1 -1 2 -1 -1 2 -1 -1 2 2 -1 6 -1 -1 1 -1 -2 -1 1 -1 -2 1 -1 -2 1 2 -2 2 0 -1 1 -1 -1 0 0 0 0 1 -1 -1 1 1 -1 2 -1 -1 1 0 -1 -1 1 0 -1 1 0 -1 0 1 0 2 -1 0 1 -1 -1 0 1 -1 -1 0 0 0 1 1 -1 2 0 0 0 0 0 -1 1 -1 -1 1 -1 -1 1 1 -1 2 1 1 -1 1 2 -1 1 -1 -2 1 -1 -2 1 2 -2 0 0 0 1 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 -1 0 1 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 1 0 0 0 0 0 0 -1 1 0 1 1 1 0 1 1 0 -1 -1 0 0 -1 2 1 -2 1 -1 -1 2 -1 1 1 2 -2 -2 1 1 -1 0 2 -1 1 -1 -1 2 -2 2 2 1 -1 -1 1 1 -1 0 0 1 -1 1 1 0 0 0 0 1 -1 -1 1 1 -1 0 -1 2 -1 1 1 2 -1 1 1 2 -2 -2 1 1 -1 0 0 0 0 0 0 1 -1 1 1 1 -1 -1 1 1 -1 0 0 0 0 0 0 1 0 1 0 0 -1 0 0 0 0 0 1 -1 1 0 1 1 -1 0 -1 1 0 1 0 -1 0 2 1 -1 1 -2 -1 1 -1 2 1 1 -2 -1 2 1 -2 2 -2 -1 -1 1 1 -2 -2 2 2 -1 1 1 1 1 -1 0 -1 -1 -1 2 1 -1 -1 2 1 -1 2 1 2 1 -2 2 -2 2 2 -2 -2 1 1 -1 -1 -1 1 1 1 1 -1 2 1 -1 2 1 1 1 -2 -1 -1 2 1 1 -2 -2 -1 2 1 2 -1 1 1 -2 1 -1 -1 2 -2 -2 1 1 -1 2 -1 1 1 2 1 1 1 2 1 -1 -2 -1 -2 -1 -2 2 2 -2 -2 2 -2 1 1 -1 1 -1 1 -1 1 -1 1 2 -1 1 1 -1 -2 1 1 -1 -2 -1 1 2 1 2 -2 2 1 -1 -1 1 -2 1 1 -1 2 -1 1 -2 1 -2 2 0 0 0 0 0 0 0 -1 1 0 0 0 0 1 0 0 0 1 0 1 -1 1 0 -1 1 -1 0 0 0 1 -1 1 0 2 -1 1 -1 1 2 -2 2 -2 1 -1 1 1 -1 1 2 1 1 2 -1 1 -1 -2 1 -1 -2 1 -1 2 -2 1 0 1 -1 2 -1 1 1 -2 1 -1 2 -1 1 2 -2 1 0 -1 1 -1 2 -1 1 -1 2 -1 1 -2 1 2 -1 2 0 -1 1 -1 1 0 1 -1 1 0 1 -1 0 1 0 0 0 -1 1 -1 2 1 1 -1 2 1 1 -2 -1 2 1 -2 0 0 0 0 0 0 1 -1 1 -1 1 -1 1 1 -1 1 0 0 0 0 0 0 0 0 0 0 1 -1 0 1 0 0 0 1 -1 1 -1 0 1 -1 1 0 1 -1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 -1 0 0 0 0 1 -1 1 1 0 1 -1 -1 0 1 1 0 -1 0 0 0 1 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 -2 2 2 2 1 -1 -1 -1 1 1 1 -1 -1 -1 0 1 -2 1 1 1 2 -1 -1 -1 2 2 2 -1 -1 -1 2 2 -1 1 1 1 2 -2 -2 -2 1 1 1 -1 -1 -1 0 1 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 -2 -1 -1 -1 2 -1 -1 2 -1 2 2 0 2 2 2 2 -2 -1 -1 -1 1 -1 -1 1 -1 1 1 2 2 1 1 1 -1 -2 -2 -2 2 -1 -1 1 -1 1 1 2 2 2 -2 -2 -2 -1 1 1 1 1 1 1 -1 -1 -1 2 2 -1 -1 -1 -1 2 2 2 2 -1 -1 -1 -1 -1 -1 6 1 -1 -1 -1 -2 1 1 1 2 -1 -1 -2 -1 -2 -2 2 1 0 -1 -1 -1 0 1 1 1 0 0 0 -1 -1 -1 2 1 1 -1 -1 -2 -1 1 1 2 1 1 2 -1 -2 -2 2 1 -1 -1 0 -1 1 1 0 1 -1 0 -1 0 -1 0 6 1 -1 -1 -2 -1 1 1 2 1 -1 -2 -1 -2 -1 -2 2 1 -1 0 -1 -1 1 0 1 1 0 -1 -1 0 0 -1 2 2 -2 2 -2 -2 1 -1 1 1 1 -1 -1 1 1 -1 2 1 -1 1 -1 -2 1 -1 1 2 1 -1 -2 1 2 -2 2 -1 -2 1 1 -1 -2 1 1 -1 2 2 -2 -1 1 1 2 -1 1 1 -2 -1 1 1 -2 -1 -1 2 1 2 1 -2 2 -1 1 1 1 2 1 1 1 2 -1 -1 -2 -1 -2 -2 2 2 -2 -2 -2 2 1 1 1 -1 -1 -1 1 -1 1 1 2 -1 1 -2 1 -1 1 -2 1 -1 2 -1 1 2 -2 1 2 1 -1 -1 -1 0 1 1 1 0 -1 -1 0 -1 0 0 2 0 0 0 0 0 1 1 1 1 -1 -1 -1 -1 -1 -1 0 1 -2 1 1 -1 2 -1 -1 1 2 2 -2 -1 1 1 0 1 -1 0 1 -1 1 0 -1 1 0 1 -1 0 0 1 0 1 -1 1 0 -1 1 -1 0 1 1 0 -1 0 1 0 2 0 -1 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 -1 1 1 -1 0 0 0 0 1 1 -1 -1 1 1 0 2 -2 2 2 -2 1 -1 -1 1 1 1 -1 -1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 -1 0 1 1 1 -1 0 -1 -1 1 0 -1 1 0 1 0 0 0 1 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 2 2 1 1 -1 1 -2 -2 2 -2 -1 1 -1 1 -1 1 0 2 2 2 -2 2 -1 -1 1 -1 -1 1 -1 1 -1 1 0 1 1 1 -2 1 -1 -1 2 -1 -1 2 -1 2 -1 2 0 1 1 1 -2 -1 -1 -1 2 1 -1 2 1 2 1 -2 0 1 0 1 -1 -1 0 -1 1 1 0 0 0 1 1 -1 0 1 1 0 -1 -1 -1 0 1 1 0 1 1 0 0 -1 2 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 -1 0 0 1 1 -1 -1 0 0 0 0 -1 1 1 1 1 -1 0 2 2 2 -2 -2 -1 -1 1 1 -1 1 1 1 1 -1 2 1 1 -1 -2 -1 -1 1 2 1 1 2 1 -2 -1 -2 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 1 0 2 1 1 2 1 -1 -1 -2 -1 1 -2 -1 1 -2 2 1 0 1 0 1 1 -1 0 -1 -1 1 0 0 0 -1 1 1 0 2 -1 1 1 -1 2 -2 -2 2 1 1 -1 -1 1 1 0 1 -1 2 1 -1 1 -2 -1 1 2 1 -1 -2 2 1 0 -1 1 -1 -1 2 1 -1 -1 2 1 1 -2 -1 2 2 0 -2 1 -1 1 1 2 -2 2 2 1 -1 -1 1 1 -1 0 -1 1 -1 0 1 1 -1 0 1 1 0 -1 0 1 0 0 -1 1 -2 1 1 1 -2 1 1 2 -1 -1 2 2 -1 0 -1 1 -1 1 2 1 -1 1 2 1 -1 -2 1 2 -2 0 0 0 0 0 0 1 -1 -1 1 1 1 -1 -1 1 1 0 1 -2 1 -1 1 2 -1 1 -1 2 -2 2 1 -1 1 0 1 -1 0 -1 1 1 0 1 -1 0 -1 1 0 0 1 0 0 0 0 0 0 -1 -1 1 1 -1 1 1 1 1 -1 0 1 1 2 -1 -1 -1 -2 1 1 -2 1 1 2 2 -1 2 -1 -2 1 -1 1 -2 1 -1 1 2 -2 2 1 -1 1 0 -1 -1 -1 1 2 -1 -1 1 2 -1 1 2 1 2 -2 2 1 -1 -1 -2 1 1 1 2 -1 -1 -2 1 -2 1 2 2 -1 1 -2 -1 1 1 -2 -1 1 2 1 -1 -2 2 1 2 0 -1 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 1 -1 1 0 0 0 0 1 -1 1 1 -1 1 0 2 -2 2 -2 2 1 -1 1 -1 1 -1 1 1 -1 1 2 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 -1 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 1 0 0 0 -1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 1 0 0 0 0 0 0 -1 0 1 1 1 0 1 1 1 0 0 0 -1 -1 -1 2 1 1 -2 -1 -1 -1 2 1 1 2 1 1 -2 -2 -1 0 2 1 -1 -1 -1 -2 2 2 2 1 1 1 -1 -1 -1 0 0 -1 1 1 1 0 0 0 0 1 1 1 -1 -1 -1 0 -1 -1 2 1 1 -1 2 1 1 2 1 1 -2 -2 -1 0 0 0 0 0 0 -1 1 1 1 1 1 1 -1 -1 -1 0 0 0 0 0 0 0 1 1 0 0 0 0 -1 0 0 0 1 1 -1 0 1 -1 1 0 -1 1 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 -1 0 0 0 1 1 -1 -1 0 -1 1 1 0 1 1 0 -1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 -1 0 0 1 1 -1 1 0 -1 1 -1 0 1 -1 0 1 0 0 0 1 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 2 2 1 -1 1 1 -2 2 -2 -2 1 -1 -1 1 1 -1 0 2 2 -2 2 2 -1 1 -1 -1 1 -1 -1 1 1 -1 0 1 1 -2 1 1 -1 2 -1 -1 2 -1 -1 2 2 -1 0 1 1 -2 1 -1 -1 2 -1 1 2 -1 1 2 -2 1 0 1 0 -1 1 -1 0 1 -1 1 0 0 0 1 -1 1 0 1 1 -1 0 -1 -1 1 0 1 1 0 1 0 -1 0 2 0 0 -1 0 -1 0 0 0 0 0 0 0 0 -1 0 0 0 1 -1 1 -1 0 0 0 0 1 -1 1 1 -1 1 0 2 2 -2 2 -2 -1 1 -1 1 1 -1 1 1 -1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 0 0 1 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 -1 0 2 1 1 1 1 0 -1 -1 -1 0 -1 -1 0 -1 0 0 2 0 0 0 0 0 0 -1 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 1 0 -1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 1 2 -1 -1 -1 -1 2 -1 -1 -1 2 -1 -1 2 -1 2 2 6 -1 -1 -1 -2 1 -1 -1 -2 1 -1 -2 1 -2 1 2 2 0 -1 -1 -1 1 0 0 0 0 -1 -1 1 -1 1 1 2 -1 -1 0 -1 1 -1 0 -1 1 0 -1 1 0 0 1 2 -1 0 -1 -1 1 0 -1 -1 1 0 0 0 -1 1 1 2 0 0 0 0 0 -1 -1 -1 1 -1 -1 1 -1 1 1 2 1 1 1 2 -1 -1 -1 -2 1 -1 -2 1 -2 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 1 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 -1 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 1 0 0 -1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 1 0 0 0 2 1 2 1 1 -1 -2 -1 -1 1 -2 -2 2 -1 1 1 0 1 1 0 1 -1 -1 0 -1 1 0 -1 1 0 0 1 0 2 1 -1 1 -1 -2 2 -2 2 1 -1 1 1 -1 1 0 1 2 -1 1 -1 -2 1 -1 1 2 -2 2 1 -1 1 0 1 1 1 0 -1 -1 -1 0 1 -1 0 1 0 1 0 0 2 1 1 -1 -1 -2 -2 2 2 -1 1 1 1 1 -1 0 1 1 1 -1 -2 -1 -1 1 2 -1 1 2 1 2 -2 0 1 2 1 -1 -1 -2 -1 1 1 -2 2 2 1 1 -1 0 1 1 -1 1 -2 -1 1 -1 2 1 -1 2 1 -2 2 0 -2 -1 1 1 1 -2 2 2 2 1 1 1 -1 -1 -1 0 -1 -1 1 0 1 -1 1 0 1 1 0 1 0 -1 0 0 -1 -2 1 1 1 -2 1 1 1 2 2 2 -1 -1 -1 0 -1 -1 1 1 2 -1 1 1 2 1 1 2 -1 -2 -2 0 -1 -1 1 -1 2 -1 1 -1 2 1 -1 2 1 -2 2 0 1 1 -2 -1 1 -1 2 1 -1 2 1 -1 -2 2 1 0 1 0 -1 -1 1 0 1 1 -1 0 0 0 -1 1 1 2 0 0 -1 -1 0 0 0 0 0 0 0 0 -1 0 0 0 0 1 -1 -1 1 0 0 0 0 1 1 -1 -1 1 1 0 2 2 -2 -2 2 -1 1 1 -1 1 1 -1 -1 1 1 0 0 0 0 0 0 -1 1 -1 1 1 -1 1 1 -1 1 0 1 1 -1 2 -1 -1 1 -2 1 1 -2 1 2 -1 2 6 1 -1 -2 -1 -1 1 2 1 1 -2 -1 -1 -2 -2 -1 2 0 0 0 0 0 -1 0 -1 0 0 -1 0 0 0 0 6 1 1 1 2 1 -1 -1 -2 -1 -1 -2 -1 -2 -1 -2 2 1 1 1 0 1 -1 -1 0 -1 -1 0 -1 0 -1 0 2 0 0 0 0 0 0 -1 0 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 1 0 -1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 0 1 2 -1 -1 -1 2 -1 -1 -1 2 -1 -1 2 -1 2 -1 2 6 -1 -1 -1 1 -2 -1 -1 1 -2 -1 1 -2 1 -2 2 2 0 -1 -1 1 -1 0 0 0 0 -1 1 -1 1 -1 1 2 -1 -1 0 1 -1 -1 0 1 -1 0 1 -1 0 0 1 2 -1 0 -1 1 -1 0 -1 1 -1 0 0 0 1 -1 1 2 0 0 0 0 0 -1 -1 1 -1 -1 1 -1 1 -1 1 2 1 1 1 -1 2 -1 -1 1 -2 -1 1 -2 1 -2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 1 0 0 0 -1 1 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 -1 0 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 1 0 0 -1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 1 0 0 0 0 0 1 1 0 -1 1 -1 0 1 -1 0 1 -1 0 0 1 0 2 1 -1 -1 1 -2 2 2 -2 1 1 -1 -1 1 1 2 1 2 1 -1 1 -2 -1 1 -1 -2 2 -2 1 -1 1 0 1 2 -1 -1 1 -2 1 1 -1 2 2 -2 -1 1 1 0 -1 -1 1 1 0 -1 1 1 0 1 1 0 -1 0 0 0 -1 -1 1 2 1 -1 1 2 1 1 2 1 -2 -1 -2 0 -1 -1 1 2 -1 -1 1 2 -1 1 2 -1 -2 1 2 0 0 0 0 0 0 -1 1 1 -1 1 1 -1 -1 1 1 2 0 0 0 0 0 -1 -1 0 0 -1 0 0 0 0 0 6 1 1 2 1 1 -1 -2 -1 -1 -2 -1 -1 -2 -2 -1 0 1 -1 1 1 -2 1 -1 -1 2 1 1 -2 -1 2 2 0 -1 1 1 -2 1 1 1 -2 1 -1 2 -1 2 -1 2 6 -1 -1 -2 -1 1 -1 -2 -1 1 -2 -1 1 -2 2 1 2 -1 -1 -1 0 1 -1 -1 0 1 -1 0 1 0 1 0 0 -1 1 1 -1 2 1 1 -1 2 -1 1 -2 1 -2 2 0 1 -1 1 2 -1 1 -1 -2 1 1 2 -1 -2 1 2 0 1 -1 1 -2 1 1 -1 2 -1 1 -2 1 2 -1 2 0 -1 1 1 1 -2 1 1 1 -2 -1 -1 2 -1 2 2 0 -1 1 1 2 -1 1 1 2 -1 -1 -2 1 -2 1 2 6 -1 -1 -2 1 -1 -1 -2 1 -1 -2 1 -1 2 -2 1 2 -1 -1 -1 1 0 -1 -1 1 0 -1 1 0 1 0 0 2 -2 -2 -2 2 2 -1 -1 1 1 -1 1 1 1 1 -1 0 -2 2 -2 2 2 1 -1 1 1 1 -1 -1 1 1 -1 0 -1 0 -1 1 1 0 -1 1 1 0 0 0 1 1 -1 2 -1 -1 -2 1 1 -1 -2 1 1 -2 1 1 2 2 -1 2 -1 0 -1 0 0 0 -1 0 0 0 0 0 0 0 0 12 -2 -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 12 -1 -1 -2 -1 -1 -1 -2 -1 -1 -2 -1 -1 -2 -2 -1 6 -1 1 -2 -1 -1 1 -2 -1 -1 2 1 1 -2 -2 -1 6 -1 0 -1 -1 -1 0 -1 -1 -1 0 0 0 -1 -1 -1 6 -2 1 -1 -1 -1 2 -2 -2 -2 1 1 1 -1 -1 -1 0 1 -1 1 -1 2 1 -1 1 -2 1 -1 2 1 -2 2 0 2 -2 -2 2 2 1 1 -1 -1 -1 1 1 1 1 -1 0 0 -1 -1 1 1 0 0 0 0 -1 1 1 1 1 -1 2 0 -1 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 1 -1 -2 1 -1 1 2 -1 1 2 -1 -2 1 2 0 -2 -2 2 2 2 -1 1 1 1 1 1 1 -1 -1 -1 0 -1 -1 0 1 1 -1 0 1 1 0 1 1 0 0 -1 2 -1 -2 -1 1 1 -2 -1 1 1 -2 2 2 1 1 -1 0 1 1 -1 -1 2 -1 1 1 -2 1 1 -2 -1 2 2 6 1 2 1 1 1 -2 -1 -1 -1 -2 -2 -2 -1 -1 -1 6 2 -2 -2 -2 -2 1 1 1 1 -1 -1 -1 -1 -1 -1 6 2 1 1 1 1 -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 6 -2 2 -2 -2 -2 1 -1 -1 -1 1 1 1 -1 -1 -1 6 -2 -2 2 -2 -2 -1 1 -1 -1 1 -1 -1 1 1 -1 2 -1 -1 0 0 0 -1 0 0 0 0 0 0 0 0 0 12 -1 -2 -1 -1 -1 -2 -1 -1 -1 -2 -2 -2 -1 -1 -1 6 -1 -2 1 -1 -1 -2 1 -1 -1 2 -2 -2 1 1 -1 6 -1 -1 0 -1 -1 -1 0 -1 -1 0 -1 -1 0 0 -1 6 -2 -1 1 -1 -1 -2 2 -2 -2 1 -1 -1 1 1 -1 6 -1 -2 -1 1 -1 -2 -1 1 -1 -2 2 -2 1 -1 1 6 -2 -2 -2 2 -2 -1 -1 1 -1 -1 1 -1 1 -1 1 6 -1 -1 -1 0 -1 -1 -1 0 -1 -1 0 -1 0 -1 0 6 -2 -1 -1 1 -1 -2 -2 2 -2 -1 1 -1 1 -1 1 12 -2 -1 -1 -1 -1 -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 6 -1 -2 -1 -1 1 -2 -1 -1 1 -2 -2 2 -1 1 1 6 -2 -2 -2 -2 2 -1 -1 -1 1 -1 -1 1 -1 1 1 6 -1 -1 -1 -1 0 -1 -1 -1 0 -1 -1 0 -1 0 0 6 -2 -1 -1 -1 1 -2 -2 -2 2 -1 -1 1 -1 1 1 6 0 -1 -1 -1 -1 0 0 0 0 -1 -1 -1 -1 -1 -1 6 1 -2 -1 -1 -1 2 1 1 1 -2 -2 -2 -1 -1 -1 6 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 0 0 0 0 0 -1 0 0 -1 0 0 -1 0 0 0 6 1 1 1 1 2 -1 -1 -1 -2 -1 -1 -2 -1 -2 -2 end lrslib-062/ine/test-062/normaliz/0000700001553200155320000000000012722006617014346 5ustar avislrslib-062/ine/test-062/normaliz/bv7.in0000600001553200155320000001747012722006616015406 0ustar avis/* bv7.ine normaliz format */ amb_space 56 inhom_equations 20 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 inhom_inequalities 49 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 VerticesOfPolyhedron lrslib-062/ine/test-062/normaliz/perm10.in0000600001553200155320000007012012722006616016003 0ustar avis/* perm10.ine in normaliz format */ amb_space 10 inhom_equations 1 1 1 1 1 1 1 1 1 1 1 -55 inhom_inequalities 1022 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 54 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 54 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 54 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 54 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 54 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 54 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 54 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 54 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 54 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 54 -1 -1 -1 -1 -1 -1 -1 -1 0 0 52 -1 -1 -1 -1 -1 -1 -1 0 -1 0 52 -1 -1 -1 -1 -1 -1 -1 0 0 -1 52 -1 -1 -1 -1 -1 -1 0 -1 -1 0 52 -1 -1 -1 -1 -1 -1 0 -1 0 -1 52 -1 -1 -1 -1 -1 -1 0 0 -1 -1 52 -1 -1 -1 -1 -1 0 -1 -1 -1 0 52 -1 -1 -1 -1 -1 0 -1 -1 0 -1 52 -1 -1 -1 -1 -1 0 -1 0 -1 -1 52 -1 -1 -1 -1 -1 0 0 -1 -1 -1 52 -1 -1 -1 -1 0 -1 -1 -1 -1 0 52 -1 -1 -1 -1 0 -1 -1 -1 0 -1 52 -1 -1 -1 -1 0 -1 -1 0 -1 -1 52 -1 -1 -1 -1 0 -1 0 -1 -1 -1 52 -1 -1 -1 -1 0 0 -1 -1 -1 -1 52 -1 -1 -1 0 -1 -1 -1 -1 -1 0 52 -1 -1 -1 0 -1 -1 -1 -1 0 -1 52 -1 -1 -1 0 -1 -1 -1 0 -1 -1 52 -1 -1 -1 0 -1 -1 0 -1 -1 -1 52 -1 -1 -1 0 -1 0 -1 -1 -1 -1 52 -1 -1 -1 0 0 -1 -1 -1 -1 -1 52 -1 -1 0 -1 -1 -1 -1 -1 -1 0 52 -1 -1 0 -1 -1 -1 -1 -1 0 -1 52 -1 -1 0 -1 -1 -1 -1 0 -1 -1 52 -1 -1 0 -1 -1 -1 0 -1 -1 -1 52 -1 -1 0 -1 -1 0 -1 -1 -1 -1 52 -1 -1 0 -1 0 -1 -1 -1 -1 -1 52 -1 -1 0 0 -1 -1 -1 -1 -1 -1 52 -1 0 -1 -1 -1 -1 -1 -1 -1 0 52 -1 0 -1 -1 -1 -1 -1 -1 0 -1 52 -1 0 -1 -1 -1 -1 -1 0 -1 -1 52 -1 0 -1 -1 -1 -1 0 -1 -1 -1 52 -1 0 -1 -1 -1 0 -1 -1 -1 -1 52 -1 0 -1 -1 0 -1 -1 -1 -1 -1 52 -1 0 -1 0 -1 -1 -1 -1 -1 -1 52 -1 0 0 -1 -1 -1 -1 -1 -1 -1 52 0 -1 -1 -1 -1 -1 -1 -1 -1 0 52 0 -1 -1 -1 -1 -1 -1 -1 0 -1 52 0 -1 -1 -1 -1 -1 -1 0 -1 -1 52 0 -1 -1 -1 -1 -1 0 -1 -1 -1 52 0 -1 -1 -1 -1 0 -1 -1 -1 -1 52 0 -1 -1 -1 0 -1 -1 -1 -1 -1 52 0 -1 -1 0 -1 -1 -1 -1 -1 -1 52 0 -1 0 -1 -1 -1 -1 -1 -1 -1 52 0 0 -1 -1 -1 -1 -1 -1 -1 -1 52 -1 -1 -1 -1 -1 -1 -1 0 0 0 49 -1 -1 -1 -1 -1 -1 0 -1 0 0 49 -1 -1 -1 -1 -1 -1 0 0 -1 0 49 -1 -1 -1 -1 -1 -1 0 0 0 -1 49 -1 -1 -1 -1 -1 0 -1 -1 0 0 49 -1 -1 -1 -1 -1 0 -1 0 -1 0 49 -1 -1 -1 -1 -1 0 -1 0 0 -1 49 -1 -1 -1 -1 -1 0 0 -1 -1 0 49 -1 -1 -1 -1 -1 0 0 -1 0 -1 49 -1 -1 -1 -1 -1 0 0 0 -1 -1 49 -1 -1 -1 -1 0 -1 -1 -1 0 0 49 -1 -1 -1 -1 0 -1 -1 0 -1 0 49 -1 -1 -1 -1 0 -1 -1 0 0 -1 49 -1 -1 -1 -1 0 -1 0 -1 -1 0 49 -1 -1 -1 -1 0 -1 0 -1 0 -1 49 -1 -1 -1 -1 0 -1 0 0 -1 -1 49 -1 -1 -1 -1 0 0 -1 -1 -1 0 49 -1 -1 -1 -1 0 0 -1 -1 0 -1 49 -1 -1 -1 -1 0 0 -1 0 -1 -1 49 -1 -1 -1 -1 0 0 0 -1 -1 -1 49 -1 -1 -1 0 -1 -1 -1 -1 0 0 49 -1 -1 -1 0 -1 -1 -1 0 -1 0 49 -1 -1 -1 0 -1 -1 -1 0 0 -1 49 -1 -1 -1 0 -1 -1 0 -1 -1 0 49 -1 -1 -1 0 -1 -1 0 -1 0 -1 49 -1 -1 -1 0 -1 -1 0 0 -1 -1 49 -1 -1 -1 0 -1 0 -1 -1 -1 0 49 -1 -1 -1 0 -1 0 -1 -1 0 -1 49 -1 -1 -1 0 -1 0 -1 0 -1 -1 49 -1 -1 -1 0 -1 0 0 -1 -1 -1 49 -1 -1 -1 0 0 -1 -1 -1 -1 0 49 -1 -1 -1 0 0 -1 -1 -1 0 -1 49 -1 -1 -1 0 0 -1 -1 0 -1 -1 49 -1 -1 -1 0 0 -1 0 -1 -1 -1 49 -1 -1 -1 0 0 0 -1 -1 -1 -1 49 -1 -1 0 -1 -1 -1 -1 -1 0 0 49 -1 -1 0 -1 -1 -1 -1 0 -1 0 49 -1 -1 0 -1 -1 -1 -1 0 0 -1 49 -1 -1 0 -1 -1 -1 0 -1 -1 0 49 -1 -1 0 -1 -1 -1 0 -1 0 -1 49 -1 -1 0 -1 -1 -1 0 0 -1 -1 49 -1 -1 0 -1 -1 0 -1 -1 -1 0 49 -1 -1 0 -1 -1 0 -1 -1 0 -1 49 -1 -1 0 -1 -1 0 -1 0 -1 -1 49 -1 -1 0 -1 -1 0 0 -1 -1 -1 49 -1 -1 0 -1 0 -1 -1 -1 -1 0 49 -1 -1 0 -1 0 -1 -1 -1 0 -1 49 -1 -1 0 -1 0 -1 -1 0 -1 -1 49 -1 -1 0 -1 0 -1 0 -1 -1 -1 49 -1 -1 0 -1 0 0 -1 -1 -1 -1 49 -1 -1 0 0 -1 -1 -1 -1 -1 0 49 -1 -1 0 0 -1 -1 -1 -1 0 -1 49 -1 -1 0 0 -1 -1 -1 0 -1 -1 49 -1 -1 0 0 -1 -1 0 -1 -1 -1 49 -1 -1 0 0 -1 0 -1 -1 -1 -1 49 -1 -1 0 0 0 -1 -1 -1 -1 -1 49 -1 0 -1 -1 -1 -1 -1 -1 0 0 49 -1 0 -1 -1 -1 -1 -1 0 -1 0 49 -1 0 -1 -1 -1 -1 -1 0 0 -1 49 -1 0 -1 -1 -1 -1 0 -1 -1 0 49 -1 0 -1 -1 -1 -1 0 -1 0 -1 49 -1 0 -1 -1 -1 -1 0 0 -1 -1 49 -1 0 -1 -1 -1 0 -1 -1 -1 0 49 -1 0 -1 -1 -1 0 -1 -1 0 -1 49 -1 0 -1 -1 -1 0 -1 0 -1 -1 49 -1 0 -1 -1 -1 0 0 -1 -1 -1 49 -1 0 -1 -1 0 -1 -1 -1 -1 0 49 -1 0 -1 -1 0 -1 -1 -1 0 -1 49 -1 0 -1 -1 0 -1 -1 0 -1 -1 49 -1 0 -1 -1 0 -1 0 -1 -1 -1 49 -1 0 -1 -1 0 0 -1 -1 -1 -1 49 -1 0 -1 0 -1 -1 -1 -1 -1 0 49 -1 0 -1 0 -1 -1 -1 -1 0 -1 49 -1 0 -1 0 -1 -1 -1 0 -1 -1 49 -1 0 -1 0 -1 -1 0 -1 -1 -1 49 -1 0 -1 0 -1 0 -1 -1 -1 -1 49 -1 0 -1 0 0 -1 -1 -1 -1 -1 49 -1 0 0 -1 -1 -1 -1 -1 -1 0 49 -1 0 0 -1 -1 -1 -1 -1 0 -1 49 -1 0 0 -1 -1 -1 -1 0 -1 -1 49 -1 0 0 -1 -1 -1 0 -1 -1 -1 49 -1 0 0 -1 -1 0 -1 -1 -1 -1 49 -1 0 0 -1 0 -1 -1 -1 -1 -1 49 -1 0 0 0 -1 -1 -1 -1 -1 -1 49 0 -1 -1 -1 -1 -1 -1 -1 0 0 49 0 -1 -1 -1 -1 -1 -1 0 -1 0 49 0 -1 -1 -1 -1 -1 -1 0 0 -1 49 0 -1 -1 -1 -1 -1 0 -1 -1 0 49 0 -1 -1 -1 -1 -1 0 -1 0 -1 49 0 -1 -1 -1 -1 -1 0 0 -1 -1 49 0 -1 -1 -1 -1 0 -1 -1 -1 0 49 0 -1 -1 -1 -1 0 -1 -1 0 -1 49 0 -1 -1 -1 -1 0 -1 0 -1 -1 49 0 -1 -1 -1 -1 0 0 -1 -1 -1 49 0 -1 -1 -1 0 -1 -1 -1 -1 0 49 0 -1 -1 -1 0 -1 -1 -1 0 -1 49 0 -1 -1 -1 0 -1 -1 0 -1 -1 49 0 -1 -1 -1 0 -1 0 -1 -1 -1 49 0 -1 -1 -1 0 0 -1 -1 -1 -1 49 0 -1 -1 0 -1 -1 -1 -1 -1 0 49 0 -1 -1 0 -1 -1 -1 -1 0 -1 49 0 -1 -1 0 -1 -1 -1 0 -1 -1 49 0 -1 -1 0 -1 -1 0 -1 -1 -1 49 0 -1 -1 0 -1 0 -1 -1 -1 -1 49 0 -1 -1 0 0 -1 -1 -1 -1 -1 49 0 -1 0 -1 -1 -1 -1 -1 -1 0 49 0 -1 0 -1 -1 -1 -1 -1 0 -1 49 0 -1 0 -1 -1 -1 -1 0 -1 -1 49 0 -1 0 -1 -1 -1 0 -1 -1 -1 49 0 -1 0 -1 -1 0 -1 -1 -1 -1 49 0 -1 0 -1 0 -1 -1 -1 -1 -1 49 0 -1 0 0 -1 -1 -1 -1 -1 -1 49 0 0 -1 -1 -1 -1 -1 -1 -1 0 49 0 0 -1 -1 -1 -1 -1 -1 0 -1 49 0 0 -1 -1 -1 -1 -1 0 -1 -1 49 0 0 -1 -1 -1 -1 0 -1 -1 -1 49 0 0 -1 -1 -1 0 -1 -1 -1 -1 49 0 0 -1 -1 0 -1 -1 -1 -1 -1 49 0 0 -1 0 -1 -1 -1 -1 -1 -1 49 0 0 0 -1 -1 -1 -1 -1 -1 -1 49 -1 -1 -1 -1 -1 -1 0 0 0 0 45 -1 -1 -1 -1 -1 0 -1 0 0 0 45 -1 -1 -1 -1 -1 0 0 -1 0 0 45 -1 -1 -1 -1 -1 0 0 0 -1 0 45 -1 -1 -1 -1 -1 0 0 0 0 -1 45 -1 -1 -1 -1 0 -1 -1 0 0 0 45 -1 -1 -1 -1 0 -1 0 -1 0 0 45 -1 -1 -1 -1 0 -1 0 0 -1 0 45 -1 -1 -1 -1 0 -1 0 0 0 -1 45 -1 -1 -1 -1 0 0 -1 -1 0 0 45 -1 -1 -1 -1 0 0 -1 0 -1 0 45 -1 -1 -1 -1 0 0 -1 0 0 -1 45 -1 -1 -1 -1 0 0 0 -1 -1 0 45 -1 -1 -1 -1 0 0 0 -1 0 -1 45 -1 -1 -1 -1 0 0 0 0 -1 -1 45 -1 -1 -1 0 -1 -1 -1 0 0 0 45 -1 -1 -1 0 -1 -1 0 -1 0 0 45 -1 -1 -1 0 -1 -1 0 0 -1 0 45 -1 -1 -1 0 -1 -1 0 0 0 -1 45 -1 -1 -1 0 -1 0 -1 -1 0 0 45 -1 -1 -1 0 -1 0 -1 0 -1 0 45 -1 -1 -1 0 -1 0 -1 0 0 -1 45 -1 -1 -1 0 -1 0 0 -1 -1 0 45 -1 -1 -1 0 -1 0 0 -1 0 -1 45 -1 -1 -1 0 -1 0 0 0 -1 -1 45 -1 -1 -1 0 0 -1 -1 -1 0 0 45 -1 -1 -1 0 0 -1 -1 0 -1 0 45 -1 -1 -1 0 0 -1 -1 0 0 -1 45 -1 -1 -1 0 0 -1 0 -1 -1 0 45 -1 -1 -1 0 0 -1 0 -1 0 -1 45 -1 -1 -1 0 0 -1 0 0 -1 -1 45 -1 -1 -1 0 0 0 -1 -1 -1 0 45 -1 -1 -1 0 0 0 -1 -1 0 -1 45 -1 -1 -1 0 0 0 -1 0 -1 -1 45 -1 -1 -1 0 0 0 0 -1 -1 -1 45 -1 -1 0 -1 -1 -1 -1 0 0 0 45 -1 -1 0 -1 -1 -1 0 -1 0 0 45 -1 -1 0 -1 -1 -1 0 0 -1 0 45 -1 -1 0 -1 -1 -1 0 0 0 -1 45 -1 -1 0 -1 -1 0 -1 -1 0 0 45 -1 -1 0 -1 -1 0 -1 0 -1 0 45 -1 -1 0 -1 -1 0 -1 0 0 -1 45 -1 -1 0 -1 -1 0 0 -1 -1 0 45 -1 -1 0 -1 -1 0 0 -1 0 -1 45 -1 -1 0 -1 -1 0 0 0 -1 -1 45 -1 -1 0 -1 0 -1 -1 -1 0 0 45 -1 -1 0 -1 0 -1 -1 0 -1 0 45 -1 -1 0 -1 0 -1 -1 0 0 -1 45 -1 -1 0 -1 0 -1 0 -1 -1 0 45 -1 -1 0 -1 0 -1 0 -1 0 -1 45 -1 -1 0 -1 0 -1 0 0 -1 -1 45 -1 -1 0 -1 0 0 -1 -1 -1 0 45 -1 -1 0 -1 0 0 -1 -1 0 -1 45 -1 -1 0 -1 0 0 -1 0 -1 -1 45 -1 -1 0 -1 0 0 0 -1 -1 -1 45 -1 -1 0 0 -1 -1 -1 -1 0 0 45 -1 -1 0 0 -1 -1 -1 0 -1 0 45 -1 -1 0 0 -1 -1 -1 0 0 -1 45 -1 -1 0 0 -1 -1 0 -1 -1 0 45 -1 -1 0 0 -1 -1 0 -1 0 -1 45 -1 -1 0 0 -1 -1 0 0 -1 -1 45 -1 -1 0 0 -1 0 -1 -1 -1 0 45 -1 -1 0 0 -1 0 -1 -1 0 -1 45 -1 -1 0 0 -1 0 -1 0 -1 -1 45 -1 -1 0 0 -1 0 0 -1 -1 -1 45 -1 -1 0 0 0 -1 -1 -1 -1 0 45 -1 -1 0 0 0 -1 -1 -1 0 -1 45 -1 -1 0 0 0 -1 -1 0 -1 -1 45 -1 -1 0 0 0 -1 0 -1 -1 -1 45 -1 -1 0 0 0 0 -1 -1 -1 -1 45 -1 0 -1 -1 -1 -1 -1 0 0 0 45 -1 0 -1 -1 -1 -1 0 -1 0 0 45 -1 0 -1 -1 -1 -1 0 0 -1 0 45 -1 0 -1 -1 -1 -1 0 0 0 -1 45 -1 0 -1 -1 -1 0 -1 -1 0 0 45 -1 0 -1 -1 -1 0 -1 0 -1 0 45 -1 0 -1 -1 -1 0 -1 0 0 -1 45 -1 0 -1 -1 -1 0 0 -1 -1 0 45 -1 0 -1 -1 -1 0 0 -1 0 -1 45 -1 0 -1 -1 -1 0 0 0 -1 -1 45 -1 0 -1 -1 0 -1 -1 -1 0 0 45 -1 0 -1 -1 0 -1 -1 0 -1 0 45 -1 0 -1 -1 0 -1 -1 0 0 -1 45 -1 0 -1 -1 0 -1 0 -1 -1 0 45 -1 0 -1 -1 0 -1 0 -1 0 -1 45 -1 0 -1 -1 0 -1 0 0 -1 -1 45 -1 0 -1 -1 0 0 -1 -1 -1 0 45 -1 0 -1 -1 0 0 -1 -1 0 -1 45 -1 0 -1 -1 0 0 -1 0 -1 -1 45 -1 0 -1 -1 0 0 0 -1 -1 -1 45 -1 0 -1 0 -1 -1 -1 -1 0 0 45 -1 0 -1 0 -1 -1 -1 0 -1 0 45 -1 0 -1 0 -1 -1 -1 0 0 -1 45 -1 0 -1 0 -1 -1 0 -1 -1 0 45 -1 0 -1 0 -1 -1 0 -1 0 -1 45 -1 0 -1 0 -1 -1 0 0 -1 -1 45 -1 0 -1 0 -1 0 -1 -1 -1 0 45 -1 0 -1 0 -1 0 -1 -1 0 -1 45 -1 0 -1 0 -1 0 -1 0 -1 -1 45 -1 0 -1 0 -1 0 0 -1 -1 -1 45 -1 0 -1 0 0 -1 -1 -1 -1 0 45 -1 0 -1 0 0 -1 -1 -1 0 -1 45 -1 0 -1 0 0 -1 -1 0 -1 -1 45 -1 0 -1 0 0 -1 0 -1 -1 -1 45 -1 0 -1 0 0 0 -1 -1 -1 -1 45 -1 0 0 -1 -1 -1 -1 -1 0 0 45 -1 0 0 -1 -1 -1 -1 0 -1 0 45 -1 0 0 -1 -1 -1 -1 0 0 -1 45 -1 0 0 -1 -1 -1 0 -1 -1 0 45 -1 0 0 -1 -1 -1 0 -1 0 -1 45 -1 0 0 -1 -1 -1 0 0 -1 -1 45 -1 0 0 -1 -1 0 -1 -1 -1 0 45 -1 0 0 -1 -1 0 -1 -1 0 -1 45 -1 0 0 -1 -1 0 -1 0 -1 -1 45 -1 0 0 -1 -1 0 0 -1 -1 -1 45 -1 0 0 -1 0 -1 -1 -1 -1 0 45 -1 0 0 -1 0 -1 -1 -1 0 -1 45 -1 0 0 -1 0 -1 -1 0 -1 -1 45 -1 0 0 -1 0 -1 0 -1 -1 -1 45 -1 0 0 -1 0 0 -1 -1 -1 -1 45 -1 0 0 0 -1 -1 -1 -1 -1 0 45 -1 0 0 0 -1 -1 -1 -1 0 -1 45 -1 0 0 0 -1 -1 -1 0 -1 -1 45 -1 0 0 0 -1 -1 0 -1 -1 -1 45 -1 0 0 0 -1 0 -1 -1 -1 -1 45 -1 0 0 0 0 -1 -1 -1 -1 -1 45 0 -1 -1 -1 -1 -1 -1 0 0 0 45 0 -1 -1 -1 -1 -1 0 -1 0 0 45 0 -1 -1 -1 -1 -1 0 0 -1 0 45 0 -1 -1 -1 -1 -1 0 0 0 -1 45 0 -1 -1 -1 -1 0 -1 -1 0 0 45 0 -1 -1 -1 -1 0 -1 0 -1 0 45 0 -1 -1 -1 -1 0 -1 0 0 -1 45 0 -1 -1 -1 -1 0 0 -1 -1 0 45 0 -1 -1 -1 -1 0 0 -1 0 -1 45 0 -1 -1 -1 -1 0 0 0 -1 -1 45 0 -1 -1 -1 0 -1 -1 -1 0 0 45 0 -1 -1 -1 0 -1 -1 0 -1 0 45 0 -1 -1 -1 0 -1 -1 0 0 -1 45 0 -1 -1 -1 0 -1 0 -1 -1 0 45 0 -1 -1 -1 0 -1 0 -1 0 -1 45 0 -1 -1 -1 0 -1 0 0 -1 -1 45 0 -1 -1 -1 0 0 -1 -1 -1 0 45 0 -1 -1 -1 0 0 -1 -1 0 -1 45 0 -1 -1 -1 0 0 -1 0 -1 -1 45 0 -1 -1 -1 0 0 0 -1 -1 -1 45 0 -1 -1 0 -1 -1 -1 -1 0 0 45 0 -1 -1 0 -1 -1 -1 0 -1 0 45 0 -1 -1 0 -1 -1 -1 0 0 -1 45 0 -1 -1 0 -1 -1 0 -1 -1 0 45 0 -1 -1 0 -1 -1 0 -1 0 -1 45 0 -1 -1 0 -1 -1 0 0 -1 -1 45 0 -1 -1 0 -1 0 -1 -1 -1 0 45 0 -1 -1 0 -1 0 -1 -1 0 -1 45 0 -1 -1 0 -1 0 -1 0 -1 -1 45 0 -1 -1 0 -1 0 0 -1 -1 -1 45 0 -1 -1 0 0 -1 -1 -1 -1 0 45 0 -1 -1 0 0 -1 -1 -1 0 -1 45 0 -1 -1 0 0 -1 -1 0 -1 -1 45 0 -1 -1 0 0 -1 0 -1 -1 -1 45 0 -1 -1 0 0 0 -1 -1 -1 -1 45 0 -1 0 -1 -1 -1 -1 -1 0 0 45 0 -1 0 -1 -1 -1 -1 0 -1 0 45 0 -1 0 -1 -1 -1 -1 0 0 -1 45 0 -1 0 -1 -1 -1 0 -1 -1 0 45 0 -1 0 -1 -1 -1 0 -1 0 -1 45 0 -1 0 -1 -1 -1 0 0 -1 -1 45 0 -1 0 -1 -1 0 -1 -1 -1 0 45 0 -1 0 -1 -1 0 -1 -1 0 -1 45 0 -1 0 -1 -1 0 -1 0 -1 -1 45 0 -1 0 -1 -1 0 0 -1 -1 -1 45 0 -1 0 -1 0 -1 -1 -1 -1 0 45 0 -1 0 -1 0 -1 -1 -1 0 -1 45 0 -1 0 -1 0 -1 -1 0 -1 -1 45 0 -1 0 -1 0 -1 0 -1 -1 -1 45 0 -1 0 -1 0 0 -1 -1 -1 -1 45 0 -1 0 0 -1 -1 -1 -1 -1 0 45 0 -1 0 0 -1 -1 -1 -1 0 -1 45 0 -1 0 0 -1 -1 -1 0 -1 -1 45 0 -1 0 0 -1 -1 0 -1 -1 -1 45 0 -1 0 0 -1 0 -1 -1 -1 -1 45 0 -1 0 0 0 -1 -1 -1 -1 -1 45 0 0 -1 -1 -1 -1 -1 -1 0 0 45 0 0 -1 -1 -1 -1 -1 0 -1 0 45 0 0 -1 -1 -1 -1 -1 0 0 -1 45 0 0 -1 -1 -1 -1 0 -1 -1 0 45 0 0 -1 -1 -1 -1 0 -1 0 -1 45 0 0 -1 -1 -1 -1 0 0 -1 -1 45 0 0 -1 -1 -1 0 -1 -1 -1 0 45 0 0 -1 -1 -1 0 -1 -1 0 -1 45 0 0 -1 -1 -1 0 -1 0 -1 -1 45 0 0 -1 -1 -1 0 0 -1 -1 -1 45 0 0 -1 -1 0 -1 -1 -1 -1 0 45 0 0 -1 -1 0 -1 -1 -1 0 -1 45 0 0 -1 -1 0 -1 -1 0 -1 -1 45 0 0 -1 -1 0 -1 0 -1 -1 -1 45 0 0 -1 -1 0 0 -1 -1 -1 -1 45 0 0 -1 0 -1 -1 -1 -1 -1 0 45 0 0 -1 0 -1 -1 -1 -1 0 -1 45 0 0 -1 0 -1 -1 -1 0 -1 -1 45 0 0 -1 0 -1 -1 0 -1 -1 -1 45 0 0 -1 0 -1 0 -1 -1 -1 -1 45 0 0 -1 0 0 -1 -1 -1 -1 -1 45 0 0 0 -1 -1 -1 -1 -1 -1 0 45 0 0 0 -1 -1 -1 -1 -1 0 -1 45 0 0 0 -1 -1 -1 -1 0 -1 -1 45 0 0 0 -1 -1 -1 0 -1 -1 -1 45 0 0 0 -1 -1 0 -1 -1 -1 -1 45 0 0 0 -1 0 -1 -1 -1 -1 -1 45 0 0 0 0 -1 -1 -1 -1 -1 -1 45 -1 -1 -1 -1 -1 0 0 0 0 0 40 -1 -1 -1 -1 0 -1 0 0 0 0 40 -1 -1 -1 -1 0 0 -1 0 0 0 40 -1 -1 -1 -1 0 0 0 -1 0 0 40 -1 -1 -1 -1 0 0 0 0 -1 0 40 -1 -1 -1 -1 0 0 0 0 0 -1 40 -1 -1 -1 0 -1 -1 0 0 0 0 40 -1 -1 -1 0 -1 0 -1 0 0 0 40 -1 -1 -1 0 -1 0 0 -1 0 0 40 -1 -1 -1 0 -1 0 0 0 -1 0 40 -1 -1 -1 0 -1 0 0 0 0 -1 40 -1 -1 -1 0 0 -1 -1 0 0 0 40 -1 -1 -1 0 0 -1 0 -1 0 0 40 -1 -1 -1 0 0 -1 0 0 -1 0 40 -1 -1 -1 0 0 -1 0 0 0 -1 40 -1 -1 -1 0 0 0 -1 -1 0 0 40 -1 -1 -1 0 0 0 -1 0 -1 0 40 -1 -1 -1 0 0 0 -1 0 0 -1 40 -1 -1 -1 0 0 0 0 -1 -1 0 40 -1 -1 -1 0 0 0 0 -1 0 -1 40 -1 -1 -1 0 0 0 0 0 -1 -1 40 -1 -1 0 -1 -1 -1 0 0 0 0 40 -1 -1 0 -1 -1 0 -1 0 0 0 40 -1 -1 0 -1 -1 0 0 -1 0 0 40 -1 -1 0 -1 -1 0 0 0 -1 0 40 -1 -1 0 -1 -1 0 0 0 0 -1 40 -1 -1 0 -1 0 -1 -1 0 0 0 40 -1 -1 0 -1 0 -1 0 -1 0 0 40 -1 -1 0 -1 0 -1 0 0 -1 0 40 -1 -1 0 -1 0 -1 0 0 0 -1 40 -1 -1 0 -1 0 0 -1 -1 0 0 40 -1 -1 0 -1 0 0 -1 0 -1 0 40 -1 -1 0 -1 0 0 -1 0 0 -1 40 -1 -1 0 -1 0 0 0 -1 -1 0 40 -1 -1 0 -1 0 0 0 -1 0 -1 40 -1 -1 0 -1 0 0 0 0 -1 -1 40 -1 -1 0 0 -1 -1 -1 0 0 0 40 -1 -1 0 0 -1 -1 0 -1 0 0 40 -1 -1 0 0 -1 -1 0 0 -1 0 40 -1 -1 0 0 -1 -1 0 0 0 -1 40 -1 -1 0 0 -1 0 -1 -1 0 0 40 -1 -1 0 0 -1 0 -1 0 -1 0 40 -1 -1 0 0 -1 0 -1 0 0 -1 40 -1 -1 0 0 -1 0 0 -1 -1 0 40 -1 -1 0 0 -1 0 0 -1 0 -1 40 -1 -1 0 0 -1 0 0 0 -1 -1 40 -1 -1 0 0 0 -1 -1 -1 0 0 40 -1 -1 0 0 0 -1 -1 0 -1 0 40 -1 -1 0 0 0 -1 -1 0 0 -1 40 -1 -1 0 0 0 -1 0 -1 -1 0 40 -1 -1 0 0 0 -1 0 -1 0 -1 40 -1 -1 0 0 0 -1 0 0 -1 -1 40 -1 -1 0 0 0 0 -1 -1 -1 0 40 -1 -1 0 0 0 0 -1 -1 0 -1 40 -1 -1 0 0 0 0 -1 0 -1 -1 40 -1 -1 0 0 0 0 0 -1 -1 -1 40 -1 0 -1 -1 -1 -1 0 0 0 0 40 -1 0 -1 -1 -1 0 -1 0 0 0 40 -1 0 -1 -1 -1 0 0 -1 0 0 40 -1 0 -1 -1 -1 0 0 0 -1 0 40 -1 0 -1 -1 -1 0 0 0 0 -1 40 -1 0 -1 -1 0 -1 -1 0 0 0 40 -1 0 -1 -1 0 -1 0 -1 0 0 40 -1 0 -1 -1 0 -1 0 0 -1 0 40 -1 0 -1 -1 0 -1 0 0 0 -1 40 -1 0 -1 -1 0 0 -1 -1 0 0 40 -1 0 -1 -1 0 0 -1 0 -1 0 40 -1 0 -1 -1 0 0 -1 0 0 -1 40 -1 0 -1 -1 0 0 0 -1 -1 0 40 -1 0 -1 -1 0 0 0 -1 0 -1 40 -1 0 -1 -1 0 0 0 0 -1 -1 40 -1 0 -1 0 -1 -1 -1 0 0 0 40 -1 0 -1 0 -1 -1 0 -1 0 0 40 -1 0 -1 0 -1 -1 0 0 -1 0 40 -1 0 -1 0 -1 -1 0 0 0 -1 40 -1 0 -1 0 -1 0 -1 -1 0 0 40 -1 0 -1 0 -1 0 -1 0 -1 0 40 -1 0 -1 0 -1 0 -1 0 0 -1 40 -1 0 -1 0 -1 0 0 -1 -1 0 40 -1 0 -1 0 -1 0 0 -1 0 -1 40 -1 0 -1 0 -1 0 0 0 -1 -1 40 -1 0 -1 0 0 -1 -1 -1 0 0 40 -1 0 -1 0 0 -1 -1 0 -1 0 40 -1 0 -1 0 0 -1 -1 0 0 -1 40 -1 0 -1 0 0 -1 0 -1 -1 0 40 -1 0 -1 0 0 -1 0 -1 0 -1 40 -1 0 -1 0 0 -1 0 0 -1 -1 40 -1 0 -1 0 0 0 -1 -1 -1 0 40 -1 0 -1 0 0 0 -1 -1 0 -1 40 -1 0 -1 0 0 0 -1 0 -1 -1 40 -1 0 -1 0 0 0 0 -1 -1 -1 40 -1 0 0 -1 -1 -1 -1 0 0 0 40 -1 0 0 -1 -1 -1 0 -1 0 0 40 -1 0 0 -1 -1 -1 0 0 -1 0 40 -1 0 0 -1 -1 -1 0 0 0 -1 40 -1 0 0 -1 -1 0 -1 -1 0 0 40 -1 0 0 -1 -1 0 -1 0 -1 0 40 -1 0 0 -1 -1 0 -1 0 0 -1 40 -1 0 0 -1 -1 0 0 -1 -1 0 40 -1 0 0 -1 -1 0 0 -1 0 -1 40 -1 0 0 -1 -1 0 0 0 -1 -1 40 -1 0 0 -1 0 -1 -1 -1 0 0 40 -1 0 0 -1 0 -1 -1 0 -1 0 40 -1 0 0 -1 0 -1 -1 0 0 -1 40 -1 0 0 -1 0 -1 0 -1 -1 0 40 -1 0 0 -1 0 -1 0 -1 0 -1 40 -1 0 0 -1 0 -1 0 0 -1 -1 40 -1 0 0 -1 0 0 -1 -1 -1 0 40 -1 0 0 -1 0 0 -1 -1 0 -1 40 -1 0 0 -1 0 0 -1 0 -1 -1 40 -1 0 0 -1 0 0 0 -1 -1 -1 40 -1 0 0 0 -1 -1 -1 -1 0 0 40 -1 0 0 0 -1 -1 -1 0 -1 0 40 -1 0 0 0 -1 -1 -1 0 0 -1 40 -1 0 0 0 -1 -1 0 -1 -1 0 40 -1 0 0 0 -1 -1 0 -1 0 -1 40 -1 0 0 0 -1 -1 0 0 -1 -1 40 -1 0 0 0 -1 0 -1 -1 -1 0 40 -1 0 0 0 -1 0 -1 -1 0 -1 40 -1 0 0 0 -1 0 -1 0 -1 -1 40 -1 0 0 0 -1 0 0 -1 -1 -1 40 -1 0 0 0 0 -1 -1 -1 -1 0 40 -1 0 0 0 0 -1 -1 -1 0 -1 40 -1 0 0 0 0 -1 -1 0 -1 -1 40 -1 0 0 0 0 -1 0 -1 -1 -1 40 -1 0 0 0 0 0 -1 -1 -1 -1 40 0 -1 -1 -1 -1 -1 0 0 0 0 40 0 -1 -1 -1 -1 0 -1 0 0 0 40 0 -1 -1 -1 -1 0 0 -1 0 0 40 0 -1 -1 -1 -1 0 0 0 -1 0 40 0 -1 -1 -1 -1 0 0 0 0 -1 40 0 -1 -1 -1 0 -1 -1 0 0 0 40 0 -1 -1 -1 0 -1 0 -1 0 0 40 0 -1 -1 -1 0 -1 0 0 -1 0 40 0 -1 -1 -1 0 -1 0 0 0 -1 40 0 -1 -1 -1 0 0 -1 -1 0 0 40 0 -1 -1 -1 0 0 -1 0 -1 0 40 0 -1 -1 -1 0 0 -1 0 0 -1 40 0 -1 -1 -1 0 0 0 -1 -1 0 40 0 -1 -1 -1 0 0 0 -1 0 -1 40 0 -1 -1 -1 0 0 0 0 -1 -1 40 0 -1 -1 0 -1 -1 -1 0 0 0 40 0 -1 -1 0 -1 -1 0 -1 0 0 40 0 -1 -1 0 -1 -1 0 0 -1 0 40 0 -1 -1 0 -1 -1 0 0 0 -1 40 0 -1 -1 0 -1 0 -1 -1 0 0 40 0 -1 -1 0 -1 0 -1 0 -1 0 40 0 -1 -1 0 -1 0 -1 0 0 -1 40 0 -1 -1 0 -1 0 0 -1 -1 0 40 0 -1 -1 0 -1 0 0 -1 0 -1 40 0 -1 -1 0 -1 0 0 0 -1 -1 40 0 -1 -1 0 0 -1 -1 -1 0 0 40 0 -1 -1 0 0 -1 -1 0 -1 0 40 0 -1 -1 0 0 -1 -1 0 0 -1 40 0 -1 -1 0 0 -1 0 -1 -1 0 40 0 -1 -1 0 0 -1 0 -1 0 -1 40 0 -1 -1 0 0 -1 0 0 -1 -1 40 0 -1 -1 0 0 0 -1 -1 -1 0 40 0 -1 -1 0 0 0 -1 -1 0 -1 40 0 -1 -1 0 0 0 -1 0 -1 -1 40 0 -1 -1 0 0 0 0 -1 -1 -1 40 0 -1 0 -1 -1 -1 -1 0 0 0 40 0 -1 0 -1 -1 -1 0 -1 0 0 40 0 -1 0 -1 -1 -1 0 0 -1 0 40 0 -1 0 -1 -1 -1 0 0 0 -1 40 0 -1 0 -1 -1 0 -1 -1 0 0 40 0 -1 0 -1 -1 0 -1 0 -1 0 40 0 -1 0 -1 -1 0 -1 0 0 -1 40 0 -1 0 -1 -1 0 0 -1 -1 0 40 0 -1 0 -1 -1 0 0 -1 0 -1 40 0 -1 0 -1 -1 0 0 0 -1 -1 40 0 -1 0 -1 0 -1 -1 -1 0 0 40 0 -1 0 -1 0 -1 -1 0 -1 0 40 0 -1 0 -1 0 -1 -1 0 0 -1 40 0 -1 0 -1 0 -1 0 -1 -1 0 40 0 -1 0 -1 0 -1 0 -1 0 -1 40 0 -1 0 -1 0 -1 0 0 -1 -1 40 0 -1 0 -1 0 0 -1 -1 -1 0 40 0 -1 0 -1 0 0 -1 -1 0 -1 40 0 -1 0 -1 0 0 -1 0 -1 -1 40 0 -1 0 -1 0 0 0 -1 -1 -1 40 0 -1 0 0 -1 -1 -1 -1 0 0 40 0 -1 0 0 -1 -1 -1 0 -1 0 40 0 -1 0 0 -1 -1 -1 0 0 -1 40 0 -1 0 0 -1 -1 0 -1 -1 0 40 0 -1 0 0 -1 -1 0 -1 0 -1 40 0 -1 0 0 -1 -1 0 0 -1 -1 40 0 -1 0 0 -1 0 -1 -1 -1 0 40 0 -1 0 0 -1 0 -1 -1 0 -1 40 0 -1 0 0 -1 0 -1 0 -1 -1 40 0 -1 0 0 -1 0 0 -1 -1 -1 40 0 -1 0 0 0 -1 -1 -1 -1 0 40 0 -1 0 0 0 -1 -1 -1 0 -1 40 0 -1 0 0 0 -1 -1 0 -1 -1 40 0 -1 0 0 0 -1 0 -1 -1 -1 40 0 -1 0 0 0 0 -1 -1 -1 -1 40 0 0 -1 -1 -1 -1 -1 0 0 0 40 0 0 -1 -1 -1 -1 0 -1 0 0 40 0 0 -1 -1 -1 -1 0 0 -1 0 40 0 0 -1 -1 -1 -1 0 0 0 -1 40 0 0 -1 -1 -1 0 -1 -1 0 0 40 0 0 -1 -1 -1 0 -1 0 -1 0 40 0 0 -1 -1 -1 0 -1 0 0 -1 40 0 0 -1 -1 -1 0 0 -1 -1 0 40 0 0 -1 -1 -1 0 0 -1 0 -1 40 0 0 -1 -1 -1 0 0 0 -1 -1 40 0 0 -1 -1 0 -1 -1 -1 0 0 40 0 0 -1 -1 0 -1 -1 0 -1 0 40 0 0 -1 -1 0 -1 -1 0 0 -1 40 0 0 -1 -1 0 -1 0 -1 -1 0 40 0 0 -1 -1 0 -1 0 -1 0 -1 40 0 0 -1 -1 0 -1 0 0 -1 -1 40 0 0 -1 -1 0 0 -1 -1 -1 0 40 0 0 -1 -1 0 0 -1 -1 0 -1 40 0 0 -1 -1 0 0 -1 0 -1 -1 40 0 0 -1 -1 0 0 0 -1 -1 -1 40 0 0 -1 0 -1 -1 -1 -1 0 0 40 0 0 -1 0 -1 -1 -1 0 -1 0 40 0 0 -1 0 -1 -1 -1 0 0 -1 40 0 0 -1 0 -1 -1 0 -1 -1 0 40 0 0 -1 0 -1 -1 0 -1 0 -1 40 0 0 -1 0 -1 -1 0 0 -1 -1 40 0 0 -1 0 -1 0 -1 -1 -1 0 40 0 0 -1 0 -1 0 -1 -1 0 -1 40 0 0 -1 0 -1 0 -1 0 -1 -1 40 0 0 -1 0 -1 0 0 -1 -1 -1 40 0 0 -1 0 0 -1 -1 -1 -1 0 40 0 0 -1 0 0 -1 -1 -1 0 -1 40 0 0 -1 0 0 -1 -1 0 -1 -1 40 0 0 -1 0 0 -1 0 -1 -1 -1 40 0 0 -1 0 0 0 -1 -1 -1 -1 40 0 0 0 -1 -1 -1 -1 -1 0 0 40 0 0 0 -1 -1 -1 -1 0 -1 0 40 0 0 0 -1 -1 -1 -1 0 0 -1 40 0 0 0 -1 -1 -1 0 -1 -1 0 40 0 0 0 -1 -1 -1 0 -1 0 -1 40 0 0 0 -1 -1 -1 0 0 -1 -1 40 0 0 0 -1 -1 0 -1 -1 -1 0 40 0 0 0 -1 -1 0 -1 -1 0 -1 40 0 0 0 -1 -1 0 -1 0 -1 -1 40 0 0 0 -1 -1 0 0 -1 -1 -1 40 0 0 0 -1 0 -1 -1 -1 -1 0 40 0 0 0 -1 0 -1 -1 -1 0 -1 40 0 0 0 -1 0 -1 -1 0 -1 -1 40 0 0 0 -1 0 -1 0 -1 -1 -1 40 0 0 0 -1 0 0 -1 -1 -1 -1 40 0 0 0 0 -1 -1 -1 -1 -1 0 40 0 0 0 0 -1 -1 -1 -1 0 -1 40 0 0 0 0 -1 -1 -1 0 -1 -1 40 0 0 0 0 -1 -1 0 -1 -1 -1 40 0 0 0 0 -1 0 -1 -1 -1 -1 40 0 0 0 0 0 -1 -1 -1 -1 -1 40 -1 -1 -1 -1 0 0 0 0 0 0 34 -1 -1 -1 0 -1 0 0 0 0 0 34 -1 -1 -1 0 0 -1 0 0 0 0 34 -1 -1 -1 0 0 0 -1 0 0 0 34 -1 -1 -1 0 0 0 0 -1 0 0 34 -1 -1 -1 0 0 0 0 0 -1 0 34 -1 -1 -1 0 0 0 0 0 0 -1 34 -1 -1 0 -1 -1 0 0 0 0 0 34 -1 -1 0 -1 0 -1 0 0 0 0 34 -1 -1 0 -1 0 0 -1 0 0 0 34 -1 -1 0 -1 0 0 0 -1 0 0 34 -1 -1 0 -1 0 0 0 0 -1 0 34 -1 -1 0 -1 0 0 0 0 0 -1 34 -1 -1 0 0 -1 -1 0 0 0 0 34 -1 -1 0 0 -1 0 -1 0 0 0 34 -1 -1 0 0 -1 0 0 -1 0 0 34 -1 -1 0 0 -1 0 0 0 -1 0 34 -1 -1 0 0 -1 0 0 0 0 -1 34 -1 -1 0 0 0 -1 -1 0 0 0 34 -1 -1 0 0 0 -1 0 -1 0 0 34 -1 -1 0 0 0 -1 0 0 -1 0 34 -1 -1 0 0 0 -1 0 0 0 -1 34 -1 -1 0 0 0 0 -1 -1 0 0 34 -1 -1 0 0 0 0 -1 0 -1 0 34 -1 -1 0 0 0 0 -1 0 0 -1 34 -1 -1 0 0 0 0 0 -1 -1 0 34 -1 -1 0 0 0 0 0 -1 0 -1 34 -1 -1 0 0 0 0 0 0 -1 -1 34 -1 0 -1 -1 -1 0 0 0 0 0 34 -1 0 -1 -1 0 -1 0 0 0 0 34 -1 0 -1 -1 0 0 -1 0 0 0 34 -1 0 -1 -1 0 0 0 -1 0 0 34 -1 0 -1 -1 0 0 0 0 -1 0 34 -1 0 -1 -1 0 0 0 0 0 -1 34 -1 0 -1 0 -1 -1 0 0 0 0 34 -1 0 -1 0 -1 0 -1 0 0 0 34 -1 0 -1 0 -1 0 0 -1 0 0 34 -1 0 -1 0 -1 0 0 0 -1 0 34 -1 0 -1 0 -1 0 0 0 0 -1 34 -1 0 -1 0 0 -1 -1 0 0 0 34 -1 0 -1 0 0 -1 0 -1 0 0 34 -1 0 -1 0 0 -1 0 0 -1 0 34 -1 0 -1 0 0 -1 0 0 0 -1 34 -1 0 -1 0 0 0 -1 -1 0 0 34 -1 0 -1 0 0 0 -1 0 -1 0 34 -1 0 -1 0 0 0 -1 0 0 -1 34 -1 0 -1 0 0 0 0 -1 -1 0 34 -1 0 -1 0 0 0 0 -1 0 -1 34 -1 0 -1 0 0 0 0 0 -1 -1 34 -1 0 0 -1 -1 -1 0 0 0 0 34 -1 0 0 -1 -1 0 -1 0 0 0 34 -1 0 0 -1 -1 0 0 -1 0 0 34 -1 0 0 -1 -1 0 0 0 -1 0 34 -1 0 0 -1 -1 0 0 0 0 -1 34 -1 0 0 -1 0 -1 -1 0 0 0 34 -1 0 0 -1 0 -1 0 -1 0 0 34 -1 0 0 -1 0 -1 0 0 -1 0 34 -1 0 0 -1 0 -1 0 0 0 -1 34 -1 0 0 -1 0 0 -1 -1 0 0 34 -1 0 0 -1 0 0 -1 0 -1 0 34 -1 0 0 -1 0 0 -1 0 0 -1 34 -1 0 0 -1 0 0 0 -1 -1 0 34 -1 0 0 -1 0 0 0 -1 0 -1 34 -1 0 0 -1 0 0 0 0 -1 -1 34 -1 0 0 0 -1 -1 -1 0 0 0 34 -1 0 0 0 -1 -1 0 -1 0 0 34 -1 0 0 0 -1 -1 0 0 -1 0 34 -1 0 0 0 -1 -1 0 0 0 -1 34 -1 0 0 0 -1 0 -1 -1 0 0 34 -1 0 0 0 -1 0 -1 0 -1 0 34 -1 0 0 0 -1 0 -1 0 0 -1 34 -1 0 0 0 -1 0 0 -1 -1 0 34 -1 0 0 0 -1 0 0 -1 0 -1 34 -1 0 0 0 -1 0 0 0 -1 -1 34 -1 0 0 0 0 -1 -1 -1 0 0 34 -1 0 0 0 0 -1 -1 0 -1 0 34 -1 0 0 0 0 -1 -1 0 0 -1 34 -1 0 0 0 0 -1 0 -1 -1 0 34 -1 0 0 0 0 -1 0 -1 0 -1 34 -1 0 0 0 0 -1 0 0 -1 -1 34 -1 0 0 0 0 0 -1 -1 -1 0 34 -1 0 0 0 0 0 -1 -1 0 -1 34 -1 0 0 0 0 0 -1 0 -1 -1 34 -1 0 0 0 0 0 0 -1 -1 -1 34 0 -1 -1 -1 -1 0 0 0 0 0 34 0 -1 -1 -1 0 -1 0 0 0 0 34 0 -1 -1 -1 0 0 -1 0 0 0 34 0 -1 -1 -1 0 0 0 -1 0 0 34 0 -1 -1 -1 0 0 0 0 -1 0 34 0 -1 -1 -1 0 0 0 0 0 -1 34 0 -1 -1 0 -1 -1 0 0 0 0 34 0 -1 -1 0 -1 0 -1 0 0 0 34 0 -1 -1 0 -1 0 0 -1 0 0 34 0 -1 -1 0 -1 0 0 0 -1 0 34 0 -1 -1 0 -1 0 0 0 0 -1 34 0 -1 -1 0 0 -1 -1 0 0 0 34 0 -1 -1 0 0 -1 0 -1 0 0 34 0 -1 -1 0 0 -1 0 0 -1 0 34 0 -1 -1 0 0 -1 0 0 0 -1 34 0 -1 -1 0 0 0 -1 -1 0 0 34 0 -1 -1 0 0 0 -1 0 -1 0 34 0 -1 -1 0 0 0 -1 0 0 -1 34 0 -1 -1 0 0 0 0 -1 -1 0 34 0 -1 -1 0 0 0 0 -1 0 -1 34 0 -1 -1 0 0 0 0 0 -1 -1 34 0 -1 0 -1 -1 -1 0 0 0 0 34 0 -1 0 -1 -1 0 -1 0 0 0 34 0 -1 0 -1 -1 0 0 -1 0 0 34 0 -1 0 -1 -1 0 0 0 -1 0 34 0 -1 0 -1 -1 0 0 0 0 -1 34 0 -1 0 -1 0 -1 -1 0 0 0 34 0 -1 0 -1 0 -1 0 -1 0 0 34 0 -1 0 -1 0 -1 0 0 -1 0 34 0 -1 0 -1 0 -1 0 0 0 -1 34 0 -1 0 -1 0 0 -1 -1 0 0 34 0 -1 0 -1 0 0 -1 0 -1 0 34 0 -1 0 -1 0 0 -1 0 0 -1 34 0 -1 0 -1 0 0 0 -1 -1 0 34 0 -1 0 -1 0 0 0 -1 0 -1 34 0 -1 0 -1 0 0 0 0 -1 -1 34 0 -1 0 0 -1 -1 -1 0 0 0 34 0 -1 0 0 -1 -1 0 -1 0 0 34 0 -1 0 0 -1 -1 0 0 -1 0 34 0 -1 0 0 -1 -1 0 0 0 -1 34 0 -1 0 0 -1 0 -1 -1 0 0 34 0 -1 0 0 -1 0 -1 0 -1 0 34 0 -1 0 0 -1 0 -1 0 0 -1 34 0 -1 0 0 -1 0 0 -1 -1 0 34 0 -1 0 0 -1 0 0 -1 0 -1 34 0 -1 0 0 -1 0 0 0 -1 -1 34 0 -1 0 0 0 -1 -1 -1 0 0 34 0 -1 0 0 0 -1 -1 0 -1 0 34 0 -1 0 0 0 -1 -1 0 0 -1 34 0 -1 0 0 0 -1 0 -1 -1 0 34 0 -1 0 0 0 -1 0 -1 0 -1 34 0 -1 0 0 0 -1 0 0 -1 -1 34 0 -1 0 0 0 0 -1 -1 -1 0 34 0 -1 0 0 0 0 -1 -1 0 -1 34 0 -1 0 0 0 0 -1 0 -1 -1 34 0 -1 0 0 0 0 0 -1 -1 -1 34 0 0 -1 -1 -1 -1 0 0 0 0 34 0 0 -1 -1 -1 0 -1 0 0 0 34 0 0 -1 -1 -1 0 0 -1 0 0 34 0 0 -1 -1 -1 0 0 0 -1 0 34 0 0 -1 -1 -1 0 0 0 0 -1 34 0 0 -1 -1 0 -1 -1 0 0 0 34 0 0 -1 -1 0 -1 0 -1 0 0 34 0 0 -1 -1 0 -1 0 0 -1 0 34 0 0 -1 -1 0 -1 0 0 0 -1 34 0 0 -1 -1 0 0 -1 -1 0 0 34 0 0 -1 -1 0 0 -1 0 -1 0 34 0 0 -1 -1 0 0 -1 0 0 -1 34 0 0 -1 -1 0 0 0 -1 -1 0 34 0 0 -1 -1 0 0 0 -1 0 -1 34 0 0 -1 -1 0 0 0 0 -1 -1 34 0 0 -1 0 -1 -1 -1 0 0 0 34 0 0 -1 0 -1 -1 0 -1 0 0 34 0 0 -1 0 -1 -1 0 0 -1 0 34 0 0 -1 0 -1 -1 0 0 0 -1 34 0 0 -1 0 -1 0 -1 -1 0 0 34 0 0 -1 0 -1 0 -1 0 -1 0 34 0 0 -1 0 -1 0 -1 0 0 -1 34 0 0 -1 0 -1 0 0 -1 -1 0 34 0 0 -1 0 -1 0 0 -1 0 -1 34 0 0 -1 0 -1 0 0 0 -1 -1 34 0 0 -1 0 0 -1 -1 -1 0 0 34 0 0 -1 0 0 -1 -1 0 -1 0 34 0 0 -1 0 0 -1 -1 0 0 -1 34 0 0 -1 0 0 -1 0 -1 -1 0 34 0 0 -1 0 0 -1 0 -1 0 -1 34 0 0 -1 0 0 -1 0 0 -1 -1 34 0 0 -1 0 0 0 -1 -1 -1 0 34 0 0 -1 0 0 0 -1 -1 0 -1 34 0 0 -1 0 0 0 -1 0 -1 -1 34 0 0 -1 0 0 0 0 -1 -1 -1 34 0 0 0 -1 -1 -1 -1 0 0 0 34 0 0 0 -1 -1 -1 0 -1 0 0 34 0 0 0 -1 -1 -1 0 0 -1 0 34 0 0 0 -1 -1 -1 0 0 0 -1 34 0 0 0 -1 -1 0 -1 -1 0 0 34 0 0 0 -1 -1 0 -1 0 -1 0 34 0 0 0 -1 -1 0 -1 0 0 -1 34 0 0 0 -1 -1 0 0 -1 -1 0 34 0 0 0 -1 -1 0 0 -1 0 -1 34 0 0 0 -1 -1 0 0 0 -1 -1 34 0 0 0 -1 0 -1 -1 -1 0 0 34 0 0 0 -1 0 -1 -1 0 -1 0 34 0 0 0 -1 0 -1 -1 0 0 -1 34 0 0 0 -1 0 -1 0 -1 -1 0 34 0 0 0 -1 0 -1 0 -1 0 -1 34 0 0 0 -1 0 -1 0 0 -1 -1 34 0 0 0 -1 0 0 -1 -1 -1 0 34 0 0 0 -1 0 0 -1 -1 0 -1 34 0 0 0 -1 0 0 -1 0 -1 -1 34 0 0 0 -1 0 0 0 -1 -1 -1 34 0 0 0 0 -1 -1 -1 -1 0 0 34 0 0 0 0 -1 -1 -1 0 -1 0 34 0 0 0 0 -1 -1 -1 0 0 -1 34 0 0 0 0 -1 -1 0 -1 -1 0 34 0 0 0 0 -1 -1 0 -1 0 -1 34 0 0 0 0 -1 -1 0 0 -1 -1 34 0 0 0 0 -1 0 -1 -1 -1 0 34 0 0 0 0 -1 0 -1 -1 0 -1 34 0 0 0 0 -1 0 -1 0 -1 -1 34 0 0 0 0 -1 0 0 -1 -1 -1 34 0 0 0 0 0 -1 -1 -1 -1 0 34 0 0 0 0 0 -1 -1 -1 0 -1 34 0 0 0 0 0 -1 -1 0 -1 -1 34 0 0 0 0 0 -1 0 -1 -1 -1 34 0 0 0 0 0 0 -1 -1 -1 -1 34 -1 -1 -1 0 0 0 0 0 0 0 27 -1 -1 0 -1 0 0 0 0 0 0 27 -1 -1 0 0 -1 0 0 0 0 0 27 -1 -1 0 0 0 -1 0 0 0 0 27 -1 -1 0 0 0 0 -1 0 0 0 27 -1 -1 0 0 0 0 0 -1 0 0 27 -1 -1 0 0 0 0 0 0 -1 0 27 -1 -1 0 0 0 0 0 0 0 -1 27 -1 0 -1 -1 0 0 0 0 0 0 27 -1 0 -1 0 -1 0 0 0 0 0 27 -1 0 -1 0 0 -1 0 0 0 0 27 -1 0 -1 0 0 0 -1 0 0 0 27 -1 0 -1 0 0 0 0 -1 0 0 27 -1 0 -1 0 0 0 0 0 -1 0 27 -1 0 -1 0 0 0 0 0 0 -1 27 -1 0 0 -1 -1 0 0 0 0 0 27 -1 0 0 -1 0 -1 0 0 0 0 27 -1 0 0 -1 0 0 -1 0 0 0 27 -1 0 0 -1 0 0 0 -1 0 0 27 -1 0 0 -1 0 0 0 0 -1 0 27 -1 0 0 -1 0 0 0 0 0 -1 27 -1 0 0 0 -1 -1 0 0 0 0 27 -1 0 0 0 -1 0 -1 0 0 0 27 -1 0 0 0 -1 0 0 -1 0 0 27 -1 0 0 0 -1 0 0 0 -1 0 27 -1 0 0 0 -1 0 0 0 0 -1 27 -1 0 0 0 0 -1 -1 0 0 0 27 -1 0 0 0 0 -1 0 -1 0 0 27 -1 0 0 0 0 -1 0 0 -1 0 27 -1 0 0 0 0 -1 0 0 0 -1 27 -1 0 0 0 0 0 -1 -1 0 0 27 -1 0 0 0 0 0 -1 0 -1 0 27 -1 0 0 0 0 0 -1 0 0 -1 27 -1 0 0 0 0 0 0 -1 -1 0 27 -1 0 0 0 0 0 0 -1 0 -1 27 -1 0 0 0 0 0 0 0 -1 -1 27 0 -1 -1 -1 0 0 0 0 0 0 27 0 -1 -1 0 -1 0 0 0 0 0 27 0 -1 -1 0 0 -1 0 0 0 0 27 0 -1 -1 0 0 0 -1 0 0 0 27 0 -1 -1 0 0 0 0 -1 0 0 27 0 -1 -1 0 0 0 0 0 -1 0 27 0 -1 -1 0 0 0 0 0 0 -1 27 0 -1 0 -1 -1 0 0 0 0 0 27 0 -1 0 -1 0 -1 0 0 0 0 27 0 -1 0 -1 0 0 -1 0 0 0 27 0 -1 0 -1 0 0 0 -1 0 0 27 0 -1 0 -1 0 0 0 0 -1 0 27 0 -1 0 -1 0 0 0 0 0 -1 27 0 -1 0 0 -1 -1 0 0 0 0 27 0 -1 0 0 -1 0 -1 0 0 0 27 0 -1 0 0 -1 0 0 -1 0 0 27 0 -1 0 0 -1 0 0 0 -1 0 27 0 -1 0 0 -1 0 0 0 0 -1 27 0 -1 0 0 0 -1 -1 0 0 0 27 0 -1 0 0 0 -1 0 -1 0 0 27 0 -1 0 0 0 -1 0 0 -1 0 27 0 -1 0 0 0 -1 0 0 0 -1 27 0 -1 0 0 0 0 -1 -1 0 0 27 0 -1 0 0 0 0 -1 0 -1 0 27 0 -1 0 0 0 0 -1 0 0 -1 27 0 -1 0 0 0 0 0 -1 -1 0 27 0 -1 0 0 0 0 0 -1 0 -1 27 0 -1 0 0 0 0 0 0 -1 -1 27 0 0 -1 -1 -1 0 0 0 0 0 27 0 0 -1 -1 0 -1 0 0 0 0 27 0 0 -1 -1 0 0 -1 0 0 0 27 0 0 -1 -1 0 0 0 -1 0 0 27 0 0 -1 -1 0 0 0 0 -1 0 27 0 0 -1 -1 0 0 0 0 0 -1 27 0 0 -1 0 -1 -1 0 0 0 0 27 0 0 -1 0 -1 0 -1 0 0 0 27 0 0 -1 0 -1 0 0 -1 0 0 27 0 0 -1 0 -1 0 0 0 -1 0 27 0 0 -1 0 -1 0 0 0 0 -1 27 0 0 -1 0 0 -1 -1 0 0 0 27 0 0 -1 0 0 -1 0 -1 0 0 27 0 0 -1 0 0 -1 0 0 -1 0 27 0 0 -1 0 0 -1 0 0 0 -1 27 0 0 -1 0 0 0 -1 -1 0 0 27 0 0 -1 0 0 0 -1 0 -1 0 27 0 0 -1 0 0 0 -1 0 0 -1 27 0 0 -1 0 0 0 0 -1 -1 0 27 0 0 -1 0 0 0 0 -1 0 -1 27 0 0 -1 0 0 0 0 0 -1 -1 27 0 0 0 -1 -1 -1 0 0 0 0 27 0 0 0 -1 -1 0 -1 0 0 0 27 0 0 0 -1 -1 0 0 -1 0 0 27 0 0 0 -1 -1 0 0 0 -1 0 27 0 0 0 -1 -1 0 0 0 0 -1 27 0 0 0 -1 0 -1 -1 0 0 0 27 0 0 0 -1 0 -1 0 -1 0 0 27 0 0 0 -1 0 -1 0 0 -1 0 27 0 0 0 -1 0 -1 0 0 0 -1 27 0 0 0 -1 0 0 -1 -1 0 0 27 0 0 0 -1 0 0 -1 0 -1 0 27 0 0 0 -1 0 0 -1 0 0 -1 27 0 0 0 -1 0 0 0 -1 -1 0 27 0 0 0 -1 0 0 0 -1 0 -1 27 0 0 0 -1 0 0 0 0 -1 -1 27 0 0 0 0 -1 -1 -1 0 0 0 27 0 0 0 0 -1 -1 0 -1 0 0 27 0 0 0 0 -1 -1 0 0 -1 0 27 0 0 0 0 -1 -1 0 0 0 -1 27 0 0 0 0 -1 0 -1 -1 0 0 27 0 0 0 0 -1 0 -1 0 -1 0 27 0 0 0 0 -1 0 -1 0 0 -1 27 0 0 0 0 -1 0 0 -1 -1 0 27 0 0 0 0 -1 0 0 -1 0 -1 27 0 0 0 0 -1 0 0 0 -1 -1 27 0 0 0 0 0 -1 -1 -1 0 0 27 0 0 0 0 0 -1 -1 0 -1 0 27 0 0 0 0 0 -1 -1 0 0 -1 27 0 0 0 0 0 -1 0 -1 -1 0 27 0 0 0 0 0 -1 0 -1 0 -1 27 0 0 0 0 0 -1 0 0 -1 -1 27 0 0 0 0 0 0 -1 -1 -1 0 27 0 0 0 0 0 0 -1 -1 0 -1 27 0 0 0 0 0 0 -1 0 -1 -1 27 0 0 0 0 0 0 0 -1 -1 -1 27 -1 -1 0 0 0 0 0 0 0 0 19 -1 0 -1 0 0 0 0 0 0 0 19 -1 0 0 -1 0 0 0 0 0 0 19 -1 0 0 0 -1 0 0 0 0 0 19 -1 0 0 0 0 -1 0 0 0 0 19 -1 0 0 0 0 0 -1 0 0 0 19 -1 0 0 0 0 0 0 -1 0 0 19 -1 0 0 0 0 0 0 0 -1 0 19 -1 0 0 0 0 0 0 0 0 -1 19 0 -1 -1 0 0 0 0 0 0 0 19 0 -1 0 -1 0 0 0 0 0 0 19 0 -1 0 0 -1 0 0 0 0 0 19 0 -1 0 0 0 -1 0 0 0 0 19 0 -1 0 0 0 0 -1 0 0 0 19 0 -1 0 0 0 0 0 -1 0 0 19 0 -1 0 0 0 0 0 0 -1 0 19 0 -1 0 0 0 0 0 0 0 -1 19 0 0 -1 -1 0 0 0 0 0 0 19 0 0 -1 0 -1 0 0 0 0 0 19 0 0 -1 0 0 -1 0 0 0 0 19 0 0 -1 0 0 0 -1 0 0 0 19 0 0 -1 0 0 0 0 -1 0 0 19 0 0 -1 0 0 0 0 0 -1 0 19 0 0 -1 0 0 0 0 0 0 -1 19 0 0 0 -1 -1 0 0 0 0 0 19 0 0 0 -1 0 -1 0 0 0 0 19 0 0 0 -1 0 0 -1 0 0 0 19 0 0 0 -1 0 0 0 -1 0 0 19 0 0 0 -1 0 0 0 0 -1 0 19 0 0 0 -1 0 0 0 0 0 -1 19 0 0 0 0 -1 -1 0 0 0 0 19 0 0 0 0 -1 0 -1 0 0 0 19 0 0 0 0 -1 0 0 -1 0 0 19 0 0 0 0 -1 0 0 0 -1 0 19 0 0 0 0 -1 0 0 0 0 -1 19 0 0 0 0 0 -1 -1 0 0 0 19 0 0 0 0 0 -1 0 -1 0 0 19 0 0 0 0 0 -1 0 0 -1 0 19 0 0 0 0 0 -1 0 0 0 -1 19 0 0 0 0 0 0 -1 -1 0 0 19 0 0 0 0 0 0 -1 0 -1 0 19 0 0 0 0 0 0 -1 0 0 -1 19 0 0 0 0 0 0 0 -1 -1 0 19 0 0 0 0 0 0 0 -1 0 -1 19 0 0 0 0 0 0 0 0 -1 -1 19 -1 0 0 0 0 0 0 0 0 0 10 0 -1 0 0 0 0 0 0 0 0 10 0 0 -1 0 0 0 0 0 0 0 10 0 0 0 -1 0 0 0 0 0 0 10 0 0 0 0 -1 0 0 0 0 0 10 0 0 0 0 0 -1 0 0 0 0 10 0 0 0 0 0 0 -1 0 0 0 10 0 0 0 0 0 0 0 -1 0 0 10 0 0 0 0 0 0 0 0 -1 0 10 0 0 0 0 0 0 0 0 0 -1 10 VerticesOfPolyhedron lrslib-062/ine/test-062/normaliz/zfw91.in0000600001553200155320000001602412722006616015662 0ustar avisamb_space 37 inhom_inequalities 91 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 -1 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1 -1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 VerticesOfPolyhedron lrslib-062/ine/test-062/normaliz/cp6.in0000600001553200155320000003313012722006617015370 0ustar avis/* cp6.ine in normaliz format */ amb_space 15 inhom_inequalities 368 0 1 1 1 1 0 0 0 0 -1 -1 -1 -1 -1 -1 2 1 0 1 1 1 0 -1 -1 -1 0 0 0 -1 -1 -1 2 1 1 0 1 1 -1 0 -1 -1 0 -1 -1 0 0 -1 2 1 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 -1 0 2 2 2 2 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 0 1 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -2 2 2 2 2 1 1 1 1 -1 -1 -1 -1 -1 -1 0 -2 1 1 1 1 2 2 2 2 -1 -1 -1 -1 -1 -1 0 1 -1 2 -1 -1 1 -2 1 1 2 -1 -1 2 2 -1 0 1 -1 -1 2 -1 1 1 -2 1 -1 2 -1 2 -1 2 0 -2 1 1 -1 -1 2 2 -2 -2 -1 1 1 1 1 -1 2 -1 2 1 -1 -1 2 1 -1 -1 -2 2 2 1 1 -1 0 -2 1 -1 -1 1 2 -2 -2 2 1 1 -1 -1 1 1 2 -1 2 -1 -1 1 2 -1 -1 1 2 2 -2 -1 1 1 0 -1 2 1 1 1 2 1 1 1 -2 -2 -2 -1 -1 -1 2 -2 1 -1 1 -1 2 -2 2 -2 1 -1 1 1 -1 1 2 -1 2 -1 1 -1 2 -1 1 -1 2 -2 2 1 -1 1 0 1 -1 -1 -1 2 1 1 1 -2 -1 -1 2 -1 2 2 0 0 0 0 0 0 1 0 0 -1 0 0 1 0 0 0 0 -1 1 1 1 0 1 1 1 0 -1 -1 0 -1 0 0 0 1 -2 -1 -1 1 2 1 1 -1 -2 -2 2 -1 1 1 2 2 -1 -1 -1 1 2 2 2 -2 -1 -1 1 -1 1 1 0 0 1 1 1 -1 0 0 0 0 -1 -1 1 -1 1 1 0 -1 2 1 1 -1 2 1 1 -1 -2 -2 2 -1 1 1 0 0 0 0 0 0 1 1 1 -1 -1 -1 1 -1 1 1 0 1 2 -1 -1 -1 -2 1 1 1 2 2 2 -1 -1 -1 0 -2 2 -2 2 -2 1 -1 1 -1 1 -1 1 1 -1 1 2 -1 1 -1 1 -2 1 -1 1 -2 1 -1 2 1 -2 2 2 0 1 0 0 -1 0 0 0 0 0 0 1 0 0 0 0 -1 2 -1 -1 -1 2 -1 -1 -1 2 2 2 -1 -1 -1 2 -1 1 -1 -1 -2 1 -1 -1 -2 1 1 2 -1 -2 -2 6 0 1 -1 -1 -1 0 0 0 0 1 1 1 -1 -1 -1 2 -1 1 -1 0 -1 1 -1 0 -1 1 0 1 0 -1 0 2 -1 1 0 -1 -1 1 0 -1 -1 0 1 1 0 0 -1 2 0 0 0 0 0 1 -1 -1 -1 1 1 1 -1 -1 -1 2 1 -1 1 1 2 1 -1 -1 -2 1 1 2 -1 -2 -2 2 -2 1 1 1 -1 2 2 2 -2 -1 -1 1 -1 1 1 0 -1 1 0 1 -1 1 0 1 -1 0 -1 1 0 0 1 0 -1 1 1 0 -1 1 1 0 -1 -1 0 1 0 1 0 0 -1 0 0 0 -1 0 0 0 -1 0 0 0 0 0 0 2 -1 0 1 1 -1 0 1 1 -1 0 0 0 -1 1 1 0 -2 2 2 2 -2 1 1 1 -1 -1 -1 1 -1 1 1 0 -2 -2 2 2 -2 -1 1 1 -1 1 1 -1 -1 1 1 2 -1 -1 1 1 -2 -1 1 1 -2 1 1 -2 -1 2 2 2 -1 -1 -1 -1 -2 -1 -1 -1 -2 -1 -1 -2 -1 -2 -2 12 0 0 0 0 0 1 0 -1 0 0 1 0 0 0 0 0 -1 1 1 0 1 1 1 0 1 -1 0 -1 0 -1 0 0 1 -2 -1 1 -1 2 1 -1 1 -2 2 -2 1 -1 1 2 2 -1 -1 1 -1 2 2 -2 2 -1 1 -1 1 -1 1 0 0 1 1 -1 1 0 0 0 0 -1 1 -1 1 -1 1 0 -1 2 1 -1 1 2 1 -1 1 -2 2 -2 1 -1 1 0 0 0 0 0 0 1 1 -1 1 -1 1 -1 1 -1 1 0 0 0 0 0 0 1 1 0 0 -1 0 0 0 0 0 0 1 -1 0 1 1 1 0 -1 -1 0 1 1 0 0 -1 0 1 -1 -2 1 -1 1 2 -1 1 -2 1 -1 2 -2 1 2 -2 -1 1 -1 1 -2 2 -2 2 1 -1 1 1 -1 1 2 -1 -1 2 -1 1 -1 2 -1 1 2 -1 1 2 -2 1 0 -1 1 2 1 1 1 2 1 1 -2 -1 -1 -2 -2 -1 2 1 -1 1 2 1 1 -1 -2 -1 1 2 1 -2 -1 -2 2 0 0 0 0 0 0 0 0 0 -1 1 0 1 0 0 0 1 -1 -1 1 0 1 1 -1 0 -1 1 0 1 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 1 0 0 0 1 0 -1 1 1 0 1 -1 -1 0 0 0 1 1 -1 0 2 -1 -1 1 1 2 2 -2 -2 -1 1 1 1 1 -1 0 1 1 -1 2 1 -1 1 -2 -1 1 -2 -1 2 1 -2 2 1 -1 -1 2 1 1 1 -2 -1 -1 2 1 2 1 -2 0 -1 1 2 -1 -1 1 2 -1 -1 -2 1 1 2 2 -1 0 -1 1 1 -1 0 1 1 -1 0 -1 1 0 1 0 0 0 -1 1 2 -1 1 1 2 -1 1 -2 1 -1 2 -2 1 0 0 0 0 0 0 1 1 -1 -1 -1 1 1 1 1 -1 0 -2 -1 1 1 -1 -2 2 2 -2 1 1 -1 -1 1 1 2 -1 -1 2 1 -1 -1 2 1 -1 2 1 -1 -2 2 1 0 0 1 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 -1 0 -2 1 1 -1 1 2 2 -2 2 -1 1 -1 1 -1 1 0 -1 1 0 -1 1 1 0 -1 1 0 1 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 1 0 0 1 -2 -1 1 1 2 1 -1 -1 -2 2 2 1 1 -1 0 1 -1 -1 0 1 1 1 0 -1 -1 0 1 0 1 0 0 -2 2 -2 -2 2 1 -1 -1 1 1 1 -1 -1 1 1 2 -1 1 -1 -2 1 1 -1 -2 1 1 2 -1 -2 1 2 2 1 -1 -2 -1 1 1 2 1 -1 -2 -1 1 -2 2 1 2 -1 1 -1 -2 -1 1 -1 -2 -1 1 2 1 -2 -1 -2 6 -1 1 -1 -1 0 1 -1 -1 0 1 1 0 -1 0 0 2 1 -1 -2 1 1 1 2 -1 -1 -2 1 1 2 2 -1 0 -1 1 2 1 -1 1 2 1 -1 -2 -1 1 -2 2 1 0 -1 -1 1 -2 -1 -1 1 -2 -1 1 -2 -1 2 1 -2 6 -1 -1 1 -1 0 -1 1 -1 0 1 -1 0 1 0 0 2 -1 0 0 -1 0 0 0 -1 0 0 0 0 0 0 0 2 -1 0 1 -1 1 0 1 -1 1 0 0 0 1 -1 1 0 -2 2 2 -2 2 1 1 -1 1 -1 1 -1 1 -1 1 0 -2 -2 2 -2 2 -1 1 -1 1 1 -1 1 1 -1 1 2 -1 -1 1 -2 1 -1 1 -2 1 1 -2 1 2 -1 2 2 -1 -1 -1 -2 -1 -1 -1 -2 -1 -1 -2 -1 -2 -1 -2 12 1 -1 -1 1 2 1 1 -1 -2 -1 1 2 1 2 -2 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 -1 2 0 0 0 0 0 0 1 0 -1 0 0 0 0 1 0 0 -1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 0 0 0 1 0 0 -1 -1 2 -1 -1 -1 2 -1 -1 2 -1 -1 2 2 -1 2 -1 -1 1 -1 -2 -1 1 -1 -2 1 -1 -2 1 2 -2 6 0 -1 1 -1 -1 0 0 0 0 1 -1 -1 1 1 -1 2 -1 -1 1 0 -1 -1 1 0 -1 1 0 -1 0 1 0 2 -1 0 1 -1 -1 0 1 -1 -1 0 0 0 1 1 -1 2 0 0 0 0 0 -1 1 -1 -1 1 -1 -1 1 1 -1 2 1 1 -1 1 2 -1 1 -1 -2 1 -1 -2 1 2 -2 2 0 0 1 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 -1 0 1 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 1 0 0 0 0 0 0 -1 1 0 1 1 1 0 1 1 0 -1 -1 0 0 -1 0 1 -2 1 -1 -1 2 -1 1 1 2 -2 -2 1 1 -1 2 2 -1 1 -1 -1 2 -2 2 2 1 -1 -1 1 1 -1 0 0 1 -1 1 1 0 0 0 0 1 -1 -1 1 1 -1 0 -1 2 -1 1 1 2 -1 1 1 2 -2 -2 1 1 -1 0 0 0 0 0 0 1 -1 1 1 1 -1 -1 1 1 -1 0 0 0 0 0 0 1 0 1 0 0 -1 0 0 0 0 0 1 -1 1 0 1 1 -1 0 -1 1 0 1 0 -1 0 0 1 -1 1 -2 -1 1 -1 2 1 1 -2 -1 2 1 -2 2 -2 -1 -1 1 1 -2 -2 2 2 -1 1 1 1 1 -1 2 -1 -1 -1 2 1 -1 -1 2 1 -1 2 1 2 1 -2 0 -2 2 2 -2 -2 1 1 -1 -1 -1 1 1 1 1 -1 2 1 -1 2 1 1 1 -2 -1 -1 2 1 1 -2 -2 -1 2 1 2 -1 1 1 -2 1 -1 -1 2 -2 -2 1 1 -1 2 -1 1 1 2 1 1 1 2 1 -1 -2 -1 -2 -1 -2 2 2 -2 -2 2 -2 1 1 -1 1 -1 1 -1 1 -1 1 2 -1 1 1 -1 -2 1 1 -1 -2 -1 1 2 1 2 -2 2 1 -1 -1 1 -2 1 1 -1 2 -1 1 -2 1 -2 2 2 0 0 0 0 0 0 -1 1 0 0 0 0 1 0 0 0 1 0 1 -1 1 0 -1 1 -1 0 0 0 1 -1 1 0 2 -1 1 -1 1 2 -2 2 -2 1 -1 1 1 -1 1 0 1 1 2 -1 1 -1 -2 1 -1 -2 1 -1 2 -2 1 2 1 -1 2 -1 1 1 -2 1 -1 2 -1 1 2 -2 1 0 -1 1 -1 2 -1 1 -1 2 -1 1 -2 1 2 -1 2 0 -1 1 -1 1 0 1 -1 1 0 1 -1 0 1 0 0 0 -1 1 -1 2 1 1 -1 2 1 1 -2 -1 2 1 -2 0 0 0 0 0 0 1 -1 1 -1 1 -1 1 1 -1 1 0 0 0 0 0 0 0 0 0 0 1 -1 0 1 0 0 0 1 -1 1 -1 0 1 -1 1 0 1 -1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 -1 0 0 0 0 1 -1 1 1 0 1 -1 -1 0 1 1 0 -1 0 0 0 1 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 -2 2 2 2 1 -1 -1 -1 1 1 1 -1 -1 -1 0 1 -2 1 1 1 2 -1 -1 -1 2 2 2 -1 -1 -1 0 2 -1 1 1 1 2 -2 -2 -2 1 1 1 -1 -1 -1 2 1 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 -2 -1 -1 -1 2 -1 -1 2 -1 2 2 0 2 2 2 2 -2 -1 -1 -1 1 -1 -1 1 -1 1 1 0 2 1 1 1 -1 -2 -2 -2 2 -1 -1 1 -1 1 1 2 2 2 -2 -2 -2 -1 1 1 1 1 1 1 -1 -1 -1 2 2 -1 -1 -1 -1 2 2 2 2 -1 -1 -1 -1 -1 -1 2 1 -1 -1 -1 -2 1 1 1 2 -1 -1 -2 -1 -2 -2 6 1 0 -1 -1 -1 0 1 1 1 0 0 0 -1 -1 -1 2 1 1 -1 -1 -2 -1 1 1 2 1 1 2 -1 -2 -2 2 1 -1 -1 0 -1 1 1 0 1 -1 0 -1 0 -1 0 2 1 -1 -1 -2 -1 1 1 2 1 -1 -2 -1 -2 -1 -2 6 1 -1 0 -1 -1 1 0 1 1 0 -1 -1 0 0 -1 2 2 -2 2 -2 -2 1 -1 1 1 1 -1 -1 1 1 -1 2 1 -1 1 -1 -2 1 -1 1 2 1 -1 -2 1 2 -2 2 -1 -2 1 1 -1 -2 1 1 -1 2 2 -2 -1 1 1 2 -1 1 1 -2 -1 1 1 -2 -1 -1 2 1 2 1 -2 2 -1 1 1 1 2 1 1 1 2 -1 -1 -2 -1 -2 -2 2 2 -2 -2 -2 2 1 1 1 -1 -1 -1 1 -1 1 1 2 -1 1 -2 1 -1 1 -2 1 -1 2 -1 1 2 -2 1 2 1 -1 -1 -1 0 1 1 1 0 -1 -1 0 -1 0 0 2 0 0 0 0 0 1 1 1 1 -1 -1 -1 -1 -1 -1 2 1 -2 1 1 -1 2 -1 -1 1 2 2 -2 -1 1 1 0 1 -1 0 1 -1 1 0 -1 1 0 1 -1 0 0 1 0 1 -1 1 0 -1 1 -1 0 1 1 0 -1 0 1 0 0 0 -1 0 0 -1 0 0 0 0 0 0 -1 0 0 0 2 0 -1 1 1 -1 0 0 0 0 1 1 -1 -1 1 1 0 2 -2 2 2 -2 1 -1 -1 1 1 1 -1 -1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 -1 0 1 1 1 -1 0 -1 -1 1 0 -1 1 0 1 0 0 0 1 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 2 1 1 -1 1 -2 -2 2 -2 -1 1 -1 1 -1 1 2 2 2 2 -2 2 -1 -1 1 -1 -1 1 -1 1 -1 1 0 1 1 1 -2 1 -1 -1 2 -1 -1 2 -1 2 -1 2 0 1 1 1 -2 -1 -1 -1 2 1 -1 2 1 2 1 -2 0 1 0 1 -1 -1 0 -1 1 1 0 0 0 1 1 -1 0 1 1 0 -1 -1 -1 0 1 1 0 1 1 0 0 -1 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 -1 2 0 1 1 -1 -1 0 0 0 0 -1 1 1 1 1 -1 0 2 2 2 -2 -2 -1 -1 1 1 -1 1 1 1 1 -1 0 1 1 -1 -2 -1 -1 1 2 1 1 2 1 -2 -1 -2 2 0 0 0 0 0 0 -1 0 1 0 0 0 0 1 0 0 1 1 2 1 -1 -1 -2 -1 1 -2 -1 1 -2 2 1 2 1 0 1 1 -1 0 -1 -1 1 0 0 0 -1 1 1 0 2 -1 1 1 -1 2 -2 -2 2 1 1 -1 -1 1 1 0 1 -1 2 1 -1 1 -2 -1 1 2 1 -1 -2 2 1 0 -1 1 -1 -1 2 1 -1 -1 2 1 1 -2 -1 2 2 0 -2 1 -1 1 1 2 -2 2 2 1 -1 -1 1 1 -1 0 -1 1 -1 0 1 1 -1 0 1 1 0 -1 0 1 0 0 -1 1 -2 1 1 1 -2 1 1 2 -1 -1 2 2 -1 0 -1 1 -1 1 2 1 -1 1 2 1 -1 -2 1 2 -2 0 0 0 0 0 0 1 -1 -1 1 1 1 -1 -1 1 1 0 1 -2 1 -1 1 2 -1 1 -1 2 -2 2 1 -1 1 0 1 -1 0 -1 1 1 0 1 -1 0 -1 1 0 0 1 0 0 0 0 0 0 -1 -1 1 1 -1 1 1 1 1 -1 0 1 1 2 -1 -1 -1 -2 1 1 -2 1 1 2 2 -1 0 -1 -2 1 -1 1 -2 1 -1 1 2 -2 2 1 -1 1 2 -1 -1 -1 1 2 -1 -1 1 2 -1 1 2 1 2 -2 0 1 -1 -1 -2 1 1 1 2 -1 -1 -2 1 -2 1 2 2 -1 1 -2 -1 1 1 -2 -1 1 2 1 -1 -2 2 1 2 0 -1 0 -1 0 0 0 0 0 0 -1 0 0 0 0 2 0 -1 1 -1 1 0 0 0 0 1 -1 1 1 -1 1 0 2 -2 2 -2 2 1 -1 1 -1 1 -1 1 1 -1 1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 -1 2 0 0 0 0 0 0 0 0 0 1 0 -1 0 1 0 0 0 -1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 1 0 0 0 0 0 0 -1 0 1 1 1 0 1 1 1 0 0 0 -1 -1 -1 0 1 1 -2 -1 -1 -1 2 1 1 2 1 1 -2 -2 -1 2 2 1 -1 -1 -1 -2 2 2 2 1 1 1 -1 -1 -1 0 0 -1 1 1 1 0 0 0 0 1 1 1 -1 -1 -1 0 -1 -1 2 1 1 -1 2 1 1 2 1 1 -2 -2 -1 0 0 0 0 0 0 -1 1 1 1 1 1 1 -1 -1 -1 0 0 0 0 0 0 0 1 1 0 0 0 0 -1 0 0 0 1 1 -1 0 1 -1 1 0 -1 1 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 -1 0 0 0 1 1 -1 -1 0 -1 1 1 0 1 1 0 -1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 -1 0 0 1 1 -1 1 0 -1 1 -1 0 1 -1 0 1 0 0 0 1 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 2 1 -1 1 1 -2 2 -2 -2 1 -1 -1 1 1 -1 2 2 2 -2 2 2 -1 1 -1 -1 1 -1 -1 1 1 -1 0 1 1 -2 1 1 -1 2 -1 -1 2 -1 -1 2 2 -1 0 1 1 -2 1 -1 -1 2 -1 1 2 -1 1 2 -2 1 0 1 0 -1 1 -1 0 1 -1 1 0 0 0 1 -1 1 0 1 1 -1 0 -1 -1 1 0 1 1 0 1 0 -1 0 0 0 0 -1 0 -1 0 0 0 0 0 0 0 0 -1 0 2 0 1 -1 1 -1 0 0 0 0 1 -1 1 1 -1 1 0 2 2 -2 2 -2 -1 1 -1 1 1 -1 1 1 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 2 0 1 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 -1 0 0 1 1 1 1 0 -1 -1 -1 0 -1 -1 0 -1 0 0 2 0 0 0 0 0 0 -1 -1 0 0 0 0 -1 0 0 2 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 1 0 -1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 1 0 -1 -1 -1 -1 2 -1 -1 -1 2 -1 -1 2 -1 2 2 2 -1 -1 -1 -2 1 -1 -1 -2 1 -1 -2 1 -2 1 2 6 0 -1 -1 -1 1 0 0 0 0 -1 -1 1 -1 1 1 2 -1 -1 0 -1 1 -1 0 -1 1 0 -1 1 0 0 1 2 -1 0 -1 -1 1 0 -1 -1 1 0 0 0 -1 1 1 2 0 0 0 0 0 -1 -1 -1 1 -1 -1 1 -1 1 1 2 1 1 1 2 -1 -1 -1 -2 1 -1 -2 1 -2 1 2 2 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 1 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 -1 0 0 2 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 1 0 0 -1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 1 0 0 0 0 1 2 1 1 -1 -2 -1 -1 1 -2 -2 2 -1 1 1 2 1 1 0 1 -1 -1 0 -1 1 0 -1 1 0 0 1 0 2 1 -1 1 -1 -2 2 -2 2 1 -1 1 1 -1 1 0 1 2 -1 1 -1 -2 1 -1 1 2 -2 2 1 -1 1 0 1 1 1 0 -1 -1 -1 0 1 -1 0 1 0 1 0 0 2 1 1 -1 -1 -2 -2 2 2 -1 1 1 1 1 -1 0 1 1 1 -1 -2 -1 -1 1 2 -1 1 2 1 2 -2 0 1 2 1 -1 -1 -2 -1 1 1 -2 2 2 1 1 -1 0 1 1 -1 1 -2 -1 1 -1 2 1 -1 2 1 -2 2 0 -2 -1 1 1 1 -2 2 2 2 1 1 1 -1 -1 -1 0 -1 -1 1 0 1 -1 1 0 1 1 0 1 0 -1 0 0 -1 -2 1 1 1 -2 1 1 1 2 2 2 -1 -1 -1 0 -1 -1 1 1 2 -1 1 1 2 1 1 2 -1 -2 -2 0 -1 -1 1 -1 2 -1 1 -1 2 1 -1 2 1 -2 2 0 1 1 -2 -1 1 -1 2 1 -1 2 1 -1 -2 2 1 0 1 0 -1 -1 1 0 1 1 -1 0 0 0 -1 1 1 0 0 0 -1 -1 0 0 0 0 0 0 0 0 -1 0 0 2 0 1 -1 -1 1 0 0 0 0 1 1 -1 -1 1 1 0 2 2 -2 -2 2 -1 1 1 -1 1 1 -1 -1 1 1 0 0 0 0 0 0 -1 1 -1 1 1 -1 1 1 -1 1 0 1 1 -1 2 -1 -1 1 -2 1 1 -2 1 2 -1 2 0 1 -1 -2 -1 -1 1 2 1 1 -2 -1 -1 -2 -2 -1 6 0 0 0 0 0 -1 0 -1 0 0 -1 0 0 0 0 2 1 1 1 2 1 -1 -1 -2 -1 -1 -2 -1 -2 -1 -2 6 1 1 1 0 1 -1 -1 0 -1 -1 0 -1 0 -1 0 2 0 0 0 0 0 0 -1 0 -1 0 0 0 0 -1 0 2 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 1 0 -1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 0 1 0 -1 -1 -1 2 -1 -1 -1 2 -1 -1 2 -1 2 -1 2 2 -1 -1 -1 1 -2 -1 -1 1 -2 -1 1 -2 1 -2 2 6 0 -1 -1 1 -1 0 0 0 0 -1 1 -1 1 -1 1 2 -1 -1 0 1 -1 -1 0 1 -1 0 1 -1 0 0 1 2 -1 0 -1 1 -1 0 -1 1 -1 0 0 0 1 -1 1 2 0 0 0 0 0 -1 -1 1 -1 -1 1 -1 1 -1 1 2 1 1 1 -1 2 -1 -1 1 -2 -1 1 -2 1 -2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 1 0 0 0 -1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 -1 0 -1 0 2 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 1 0 0 -1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 1 0 0 0 0 0 1 1 0 -1 1 -1 0 1 -1 0 1 -1 0 0 1 0 2 1 -1 -1 1 -2 2 2 -2 1 1 -1 -1 1 1 0 1 2 1 -1 1 -2 -1 1 -1 -2 2 -2 1 -1 1 2 1 2 -1 -1 1 -2 1 1 -1 2 2 -2 -1 1 1 0 -1 -1 1 1 0 -1 1 1 0 1 1 0 -1 0 0 0 -1 -1 1 2 1 -1 1 2 1 1 2 1 -2 -1 -2 0 -1 -1 1 2 -1 -1 1 2 -1 1 2 -1 -2 1 2 0 0 0 0 0 0 -1 1 1 -1 1 1 -1 -1 1 1 0 0 0 0 0 0 -1 -1 0 0 -1 0 0 0 0 0 2 1 1 2 1 1 -1 -2 -1 -1 -2 -1 -1 -2 -2 -1 6 1 -1 1 1 -2 1 -1 -1 2 1 1 -2 -1 2 2 0 -1 1 1 -2 1 1 1 -2 1 -1 2 -1 2 -1 2 0 -1 -1 -2 -1 1 -1 -2 -1 1 -2 -1 1 -2 2 1 6 -1 -1 -1 0 1 -1 -1 0 1 -1 0 1 0 1 0 2 -1 1 1 -1 2 1 1 -1 2 -1 1 -2 1 -2 2 0 1 -1 1 2 -1 1 -1 -2 1 1 2 -1 -2 1 2 0 1 -1 1 -2 1 1 -1 2 -1 1 -2 1 2 -1 2 0 -1 1 1 1 -2 1 1 1 -2 -1 -1 2 -1 2 2 0 -1 1 1 2 -1 1 1 2 -1 -1 -2 1 -2 1 2 0 -1 -1 -2 1 -1 -1 -2 1 -1 -2 1 -1 2 -2 1 6 -1 -1 -1 1 0 -1 -1 1 0 -1 1 0 1 0 0 2 -2 -2 -2 2 2 -1 -1 1 1 -1 1 1 1 1 -1 2 -2 2 -2 2 2 1 -1 1 1 1 -1 -1 1 1 -1 0 -1 0 -1 1 1 0 -1 1 1 0 0 0 1 1 -1 0 -1 -1 -2 1 1 -1 -2 1 1 -2 1 1 2 2 -1 2 -1 0 -1 0 0 0 -1 0 0 0 0 0 0 0 0 2 -2 -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 12 -1 -1 -2 -1 -1 -1 -2 -1 -1 -2 -1 -1 -2 -2 -1 12 -1 1 -2 -1 -1 1 -2 -1 -1 2 1 1 -2 -2 -1 6 -1 0 -1 -1 -1 0 -1 -1 -1 0 0 0 -1 -1 -1 6 -2 1 -1 -1 -1 2 -2 -2 -2 1 1 1 -1 -1 -1 6 1 -1 1 -1 2 1 -1 1 -2 1 -1 2 1 -2 2 0 2 -2 -2 2 2 1 1 -1 -1 -1 1 1 1 1 -1 0 0 -1 -1 1 1 0 0 0 0 -1 1 1 1 1 -1 0 0 -1 -1 0 0 0 0 0 0 -1 0 0 0 0 0 2 1 1 -1 -2 1 -1 1 2 -1 1 2 -1 -2 1 2 0 -2 -2 2 2 2 -1 1 1 1 1 1 1 -1 -1 -1 0 -1 -1 0 1 1 -1 0 1 1 0 1 1 0 0 -1 0 -1 -2 -1 1 1 -2 -1 1 1 -2 2 2 1 1 -1 2 1 1 -1 -1 2 -1 1 1 -2 1 1 -2 -1 2 2 0 1 2 1 1 1 -2 -1 -1 -1 -2 -2 -2 -1 -1 -1 6 2 -2 -2 -2 -2 1 1 1 1 -1 -1 -1 -1 -1 -1 6 2 1 1 1 1 -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 6 -2 2 -2 -2 -2 1 -1 -1 -1 1 1 1 -1 -1 -1 6 -2 -2 2 -2 -2 -1 1 -1 -1 1 -1 -1 1 1 -1 6 -1 -1 0 0 0 -1 0 0 0 0 0 0 0 0 0 2 -1 -2 -1 -1 -1 -2 -1 -1 -1 -2 -2 -2 -1 -1 -1 12 -1 -2 1 -1 -1 -2 1 -1 -1 2 -2 -2 1 1 -1 6 -1 -1 0 -1 -1 -1 0 -1 -1 0 -1 -1 0 0 -1 6 -2 -1 1 -1 -1 -2 2 -2 -2 1 -1 -1 1 1 -1 6 -1 -2 -1 1 -1 -2 -1 1 -1 -2 2 -2 1 -1 1 6 -2 -2 -2 2 -2 -1 -1 1 -1 -1 1 -1 1 -1 1 6 -1 -1 -1 0 -1 -1 -1 0 -1 -1 0 -1 0 -1 0 6 -2 -1 -1 1 -1 -2 -2 2 -2 -1 1 -1 1 -1 1 6 -2 -1 -1 -1 -1 -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 12 -1 -2 -1 -1 1 -2 -1 -1 1 -2 -2 2 -1 1 1 6 -2 -2 -2 -2 2 -1 -1 -1 1 -1 -1 1 -1 1 1 6 -1 -1 -1 -1 0 -1 -1 -1 0 -1 -1 0 -1 0 0 6 -2 -1 -1 -1 1 -2 -2 -2 2 -1 -1 1 -1 1 1 6 0 -1 -1 -1 -1 0 0 0 0 -1 -1 -1 -1 -1 -1 6 1 -2 -1 -1 -1 2 1 1 1 -2 -2 -2 -1 -1 -1 6 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 6 0 0 0 0 0 -1 0 0 -1 0 0 -1 0 0 0 2 1 1 1 1 2 -1 -1 -1 -2 -1 -1 -2 -1 -2 -2 6 VerticesOfPolyhedron lrslib-062/ine/test-062/normaliz/mit71-61.in0000600001553200155320000002270612722006616016073 0ustar avis/*mit71.ine in normaliz format */ amb_space 60 inhom_inequalities 71 -384 0 192 0 0 768 0 0 -512 0 0 0 -768 0 0 0 0 0 768 0 0 0 0 0 0 0 0 0 0 0 0 0 192 0 0 0 0 0 -384 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 0 0 0 0 0 0 64 0 0 0 0 0 0 0 0 2 -6 6 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 6 -6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -2 -2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 2 2 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 -2 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -6 -6 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 4 -8 16 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 -4 -8 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 4 -8 -16 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 -8 0 0 0 -24 24 0 24 -24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 0 0 0 -24 -24 0 24 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -64 0 0 0 0 96 0 0 -64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -6 12 3 -12 -8 3 12 -6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -4 4 1 0 0 -1 -4 4 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -2 0 -1 4 0 -1 0 -2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -2 -4 3 -4 8 3 -4 -2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -4 1 0 0 -1 4 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 -3 0 0 3 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 -4 3 4 -8 3 -4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 -1 -4 0 -1 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 4 1 0 0 -1 -4 -4 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 12 3 12 8 3 12 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -8 -2 8 4 8 -4 -8 -8 8 2 -2 -2 10 -16 -4 12 8 -2 -8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -4 -2 4 0 0 0 0 4 -4 -2 2 -2 6 -4 0 -4 0 2 4 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -8 2 -8 4 8 4 8 -8 -8 2 2 -2 6 0 -4 4 -8 -2 8 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -4 2 -4 0 0 0 0 4 4 -2 -2 -2 2 4 0 -4 0 2 -4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 -2 0 4 -8 -4 8 0 0 2 -2 -2 2 8 -4 4 -8 -2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 -2 0 -4 0 4 0 0 0 2 -2 -2 2 0 4 -4 0 -2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 4 -8 4 -8 0 0 2 2 -2 -2 8 -4 -4 8 -2 0 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 -4 0 -4 0 0 0 2 2 -2 -2 0 4 4 0 -2 0 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 -2 -4 0 0 0 0 -4 4 -2 2 -2 -2 4 0 4 0 2 -4 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 2 4 0 0 0 0 -4 -4 -2 -2 -2 -6 -4 0 4 0 2 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 8 -2 -8 4 8 -4 -8 8 -8 2 -2 -2 -6 0 -4 -4 8 -2 8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 8 2 8 4 8 4 8 8 8 2 2 -2 -10 -16 -4 -12 -8 -2 -8 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 -8 4 16 4 -8 -8 4 0 0 0 0 0 0 0 0 0 0 0 -8 24 8 -24 -8 -16 8 16 8 -8 0 0 4 -16 20 4 -8 -8 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 -8 -4 0 4 8 0 -4 0 0 0 0 0 0 0 0 0 0 0 -8 16 0 8 -8 0 0 -16 0 8 0 0 4 -8 -4 4 0 8 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 0 4 0 -4 0 8 -4 0 0 0 0 0 0 0 0 0 0 0 -8 8 8 -8 8 0 -8 0 -8 8 0 0 4 -8 4 -4 8 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 -8 4 -16 4 -8 8 4 0 0 0 0 0 0 0 0 0 0 0 -8 8 -8 8 -8 16 -8 16 -8 -8 0 0 4 0 -12 4 8 -8 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 -4 0 -4 0 0 4 0 0 0 0 0 0 0 0 0 0 0 -8 0 0 8 8 0 0 0 0 -8 0 0 4 0 -4 -4 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 8 4 -16 4 8 -8 4 0 0 0 0 0 0 0 0 0 0 0 -8 -8 8 8 -8 16 8 -16 8 -8 0 0 4 0 -12 4 -8 8 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 0 4 0 -4 0 -8 -4 0 0 0 0 0 0 0 0 0 0 0 -8 -8 -8 -8 8 0 8 0 8 8 0 0 4 8 4 -4 -8 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 8 -4 0 4 -8 0 -4 0 0 0 0 0 0 0 0 0 0 0 -8 -16 0 8 -8 0 0 16 0 8 0 0 4 8 -4 4 0 -8 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 8 4 16 4 8 8 4 0 0 0 0 0 0 0 0 0 0 0 -8 -24 -8 -24 -8 -16 -8 -16 -8 -8 0 0 4 16 20 4 8 8 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -16 8 16 -16 4 -8 32 0 0 -16 -32 0 0 32 0 -8 0 4 -16 16 8 -16 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 0 0 8 -4 -8 16 0 0 0 0 0 0 -16 0 8 0 4 -8 0 0 8 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 8 -16 0 4 -8 0 0 0 -16 32 0 0 0 0 -8 0 4 0 -16 8 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 -8 0 0 4 -8 0 0 0 16 0 0 0 0 0 -8 0 4 0 0 -8 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 0 0 -8 -4 -8 -16 0 0 0 0 0 0 16 0 8 0 4 8 0 0 -8 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 16 8 16 16 4 -8 -32 0 0 -16 -32 0 0 -32 0 -8 0 4 16 16 8 16 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 -8 -16 16 8 -8 -16 16 32 0 -32 -16 0 16 0 0 0 0 0 0 -8 24 -8 -16 8 0 24 -64 -8 16 24 32 -8 0 -16 0 0 0 -8 24 -16 -8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 -16 -16 8 8 -16 -16 32 0 32 -16 0 -16 0 0 0 0 0 0 -8 8 -8 16 -8 0 24 -32 8 -16 24 -32 8 0 16 0 0 0 -8 8 16 -8 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 -8 0 0 -8 8 -16 16 0 0 0 16 0 -16 0 0 0 0 0 0 -8 8 8 0 -8 0 24 -16 -8 0 -24 0 8 0 16 0 0 0 -8 8 0 8 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 0 0 -8 -8 -16 -16 0 0 0 16 0 16 0 0 0 0 0 0 -8 -8 8 0 8 0 24 16 8 0 -24 0 -8 0 -16 0 0 0 -8 -8 0 8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 -8 16 -16 8 -8 -16 16 -32 0 32 -16 0 16 0 0 0 0 0 0 -8 -8 -8 16 8 0 24 32 -8 -16 24 -32 -8 0 -16 0 0 0 -8 -8 16 -8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 16 16 8 8 -16 -16 -32 0 -32 -16 0 -16 0 0 0 0 0 0 -8 -24 -8 -16 -8 0 24 64 8 16 24 32 8 0 16 0 0 0 -8 -24 -16 -8 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 -24 24 -8 0 0 0 0 0 0 -24 48 24 -24 -48 0 24 0 0 0 0 0 0 0 0 0 0 0 0 0 24 -48 -24 48 0 24 0 -24 0 0 0 0 -8 24 -24 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 8 -8 -8 8 0 0 0 0 0 0 -24 16 8 8 16 0 -24 0 0 0 0 0 0 0 0 0 0 0 0 0 24 -16 -8 -16 0 -8 0 24 0 0 0 0 -8 8 8 0 0 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 -8 -8 0 0 0 0 0 0 -24 -16 -8 8 16 0 24 0 0 0 0 0 0 0 0 0 0 0 0 0 24 16 8 -16 0 -8 0 -24 0 0 0 0 -8 -8 8 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 8 24 24 8 0 0 0 0 0 0 -24 -48 -24 -24 -48 0 -24 0 0 0 0 0 0 0 0 0 0 0 0 0 24 48 24 48 0 24 0 24 0 0 0 0 -8 -24 -24 0 0 -8 0 0 0 0 0 0 0 16 -32 16 0 0 0 0 0 0 0 -64 0 128 0 -64 0 64 0 -128 0 0 64 0 0 0 0 0 0 0 0 32 -64 32 0 0 0 -64 128 0 0 -64 0 0 0 0 0 0 0 16 -32 0 16 0 0 0 0 0 0 0 0 0 16 0 -16 0 0 0 0 0 0 0 -64 0 0 0 64 0 64 0 0 0 0 -64 0 0 0 0 0 0 0 0 32 0 -32 0 0 0 -64 0 0 0 64 0 0 0 0 0 0 0 16 0 0 -16 0 0 0 0 0 0 0 0 0 16 32 16 0 0 0 0 0 0 0 -64 0 -128 0 -64 0 64 0 128 0 0 64 0 0 0 0 0 0 0 0 32 64 32 0 0 0 -64 -128 0 0 -64 0 0 0 0 0 0 0 16 32 0 16 0 0 0 0 0 0 0 0 0 0 0 0 16 -32 16 -32 64 -32 0 -32 32 32 -32 0 0 80 -96 -64 16 64 0 0 0 0 0 0 0 0 0 16 -32 0 16 0 0 -64 96 32 -32 0 -32 0 0 0 0 0 0 16 -32 16 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 -16 -32 0 32 0 -32 0 0 32 0 0 80 0 0 -16 -64 0 0 0 0 0 0 0 0 0 16 0 0 -16 0 0 -64 0 0 32 0 32 0 0 0 0 0 0 16 0 -16 0 0 0 0 0 0 0 0 0 0 0 0 0 16 32 16 -32 -64 -32 0 -32 -32 -32 -32 0 0 80 96 64 16 64 0 0 0 0 0 0 0 0 0 16 32 0 16 0 0 -64 -96 -32 -32 0 -32 0 0 0 0 0 0 16 32 16 0 0 0 0 0 0 0 0 32 -32 -32 32 0 -128 128 0 128 -128 0 0 192 -64 -128 0 0 0 -256 128 128 0 0 0 0 0 0 0 0 0 0 0 -64 64 0 0 0 0 160 -128 -32 0 0 0 0 0 0 0 0 0 -32 32 0 0 0 0 0 0 0 0 0 32 32 -32 -32 0 -128 -128 0 128 128 0 0 192 64 128 0 0 0 -256 -128 -128 0 0 0 0 0 0 0 0 0 0 0 -64 -64 0 0 0 0 160 128 32 0 0 0 0 0 0 0 0 0 -32 -32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -4 6 -4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -2 0 2 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 -2 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 VerticesOfPolyhedron lrslib-062/ine/test-062/normaliz/c30-15.ext.in0000600001553200155320000001116312722006616016310 0ustar avis/*c30-15.ext in normaliz format */ amb_space 15 vertices 30 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 1 3 9 27 81 243 729 2187 6561 19683 59049 177147 531441 1594323 4782969 14348907 1 4 16 64 256 1024 4096 16384 65536 262144 1048576 4194304 16777216 67108864 268435456 1073741824 1 5 25 125 625 3125 15625 78125 390625 1953125 9765625 48828125 244140625 1220703125 6103515625 30517578125 1 6 36 216 1296 7776 46656 279936 1679616 10077696 60466176 362797056 2176782336 13060694016 78364164096 470184984576 1 7 49 343 2401 16807 117649 823543 5764801 40353607 282475249 1977326743 13841287201 96889010407 678223072849 4747561509943 1 8 64 512 4096 32768 262144 2097152 16777216 134217728 1073741824 8589934592 68719476736 549755813888 4398046511104 35184372088832 1 9 81 729 6561 59049 531441 4782969 43046721 387420489 3486784401 31381059609 282429536481 2541865828329 22876792454961 205891132094649 1 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000 100000000000 1000000000000 10000000000000 100000000000000 1000000000000000 1 11 121 1331 14641 161051 1771561 19487171 214358881 2357947691 25937424601 285311670611 3138428376721 34522712143931 379749833583241 4177248169415651 1 12 144 1728 20736 248832 2985984 35831808 429981696 5159780352 61917364224 743008370688 8916100448256 106993205379072 1283918464548864 15407021574586368 1 13 169 2197 28561 371293 4826809 62748517 815730721 10604499373 137858491849 1792160394037 23298085122481 302875106592253 3937376385699289 51185893014090757 1 14 196 2744 38416 537824 7529536 105413504 1475789056 20661046784 289254654976 4049565169664 56693912375296 793714773254144 11112006825558016 155568095557812224 1 15 225 3375 50625 759375 11390625 170859375 2562890625 38443359375 576650390625 8649755859375 129746337890625 1946195068359375 29192926025390625 437893890380859375 1 16 256 4096 65536 1048576 16777216 268435456 4294967296 68719476736 1099511627776 17592186044416 281474976710656 4503599627370496 72057594037927936 1152921504606846976 1 17 289 4913 83521 1419857 24137569 410338673 6975757441 118587876497 2015993900449 34271896307633 582622237229761 9904578032905937 168377826559400929 2862423051509815793 1 18 324 5832 104976 1889568 34012224 612220032 11019960576 198359290368 3570467226624 64268410079232 1156831381426176 20822964865671168 374813367582081024 6746640616477458432 1 19 361 6859 130321 2476099 47045881 893871739 16983563041 322687697779 6131066257801 116490258898219 2213314919066161 42052983462257059 799006685782884121 15181127029874798299 1 20 400 8000 160000 3200000 64000000 1280000000 25600000000 512000000000 10240000000000 204800000000000 4096000000000000 81920000000000000 1638400000000000000 32768000000000000000 1 21 441 9261 194481 4084101 85766121 1801088541 37822859361 794280046581 16679880978201 350277500542221 7355827511386641 154472377739119461 3243919932521508681 68122318582951682301 1 22 484 10648 234256 5153632 113379904 2494357888 54875873536 1207269217792 26559922791424 584318301411328 12855002631049216 282810057883082752 6221821273427820544 136880068015412051968 1 23 529 12167 279841 6436343 148035889 3404825447 78310985281 1801152661463 41426511213649 952809757913927 21914624432020321 504036361936467383 11592836324538749809 266635235464391245607 1 24 576 13824 331776 7962624 191102976 4586471424 110075314176 2641807540224 63403380965376 1521681143169024 36520347436056576 876488338465357824 21035720123168587776 504857282956046106624 1 25 625 15625 390625 9765625 244140625 6103515625 152587890625 3814697265625 95367431640625 2384185791015625 59604644775390625 1490116119384765625 37252902984619140625 931322574615478515625 1 26 676 17576 456976 11881376 308915776 8031810176 208827064576 5429503678976 141167095653376 3670344486987776 95428956661682176 2481152873203736576 64509974703297150976 1677259342285725925376 1 27 729 19683 531441 14348907 387420489 10460353203 282429536481 7625597484987 205891132094649 5559060566555523 150094635296999121 4052555153018976267 109418989131512359209 2954312706550833698643 1 28 784 21952 614656 17210368 481890304 13492928512 377801998336 10578455953408 296196766695424 8293509467471872 232218265089212416 6502111422497947648 182059119829942534144 5097655355238390956032 1 29 841 24389 707281 20511149 594823321 17249876309 500246412961 14507145975869 420707233300201 12200509765705829 353814783205469041 10260628712958602189 297558232675799463481 8629188747598184440949 1 30 900 27000 810000 24300000 729000000 21870000000 656100000000 19683000000000 590490000000000 17714700000000000 531441000000000000 15943230000000000000 478296900000000000000 14348907000000000000000 1 SupportHyperplanes lrslib-062/ine/test-062/normaliz/fq48-19.in0000600001553200155320000000243212722006617015712 0ustar avis/* fq48-19.ine in normaliz format */ amb_space 18 inhom_inequalities 30 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 -1 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 -1 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 1 0 0 0 -1 0 0 -1 0 0 -1 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 -1 0 0 -1 0 0 0 0 0 0 0 1 0 -1 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 0 0 -1 0 0 -1 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 1 0 -1 0 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 1 0 0 0 -1 0 0 -1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 0 0 -1 0 0 0 1 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 -1 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 1 -1 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 -1 0 0 0 1 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 1 0 -1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 1 0 0 0 -1 0 0 0 0 0 0 1 0 0 0 0 -1 0 0 1 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 -1 0 0 0 0 1 0 0 0 -1 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 -1 0 1 VerticesOfPolyhedron lrslib-062/ine/test-062/normaliz/c40-20.ext.in0000600001553200155320000002627712722006616016321 0ustar avis/* c40-20.ext in normaliz format */ amb_space 20 vertices 40 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 1 3 9 27 81 243 729 2187 6561 19683 59049 177147 531441 1594323 4782969 14348907 43046721 129140163 387420489 1162261467 3486784401 1 4 16 64 256 1024 4096 16384 65536 262144 1048576 4194304 16777216 67108864 268435456 1073741824 4294967296 17179869184 68719476736 274877906944 1099511627776 1 5 25 125 625 3125 15625 78125 390625 1953125 9765625 48828125 244140625 1220703125 6103515625 30517578125 152587890625 762939453125 3814697265625 19073486328125 95367431640625 1 6 36 216 1296 7776 46656 279936 1679616 10077696 60466176 362797056 2176782336 13060694016 78364164096 470184984576 2821109907456 16926659444736 101559956668416 609359740010496 3656158440062976 1 7 49 343 2401 16807 117649 823543 5764801 40353607 282475249 1977326743 13841287201 96889010407 678223072849 4747561509943 33232930569601 232630513987207 1628413597910449 11398895185373143 79792266297612001 1 8 64 512 4096 32768 262144 2097152 16777216 134217728 1073741824 8589934592 68719476736 549755813888 4398046511104 35184372088832 281474976710656 2251799813685248 18014398509481984 144115188075855872 1152921504606846976 1 9 81 729 6561 59049 531441 4782969 43046721 387420489 3486784401 31381059609 282429536481 2541865828329 22876792454961 205891132094649 1853020188851841 16677181699666569 150094635296999121 1350851717672992089 12157665459056928801 1 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000 100000000000 1000000000000 10000000000000 100000000000000 1000000000000000 10000000000000000 100000000000000000 1000000000000000000 10000000000000000000 100000000000000000000 1 11 121 1331 14641 161051 1771561 19487171 214358881 2357947691 25937424601 285311670611 3138428376721 34522712143931 379749833583241 4177248169415651 45949729863572161 505447028499293771 5559917313492231481 61159090448414546291 672749994932560009201 1 12 144 1728 20736 248832 2985984 35831808 429981696 5159780352 61917364224 743008370688 8916100448256 106993205379072 1283918464548864 15407021574586368 184884258895036416 2218611106740436992 26623333280885243904 319479999370622926848 3833759992447475122176 1 13 169 2197 28561 371293 4826809 62748517 815730721 10604499373 137858491849 1792160394037 23298085122481 302875106592253 3937376385699289 51185893014090757 665416609183179841 8650415919381337933 112455406951957393129 1461920290375446110677 19004963774880799438801 1 14 196 2744 38416 537824 7529536 105413504 1475789056 20661046784 289254654976 4049565169664 56693912375296 793714773254144 11112006825558016 155568095557812224 2177953337809371136 30491346729331195904 426878854210636742656 5976303958948914397184 83668255425284801560576 1 15 225 3375 50625 759375 11390625 170859375 2562890625 38443359375 576650390625 8649755859375 129746337890625 1946195068359375 29192926025390625 437893890380859375 6568408355712890625 98526125335693359375 1477891880035400390625 22168378200531005859375 332525673007965087890625 1 16 256 4096 65536 1048576 16777216 268435456 4294967296 68719476736 1099511627776 17592186044416 281474976710656 4503599627370496 72057594037927936 1152921504606846976 18446744073709551616 295147905179352825856 4722366482869645213696 75557863725914323419136 1208925819614629174706176 1 17 289 4913 83521 1419857 24137569 410338673 6975757441 118587876497 2015993900449 34271896307633 582622237229761 9904578032905937 168377826559400929 2862423051509815793 48661191875666868481 827240261886336764177 14063084452067724991009 239072435685151324847153 4064231406647572522401601 1 18 324 5832 104976 1889568 34012224 612220032 11019960576 198359290368 3570467226624 64268410079232 1156831381426176 20822964865671168 374813367582081024 6746640616477458432 121439531096594251776 2185911559738696531968 39346408075296537575424 708235345355337676357632 12748236216396078174437376 1 19 361 6859 130321 2476099 47045881 893871739 16983563041 322687697779 6131066257801 116490258898219 2213314919066161 42052983462257059 799006685782884121 15181127029874798299 288441413567621167681 5480386857784802185939 104127350297911241532841 1978419655660313589123979 37589973457545958193355601 1 20 400 8000 160000 3200000 64000000 1280000000 25600000000 512000000000 10240000000000 204800000000000 4096000000000000 81920000000000000 1638400000000000000 32768000000000000000 655360000000000000000 13107200000000000000000 262144000000000000000000 5242880000000000000000000 104857600000000000000000000 1 21 441 9261 194481 4084101 85766121 1801088541 37822859361 794280046581 16679880978201 350277500542221 7355827511386641 154472377739119461 3243919932521508681 68122318582951682301 1430568690241985328321 30041942495081691894741 630880792396715529789561 13248496640331026125580781 278218429446951548637196401 1 22 484 10648 234256 5153632 113379904 2494357888 54875873536 1207269217792 26559922791424 584318301411328 12855002631049216 282810057883082752 6221821273427820544 136880068015412051968 3011361496339065143296 66249952919459433152512 1457498964228107529355264 32064977213018365645815808 705429498686404044207947776 1 23 529 12167 279841 6436343 148035889 3404825447 78310985281 1801152661463 41426511213649 952809757913927 21914624432020321 504036361936467383 11592836324538749809 266635235464391245607 6132610415680998648961 141050039560662968926103 3244150909895248285300369 74615470927590710561908487 1716155831334586342923895201 1 24 576 13824 331776 7962624 191102976 4586471424 110075314176 2641807540224 63403380965376 1521681143169024 36520347436056576 876488338465357824 21035720123168587776 504857282956046106624 12116574790945106558976 290797794982682557415424 6979147079584381377970176 167499529910025153071284224 4019988717840603673710821376 1 25 625 15625 390625 9765625 244140625 6103515625 152587890625 3814697265625 95367431640625 2384185791015625 59604644775390625 1490116119384765625 37252902984619140625 931322574615478515625 23283064365386962890625 582076609134674072265625 14551915228366851806640625 363797880709171295166015625 9094947017729282379150390625 1 26 676 17576 456976 11881376 308915776 8031810176 208827064576 5429503678976 141167095653376 3670344486987776 95428956661682176 2481152873203736576 64509974703297150976 1677259342285725925376 43608742899428874059776 1133827315385150725554176 29479510200013918864408576 766467265200361890474622976 19928148895209409152340197376 1 27 729 19683 531441 14348907 387420489 10460353203 282429536481 7625597484987 205891132094649 5559060566555523 150094635296999121 4052555153018976267 109418989131512359209 2954312706550833698643 79766443076872509863361 2153693963075557766310747 58149737003040059690390169 1570042899082081611640534563 42391158275216203514294433201 1 28 784 21952 614656 17210368 481890304 13492928512 377801998336 10578455953408 296196766695424 8293509467471872 232218265089212416 6502111422497947648 182059119829942534144 5097655355238390956032 142734349946674946768896 3996561798506898509529088 111903730358193158266814464 3133304450029408431470804992 87732524600823436081182539776 1 29 841 24389 707281 20511149 594823321 17249876309 500246412961 14507145975869 420707233300201 12200509765705829 353814783205469041 10260628712958602189 297558232675799463481 8629188747598184440949 250246473680347348787521 7257147736730073114838109 210457284365172120330305161 6103261246589991489578849669 176994576151109753197786640401 1 30 900 27000 810000 24300000 729000000 21870000000 656100000000 19683000000000 590490000000000 17714700000000000 531441000000000000 15943230000000000000 478296900000000000000 14348907000000000000000 430467210000000000000000 12914016300000000000000000 387420489000000000000000000 11622614670000000000000000000 348678440100000000000000000000 1 31 961 29791 923521 28629151 887503681 27512614111 852891037441 26439622160671 819628286980801 25408476896404831 787662783788549761 24417546297445042591 756943935220796320321 23465261991844685929951 727423121747185263828481 22550116774162743178682911 699053619999045038539170241 21670662219970396194714277471 671790528819082282036142601601 1 32 1024 32768 1048576 33554432 1073741824 34359738368 1099511627776 35184372088832 1125899906842624 36028797018963968 1152921504606846976 36893488147419103232 1180591620717411303424 37778931862957161709568 1208925819614629174706176 38685626227668133590597632 1237940039285380274899124224 39614081257132168796771975168 1267650600228229401496703205376 1 33 1089 35937 1185921 39135393 1291467969 42618442977 1406408618241 46411484401953 1531578985264449 50542106513726817 1667889514952984961 55040353993448503713 1816331681783800622529 59938945498865420543457 1977985201462558877934081 65273511648264442971824673 2154025884392726618070214209 71082854184959978396317068897 2345734188103679287078463273601 1 34 1156 39304 1336336 45435424 1544804416 52523350144 1785793904896 60716992766464 2064377754059776 70188843638032384 2386420683693101056 81138303245565435904 2758702310349224820736 93795878551873643905024 3189059870763703892770816 108428035605965932354207744 3686553210602841700043063296 125342809160496617801464152064 4261655511456885005249781170176 1 35 1225 42875 1500625 52521875 1838265625 64339296875 2251875390625 78815638671875 2758547353515625 96549157373046875 3379220508056640625 118272717781982421875 4139545122369384765625 144884079282928466796875 5070942774902496337890625 177482997121587371826171875 6211904899255558013916015625 217416671473944530487060546875 7609583501588058567047119140625 1 36 1296 46656 1679616 60466176 2176782336 78364164096 2821109907456 101559956668416 3656158440062976 131621703842267136 4738381338321616896 170581728179578208256 6140942214464815497216 221073919720733357899776 7958661109946400884391936 286511799958070431838109696 10314424798490535546171949056 371319292745659279662190166016 13367494538843734067838845976576 1 37 1369 50653 1874161 69343957 2565726409 94931877133 3512479453921 129961739795077 4808584372417849 177917621779460413 6582952005840035281 243569224216081305397 9012061295995008299689 333446267951815307088493 12337511914217166362274241 456487940826035155404146917 16890053810563300749953435929 624931990990842127748277129373 23122483666661158726686253786801 1 38 1444 54872 2085136 79235168 3010936384 114415582592 4347792138496 165216101262848 6278211847988224 238572050223552512 9065737908494995456 344498040522809827328 13090925539866773438464 497455170514937390661632 18903296479567620845142016 718325266223569592115396608 27296360116495644500385071104 1037261684426834491014632701952 39415944008219710658556042674176 1 39 1521 59319 2313441 90224199 3518743761 137231006679 5352009260481 208728361158759 8140406085191601 317475837322472439 12381557655576425121 482880748567480579719 18832349194131742609041 734461618571137961752599 28644003124274380508351361 1117116121846700839825703079 43567528752021332753202420081 1699133621328831977374894383159 66266211231824447117620880943201 1 40 1600 64000 2560000 102400000 4096000000 163840000000 6553600000000 262144000000000 10485760000000000 419430400000000000 16777216000000000000 671088640000000000000 26843545600000000000000 1073741824000000000000000 42949672960000000000000000 1717986918400000000000000000 68719476736000000000000000000 2748779069440000000000000000000 109951162777600000000000000000000 1 SupportHyperplanes lrslib-062/ine/test-062/normaliz/m6.in0000600001553200155320000000531712722006616015227 0ustar avis/*m6.ine in normaliz format */ amb_space 15 inhom_inequalities 80 -1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 -1 0 0 0 0 0 0 0 0 0 2 -1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 0 -1 0 -1 0 0 0 -1 0 0 0 0 0 0 0 0 2 -1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 -1 0 0 -1 0 0 0 -1 0 0 0 0 0 0 0 2 -1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 -1 0 0 0 -1 0 0 0 -1 0 0 0 0 0 0 2 0 -1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 -1 0 0 0 0 0 2 0 -1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 0 -1 0 0 0 0 0 0 -1 0 0 0 0 2 0 -1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 -1 0 0 -1 0 0 0 0 0 0 -1 0 0 0 2 0 0 -1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 -1 0 0 2 0 0 -1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 -1 0 -1 0 0 0 0 0 0 0 0 -1 0 2 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 -1 2 0 0 0 0 0 -1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 -1 0 0 0 0 0 2 0 0 0 0 0 -1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0 -1 0 0 -1 0 0 0 0 2 0 0 0 0 0 -1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 -1 0 0 0 0 0 0 0 0 0 -1 0 0 -1 0 0 -1 0 0 0 2 0 0 0 0 0 0 -1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 -1 0 0 2 0 0 0 0 0 0 -1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 -1 0 0 0 0 0 0 0 0 -1 0 -1 0 0 0 0 -1 0 2 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 -1 2 0 0 0 0 0 0 0 0 0 -1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 -1 0 0 2 0 0 0 0 0 0 0 0 0 -1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 0 -1 0 -1 0 2 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 -1 2 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 2 VerticesOfPolyhedron lrslib-062/ine/test-062/normaliz/mit.in0000600001553200155320000005043512722006617015500 0ustar avisamb_space 8 inhom_inequalities 729 0 0 -4 -4 -2 0 0 0 72 -2 -2 -10 -12 -6 0 0 0 216 -4 -2 -8 -8 -8 0 0 0 192 -12 6 8 -16 -8 0 0 0 288 -4 2 0 -4 -4 0 0 0 96 -5 1 -4 -6 -6 0 0 0 144 -8 -2 -10 -12 -12 0 0 0 288 -4 2 -4 -2 -4 0 0 0 96 -7 -1 -10 -8 -10 0 0 0 240 -8 -2 -12 -8 -12 0 0 0 288 -8 -2 -8 -16 -8 0 0 0 288 -4 2 -8 0 0 0 0 0 96 0 6 -8 4 8 0 0 0 0 4 6 -8 0 8 0 0 0 0 2 2 -4 -2 2 0 0 0 24 -24 -6 -40 -16 -32 0 0 0 864 0 0 -2 -2 2 0 0 0 24 4 10 -16 0 24 0 0 0 0 1 1 -4 0 12 0 0 0 0 0 6 -16 8 40 0 0 0 0 -4 2 -16 16 32 0 0 0 96 -8 -2 -16 0 0 0 0 0 288 -4 2 8 -8 8 0 0 0 96 -8 -2 8 -24 24 0 0 0 288 0 2 -8 8 24 0 0 0 0 -1 -1 -4 -8 8 0 0 0 96 -12 -6 -16 -40 16 0 0 0 576 -4 -2 0 -16 16 0 0 0 192 -8 -6 -24 -32 -16 0 0 0 576 -12 -6 -20 -32 -16 0 0 0 576 -16 -10 -40 -56 -16 0 0 0 960 0 0 -7 -7 -6 -1 0 -1 160 -4 -4 -21 -21 -18 -1 0 -3 480 -4 -4 -12 -4 -8 4 2 -4 192 -16 -8 -28 -28 -24 4 2 -4 640 -8 -6 -28 -28 -24 0 0 -4 640 -8 0 -8 -8 -8 4 2 0 192 -12 -4 -16 -16 -16 4 2 0 384 -20 -12 -42 -42 -36 4 2 -6 960 -9 -1 -11 -9 -10 3 2 -1 240 2 2 4 0 0 -4 -2 0 0 -22 -4 -24 -28 -24 8 4 -4 640 -60 -20 -76 -84 -72 20 10 -12 1920 -32 -22 -84 -84 -72 4 2 -12 1920 -28 -10 -44 -36 -40 8 4 -4 960 -36 -12 -52 -44 -48 12 6 -4 1152 -23 -7 -33 -27 -30 7 4 -3 720 -48 -24 -88 -72 -80 12 6 -8 1920 -96 -40 -160 -128 -144 28 14 -16 3456 -15 -7 -26 -20 -24 4 2 -4 576 -12 -4 -20 -12 -16 4 2 0 384 -11 -3 -17 -11 -14 3 2 -1 336 -8 0 -12 -4 -8 4 2 0 192 0 0 -4 4 0 4 2 0 0 0 2 -8 8 0 8 4 -2 0 -12 12 -28 12 -8 20 10 -4 192 -12 12 -20 4 -8 12 6 -2 192 -48 -24 -92 -60 -80 12 6 -4 1920 -15 -7 -28 -18 -24 4 2 -2 576 -42 -18 -76 -40 -64 12 6 -8 1536 -12 -4 -20 4 -16 4 2 -4 384 -60 -20 -102 18 -76 14 10 -18 1920 -60 -20 -102 -46 -76 14 10 -2 1920 -22 -6 -37 -17 -26 5 4 -1 672 -22 -4 -36 -16 -24 4 4 0 640 -40 0 -64 -16 -32 8 10 0 960 -4 4 -8 0 0 0 2 0 64 0 8 -6 2 4 -2 2 0 0 8 18 -8 0 8 -8 2 0 0 36 60 -28 -4 24 -28 6 -4 64 28 36 -20 -12 8 -20 2 -4 192 4 4 -5 -5 -2 -3 0 -1 96 4 6 -4 -4 0 -4 0 0 64 0 0 -5 -5 -2 -1 0 -1 96 0 0 -1 -1 0 0 0 0 16 -6 0 -8 12 -8 0 0 -4 192 -6 0 -8 -4 -8 0 0 0 192 -30 -8 -48 -20 -40 8 4 -4 960 -32 -8 -52 -20 -40 12 6 -4 960 -32 -8 -52 44 -40 12 6 -20 960 -30 -8 -48 12 -40 8 4 -12 960 -16 -6 -28 -12 -24 4 2 -4 576 -8 0 -8 -8 -8 4 2 -2 208 -7 1 -5 -7 -6 3 2 -1 160 -12 12 0 -8 -8 8 6 0 192 -9 7 -1 -7 -6 5 4 -1 160 -20 -4 -20 -28 -24 4 2 -4 640 -5 3 -2 -4 -4 2 2 0 96 -6 0 -4 -8 -8 0 0 0 192 -18 -2 -17 -21 -18 7 4 -3 480 -19 -3 -20 -22 -20 8 4 -4 528 -30 -4 -32 -36 -40 4 2 -4 960 -36 -4 -32 -40 -48 0 2 -8 1152 -36 -12 -48 -40 -48 8 6 -8 1152 -8 0 -4 -4 -8 4 2 -4 192 -6 0 0 -4 -8 0 0 -4 192 -12 -4 -8 -8 -16 4 2 -8 384 -48 -24 -48 -40 -80 12 6 -40 1920 -16 2 -20 -12 -16 4 4 0 384 -24 0 -32 -16 -24 8 6 0 576 -17 -1 -23 -13 -18 5 4 -1 432 -28 12 -36 -12 -24 12 10 -4 576 -52 36 -92 12 -40 52 26 -12 960 0 4 -14 10 4 6 6 -2 0 -72 -32 -120 -104 -112 16 10 -8 2688 0 8 -20 12 56 -12 2 -4 0 -4 4 -16 8 24 -4 2 0 64 -8 0 -16 0 0 0 2 0 192 8 16 -20 -4 24 -12 2 -4 64 2 4 -4 0 8 -4 0 0 0 -13 3 -12 -10 -12 6 4 -2 288 -14 2 -15 -11 -14 7 4 -3 336 3 1 -8 -6 4 0 0 -2 96 12 0 -20 -12 8 4 2 -4 192 4 8 -6 2 4 -2 2 -2 0 -12 12 -28 28 -8 20 10 -12 192 0 0 -4 16 0 4 2 -6 0 0 0 -4 40 0 4 2 -12 0 -8 0 -12 44 -8 4 2 -12 192 0 2 0 32 0 0 0 -8 0 -12 12 -20 300 -8 12 6 -76 192 -40 0 -64 208 -32 8 10 -56 960 -72 -16 -120 120 -80 16 14 -48 2112 -16 -4 -26 6 -20 2 2 -6 512 -16 -4 -26 -10 -20 2 2 -2 512 -16 0 -24 -8 -16 0 2 0 448 24 8 -68 -20 56 12 6 -20 448 8 2 -24 -8 16 4 2 -8 192 16 0 -36 -4 24 12 6 -12 192 -13 -5 -23 -13 -18 3 2 -1 448 -2 0 -4 0 0 0 0 0 64 2 -2 -4 4 0 4 2 -2 0 0 0 -22 22 4 14 10 0 0 0 0 -22 82 4 14 10 -30 0 0 4 -14 34 4 6 6 -14 0 -21 3 -20 -18 -20 8 6 -2 480 -19 1 -16 -18 -20 4 4 -2 480 -52 0 -44 -52 -56 12 10 -4 1344 -22 0 -12 -24 -24 4 4 0 576 -28 -4 -24 -32 -32 8 6 0 768 -28 -4 40 -32 -32 -8 6 0 768 -22 0 20 -24 -24 -4 4 0 576 -12 0 10 -14 -12 -2 2 -2 320 -7 1 3 -7 -6 1 2 -1 160 2 2 -12 8 16 4 2 -4 0 22 14 -52 16 80 12 6 -16 0 32 16 -68 -4 88 12 6 -20 192 18 10 -36 -8 48 4 2 -8 128 8 8 -20 -4 24 -4 2 -4 64 4 2 -4 4 8 0 0 -4 0 4 8 -14 2 20 -4 2 -2 0 1 7 -11 3 14 -3 2 -1 0 0 8 -12 4 16 -4 2 0 0 4 12 -20 4 32 -8 2 0 0 0 24 -44 20 64 -16 6 0 0 0 4 -10 6 12 -2 2 -2 0 14 22 -44 8 64 -12 6 -8 0 6 10 -18 2 28 -6 2 -2 0 28 36 -52 -12 72 -36 2 -12 192 3 3 -8 -6 4 -4 0 -2 96 1 1 -2 0 4 0 0 0 0 0 12 -10 6 12 -6 2 -2 0 0 0 -3 -3 2 -1 0 -1 48 16 24 -44 -12 72 -28 2 -12 192 4 12 -14 2 20 -8 2 -2 0 1 9 -11 3 14 -5 2 -1 0 32 40 -68 -4 88 -36 6 -20 192 1 1 -3 -1 6 -1 0 -1 16 4 6 -12 -4 24 -8 0 -4 64 4 12 -20 4 40 -12 2 -4 0 0 10 -16 8 24 -8 2 0 0 -12 12 -40 16 32 -8 6 0 192 0 24 -34 14 44 -14 6 -2 0 -4 4 -16 8 16 0 2 0 64 0 8 -20 12 32 0 2 0 0 0 4 -14 10 20 2 2 -2 0 0 2 -2 2 4 -2 0 0 0 0 24 -44 20 72 -20 6 -4 0 0 24 -60 36 104 -4 6 -4 0 6 10 -16 4 24 -8 2 -4 0 1 1 -1 1 2 -1 0 -1 0 6 18 -16 4 24 -12 2 -4 0 0 -2 -20 -20 -8 0 0 -4 384 -12 -4 -12 -20 -8 4 2 -4 384 -16 -8 -20 -36 -8 4 2 -4 640 -20 -12 -32 -56 -8 4 2 -4 960 -1 -1 -4 -6 0 0 0 0 96 -6 -14 -60 -80 0 -4 2 0 1280 -2 -10 -52 -64 0 -4 2 0 1024 -12 -12 -48 -56 -16 0 2 -8 1024 8 -4 -24 -24 0 0 2 0 384 4 -4 -16 -16 0 2 2 0 256 0 -16 -56 -56 -16 8 6 -8 1024 0 -16 -52 -52 -16 12 6 -8 960 -96 -72 -280 -280 -240 8 6 -40 6400 -16 -12 -42 -42 -36 2 2 -6 960 -48 -40 -168 -168 -144 0 2 -24 3840 -72 -48 -178 -178 -148 10 6 -26 4032 -20 -14 -52 -52 -40 4 2 -8 1152 2 -2 0 0 0 2 2 0 0 -6 0 12 -8 -8 -4 0 0 192 -4 -4 -8 -8 -8 4 2 0 192 -176 -88 -288 -288 -288 40 26 0 6912 -48 -24 -80 -80 -80 10 6 0 1920 -12 -10 -24 -24 -24 6 4 0 576 -168 -64 -264 -216 -240 48 26 -24 5760 -48 24 -36 -36 -40 20 18 -4 960 -44 12 -28 -36 -40 12 14 -4 960 -12 12 4 -4 -8 4 6 -4 192 -56 48 -20 -36 -40 28 26 -4 960 -20 0 -4 -28 -24 -2 0 -4 640 -24 0 -28 -12 -24 4 6 -4 576 0 0 4 8 0 -2 0 -4 0 -6 0 -4 12 -8 -4 0 -6 192 -30 0 -32 -12 -40 -8 0 -6 960 -32 0 -36 -20 -40 -4 2 -4 960 -20 0 -28 -4 -24 -4 0 -2 640 0 20 -4 12 8 -12 0 -2 0 0 0 -1 -1 6 -1 0 -1 16 -23 -3 -25 -27 -30 3 2 -3 720 -21 -1 -27 -17 -26 1 2 -1 624 -26 0 -32 -20 -32 0 2 0 768 -62 0 -80 -44 -64 16 14 0 1536 -42 -12 -64 -44 -56 12 6 -4 1344 -90 -28 -128 -108 -120 28 14 -12 2880 -30 0 -12 -32 -40 -6 0 -8 960 -30 0 -24 -28 -32 6 6 -4 768 -24 0 -20 -20 -24 8 6 -4 576 -24 0 -15 -23 -22 9 6 -5 576 -8 0 12 -4 -8 -4 2 -4 192 0 2 -4 4 8 0 0 0 0 0 0 -8 8 8 4 2 0 0 -12 12 -76 76 88 20 10 -12 192 0 6 -28 28 40 8 4 -6 0 -15 -7 -29 -15 -22 3 2 -1 576 -13 -5 -25 -7 -14 3 2 -1 448 -14 -6 -26 -14 -20 4 2 -2 512 -13 -5 -23 -5 -18 3 2 -3 448 -6 -4 -16 -20 -8 0 0 -4 384 6 8 -16 4 40 -4 0 -4 0 8 8 -24 8 48 0 2 -8 0 -1 -1 0 -6 36 -4 0 -6 96 -4 -4 12 -12 72 -4 2 -12 192 0 0 -6 6 4 2 2 0 0 -12 -4 -22 -6 -12 2 2 0 384 -31 -15 -59 -37 -50 7 4 -3 1216 -20 -16 -42 -42 -36 10 6 -6 960 -72 -20 -112 -64 -96 16 10 -8 2304 -42 -12 -64 -36 -56 8 6 -6 1344 -36 -12 -56 -32 -48 8 6 -4 1152 -12 -4 -16 -8 -16 0 2 0 384 -6 0 -4 0 -8 -4 0 0 192 -26 -10 -43 -31 -38 5 4 -1 912 -27 -11 -46 -32 -40 6 4 -2 960 -39 -15 -66 -44 -56 10 6 -4 1344 -120 -48 -200 -152 -176 32 18 -16 4224 -132 -60 -240 -168 -208 32 18 -16 4992 -96 -40 -168 -104 -144 24 14 -16 3456 -76 -28 -128 -72 -112 16 10 -16 2688 -29 -9 -46 -28 -40 6 4 -4 960 2 -2 12 0 0 -4 2 0 0 -20 -20 134 -42 -36 -38 10 -6 960 -60 -20 148 -84 -72 -36 10 -12 1920 -68 -12 100 -84 -72 -20 14 -12 1920 -12 0 -6 -14 -12 2 2 -2 320 -40 0 -26 -42 -36 18 10 -6 960 -12 -8 -22 -30 -12 2 2 -6 576 -12 -10 -8 -24 -24 -2 4 0 576 -56 -32 -80 -96 -96 8 10 0 2304 -20 -20 -38 -42 -36 20 10 -6 960 -6 0 -4 -4 -8 -2 0 -2 192 0 0 1 1 2 -1 0 -1 0 -8 0 -4 28 -8 -4 2 -12 192 -8 0 -4 60 -8 -4 2 -20 192 0 2 -4 4 16 -4 0 0 0 -28 -20 -80 -88 -48 0 2 -16 1792 -3 -3 -18 -20 -8 -2 0 -4 384 -204 -100 -384 -264 -336 48 26 -24 8064 -48 -24 -88 -56 -80 8 6 -8 1920 -12 -4 -16 8 -16 0 2 -8 384 -12 12 -12 -4 -8 4 6 0 192 -12 12 -12 12 -8 4 6 -8 192 -12 12 4 60 -8 -12 6 -28 192 0 0 -8 8 16 0 2 0 0 -4 -2 -4 -4 -8 0 0 -4 192 -4 -4 16 -12 0 -4 2 0 192 -20 -12 40 -48 0 -8 6 0 768 -14 -6 20 -32 0 -4 2 0 512 -2 0 0 -4 0 0 0 0 64 -60 12 -68 -44 -56 20 18 -4 1344 -92 12 -116 -60 -88 28 26 -4 2112 -44 12 -52 -28 -40 12 14 0 960 -48 -24 -72 -56 -80 8 6 -24 1920 -5 3 -4 -2 -4 0 2 0 96 0 2 -8 24 0 8 4 -10 0 4 4 -16 8 112 -16 2 -8 0 -12 -4 -24 0 0 0 2 0 384 2 -2 -4 16 0 4 2 -8 0 -4 4 -20 20 24 4 2 -2 64 -6 2 -20 16 16 4 2 -2 128 -8 0 -20 12 8 4 2 0 192 -4 0 -14 10 8 4 2 -2 96 -20 4 -76 60 56 20 10 -12 448 -4 -2 -4 -12 8 0 0 -4 192 -12 -4 0 -24 16 4 2 -8 384 -8 0 4 -12 8 4 2 -4 192 12 20 -20 -12 8 -12 2 -4 192 12 4 -20 -12 8 -4 2 -4 192 76 20 -84 -12 72 -4 18 -12 192 20 12 -28 -4 24 -4 6 -4 64 20 44 -28 -4 24 -20 6 -4 64 12 36 -22 2 20 -14 6 -2 0 4 10 -8 0 8 -4 2 0 0 4 6 -8 0 8 -2 2 0 0 4 0 -6 2 4 2 2 -2 0 0 4 -6 2 4 0 2 0 0 4 2 -12 -12 0 -4 0 0 192 8 8 -16 0 24 -4 2 0 0 20 4 -28 -4 24 4 6 -4 64 20 4 -24 0 24 4 6 0 0 8 0 -8 0 8 4 2 0 0 5 -1 -6 2 4 4 2 -2 0 24 0 -28 -4 24 12 6 -4 64 46 -10 -42 -6 36 18 14 -6 96 18 -6 -14 -2 12 10 6 -2 32 112 -40 -84 -12 72 76 38 -12 192 6 -2 -4 0 4 4 2 0 0 0 0 0 16 0 0 2 -8 0 -12 12 4 28 -8 4 6 -20 192 -40 0 38 -42 -36 2 10 -6 960 -40 8 -20 -36 -40 4 10 -4 960 -8 2 0 -8 -8 0 2 0 192 -18 6 -4 -16 -16 4 6 0 384 -8 0 8 -8 -8 0 2 0 192 -20 20 10 -14 -12 14 10 -2 320 -8 -6 -20 -36 24 -4 0 -12 576 -1 -1 -4 -6 4 0 0 -2 96 16 -8 -20 -12 8 12 6 -4 192 12 -20 -60 -52 -8 20 10 -12 960 -12 -8 -26 -26 -20 4 2 -4 576 -48 -24 -68 -100 -40 12 6 -20 1920 -16 -8 -32 -16 -24 4 2 0 640 -12 -4 -24 0 -8 4 2 0 384 -8 0 -36 44 24 12 6 -12 192 -8 0 -36 76 24 12 6 -20 192 -6 2 -20 40 16 4 2 -8 128 -4 4 -20 60 24 4 2 -12 64 0 2 -4 20 8 0 0 -4 0 -21 -5 -34 -16 -24 4 4 0 624 -12 -4 -20 -12 -16 2 2 0 400 1 -1 -10 -12 0 -2 0 0 192 -16 -8 -8 -40 48 0 2 -16 640 -48 -24 -24 -120 80 8 6 -40 1920 8 8 -22 -6 36 -10 2 -6 96 8 8 -16 0 32 -8 2 0 0 -72 -16 -120 -40 -80 16 14 -8 2112 -100 -36 -160 -120 -144 24 14 -16 3456 -36 -12 -59 -27 -46 7 6 -3 1152 -48 -24 -96 -32 -64 8 6 0 1920 -16 -8 -32 0 0 0 2 0 640 -2 -2 -11 -15 10 -3 0 -5 240 -20 -12 -32 -56 16 0 2 -16 960 -48 -24 216 -80 -80 -64 6 0 1920 -12 -4 32 -16 -16 -8 2 0 384 -10 0 18 -14 -12 -6 0 -2 320 -6 0 20 -4 -8 -8 0 -4 192 -10 0 -14 18 -12 -2 0 -6 320 -1 1 -4 6 20 -4 0 -2 32 -8 0 -16 32 0 0 2 -8 192 -8 0 -20 28 8 4 2 -4 192 0 0 -8 28 8 4 2 -8 0 0 0 -6 34 4 2 2 -10 0 -12 -4 -22 2 -12 2 2 -2 384 -12 12 28 -12 8 12 6 -4 192 -24 0 -8 -24 -16 8 6 -8 576 -8 0 -2 -10 -4 4 2 -2 192 0 -8 -40 -40 -16 0 2 -8 768 0 -56 -200 -200 -80 24 18 -40 3840 0 -6 -20 -20 -8 4 2 -4 384 -12 -10 -36 -36 -24 4 2 -6 768 -8 0 -20 28 88 -12 2 -4 192 -4 4 -20 52 200 -28 2 -12 64 0 8 -24 72 336 -48 2 -24 0 1 1 -2 4 40 -6 0 -4 0 0 2 -4 12 48 -8 0 -4 0 -4 -20 -88 -112 0 -8 6 0 1792 4 -12 -40 -48 0 0 6 0 768 0 -4 -10 -10 -4 2 2 -2 192 -5 3 1 -5 -2 3 2 -1 96 6 -2 -10 -6 4 2 2 -2 96 9 -11 -35 -29 -2 9 6 -7 528 38 -18 -50 -30 20 22 14 -10 480 12 -12 -40 -40 0 8 6 0 640 -3 3 -14 8 24 -4 2 0 48 2 -6 -20 -24 144 4 2 -24 384 -4 -2 -6 -10 -4 0 0 -2 192 -24 -16 -56 -72 -16 0 2 -16 1344 -60 -36 -112 -152 -56 12 6 -28 2880 -24 -16 -56 -72 -24 4 2 -12 1344 -6 -6 -12 -24 0 0 2 0 384 -4 4 4 -4 0 4 2 0 64 -12 -4 48 -8 -16 -16 2 -8 384 -6 0 12 -4 -8 -6 0 -4 192 -18 0 -23 -3 -22 -5 0 -3 576 0 0 -22 194 4 14 10 -58 0 -4 4 -8 96 0 0 2 -24 64 0 10 -2 154 4 -6 0 -38 0 -12 -4 16 -24 80 0 2 -16 384 -2 0 8 -4 24 0 0 -4 64 -12 -4 48 -24 144 0 2 -24 384 -8 0 4 -12 0 4 2 0 192 -12 -4 16 -24 16 0 2 -8 384 0 6 1 9 2 -5 0 -3 0 0 2 4 16 0 -4 0 -6 0 -56 8 -60 -44 -56 12 14 -4 1344 -4 -2 32 -4 -8 -12 0 -4 192 -48 -24 296 -40 -80 -104 6 -40 1920 -4 -2 24 -8 -8 -8 0 0 192 -20 -10 114 -42 -36 -38 0 -6 960 -16 -8 68 -28 -24 -20 2 -4 640 10 2 -12 0 160 -20 2 0 0 3 -1 -6 4 40 -2 2 -4 0 8 -8 -24 24 80 8 10 -8 0 116 -36 -80 0 80 64 38 0 0 136 -56 -120 40 80 104 58 -40 0 14 -6 -12 4 8 12 6 -4 0 10 -6 -12 8 16 12 6 -8 0 8 -8 -20 -4 88 12 6 -20 192 0 -16 -52 -52 248 12 6 -52 960 0 2 -4 20 80 -12 0 -4 0 -2 0 -4 8 24 -4 0 0 64 -40 -20 -68 -84 -72 -2 0 -12 1920 -12 -6 -19 -23 -22 -1 0 -5 576 -48 -24 -72 -72 -80 4 6 -8 1920 -4 -4 4 -4 -8 -4 2 -4 192 -68 -12 -60 -84 -72 20 14 -12 1920 1 1 -2 4 24 -4 0 -4 0 0 2 -4 12 32 -6 0 -4 0 -4 4 -20 52 72 -12 2 -12 64 -8 0 -20 28 24 -4 2 -4 192 -16 0 -36 28 56 -12 2 -4 448 -8 -4 -2 -18 12 2 2 -6 288 -4 -4 12 -12 8 -4 2 -4 192 -12 12 14 -10 -4 10 6 -2 192 -8 0 36 -12 72 4 2 -12 192 -24 -16 -36 -84 120 -12 2 -36 1344 -20 -12 -20 -60 72 -4 2 -24 960 -16 -8 -20 -36 0 4 2 -8 640 -12 -8 -18 -34 -4 2 2 -2 576 -4 -4 -4 -12 0 4 2 0 192 -4 -4 -6 -10 -4 4 2 -2 192 -4 -4 36 -4 -8 -12 2 -4 192 -4 -4 28 -8 -8 -8 2 0 192 -4 -4 4 -8 -8 -2 2 0 192 -20 -20 22 -42 -36 -10 10 -6 960 -12 -4 16 -8 -16 -8 2 -8 384 -12 -6 0 -16 -24 -10 0 -8 576 -48 -24 -24 -56 -80 -16 6 -24 1920 -48 -24 72 -40 -80 -48 6 -40 1920 -4 -2 8 -4 -8 -6 0 -4 192 -12 -6 -15 -23 -22 -3 0 -5 576 0 0 -8 24 80 -8 2 -8 0 -4 4 -20 20 72 -12 2 -4 64 -8 0 -20 12 24 -4 2 0 192 -6 0 -12 8 8 -4 0 0 192 0 0 -8 24 16 0 2 -8 0 0 2 -4 20 16 -4 0 -4 0 0 2 -4 12 24 -4 0 -4 0 -4 0 -14 10 20 -2 2 -2 96 -4 4 -20 52 40 -4 2 -12 64 -12 12 -60 188 152 -28 6 -36 192 -4 -2 -4 -12 0 0 0 0 192 16 24 -52 12 120 -12 2 -12 0 0 14 -18 6 20 -6 4 0 0 -8 -8 -20 -36 24 -4 2 -12 576 -16 -8 24 -40 48 -8 2 -16 640 -6 0 8 -12 8 0 0 -4 192 -20 -4 16 -40 48 0 2 -16 640 -20 -12 -4 -60 168 -12 2 -36 960 -16 -8 24 -40 176 -8 2 -32 640 -16 -8 56 -40 240 -8 2 -40 640 -20 -12 28 -60 296 -20 2 -52 960 -4 -2 12 -12 72 -4 0 -12 192 -48 -24 156 -100 -40 -44 6 -20 1920 -12 -4 20 -20 -8 -4 2 -4 384 -8 0 6 -10 -4 2 2 -2 192 0 0 8 4 0 -4 0 -2 0 -12 12 4 12 -8 -12 6 -4 192 -8 0 -4 4 -8 -4 2 0 192 -6 0 -4 20 -8 -4 0 -8 192 3 11 -9 1 10 -5 2 -1 0 -12 -6 -16 -16 -24 -2 0 -8 576 -48 -24 -48 -112 32 8 6 -32 1920 -16 -8 -8 -40 16 0 2 -8 640 -12 -12 -52 -60 -24 -4 2 -12 1152 -60 -36 -112 -152 -48 8 6 -32 2880 8 16 -36 12 120 -28 2 -12 0 2 4 -8 4 40 -8 0 -4 0 0 4 -16 16 48 -8 2 -4 0 4 4 -16 8 48 -8 2 -8 0 -6 2 -2 -6 -4 2 2 0 128 -7 1 1 -9 -2 3 2 -1 160 -8 -4 -2 -18 0 2 2 0 288 -20 -12 8 -48 0 0 6 0 768 8 0 0 0 96 -16 2 0 0 4 -4 12 -12 72 -20 2 -12 192 6 -2 12 0 48 -12 2 0 0 12 -4 -8 0 96 -8 6 0 0 16 -16 -12 -12 72 4 14 -12 192 14 -10 -4 0 48 4 10 0 0 -16 -8 32 -40 0 -8 2 0 640 -48 -24 104 -120 80 -24 6 -40 1920 -48 -24 116 -108 8 -36 6 -28 1920 -16 -8 24 -40 16 -8 2 -8 640 -4 -2 12 -12 8 -4 0 -4 192 -4 -2 13 -11 2 -5 0 -3 192 -12 -6 28 -36 16 -12 0 -8 576 -4 -2 12 -12 0 -4 0 0 192 -4 -2 18 -10 -4 -6 0 -2 192 -12 -4 16 -24 0 0 2 0 384 -12 -4 0 -24 0 4 2 0 384 -48 -24 -56 -56 -80 -8 6 -8 1920 20 4 -24 0 288 -40 6 0 0 2 0 4 0 8 -4 0 0 0 10 -6 -4 0 16 4 6 0 0 14 -6 -8 0 8 8 6 0 0 20 -4 -16 0 16 8 6 0 0 8 2 -8 0 8 0 2 0 0 32 0 -32 0 32 8 10 0 0 19 -1 -21 -3 18 5 6 -3 48 -18 -14 -50 -62 -20 2 2 -10 1152 2 -2 -2 2 4 2 2 -2 0 -4 -2 4 -12 40 -4 0 -8 192 -4 -2 4 -12 24 -4 0 -6 192 -3 -1 2 -8 16 -2 0 -4 128 -4 4 -20 20 40 -4 2 -4 64 -12 12 -52 36 104 -20 6 -4 192 0 6 -12 20 40 -8 0 -4 0 -12 -4 -24 32 64 -8 2 0 384 0 0 -6 18 4 2 2 -6 0 0 0 -8 20 8 4 2 -6 0 0 8 -24 40 208 -32 2 -16 0 0 8 -24 40 144 -24 2 -16 0 0 8 -24 40 112 -16 2 -16 0 -8 0 -20 60 152 -20 2 -4 192 -4 4 -20 84 264 -36 2 -12 64 -16 -12 -26 -42 -36 -6 2 -6 960 -20 -12 -34 -42 -36 0 2 -6 960 -20 -16 -18 -42 -36 -2 6 -6 960 -8 -8 -20 -36 88 -4 2 -20 576 132 -60 -84 -12 72 76 58 -12 192 20 -12 -20 -12 8 12 10 -4 192 3 -3 -6 -6 0 2 2 0 96 16 -16 -48 -48 0 8 10 0 768 -1 -1 0 -6 20 -4 0 -4 96 3 5 -10 8 72 -14 0 -8 0 4 12 -32 24 176 -32 2 -16 0 -12 12 -60 60 152 -28 6 -4 192 -12 12 -76 76 184 -28 10 -12 192 0 0 0 48 0 0 2 -16 0 -12 -8 -12 -36 24 0 2 -12 576 -4 -4 -4 -12 8 4 2 -4 192 0 12 -32 32 96 -16 2 -8 0 24 -8 -24 8 16 16 10 -8 0 52 -28 -64 40 80 48 30 -40 0 -12 12 20 156 -8 -28 6 -60 192 -12 12 20 380 -8 -28 6 -116 192 0 2 4 40 0 -4 0 -12 0 0 6 8 24 0 -8 0 -10 0 0 8 -36 28 152 -20 6 -4 0 -2 2 -12 8 32 -4 2 0 32 0 2 4 4 0 -4 0 0 0 0 6 8 8 0 -8 0 -2 0 0 6 1 5 2 -5 0 -1 0 -16 -12 -48 -48 -32 4 2 -8 1024 -23 -15 -55 -57 -42 3 2 -9 1248 -24 -16 -58 -66 -36 2 2 -12 1344 -21 -13 -45 -51 -30 3 2 -9 1056 -20 -12 -40 -48 -24 4 2 -8 960 0 8 -24 24 112 -20 2 -8 0 4 12 -32 24 144 -24 2 -16 0 0 8 -24 24 80 -12 2 -8 0 8 0 -8 24 80 -8 2 -24 0 6 -2 -4 16 48 4 2 -16 0 14 -10 -20 16 48 20 10 -16 0 20 -12 -32 24 80 16 14 -24 0 14 -2 -20 8 16 12 6 -8 0 12 -4 -16 8 16 8 6 -8 0 2 0 0 4 8 0 0 -4 0 4 -4 -12 -4 88 4 2 -20 192 1 -3 -4 -6 36 0 2 -6 96 4 -12 -4 -12 72 12 10 -12 192 -4 -4 22 -10 -4 -6 2 -2 192 -28 -16 -54 -62 -44 2 2 -10 1344 -36 -28 -120 -144 -32 -8 2 -32 2688 -8 -6 -28 -36 0 -4 0 -8 640 -1 -1 -5 -7 2 -1 0 -1 112 2 2 -7 -3 18 -5 0 -3 48 1 1 -2 0 8 -2 0 0 0 12 20 -48 24 240 -48 2 -24 0 -80 -56 -216 -216 -176 8 6 -32 4864 -32 -24 -104 -104 -80 0 2 -16 2304 -24 -14 -44 -60 -24 4 2 -12 1152 -6 -4 -12 -24 24 -4 0 -8 384 -28 -20 -64 -104 48 -8 2 -32 1728 -24 -16 -36 -84 88 -12 2 -28 1344 8 -8 -12 -12 8 4 6 -4 192 48 -32 -28 -12 72 20 30 -12 192 -48 -24 -44 -108 8 4 6 -28 1920 -20 -12 -20 -60 40 -4 2 -16 960 -28 -16 -28 -84 40 -4 2 -20 1344 -14 -8 -20 -48 24 -4 0 -12 768 -32 -24 -68 -132 152 -20 2 -52 2112 -4 -2 -3 -11 2 -1 0 -3 192 -12 -6 -4 -36 16 -4 0 -8 576 -4 -2 4 -12 16 -4 0 -4 192 -36 -18 -59 -75 -62 -3 0 -13 1728 4 -4 -12 -12 0 4 2 0 192 -1 -1 -3 -5 -2 -1 0 -1 96 0 -2 -4 -12 0 -4 0 0 192 -36 -28 -96 -152 16 -8 2 -16 2496 -12 -12 -36 -60 8 -4 2 -4 960 -18 -26 -76 -120 0 -4 6 0 1920 -42 -34 -116 -144 -48 4 6 -24 2688 -17 -11 -37 -43 -22 3 2 -7 864 -60 -36 -118 -142 -76 10 6 -26 2880 -6 0 -10 10 -4 -2 0 -2 192 -6 0 -10 2 -4 -2 0 0 192 0 2 -2 26 4 -2 0 -6 0 -12 12 -40 240 32 -8 6 -56 192 -7 -5 -12 -30 52 -8 0 -14 480 0 4 -16 16 80 -12 2 -4 0 4 6 -12 4 48 -12 0 -4 0 -36 -12 -60 -20 -40 4 6 -4 1152 2 8 -16 12 56 -12 0 -4 0 10 16 -32 12 120 -28 0 -12 0 9 -1 16 -6 36 -20 0 -6 96 1 -1 0 -6 4 -4 0 -2 96 -10 -6 -12 -24 16 4 2 -8 416 -4 -4 6 -10 -4 -2 2 -2 192 -4 -4 8 -12 0 -2 2 0 192 4 -2 -3 1 2 3 2 -1 0 -12 -12 -44 -52 -16 4 2 -8 960 -8 -8 -28 -28 -16 4 2 -4 576 3 5 -9 1 10 -1 2 -1 0 3 7 -9 1 10 -3 2 -1 0 -16 -24 -88 -88 -48 8 6 -16 1792 -15 -11 -39 -41 -26 3 2 -7 864 -11 -9 -31 -33 -18 3 2 -5 672 -16 -12 -42 -50 -20 2 2 -8 960 -80 -40 -154 -90 -132 18 10 -6 3200 -48 -24 -94 -46 -76 10 6 -2 1920 -12 -12 -50 -58 -4 -2 2 -14 1056 -12 -12 -44 -52 -8 4 2 -12 960 0 6 -20 20 56 -8 2 -6 0 8 8 -24 -8 16 -8 2 -8 192 3 1 -2 4 8 -2 0 -4 0 11 1 -2 20 40 -6 0 -20 0 0 18 -3 13 10 -13 0 -3 0 -6 -4 -16 -20 -8 -2 0 -4 400 -64 -40 -144 -176 -96 -8 2 -32 3648 -8 -6 -26 -34 -4 -4 0 -8 624 0 -6 -28 -36 0 -4 2 0 576 -60 -52 -200 -240 -96 -8 6 -48 4608 -18 -14 -48 -60 -24 0 2 -12 1152 -34 -22 -80 -92 -56 0 2 -16 1920 -36 -22 -74 -82 -52 8 4 -14 1728 -28 -20 -40 -80 96 8 6 -32 1344 -12 -8 -12 -36 56 0 2 -16 576 -13 -7 -16 -30 4 4 2 -8 528 -12 12 -48 40 80 -16 6 -8 192 -12 12 -48 200 80 -16 6 -48 192 0 6 -12 52 40 -8 0 -12 0 0 2 -3 21 10 -3 0 -5 0 -8 0 -12 12 -8 -2 0 -4 256 -6 0 -7 13 -6 -3 0 -5 192 -16 0 -24 0 -16 -4 0 -2 512 -14 -6 -4 -32 0 2 2 0 512 -16 -8 -8 -40 0 2 2 0 640 -20 -14 -20 -60 0 2 4 0 960 -20 -12 -4 -60 72 -12 2 -20 960 -20 -12 -4 -60 104 -12 2 -28 960 -12 12 20 36 -8 -28 6 0 192 0 2 -3 5 10 -3 0 -1 0 28 -4 -44 -4 24 20 10 -12 192 8 0 -12 -4 8 4 2 -2 64 14 6 -36 -16 32 4 2 -8 256 4 6 -10 -2 20 -8 0 -4 48 2 4 -4 0 8 -4 0 -2 16 12 36 -28 12 56 -28 2 -12 0 4 4 -8 0 8 0 2 0 0 4 8 -12 -4 8 -4 2 0 64 12 12 -36 -28 8 -12 2 -4 448 -10 -8 -28 -48 8 -4 0 -4 768 -22 -16 -52 -96 56 -12 0 -28 1536 -16 -16 -88 -88 -48 0 2 -16 1792 6 -10 -20 -24 0 4 6 0 384 -12 -28 -104 -144 0 -8 6 0 2304 -48 -40 -168 -200 -80 -8 2 -40 3840 0 8 -6 10 4 -2 2 -4 0 4 8 -6 18 4 -2 2 -10 0 -16 -10 -16 -48 24 -2 2 -12 768 -56 -32 -32 -144 96 8 10 -48 2304 -48 -24 -16 -112 0 8 10 0 1792 -56 -32 -32 -144 0 8 10 0 2304 -6 0 -7 5 -6 -3 0 -3 192 -14 0 -19 1 -14 -5 0 -3 448 -18 0 -24 4 -16 -8 0 -4 576 -60 -36 -96 -168 -16 8 6 -16 2880 -6 0 10 -10 -4 -2 0 -2 192 -8 0 12 -12 -8 -4 0 -2 256 -16 0 0 -24 -16 -2 0 -4 512 -6 0 2 -10 -4 0 0 -2 192 -18 0 4 -24 -16 -4 0 -8 576 -14 0 1 -19 -14 -3 0 -5 448 -18 0 -3 -23 -22 -3 0 -5 576 -6 0 5 -7 -6 -3 0 -3 192 -6 0 13 -7 -6 -5 0 -3 192 -4 4 20 -4 24 4 2 -4 64 -56 -32 -96 -96 -96 16 10 0 2304 -30 0 -32 -28 -32 8 6 0 768 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 VerticesOfPolyhedron lrslib-062/ine/test-062/fq48-19.ine0000600001553200155320000000377012722006616014231 0ustar avis*Felippo Quondam's problem root@dbu.uniroma1.it fq H-representation begin 48 19 integer 1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 -1 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 -1 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 1 0 0 0 -1 0 0 -1 0 0 -1 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 -1 0 0 -1 0 0 0 0 0 0 0 1 0 -1 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 0 0 -1 0 0 -1 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 1 0 -1 0 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 1 0 0 0 -1 0 0 -1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 0 0 -1 0 0 0 1 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 -1 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 1 -1 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 -1 0 0 0 1 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 1 0 -1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 1 0 0 0 -1 0 0 0 0 0 0 1 0 0 0 0 -1 0 0 1 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 -1 0 0 0 0 1 0 0 0 -1 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 end lrslib-062/ine/test-062/porta/0000700001553200155320000000000012722006616013637 5ustar avislrslib-062/ine/test-062/porta/c40-20.ext.poi0000600001553200155320000002607112722006616015764 0ustar avisDIM = 20 CONV_SECTION 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 3 9 27 81 243 729 2187 6561 19683 59049 177147 531441 1594323 4782969 14348907 43046721 129140163 387420489 1162261467 3486784401 4 16 64 256 1024 4096 16384 65536 262144 1048576 4194304 16777216 67108864 268435456 1073741824 4294967296 17179869184 68719476736 274877906944 1099511627776 5 25 125 625 3125 15625 78125 390625 1953125 9765625 48828125 244140625 1220703125 6103515625 30517578125 152587890625 762939453125 3814697265625 19073486328125 95367431640625 6 36 216 1296 7776 46656 279936 1679616 10077696 60466176 362797056 2176782336 13060694016 78364164096 470184984576 2821109907456 16926659444736 101559956668416 609359740010496 3656158440062976 7 49 343 2401 16807 117649 823543 5764801 40353607 282475249 1977326743 13841287201 96889010407 678223072849 4747561509943 33232930569601 232630513987207 1628413597910449 11398895185373143 79792266297612001 8 64 512 4096 32768 262144 2097152 16777216 134217728 1073741824 8589934592 68719476736 549755813888 4398046511104 35184372088832 281474976710656 2251799813685248 18014398509481984 144115188075855872 1152921504606846976 9 81 729 6561 59049 531441 4782969 43046721 387420489 3486784401 31381059609 282429536481 2541865828329 22876792454961 205891132094649 1853020188851841 16677181699666569 150094635296999121 1350851717672992089 12157665459056928801 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000 100000000000 1000000000000 10000000000000 100000000000000 1000000000000000 10000000000000000 100000000000000000 1000000000000000000 10000000000000000000 100000000000000000000 11 121 1331 14641 161051 1771561 19487171 214358881 2357947691 25937424601 285311670611 3138428376721 34522712143931 379749833583241 4177248169415651 45949729863572161 505447028499293771 5559917313492231481 61159090448414546291 672749994932560009201 12 144 1728 20736 248832 2985984 35831808 429981696 5159780352 61917364224 743008370688 8916100448256 106993205379072 1283918464548864 15407021574586368 184884258895036416 2218611106740436992 26623333280885243904 319479999370622926848 3833759992447475122176 13 169 2197 28561 371293 4826809 62748517 815730721 10604499373 137858491849 1792160394037 23298085122481 302875106592253 3937376385699289 51185893014090757 665416609183179841 8650415919381337933 112455406951957393129 1461920290375446110677 19004963774880799438801 14 196 2744 38416 537824 7529536 105413504 1475789056 20661046784 289254654976 4049565169664 56693912375296 793714773254144 11112006825558016 155568095557812224 2177953337809371136 30491346729331195904 426878854210636742656 5976303958948914397184 83668255425284801560576 15 225 3375 50625 759375 11390625 170859375 2562890625 38443359375 576650390625 8649755859375 129746337890625 1946195068359375 29192926025390625 437893890380859375 6568408355712890625 98526125335693359375 1477891880035400390625 22168378200531005859375 332525673007965087890625 16 256 4096 65536 1048576 16777216 268435456 4294967296 68719476736 1099511627776 17592186044416 281474976710656 4503599627370496 72057594037927936 1152921504606846976 18446744073709551616 295147905179352825856 4722366482869645213696 75557863725914323419136 1208925819614629174706176 17 289 4913 83521 1419857 24137569 410338673 6975757441 118587876497 2015993900449 34271896307633 582622237229761 9904578032905937 168377826559400929 2862423051509815793 48661191875666868481 827240261886336764177 14063084452067724991009 239072435685151324847153 4064231406647572522401601 18 324 5832 104976 1889568 34012224 612220032 11019960576 198359290368 3570467226624 64268410079232 1156831381426176 20822964865671168 374813367582081024 6746640616477458432 121439531096594251776 2185911559738696531968 39346408075296537575424 708235345355337676357632 12748236216396078174437376 19 361 6859 130321 2476099 47045881 893871739 16983563041 322687697779 6131066257801 116490258898219 2213314919066161 42052983462257059 799006685782884121 15181127029874798299 288441413567621167681 5480386857784802185939 104127350297911241532841 1978419655660313589123979 37589973457545958193355601 20 400 8000 160000 3200000 64000000 1280000000 25600000000 512000000000 10240000000000 204800000000000 4096000000000000 81920000000000000 1638400000000000000 32768000000000000000 655360000000000000000 13107200000000000000000 262144000000000000000000 5242880000000000000000000 104857600000000000000000000 21 441 9261 194481 4084101 85766121 1801088541 37822859361 794280046581 16679880978201 350277500542221 7355827511386641 154472377739119461 3243919932521508681 68122318582951682301 1430568690241985328321 30041942495081691894741 630880792396715529789561 13248496640331026125580781 278218429446951548637196401 22 484 10648 234256 5153632 113379904 2494357888 54875873536 1207269217792 26559922791424 584318301411328 12855002631049216 282810057883082752 6221821273427820544 136880068015412051968 3011361496339065143296 66249952919459433152512 1457498964228107529355264 32064977213018365645815808 705429498686404044207947776 23 529 12167 279841 6436343 148035889 3404825447 78310985281 1801152661463 41426511213649 952809757913927 21914624432020321 504036361936467383 11592836324538749809 266635235464391245607 6132610415680998648961 141050039560662968926103 3244150909895248285300369 74615470927590710561908487 1716155831334586342923895201 24 576 13824 331776 7962624 191102976 4586471424 110075314176 2641807540224 63403380965376 1521681143169024 36520347436056576 876488338465357824 21035720123168587776 504857282956046106624 12116574790945106558976 290797794982682557415424 6979147079584381377970176 167499529910025153071284224 4019988717840603673710821376 25 625 15625 390625 9765625 244140625 6103515625 152587890625 3814697265625 95367431640625 2384185791015625 59604644775390625 1490116119384765625 37252902984619140625 931322574615478515625 23283064365386962890625 582076609134674072265625 14551915228366851806640625 363797880709171295166015625 9094947017729282379150390625 26 676 17576 456976 11881376 308915776 8031810176 208827064576 5429503678976 141167095653376 3670344486987776 95428956661682176 2481152873203736576 64509974703297150976 1677259342285725925376 43608742899428874059776 1133827315385150725554176 29479510200013918864408576 766467265200361890474622976 19928148895209409152340197376 27 729 19683 531441 14348907 387420489 10460353203 282429536481 7625597484987 205891132094649 5559060566555523 150094635296999121 4052555153018976267 109418989131512359209 2954312706550833698643 79766443076872509863361 2153693963075557766310747 58149737003040059690390169 1570042899082081611640534563 42391158275216203514294433201 28 784 21952 614656 17210368 481890304 13492928512 377801998336 10578455953408 296196766695424 8293509467471872 232218265089212416 6502111422497947648 182059119829942534144 5097655355238390956032 142734349946674946768896 3996561798506898509529088 111903730358193158266814464 3133304450029408431470804992 87732524600823436081182539776 29 841 24389 707281 20511149 594823321 17249876309 500246412961 14507145975869 420707233300201 12200509765705829 353814783205469041 10260628712958602189 297558232675799463481 8629188747598184440949 250246473680347348787521 7257147736730073114838109 210457284365172120330305161 6103261246589991489578849669 176994576151109753197786640401 30 900 27000 810000 24300000 729000000 21870000000 656100000000 19683000000000 590490000000000 17714700000000000 531441000000000000 15943230000000000000 478296900000000000000 14348907000000000000000 430467210000000000000000 12914016300000000000000000 387420489000000000000000000 11622614670000000000000000000 348678440100000000000000000000 31 961 29791 923521 28629151 887503681 27512614111 852891037441 26439622160671 819628286980801 25408476896404831 787662783788549761 24417546297445042591 756943935220796320321 23465261991844685929951 727423121747185263828481 22550116774162743178682911 699053619999045038539170241 21670662219970396194714277471 671790528819082282036142601601 32 1024 32768 1048576 33554432 1073741824 34359738368 1099511627776 35184372088832 1125899906842624 36028797018963968 1152921504606846976 36893488147419103232 1180591620717411303424 37778931862957161709568 1208925819614629174706176 38685626227668133590597632 1237940039285380274899124224 39614081257132168796771975168 1267650600228229401496703205376 33 1089 35937 1185921 39135393 1291467969 42618442977 1406408618241 46411484401953 1531578985264449 50542106513726817 1667889514952984961 55040353993448503713 1816331681783800622529 59938945498865420543457 1977985201462558877934081 65273511648264442971824673 2154025884392726618070214209 71082854184959978396317068897 2345734188103679287078463273601 34 1156 39304 1336336 45435424 1544804416 52523350144 1785793904896 60716992766464 2064377754059776 70188843638032384 2386420683693101056 81138303245565435904 2758702310349224820736 93795878551873643905024 3189059870763703892770816 108428035605965932354207744 3686553210602841700043063296 125342809160496617801464152064 4261655511456885005249781170176 35 1225 42875 1500625 52521875 1838265625 64339296875 2251875390625 78815638671875 2758547353515625 96549157373046875 3379220508056640625 118272717781982421875 4139545122369384765625 144884079282928466796875 5070942774902496337890625 177482997121587371826171875 6211904899255558013916015625 217416671473944530487060546875 7609583501588058567047119140625 36 1296 46656 1679616 60466176 2176782336 78364164096 2821109907456 101559956668416 3656158440062976 131621703842267136 4738381338321616896 170581728179578208256 6140942214464815497216 221073919720733357899776 7958661109946400884391936 286511799958070431838109696 10314424798490535546171949056 371319292745659279662190166016 13367494538843734067838845976576 37 1369 50653 1874161 69343957 2565726409 94931877133 3512479453921 129961739795077 4808584372417849 177917621779460413 6582952005840035281 243569224216081305397 9012061295995008299689 333446267951815307088493 12337511914217166362274241 456487940826035155404146917 16890053810563300749953435929 624931990990842127748277129373 23122483666661158726686253786801 38 1444 54872 2085136 79235168 3010936384 114415582592 4347792138496 165216101262848 6278211847988224 238572050223552512 9065737908494995456 344498040522809827328 13090925539866773438464 497455170514937390661632 18903296479567620845142016 718325266223569592115396608 27296360116495644500385071104 1037261684426834491014632701952 39415944008219710658556042674176 39 1521 59319 2313441 90224199 3518743761 137231006679 5352009260481 208728361158759 8140406085191601 317475837322472439 12381557655576425121 482880748567480579719 18832349194131742609041 734461618571137961752599 28644003124274380508351361 1117116121846700839825703079 43567528752021332753202420081 1699133621328831977374894383159 66266211231824447117620880943201 40 1600 64000 2560000 102400000 4096000000 163840000000 6553600000000 262144000000000 10485760000000000 419430400000000000 16777216000000000000 671088640000000000000 26843545600000000000000 1073741824000000000000000 42949672960000000000000000 1717986918400000000000000000 68719476736000000000000000000 2748779069440000000000000000000 109951162777600000000000000000000 END lrslib-062/ine/test-062/porta/zfw91.ine.ieq0000600001553200155320000000246312722006616016100 0ustar avisDIM = 37 INEQUALITIES_SECTION +1x1+1x2+1x3<=1 +1x1+1x3+1x4<=1 +1x1+1x4+1x5<=1 +1x1+1x5+1x6<=1 +1x1+1x6+1x7<=1 +1x1+1x2+1x7<=1 +1x2+1x8+1x9<=1 +1x2+1x3+1x9<=1 +1x3+1x9+1x10<=1 +1x3+1x10+1x11<=1 +1x3+1x4+1x11<=1 +1x4+1x11+1x12<=1 +1x4+1x12+1x13<=1 +1x4+1x5+1x13<=1 +1x5+1x13+1x14<=1 +1x5+1x14+1x15<=1 +1x5+1x6+1x15<=1 +1x6+1x15+1x16<=1 +1x6+1x16+1x17<=1 +1x6+1x7+1x17<=1 +1x7+1x17+1x18<=1 +1x7+1x18+1x19<=1 +1x2+1x7+1x19<=1 +1x2+1x8+1x19<=1 +1x8+1x20+1x21<=1 +1x8+1x9+1x21<=1 +1x9+1x21+1x22<=1 +1x9+1x10+1x22<=1 +1x10+1x22+1x23<=1 +1x10+1x23+1x24<=1 +1x10+1x11+1x24<=1 +1x11+1x24+1x25<=1 +1x11+1x12+1x25<=1 +1x12+1x25+1x26<=1 +1x12+1x26+1x27<=1 +1x12+1x13+1x27<=1 +1x13+1x27+1x28<=1 +1x13+1x14+1x28<=1 +1x14+1x28+1x29<=1 +1x14+1x29+1x30<=1 +1x14+1x15+1x30<=1 +1x15+1x30+1x31<=1 +1x15+1x16+1x31<=1 +1x16+1x31+1x32<=1 +1x16+1x32+1x33<=1 +1x16+1x17+1x33<=1 +1x17+1x18+1x34<=1 +1x17+1x33+1x34<=1 +1x18+1x34+1x35<=1 +1x18+1x35+1x36<=1 +1x18+1x19+1x36<=1 +1x19+1x36+1x37<=1 +1x8+1x19+1x37<=1 +1x8+1x20+1x37<=1 -1x1<=0 -1x2<=0 -1x3<=0 -1x4<=0 -1x5<=0 -1x6<=0 -1x7<=0 -1x8<=0 -1x9<=0 -1x10<=0 -1x11<=0 -1x12<=0 -1x13<=0 -1x14<=0 -1x15<=0 -1x16<=0 -1x17<=0 -1x18<=0 -1x19<=0 -1x20<=0 -1x21<=0 -1x22<=0 -1x23<=0 -1x24<=0 -1x25<=0 -1x26<=0 -1x27<=0 -1x28<=0 -1x29<=0 -1x30<=0 -1x31<=0 -1x32<=0 -1x33<=0 -1x34<=0 -1x35<=0 -1x36<=0 -1x37<=0 END lrslib-062/ine/test-062/porta/c30-15.ext.poi0000600001553200155320000001100312722006616015754 0ustar avisDIM = 15 CONV_SECTION 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 3 9 27 81 243 729 2187 6561 19683 59049 177147 531441 1594323 4782969 14348907 4 16 64 256 1024 4096 16384 65536 262144 1048576 4194304 16777216 67108864 268435456 1073741824 5 25 125 625 3125 15625 78125 390625 1953125 9765625 48828125 244140625 1220703125 6103515625 30517578125 6 36 216 1296 7776 46656 279936 1679616 10077696 60466176 362797056 2176782336 13060694016 78364164096 470184984576 7 49 343 2401 16807 117649 823543 5764801 40353607 282475249 1977326743 13841287201 96889010407 678223072849 4747561509943 8 64 512 4096 32768 262144 2097152 16777216 134217728 1073741824 8589934592 68719476736 549755813888 4398046511104 35184372088832 9 81 729 6561 59049 531441 4782969 43046721 387420489 3486784401 31381059609 282429536481 2541865828329 22876792454961 205891132094649 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000 100000000000 1000000000000 10000000000000 100000000000000 1000000000000000 11 121 1331 14641 161051 1771561 19487171 214358881 2357947691 25937424601 285311670611 3138428376721 34522712143931 379749833583241 4177248169415651 12 144 1728 20736 248832 2985984 35831808 429981696 5159780352 61917364224 743008370688 8916100448256 106993205379072 1283918464548864 15407021574586368 13 169 2197 28561 371293 4826809 62748517 815730721 10604499373 137858491849 1792160394037 23298085122481 302875106592253 3937376385699289 51185893014090757 14 196 2744 38416 537824 7529536 105413504 1475789056 20661046784 289254654976 4049565169664 56693912375296 793714773254144 11112006825558016 155568095557812224 15 225 3375 50625 759375 11390625 170859375 2562890625 38443359375 576650390625 8649755859375 129746337890625 1946195068359375 29192926025390625 437893890380859375 16 256 4096 65536 1048576 16777216 268435456 4294967296 68719476736 1099511627776 17592186044416 281474976710656 4503599627370496 72057594037927936 1152921504606846976 17 289 4913 83521 1419857 24137569 410338673 6975757441 118587876497 2015993900449 34271896307633 582622237229761 9904578032905937 168377826559400929 2862423051509815793 18 324 5832 104976 1889568 34012224 612220032 11019960576 198359290368 3570467226624 64268410079232 1156831381426176 20822964865671168 374813367582081024 6746640616477458432 19 361 6859 130321 2476099 47045881 893871739 16983563041 322687697779 6131066257801 116490258898219 2213314919066161 42052983462257059 799006685782884121 15181127029874798299 20 400 8000 160000 3200000 64000000 1280000000 25600000000 512000000000 10240000000000 204800000000000 4096000000000000 81920000000000000 1638400000000000000 32768000000000000000 21 441 9261 194481 4084101 85766121 1801088541 37822859361 794280046581 16679880978201 350277500542221 7355827511386641 154472377739119461 3243919932521508681 68122318582951682301 22 484 10648 234256 5153632 113379904 2494357888 54875873536 1207269217792 26559922791424 584318301411328 12855002631049216 282810057883082752 6221821273427820544 136880068015412051968 23 529 12167 279841 6436343 148035889 3404825447 78310985281 1801152661463 41426511213649 952809757913927 21914624432020321 504036361936467383 11592836324538749809 266635235464391245607 24 576 13824 331776 7962624 191102976 4586471424 110075314176 2641807540224 63403380965376 1521681143169024 36520347436056576 876488338465357824 21035720123168587776 504857282956046106624 25 625 15625 390625 9765625 244140625 6103515625 152587890625 3814697265625 95367431640625 2384185791015625 59604644775390625 1490116119384765625 37252902984619140625 931322574615478515625 26 676 17576 456976 11881376 308915776 8031810176 208827064576 5429503678976 141167095653376 3670344486987776 95428956661682176 2481152873203736576 64509974703297150976 1677259342285725925376 27 729 19683 531441 14348907 387420489 10460353203 282429536481 7625597484987 205891132094649 5559060566555523 150094635296999121 4052555153018976267 109418989131512359209 2954312706550833698643 28 784 21952 614656 17210368 481890304 13492928512 377801998336 10578455953408 296196766695424 8293509467471872 232218265089212416 6502111422497947648 182059119829942534144 5097655355238390956032 29 841 24389 707281 20511149 594823321 17249876309 500246412961 14507145975869 420707233300201 12200509765705829 353814783205469041 10260628712958602189 297558232675799463481 8629188747598184440949 30 900 27000 810000 24300000 729000000 21870000000 656100000000 19683000000000 590490000000000 17714700000000000 531441000000000000 15943230000000000000 478296900000000000000 14348907000000000000000 END lrslib-062/ine/test-062/porta/mit.ine.ieq0000600001553200155320000006364412722006616015721 0ustar avisDIM = 8 INEQUALITIES_SECTION +4x3+4x4+2x5<=72 +2x1+2x2+10x3+12x4+6x5<=216 +4x1+2x2+8x3+8x4+8x5<=192 +12x1-6x2-8x3+16x4+8x5<=288 +4x1-2x2+4x4+4x5<=96 +5x1-1x2+4x3+6x4+6x5<=144 +8x1+2x2+10x3+12x4+12x5<=288 +4x1-2x2+4x3+2x4+4x5<=96 +7x1+1x2+10x3+8x4+10x5<=240 +8x1+2x2+12x3+8x4+12x5<=288 +8x1+2x2+8x3+16x4+8x5<=288 +4x1-2x2+8x3<=96 -6x2+8x3-4x4-8x5<=0 -4x1-6x2+8x3-8x5<=0 -2x1-2x2+4x3+2x4-2x5<=24 +24x1+6x2+40x3+16x4+32x5<=864 +2x3+2x4-2x5<=24 -4x1-10x2+16x3-24x5<=0 -1x1-1x2+4x3-12x5<=0 -6x2+16x3-8x4-40x5<=0 +4x1-2x2+16x3-16x4-32x5<=96 +8x1+2x2+16x3<=288 +4x1-2x2-8x3+8x4-8x5<=96 +8x1+2x2-8x3+24x4-24x5<=288 -2x2+8x3-8x4-24x5<=0 +1x1+1x2+4x3+8x4-8x5<=96 +12x1+6x2+16x3+40x4-16x5<=576 +4x1+2x2+16x4-16x5<=192 +8x1+6x2+24x3+32x4+16x5<=576 +12x1+6x2+20x3+32x4+16x5<=576 +16x1+10x2+40x3+56x4+16x5<=960 +7x3+7x4+6x5+1x6+1x8<=160 +4x1+4x2+21x3+21x4+18x5+1x6+3x8<=480 +4x1+4x2+12x3+4x4+8x5-4x6-2x7+4x8<=192 +16x1+8x2+28x3+28x4+24x5-4x6-2x7+4x8<=640 +8x1+6x2+28x3+28x4+24x5+4x8<=640 +8x1+8x3+8x4+8x5-4x6-2x7<=192 +12x1+4x2+16x3+16x4+16x5-4x6-2x7<=384 +20x1+12x2+42x3+42x4+36x5-4x6-2x7+6x8<=960 +9x1+1x2+11x3+9x4+10x5-3x6-2x7+1x8<=240 -2x1-2x2-4x3+4x6+2x7<=0 +22x1+4x2+24x3+28x4+24x5-8x6-4x7+4x8<=640 +60x1+20x2+76x3+84x4+72x5-20x6-10x7+12x8<=1920 +32x1+22x2+84x3+84x4+72x5-4x6-2x7+12x8<=1920 +28x1+10x2+44x3+36x4+40x5-8x6-4x7+4x8<=960 +36x1+12x2+52x3+44x4+48x5-12x6-6x7+4x8<=1152 +23x1+7x2+33x3+27x4+30x5-7x6-4x7+3x8<=720 +48x1+24x2+88x3+72x4+80x5-12x6-6x7+8x8<=1920 +96x1+40x2+160x3+128x4+144x5-28x6-14x7+16x8<=3456 +15x1+7x2+26x3+20x4+24x5-4x6-2x7+4x8<=576 +12x1+4x2+20x3+12x4+16x5-4x6-2x7<=384 +11x1+3x2+17x3+11x4+14x5-3x6-2x7+1x8<=336 +8x1+12x3+4x4+8x5-4x6-2x7<=192 +4x3-4x4-4x6-2x7<=0 -2x2+8x3-8x4-8x6-4x7+2x8<=0 +12x1-12x2+28x3-12x4+8x5-20x6-10x7+4x8<=192 +12x1-12x2+20x3-4x4+8x5-12x6-6x7+2x8<=192 +48x1+24x2+92x3+60x4+80x5-12x6-6x7+4x8<=1920 +15x1+7x2+28x3+18x4+24x5-4x6-2x7+2x8<=576 +42x1+18x2+76x3+40x4+64x5-12x6-6x7+8x8<=1536 +12x1+4x2+20x3-4x4+16x5-4x6-2x7+4x8<=384 +60x1+20x2+102x3-18x4+76x5-14x6-10x7+18x8<=1920 +60x1+20x2+102x3+46x4+76x5-14x6-10x7+2x8<=1920 +22x1+6x2+37x3+17x4+26x5-5x6-4x7+1x8<=672 +22x1+4x2+36x3+16x4+24x5-4x6-4x7<=640 +40x1+64x3+16x4+32x5-8x6-10x7<=960 +4x1-4x2+8x3-2x7<=64 -8x2+6x3-2x4-4x5+2x6-2x7<=0 -8x1-18x2+8x3-8x5+8x6-2x7<=0 -36x1-60x2+28x3+4x4-24x5+28x6-6x7+4x8<=64 -28x1-36x2+20x3+12x4-8x5+20x6-2x7+4x8<=192 -4x1-4x2+5x3+5x4+2x5+3x6+1x8<=96 -4x1-6x2+4x3+4x4+4x6<=64 +5x3+5x4+2x5+1x6+1x8<=96 +1x3+1x4<=16 +6x1+8x3-12x4+8x5+4x8<=192 +6x1+8x3+4x4+8x5<=192 +30x1+8x2+48x3+20x4+40x5-8x6-4x7+4x8<=960 +32x1+8x2+52x3+20x4+40x5-12x6-6x7+4x8<=960 +32x1+8x2+52x3-44x4+40x5-12x6-6x7+20x8<=960 +30x1+8x2+48x3-12x4+40x5-8x6-4x7+12x8<=960 +16x1+6x2+28x3+12x4+24x5-4x6-2x7+4x8<=576 +8x1+8x3+8x4+8x5-4x6-2x7+2x8<=208 +7x1-1x2+5x3+7x4+6x5-3x6-2x7+1x8<=160 +12x1-12x2+8x4+8x5-8x6-6x7<=192 +9x1-7x2+1x3+7x4+6x5-5x6-4x7+1x8<=160 +20x1+4x2+20x3+28x4+24x5-4x6-2x7+4x8<=640 +5x1-3x2+2x3+4x4+4x5-2x6-2x7<=96 +6x1+4x3+8x4+8x5<=192 +18x1+2x2+17x3+21x4+18x5-7x6-4x7+3x8<=480 +19x1+3x2+20x3+22x4+20x5-8x6-4x7+4x8<=528 +30x1+4x2+32x3+36x4+40x5-4x6-2x7+4x8<=960 +36x1+4x2+32x3+40x4+48x5-2x7+8x8<=1152 +36x1+12x2+48x3+40x4+48x5-8x6-6x7+8x8<=1152 +8x1+4x3+4x4+8x5-4x6-2x7+4x8<=192 +6x1+4x4+8x5+4x8<=192 +12x1+4x2+8x3+8x4+16x5-4x6-2x7+8x8<=384 +48x1+24x2+48x3+40x4+80x5-12x6-6x7+40x8<=1920 +16x1-2x2+20x3+12x4+16x5-4x6-4x7<=384 +24x1+32x3+16x4+24x5-8x6-6x7<=576 +17x1+1x2+23x3+13x4+18x5-5x6-4x7+1x8<=432 +28x1-12x2+36x3+12x4+24x5-12x6-10x7+4x8<=576 +52x1-36x2+92x3-12x4+40x5-52x6-26x7+12x8<=960 -4x2+14x3-10x4-4x5-6x6-6x7+2x8<=0 +72x1+32x2+120x3+104x4+112x5-16x6-10x7+8x8<=2688 -8x2+20x3-12x4-56x5+12x6-2x7+4x8<=0 +4x1-4x2+16x3-8x4-24x5+4x6-2x7<=64 +8x1+16x3-2x7<=192 -8x1-16x2+20x3+4x4-24x5+12x6-2x7+4x8<=64 -2x1-4x2+4x3-8x5+4x6<=0 +13x1-3x2+12x3+10x4+12x5-6x6-4x7+2x8<=288 +14x1-2x2+15x3+11x4+14x5-7x6-4x7+3x8<=336 -3x1-1x2+8x3+6x4-4x5+2x8<=96 -12x1+20x3+12x4-8x5-4x6-2x7+4x8<=192 -4x1-8x2+6x3-2x4-4x5+2x6-2x7+2x8<=0 +12x1-12x2+28x3-28x4+8x5-20x6-10x7+12x8<=192 +4x3-16x4-4x6-2x7+6x8<=0 +4x3-40x4-4x6-2x7+12x8<=0 +8x1+12x3-44x4+8x5-4x6-2x7+12x8<=192 -2x2-32x4+8x8<=0 +12x1-12x2+20x3-300x4+8x5-12x6-6x7+76x8<=192 +40x1+64x3-208x4+32x5-8x6-10x7+56x8<=960 +72x1+16x2+120x3-120x4+80x5-16x6-14x7+48x8<=2112 +16x1+4x2+26x3-6x4+20x5-2x6-2x7+6x8<=512 +16x1+4x2+26x3+10x4+20x5-2x6-2x7+2x8<=512 +16x1+24x3+8x4+16x5-2x7<=448 -24x1-8x2+68x3+20x4-56x5-12x6-6x7+20x8<=448 -8x1-2x2+24x3+8x4-16x5-4x6-2x7+8x8<=192 -16x1+36x3+4x4-24x5-12x6-6x7+12x8<=192 +13x1+5x2+23x3+13x4+18x5-3x6-2x7+1x8<=448 +2x1+4x3<=64 -2x1+2x2+4x3-4x4-4x6-2x7+2x8<=0 +22x3-22x4-4x5-14x6-10x7<=0 +22x3-82x4-4x5-14x6-10x7+30x8<=0 -4x2+14x3-34x4-4x5-6x6-6x7+14x8<=0 +21x1-3x2+20x3+18x4+20x5-8x6-6x7+2x8<=480 +19x1-1x2+16x3+18x4+20x5-4x6-4x7+2x8<=480 +52x1+44x3+52x4+56x5-12x6-10x7+4x8<=1344 +22x1+12x3+24x4+24x5-4x6-4x7<=576 +28x1+4x2+24x3+32x4+32x5-8x6-6x7<=768 +28x1+4x2-40x3+32x4+32x5+8x6-6x7<=768 +22x1-20x3+24x4+24x5+4x6-4x7<=576 +12x1-10x3+14x4+12x5+2x6-2x7+2x8<=320 +7x1-1x2-3x3+7x4+6x5-1x6-2x7+1x8<=160 -2x1-2x2+12x3-8x4-16x5-4x6-2x7+4x8<=0 -22x1-14x2+52x3-16x4-80x5-12x6-6x7+16x8<=0 -32x1-16x2+68x3+4x4-88x5-12x6-6x7+20x8<=192 -18x1-10x2+36x3+8x4-48x5-4x6-2x7+8x8<=128 -8x1-8x2+20x3+4x4-24x5+4x6-2x7+4x8<=64 -4x1-2x2+4x3-4x4-8x5+4x8<=0 -4x1-8x2+14x3-2x4-20x5+4x6-2x7+2x8<=0 -1x1-7x2+11x3-3x4-14x5+3x6-2x7+1x8<=0 -8x2+12x3-4x4-16x5+4x6-2x7<=0 -4x1-12x2+20x3-4x4-32x5+8x6-2x7<=0 -24x2+44x3-20x4-64x5+16x6-6x7<=0 -4x2+10x3-6x4-12x5+2x6-2x7+2x8<=0 -14x1-22x2+44x3-8x4-64x5+12x6-6x7+8x8<=0 -6x1-10x2+18x3-2x4-28x5+6x6-2x7+2x8<=0 -28x1-36x2+52x3+12x4-72x5+36x6-2x7+12x8<=192 -3x1-3x2+8x3+6x4-4x5+4x6+2x8<=96 -1x1-1x2+2x3-4x5<=0 -12x2+10x3-6x4-12x5+6x6-2x7+2x8<=0 +3x3+3x4-2x5+1x6+1x8<=48 -16x1-24x2+44x3+12x4-72x5+28x6-2x7+12x8<=192 -4x1-12x2+14x3-2x4-20x5+8x6-2x7+2x8<=0 -1x1-9x2+11x3-3x4-14x5+5x6-2x7+1x8<=0 -32x1-40x2+68x3+4x4-88x5+36x6-6x7+20x8<=192 -1x1-1x2+3x3+1x4-6x5+1x6+1x8<=16 -4x1-6x2+12x3+4x4-24x5+8x6+4x8<=64 -4x1-12x2+20x3-4x4-40x5+12x6-2x7+4x8<=0 -10x2+16x3-8x4-24x5+8x6-2x7<=0 +12x1-12x2+40x3-16x4-32x5+8x6-6x7<=192 -24x2+34x3-14x4-44x5+14x6-6x7+2x8<=0 +4x1-4x2+16x3-8x4-16x5-2x7<=64 -8x2+20x3-12x4-32x5-2x7<=0 -4x2+14x3-10x4-20x5-2x6-2x7+2x8<=0 -2x2+2x3-2x4-4x5+2x6<=0 -24x2+44x3-20x4-72x5+20x6-6x7+4x8<=0 -24x2+60x3-36x4-104x5+4x6-6x7+4x8<=0 -6x1-10x2+16x3-4x4-24x5+8x6-2x7+4x8<=0 -1x1-1x2+1x3-1x4-2x5+1x6+1x8<=0 -6x1-18x2+16x3-4x4-24x5+12x6-2x7+4x8<=0 +2x2+20x3+20x4+8x5+4x8<=384 +12x1+4x2+12x3+20x4+8x5-4x6-2x7+4x8<=384 +16x1+8x2+20x3+36x4+8x5-4x6-2x7+4x8<=640 +20x1+12x2+32x3+56x4+8x5-4x6-2x7+4x8<=960 +1x1+1x2+4x3+6x4<=96 +6x1+14x2+60x3+80x4+4x6-2x7<=1280 +2x1+10x2+52x3+64x4+4x6-2x7<=1024 +12x1+12x2+48x3+56x4+16x5-2x7+8x8<=1024 -8x1+4x2+24x3+24x4-2x7<=384 -4x1+4x2+16x3+16x4-2x6-2x7<=256 +16x2+56x3+56x4+16x5-8x6-6x7+8x8<=1024 +16x2+52x3+52x4+16x5-12x6-6x7+8x8<=960 +96x1+72x2+280x3+280x4+240x5-8x6-6x7+40x8<=6400 +16x1+12x2+42x3+42x4+36x5-2x6-2x7+6x8<=960 +48x1+40x2+168x3+168x4+144x5-2x7+24x8<=3840 +72x1+48x2+178x3+178x4+148x5-10x6-6x7+26x8<=4032 +20x1+14x2+52x3+52x4+40x5-4x6-2x7+8x8<=1152 -2x1+2x2-2x6-2x7<=0 +6x1-12x3+8x4+8x5+4x6<=192 +4x1+4x2+8x3+8x4+8x5-4x6-2x7<=192 +176x1+88x2+288x3+288x4+288x5-40x6-26x7<=6912 +48x1+24x2+80x3+80x4+80x5-10x6-6x7<=1920 +12x1+10x2+24x3+24x4+24x5-6x6-4x7<=576 +168x1+64x2+264x3+216x4+240x5-48x6-26x7+24x8<=5760 +48x1-24x2+36x3+36x4+40x5-20x6-18x7+4x8<=960 +44x1-12x2+28x3+36x4+40x5-12x6-14x7+4x8<=960 +12x1-12x2-4x3+4x4+8x5-4x6-6x7+4x8<=192 +56x1-48x2+20x3+36x4+40x5-28x6-26x7+4x8<=960 +20x1+4x3+28x4+24x5+2x6+4x8<=640 +24x1+28x3+12x4+24x5-4x6-6x7+4x8<=576 -4x3-8x4+2x6+4x8<=0 +6x1+4x3-12x4+8x5+4x6+6x8<=192 +30x1+32x3+12x4+40x5+8x6+6x8<=960 +32x1+36x3+20x4+40x5+4x6-2x7+4x8<=960 +20x1+28x3+4x4+24x5+4x6+2x8<=640 -20x2+4x3-12x4-8x5+12x6+2x8<=0 +1x3+1x4-6x5+1x6+1x8<=16 +23x1+3x2+25x3+27x4+30x5-3x6-2x7+3x8<=720 +21x1+1x2+27x3+17x4+26x5-1x6-2x7+1x8<=624 +26x1+32x3+20x4+32x5-2x7<=768 +62x1+80x3+44x4+64x5-16x6-14x7<=1536 +42x1+12x2+64x3+44x4+56x5-12x6-6x7+4x8<=1344 +90x1+28x2+128x3+108x4+120x5-28x6-14x7+12x8<=2880 +30x1+12x3+32x4+40x5+6x6+8x8<=960 +30x1+24x3+28x4+32x5-6x6-6x7+4x8<=768 +24x1+20x3+20x4+24x5-8x6-6x7+4x8<=576 +24x1+15x3+23x4+22x5-9x6-6x7+5x8<=576 +8x1-12x3+4x4+8x5+4x6-2x7+4x8<=192 -2x2+4x3-4x4-8x5<=0 +8x3-8x4-8x5-4x6-2x7<=0 +12x1-12x2+76x3-76x4-88x5-20x6-10x7+12x8<=192 -6x2+28x3-28x4-40x5-8x6-4x7+6x8<=0 +15x1+7x2+29x3+15x4+22x5-3x6-2x7+1x8<=576 +13x1+5x2+25x3+7x4+14x5-3x6-2x7+1x8<=448 +14x1+6x2+26x3+14x4+20x5-4x6-2x7+2x8<=512 +13x1+5x2+23x3+5x4+18x5-3x6-2x7+3x8<=448 +6x1+4x2+16x3+20x4+8x5+4x8<=384 -6x1-8x2+16x3-4x4-40x5+4x6+4x8<=0 -8x1-8x2+24x3-8x4-48x5-2x7+8x8<=0 +1x1+1x2+6x4-36x5+4x6+6x8<=96 +4x1+4x2-12x3+12x4-72x5+4x6-2x7+12x8<=192 +6x3-6x4-4x5-2x6-2x7<=0 +12x1+4x2+22x3+6x4+12x5-2x6-2x7<=384 +31x1+15x2+59x3+37x4+50x5-7x6-4x7+3x8<=1216 +20x1+16x2+42x3+42x4+36x5-10x6-6x7+6x8<=960 +72x1+20x2+112x3+64x4+96x5-16x6-10x7+8x8<=2304 +42x1+12x2+64x3+36x4+56x5-8x6-6x7+6x8<=1344 +36x1+12x2+56x3+32x4+48x5-8x6-6x7+4x8<=1152 +12x1+4x2+16x3+8x4+16x5-2x7<=384 +6x1+4x3+8x5+4x6<=192 +26x1+10x2+43x3+31x4+38x5-5x6-4x7+1x8<=912 +27x1+11x2+46x3+32x4+40x5-6x6-4x7+2x8<=960 +39x1+15x2+66x3+44x4+56x5-10x6-6x7+4x8<=1344 +120x1+48x2+200x3+152x4+176x5-32x6-18x7+16x8<=4224 +132x1+60x2+240x3+168x4+208x5-32x6-18x7+16x8<=4992 +96x1+40x2+168x3+104x4+144x5-24x6-14x7+16x8<=3456 +76x1+28x2+128x3+72x4+112x5-16x6-10x7+16x8<=2688 +29x1+9x2+46x3+28x4+40x5-6x6-4x7+4x8<=960 -2x1+2x2-12x3+4x6-2x7<=0 +20x1+20x2-134x3+42x4+36x5+38x6-10x7+6x8<=960 +60x1+20x2-148x3+84x4+72x5+36x6-10x7+12x8<=1920 +68x1+12x2-100x3+84x4+72x5+20x6-14x7+12x8<=1920 +12x1+6x3+14x4+12x5-2x6-2x7+2x8<=320 +40x1+26x3+42x4+36x5-18x6-10x7+6x8<=960 +12x1+8x2+22x3+30x4+12x5-2x6-2x7+6x8<=576 +12x1+10x2+8x3+24x4+24x5+2x6-4x7<=576 +56x1+32x2+80x3+96x4+96x5-8x6-10x7<=2304 +20x1+20x2+38x3+42x4+36x5-20x6-10x7+6x8<=960 +6x1+4x3+4x4+8x5+2x6+2x8<=192 -1x3-1x4-2x5+1x6+1x8<=0 +8x1+4x3-28x4+8x5+4x6-2x7+12x8<=192 +8x1+4x3-60x4+8x5+4x6-2x7+20x8<=192 -2x2+4x3-4x4-16x5+4x6<=0 +28x1+20x2+80x3+88x4+48x5-2x7+16x8<=1792 +3x1+3x2+18x3+20x4+8x5+2x6+4x8<=384 +204x1+100x2+384x3+264x4+336x5-48x6-26x7+24x8<=8064 +48x1+24x2+88x3+56x4+80x5-8x6-6x7+8x8<=1920 +12x1+4x2+16x3-8x4+16x5-2x7+8x8<=384 +12x1-12x2+12x3+4x4+8x5-4x6-6x7<=192 +12x1-12x2+12x3-12x4+8x5-4x6-6x7+8x8<=192 +12x1-12x2-4x3-60x4+8x5+12x6-6x7+28x8<=192 +8x3-8x4-16x5-2x7<=0 +4x1+2x2+4x3+4x4+8x5+4x8<=192 +4x1+4x2-16x3+12x4+4x6-2x7<=192 +20x1+12x2-40x3+48x4+8x6-6x7<=768 +14x1+6x2-20x3+32x4+4x6-2x7<=512 +2x1+4x4<=64 +60x1-12x2+68x3+44x4+56x5-20x6-18x7+4x8<=1344 +92x1-12x2+116x3+60x4+88x5-28x6-26x7+4x8<=2112 +44x1-12x2+52x3+28x4+40x5-12x6-14x7<=960 +48x1+24x2+72x3+56x4+80x5-8x6-6x7+24x8<=1920 +5x1-3x2+4x3+2x4+4x5-2x7<=96 -2x2+8x3-24x4-8x6-4x7+10x8<=0 -4x1-4x2+16x3-8x4-112x5+16x6-2x7+8x8<=0 +12x1+4x2+24x3-2x7<=384 -2x1+2x2+4x3-16x4-4x6-2x7+8x8<=0 +4x1-4x2+20x3-20x4-24x5-4x6-2x7+2x8<=64 +6x1-2x2+20x3-16x4-16x5-4x6-2x7+2x8<=128 +8x1+20x3-12x4-8x5-4x6-2x7<=192 +4x1+14x3-10x4-8x5-4x6-2x7+2x8<=96 +20x1-4x2+76x3-60x4-56x5-20x6-10x7+12x8<=448 +4x1+2x2+4x3+12x4-8x5+4x8<=192 +12x1+4x2+24x4-16x5-4x6-2x7+8x8<=384 +8x1-4x3+12x4-8x5-4x6-2x7+4x8<=192 -12x1-20x2+20x3+12x4-8x5+12x6-2x7+4x8<=192 -12x1-4x2+20x3+12x4-8x5+4x6-2x7+4x8<=192 -76x1-20x2+84x3+12x4-72x5+4x6-18x7+12x8<=192 -20x1-12x2+28x3+4x4-24x5+4x6-6x7+4x8<=64 -20x1-44x2+28x3+4x4-24x5+20x6-6x7+4x8<=64 -12x1-36x2+22x3-2x4-20x5+14x6-6x7+2x8<=0 -4x1-10x2+8x3-8x5+4x6-2x7<=0 -4x1-6x2+8x3-8x5+2x6-2x7<=0 -4x1+6x3-2x4-4x5-2x6-2x7+2x8<=0 -4x2+6x3-2x4-4x5-2x7<=0 -4x1-2x2+12x3+12x4+4x6<=192 -8x1-8x2+16x3-24x5+4x6-2x7<=0 -20x1-4x2+28x3+4x4-24x5-4x6-6x7+4x8<=64 -20x1-4x2+24x3-24x5-4x6-6x7<=0 -8x1+8x3-8x5-4x6-2x7<=0 -5x1+1x2+6x3-2x4-4x5-4x6-2x7+2x8<=0 -24x1+28x3+4x4-24x5-12x6-6x7+4x8<=64 -46x1+10x2+42x3+6x4-36x5-18x6-14x7+6x8<=96 -18x1+6x2+14x3+2x4-12x5-10x6-6x7+2x8<=32 -112x1+40x2+84x3+12x4-72x5-76x6-38x7+12x8<=192 -6x1+2x2+4x3-4x5-4x6-2x7<=0 -16x4-2x7+8x8<=0 +12x1-12x2-4x3-28x4+8x5-4x6-6x7+20x8<=192 +40x1-38x3+42x4+36x5-2x6-10x7+6x8<=960 +40x1-8x2+20x3+36x4+40x5-4x6-10x7+4x8<=960 +8x1-2x2+8x4+8x5-2x7<=192 +18x1-6x2+4x3+16x4+16x5-4x6-6x7<=384 +8x1-8x3+8x4+8x5-2x7<=192 +20x1-20x2-10x3+14x4+12x5-14x6-10x7+2x8<=320 +8x1+6x2+20x3+36x4-24x5+4x6+12x8<=576 +1x1+1x2+4x3+6x4-4x5+2x8<=96 -16x1+8x2+20x3+12x4-8x5-12x6-6x7+4x8<=192 -12x1+20x2+60x3+52x4+8x5-20x6-10x7+12x8<=960 +12x1+8x2+26x3+26x4+20x5-4x6-2x7+4x8<=576 +48x1+24x2+68x3+100x4+40x5-12x6-6x7+20x8<=1920 +16x1+8x2+32x3+16x4+24x5-4x6-2x7<=640 +12x1+4x2+24x3+8x5-4x6-2x7<=384 +8x1+36x3-44x4-24x5-12x6-6x7+12x8<=192 +8x1+36x3-76x4-24x5-12x6-6x7+20x8<=192 +6x1-2x2+20x3-40x4-16x5-4x6-2x7+8x8<=128 +4x1-4x2+20x3-60x4-24x5-4x6-2x7+12x8<=64 -2x2+4x3-20x4-8x5+4x8<=0 +21x1+5x2+34x3+16x4+24x5-4x6-4x7<=624 +12x1+4x2+20x3+12x4+16x5-2x6-2x7<=400 -1x1+1x2+10x3+12x4+2x6<=192 +16x1+8x2+8x3+40x4-48x5-2x7+16x8<=640 +48x1+24x2+24x3+120x4-80x5-8x6-6x7+40x8<=1920 -8x1-8x2+22x3+6x4-36x5+10x6-2x7+6x8<=96 -8x1-8x2+16x3-32x5+8x6-2x7<=0 +72x1+16x2+120x3+40x4+80x5-16x6-14x7+8x8<=2112 +100x1+36x2+160x3+120x4+144x5-24x6-14x7+16x8<=3456 +36x1+12x2+59x3+27x4+46x5-7x6-6x7+3x8<=1152 +48x1+24x2+96x3+32x4+64x5-8x6-6x7<=1920 +16x1+8x2+32x3-2x7<=640 +2x1+2x2+11x3+15x4-10x5+3x6+5x8<=240 +20x1+12x2+32x3+56x4-16x5-2x7+16x8<=960 +48x1+24x2-216x3+80x4+80x5+64x6-6x7<=1920 +12x1+4x2-32x3+16x4+16x5+8x6-2x7<=384 +10x1-18x3+14x4+12x5+6x6+2x8<=320 +6x1-20x3+4x4+8x5+8x6+4x8<=192 +10x1+14x3-18x4+12x5+2x6+6x8<=320 +1x1-1x2+4x3-6x4-20x5+4x6+2x8<=32 +8x1+16x3-32x4-2x7+8x8<=192 +8x1+20x3-28x4-8x5-4x6-2x7+4x8<=192 +8x3-28x4-8x5-4x6-2x7+8x8<=0 +6x3-34x4-4x5-2x6-2x7+10x8<=0 +12x1+4x2+22x3-2x4+12x5-2x6-2x7+2x8<=384 +12x1-12x2-28x3+12x4-8x5-12x6-6x7+4x8<=192 +24x1+8x3+24x4+16x5-8x6-6x7+8x8<=576 +8x1+2x3+10x4+4x5-4x6-2x7+2x8<=192 +8x2+40x3+40x4+16x5-2x7+8x8<=768 +56x2+200x3+200x4+80x5-24x6-18x7+40x8<=3840 +6x2+20x3+20x4+8x5-4x6-2x7+4x8<=384 +12x1+10x2+36x3+36x4+24x5-4x6-2x7+6x8<=768 +8x1+20x3-28x4-88x5+12x6-2x7+4x8<=192 +4x1-4x2+20x3-52x4-200x5+28x6-2x7+12x8<=64 -8x2+24x3-72x4-336x5+48x6-2x7+24x8<=0 -1x1-1x2+2x3-4x4-40x5+6x6+4x8<=0 -2x2+4x3-12x4-48x5+8x6+4x8<=0 +4x1+20x2+88x3+112x4+8x6-6x7<=1792 -4x1+12x2+40x3+48x4-6x7<=768 +4x2+10x3+10x4+4x5-2x6-2x7+2x8<=192 +5x1-3x2-1x3+5x4+2x5-3x6-2x7+1x8<=96 -6x1+2x2+10x3+6x4-4x5-2x6-2x7+2x8<=96 -9x1+11x2+35x3+29x4+2x5-9x6-6x7+7x8<=528 -38x1+18x2+50x3+30x4-20x5-22x6-14x7+10x8<=480 -12x1+12x2+40x3+40x4-8x6-6x7<=640 +3x1-3x2+14x3-8x4-24x5+4x6-2x7<=48 -2x1+6x2+20x3+24x4-144x5-4x6-2x7+24x8<=384 +4x1+2x2+6x3+10x4+4x5+2x8<=192 +24x1+16x2+56x3+72x4+16x5-2x7+16x8<=1344 +60x1+36x2+112x3+152x4+56x5-12x6-6x7+28x8<=2880 +24x1+16x2+56x3+72x4+24x5-4x6-2x7+12x8<=1344 +6x1+6x2+12x3+24x4-2x7<=384 +4x1-4x2-4x3+4x4-4x6-2x7<=64 +12x1+4x2-48x3+8x4+16x5+16x6-2x7+8x8<=384 +6x1-12x3+4x4+8x5+6x6+4x8<=192 +18x1+23x3+3x4+22x5+5x6+3x8<=576 +22x3-194x4-4x5-14x6-10x7+58x8<=0 +4x1-4x2+8x3-96x4-2x7+24x8<=64 -10x2+2x3-154x4-4x5+6x6+38x8<=0 +12x1+4x2-16x3+24x4-80x5-2x7+16x8<=384 +2x1-8x3+4x4-24x5+4x8<=64 +12x1+4x2-48x3+24x4-144x5-2x7+24x8<=384 +8x1-4x3+12x4-4x6-2x7<=192 +12x1+4x2-16x3+24x4-16x5-2x7+8x8<=384 -6x2-1x3-9x4-2x5+5x6+3x8<=0 -2x2-4x3-16x4+4x6+6x8<=0 +56x1-8x2+60x3+44x4+56x5-12x6-14x7+4x8<=1344 +4x1+2x2-32x3+4x4+8x5+12x6+4x8<=192 +48x1+24x2-296x3+40x4+80x5+104x6-6x7+40x8<=1920 +4x1+2x2-24x3+8x4+8x5+8x6<=192 +20x1+10x2-114x3+42x4+36x5+38x6+6x8<=960 +16x1+8x2-68x3+28x4+24x5+20x6-2x7+4x8<=640 -10x1-2x2+12x3-160x5+20x6-2x7<=0 -3x1+1x2+6x3-4x4-40x5+2x6-2x7+4x8<=0 -8x1+8x2+24x3-24x4-80x5-8x6-10x7+8x8<=0 -116x1+36x2+80x3-80x5-64x6-38x7<=0 -136x1+56x2+120x3-40x4-80x5-104x6-58x7+40x8<=0 -14x1+6x2+12x3-4x4-8x5-12x6-6x7+4x8<=0 -10x1+6x2+12x3-8x4-16x5-12x6-6x7+8x8<=0 -8x1+8x2+20x3+4x4-88x5-12x6-6x7+20x8<=192 +16x2+52x3+52x4-248x5-12x6-6x7+52x8<=960 -2x2+4x3-20x4-80x5+12x6+4x8<=0 +2x1+4x3-8x4-24x5+4x6<=64 +40x1+20x2+68x3+84x4+72x5+2x6+12x8<=1920 +12x1+6x2+19x3+23x4+22x5+1x6+5x8<=576 +48x1+24x2+72x3+72x4+80x5-4x6-6x7+8x8<=1920 +4x1+4x2-4x3+4x4+8x5+4x6-2x7+4x8<=192 +68x1+12x2+60x3+84x4+72x5-20x6-14x7+12x8<=1920 -1x1-1x2+2x3-4x4-24x5+4x6+4x8<=0 -2x2+4x3-12x4-32x5+6x6+4x8<=0 +4x1-4x2+20x3-52x4-72x5+12x6-2x7+12x8<=64 +8x1+20x3-28x4-24x5+4x6-2x7+4x8<=192 +16x1+36x3-28x4-56x5+12x6-2x7+4x8<=448 +8x1+4x2+2x3+18x4-12x5-2x6-2x7+6x8<=288 +4x1+4x2-12x3+12x4-8x5+4x6-2x7+4x8<=192 +12x1-12x2-14x3+10x4+4x5-10x6-6x7+2x8<=192 +8x1-36x3+12x4-72x5-4x6-2x7+12x8<=192 +24x1+16x2+36x3+84x4-120x5+12x6-2x7+36x8<=1344 +20x1+12x2+20x3+60x4-72x5+4x6-2x7+24x8<=960 +16x1+8x2+20x3+36x4-4x6-2x7+8x8<=640 +12x1+8x2+18x3+34x4+4x5-2x6-2x7+2x8<=576 +4x1+4x2+4x3+12x4-4x6-2x7<=192 +4x1+4x2+6x3+10x4+4x5-4x6-2x7+2x8<=192 +4x1+4x2-36x3+4x4+8x5+12x6-2x7+4x8<=192 +4x1+4x2-28x3+8x4+8x5+8x6-2x7<=192 +4x1+4x2-4x3+8x4+8x5+2x6-2x7<=192 +20x1+20x2-22x3+42x4+36x5+10x6-10x7+6x8<=960 +12x1+4x2-16x3+8x4+16x5+8x6-2x7+8x8<=384 +12x1+6x2+16x4+24x5+10x6+8x8<=576 +48x1+24x2+24x3+56x4+80x5+16x6-6x7+24x8<=1920 +48x1+24x2-72x3+40x4+80x5+48x6-6x7+40x8<=1920 +4x1+2x2-8x3+4x4+8x5+6x6+4x8<=192 +12x1+6x2+15x3+23x4+22x5+3x6+5x8<=576 +8x3-24x4-80x5+8x6-2x7+8x8<=0 +4x1-4x2+20x3-20x4-72x5+12x6-2x7+4x8<=64 +8x1+20x3-12x4-24x5+4x6-2x7<=192 +6x1+12x3-8x4-8x5+4x6<=192 +8x3-24x4-16x5-2x7+8x8<=0 -2x2+4x3-20x4-16x5+4x6+4x8<=0 -2x2+4x3-12x4-24x5+4x6+4x8<=0 +4x1+14x3-10x4-20x5+2x6-2x7+2x8<=96 +4x1-4x2+20x3-52x4-40x5+4x6-2x7+12x8<=64 +12x1-12x2+60x3-188x4-152x5+28x6-6x7+36x8<=192 +4x1+2x2+4x3+12x4<=192 -16x1-24x2+52x3-12x4-120x5+12x6-2x7+12x8<=0 -14x2+18x3-6x4-20x5+6x6-4x7<=0 +8x1+8x2+20x3+36x4-24x5+4x6-2x7+12x8<=576 +16x1+8x2-24x3+40x4-48x5+8x6-2x7+16x8<=640 +6x1-8x3+12x4-8x5+4x8<=192 +20x1+4x2-16x3+40x4-48x5-2x7+16x8<=640 +20x1+12x2+4x3+60x4-168x5+12x6-2x7+36x8<=960 +16x1+8x2-24x3+40x4-176x5+8x6-2x7+32x8<=640 +16x1+8x2-56x3+40x4-240x5+8x6-2x7+40x8<=640 +20x1+12x2-28x3+60x4-296x5+20x6-2x7+52x8<=960 +4x1+2x2-12x3+12x4-72x5+4x6+12x8<=192 +48x1+24x2-156x3+100x4+40x5+44x6-6x7+20x8<=1920 +12x1+4x2-20x3+20x4+8x5+4x6-2x7+4x8<=384 +8x1-6x3+10x4+4x5-2x6-2x7+2x8<=192 -8x3-4x4+4x6+2x8<=0 +12x1-12x2-4x3-12x4+8x5+12x6-6x7+4x8<=192 +8x1+4x3-4x4+8x5+4x6-2x7<=192 +6x1+4x3-20x4+8x5+4x6+8x8<=192 -3x1-11x2+9x3-1x4-10x5+5x6-2x7+1x8<=0 +12x1+6x2+16x3+16x4+24x5+2x6+8x8<=576 +48x1+24x2+48x3+112x4-32x5-8x6-6x7+32x8<=1920 +16x1+8x2+8x3+40x4-16x5-2x7+8x8<=640 +12x1+12x2+52x3+60x4+24x5+4x6-2x7+12x8<=1152 +60x1+36x2+112x3+152x4+48x5-8x6-6x7+32x8<=2880 -8x1-16x2+36x3-12x4-120x5+28x6-2x7+12x8<=0 -2x1-4x2+8x3-4x4-40x5+8x6+4x8<=0 -4x2+16x3-16x4-48x5+8x6-2x7+4x8<=0 -4x1-4x2+16x3-8x4-48x5+8x6-2x7+8x8<=0 +6x1-2x2+2x3+6x4+4x5-2x6-2x7<=128 +7x1-1x2-1x3+9x4+2x5-3x6-2x7+1x8<=160 +8x1+4x2+2x3+18x4-2x6-2x7<=288 +20x1+12x2-8x3+48x4-6x7<=768 -8x1-96x5+16x6-2x7<=0 -4x1+4x2-12x3+12x4-72x5+20x6-2x7+12x8<=192 -6x1+2x2-12x3-48x5+12x6-2x7<=0 -12x1+4x2+8x3-96x5+8x6-6x7<=0 -16x1+16x2+12x3+12x4-72x5-4x6-14x7+12x8<=192 -14x1+10x2+4x3-48x5-4x6-10x7<=0 +16x1+8x2-32x3+40x4+8x6-2x7<=640 +48x1+24x2-104x3+120x4-80x5+24x6-6x7+40x8<=1920 +48x1+24x2-116x3+108x4-8x5+36x6-6x7+28x8<=1920 +16x1+8x2-24x3+40x4-16x5+8x6-2x7+8x8<=640 +4x1+2x2-12x3+12x4-8x5+4x6+4x8<=192 +4x1+2x2-13x3+11x4-2x5+5x6+3x8<=192 +12x1+6x2-28x3+36x4-16x5+12x6+8x8<=576 +4x1+2x2-12x3+12x4+4x6<=192 +4x1+2x2-18x3+10x4+4x5+6x6+2x8<=192 +12x1+4x2-16x3+24x4-2x7<=384 +12x1+4x2+24x4-4x6-2x7<=384 +48x1+24x2+56x3+56x4+80x5+8x6-6x7+8x8<=1920 -20x1-4x2+24x3-288x5+40x6-6x7<=0 -2x1-4x3-8x5+4x6<=0 -10x1+6x2+4x3-16x5-4x6-6x7<=0 -14x1+6x2+8x3-8x5-8x6-6x7<=0 -20x1+4x2+16x3-16x5-8x6-6x7<=0 -8x1-2x2+8x3-8x5-2x7<=0 -32x1+32x3-32x5-8x6-10x7<=0 -19x1+1x2+21x3+3x4-18x5-5x6-6x7+3x8<=48 +18x1+14x2+50x3+62x4+20x5-2x6-2x7+10x8<=1152 -2x1+2x2+2x3-2x4-4x5-2x6-2x7+2x8<=0 +4x1+2x2-4x3+12x4-40x5+4x6+8x8<=192 +4x1+2x2-4x3+12x4-24x5+4x6+6x8<=192 +3x1+1x2-2x3+8x4-16x5+2x6+4x8<=128 +4x1-4x2+20x3-20x4-40x5+4x6-2x7+4x8<=64 +12x1-12x2+52x3-36x4-104x5+20x6-6x7+4x8<=192 -6x2+12x3-20x4-40x5+8x6+4x8<=0 +12x1+4x2+24x3-32x4-64x5+8x6-2x7<=384 +6x3-18x4-4x5-2x6-2x7+6x8<=0 +8x3-20x4-8x5-4x6-2x7+6x8<=0 -8x2+24x3-40x4-208x5+32x6-2x7+16x8<=0 -8x2+24x3-40x4-144x5+24x6-2x7+16x8<=0 -8x2+24x3-40x4-112x5+16x6-2x7+16x8<=0 +8x1+20x3-60x4-152x5+20x6-2x7+4x8<=192 +4x1-4x2+20x3-84x4-264x5+36x6-2x7+12x8<=64 +16x1+12x2+26x3+42x4+36x5+6x6-2x7+6x8<=960 +20x1+12x2+34x3+42x4+36x5-2x7+6x8<=960 +20x1+16x2+18x3+42x4+36x5+2x6-6x7+6x8<=960 +8x1+8x2+20x3+36x4-88x5+4x6-2x7+20x8<=576 -132x1+60x2+84x3+12x4-72x5-76x6-58x7+12x8<=192 -20x1+12x2+20x3+12x4-8x5-12x6-10x7+4x8<=192 -3x1+3x2+6x3+6x4-2x6-2x7<=96 -16x1+16x2+48x3+48x4-8x6-10x7<=768 +1x1+1x2+6x4-20x5+4x6+4x8<=96 -3x1-5x2+10x3-8x4-72x5+14x6+8x8<=0 -4x1-12x2+32x3-24x4-176x5+32x6-2x7+16x8<=0 +12x1-12x2+60x3-60x4-152x5+28x6-6x7+4x8<=192 +12x1-12x2+76x3-76x4-184x5+28x6-10x7+12x8<=192 -48x4-2x7+16x8<=0 +12x1+8x2+12x3+36x4-24x5-2x7+12x8<=576 +4x1+4x2+4x3+12x4-8x5-4x6-2x7+4x8<=192 -12x2+32x3-32x4-96x5+16x6-2x7+8x8<=0 -24x1+8x2+24x3-8x4-16x5-16x6-10x7+8x8<=0 -52x1+28x2+64x3-40x4-80x5-48x6-30x7+40x8<=0 +12x1-12x2-20x3-156x4+8x5+28x6-6x7+60x8<=192 +12x1-12x2-20x3-380x4+8x5+28x6-6x7+116x8<=192 -2x2-4x3-40x4+4x6+12x8<=0 -6x2-8x3-24x4+8x6+10x8<=0 -8x2+36x3-28x4-152x5+20x6-6x7+4x8<=0 +2x1-2x2+12x3-8x4-32x5+4x6-2x7<=32 -2x2-4x3-4x4+4x6<=0 -6x2-8x3-8x4+8x6+2x8<=0 -6x2-1x3-5x4-2x5+5x6+1x8<=0 +16x1+12x2+48x3+48x4+32x5-4x6-2x7+8x8<=1024 +23x1+15x2+55x3+57x4+42x5-3x6-2x7+9x8<=1248 +24x1+16x2+58x3+66x4+36x5-2x6-2x7+12x8<=1344 +21x1+13x2+45x3+51x4+30x5-3x6-2x7+9x8<=1056 +20x1+12x2+40x3+48x4+24x5-4x6-2x7+8x8<=960 -8x2+24x3-24x4-112x5+20x6-2x7+8x8<=0 -4x1-12x2+32x3-24x4-144x5+24x6-2x7+16x8<=0 -8x2+24x3-24x4-80x5+12x6-2x7+8x8<=0 -8x1+8x3-24x4-80x5+8x6-2x7+24x8<=0 -6x1+2x2+4x3-16x4-48x5-4x6-2x7+16x8<=0 -14x1+10x2+20x3-16x4-48x5-20x6-10x7+16x8<=0 -20x1+12x2+32x3-24x4-80x5-16x6-14x7+24x8<=0 -14x1+2x2+20x3-8x4-16x5-12x6-6x7+8x8<=0 -12x1+4x2+16x3-8x4-16x5-8x6-6x7+8x8<=0 -2x1-4x4-8x5+4x8<=0 -4x1+4x2+12x3+4x4-88x5-4x6-2x7+20x8<=192 -1x1+3x2+4x3+6x4-36x5-2x7+6x8<=96 -4x1+12x2+4x3+12x4-72x5-12x6-10x7+12x8<=192 +4x1+4x2-22x3+10x4+4x5+6x6-2x7+2x8<=192 +28x1+16x2+54x3+62x4+44x5-2x6-2x7+10x8<=1344 +36x1+28x2+120x3+144x4+32x5+8x6-2x7+32x8<=2688 +8x1+6x2+28x3+36x4+4x6+8x8<=640 +1x1+1x2+5x3+7x4-2x5+1x6+1x8<=112 -2x1-2x2+7x3+3x4-18x5+5x6+3x8<=48 -1x1-1x2+2x3-8x5+2x6<=0 -12x1-20x2+48x3-24x4-240x5+48x6-2x7+24x8<=0 +80x1+56x2+216x3+216x4+176x5-8x6-6x7+32x8<=4864 +32x1+24x2+104x3+104x4+80x5-2x7+16x8<=2304 +24x1+14x2+44x3+60x4+24x5-4x6-2x7+12x8<=1152 +6x1+4x2+12x3+24x4-24x5+4x6+8x8<=384 +28x1+20x2+64x3+104x4-48x5+8x6-2x7+32x8<=1728 +24x1+16x2+36x3+84x4-88x5+12x6-2x7+28x8<=1344 -8x1+8x2+12x3+12x4-8x5-4x6-6x7+4x8<=192 -48x1+32x2+28x3+12x4-72x5-20x6-30x7+12x8<=192 +48x1+24x2+44x3+108x4-8x5-4x6-6x7+28x8<=1920 +20x1+12x2+20x3+60x4-40x5+4x6-2x7+16x8<=960 +28x1+16x2+28x3+84x4-40x5+4x6-2x7+20x8<=1344 +14x1+8x2+20x3+48x4-24x5+4x6+12x8<=768 +32x1+24x2+68x3+132x4-152x5+20x6-2x7+52x8<=2112 +4x1+2x2+3x3+11x4-2x5+1x6+3x8<=192 +12x1+6x2+4x3+36x4-16x5+4x6+8x8<=576 +4x1+2x2-4x3+12x4-16x5+4x6+4x8<=192 +36x1+18x2+59x3+75x4+62x5+3x6+13x8<=1728 -4x1+4x2+12x3+12x4-4x6-2x7<=192 +1x1+1x2+3x3+5x4+2x5+1x6+1x8<=96 +2x2+4x3+12x4+4x6<=192 +36x1+28x2+96x3+152x4-16x5+8x6-2x7+16x8<=2496 +12x1+12x2+36x3+60x4-8x5+4x6-2x7+4x8<=960 +18x1+26x2+76x3+120x4+4x6-6x7<=1920 +42x1+34x2+116x3+144x4+48x5-4x6-6x7+24x8<=2688 +17x1+11x2+37x3+43x4+22x5-3x6-2x7+7x8<=864 +60x1+36x2+118x3+142x4+76x5-10x6-6x7+26x8<=2880 +6x1+10x3-10x4+4x5+2x6+2x8<=192 +6x1+10x3-2x4+4x5+2x6<=192 -2x2+2x3-26x4-4x5+2x6+6x8<=0 +12x1-12x2+40x3-240x4-32x5+8x6-6x7+56x8<=192 +7x1+5x2+12x3+30x4-52x5+8x6+14x8<=480 -4x2+16x3-16x4-80x5+12x6-2x7+4x8<=0 -4x1-6x2+12x3-4x4-48x5+12x6+4x8<=0 +36x1+12x2+60x3+20x4+40x5-4x6-6x7+4x8<=1152 -2x1-8x2+16x3-12x4-56x5+12x6+4x8<=0 -10x1-16x2+32x3-12x4-120x5+28x6+12x8<=0 -9x1+1x2-16x3+6x4-36x5+20x6+6x8<=96 -1x1+1x2+6x4-4x5+4x6+2x8<=96 +10x1+6x2+12x3+24x4-16x5-4x6-2x7+8x8<=416 +4x1+4x2-6x3+10x4+4x5+2x6-2x7+2x8<=192 +4x1+4x2-8x3+12x4+2x6-2x7<=192 -4x1+2x2+3x3-1x4-2x5-3x6-2x7+1x8<=0 +12x1+12x2+44x3+52x4+16x5-4x6-2x7+8x8<=960 +8x1+8x2+28x3+28x4+16x5-4x6-2x7+4x8<=576 -3x1-5x2+9x3-1x4-10x5+1x6-2x7+1x8<=0 -3x1-7x2+9x3-1x4-10x5+3x6-2x7+1x8<=0 +16x1+24x2+88x3+88x4+48x5-8x6-6x7+16x8<=1792 +15x1+11x2+39x3+41x4+26x5-3x6-2x7+7x8<=864 +11x1+9x2+31x3+33x4+18x5-3x6-2x7+5x8<=672 +16x1+12x2+42x3+50x4+20x5-2x6-2x7+8x8<=960 +80x1+40x2+154x3+90x4+132x5-18x6-10x7+6x8<=3200 +48x1+24x2+94x3+46x4+76x5-10x6-6x7+2x8<=1920 +12x1+12x2+50x3+58x4+4x5+2x6-2x7+14x8<=1056 +12x1+12x2+44x3+52x4+8x5-4x6-2x7+12x8<=960 -6x2+20x3-20x4-56x5+8x6-2x7+6x8<=0 -8x1-8x2+24x3+8x4-16x5+8x6-2x7+8x8<=192 -3x1-1x2+2x3-4x4-8x5+2x6+4x8<=0 -11x1-1x2+2x3-20x4-40x5+6x6+20x8<=0 -18x2+3x3-13x4-10x5+13x6+3x8<=0 +6x1+4x2+16x3+20x4+8x5+2x6+4x8<=400 +64x1+40x2+144x3+176x4+96x5+8x6-2x7+32x8<=3648 +8x1+6x2+26x3+34x4+4x5+4x6+8x8<=624 +6x2+28x3+36x4+4x6-2x7<=576 +60x1+52x2+200x3+240x4+96x5+8x6-6x7+48x8<=4608 +18x1+14x2+48x3+60x4+24x5-2x7+12x8<=1152 +34x1+22x2+80x3+92x4+56x5-2x7+16x8<=1920 +36x1+22x2+74x3+82x4+52x5-8x6-4x7+14x8<=1728 +28x1+20x2+40x3+80x4-96x5-8x6-6x7+32x8<=1344 +12x1+8x2+12x3+36x4-56x5-2x7+16x8<=576 +13x1+7x2+16x3+30x4-4x5-4x6-2x7+8x8<=528 +12x1-12x2+48x3-40x4-80x5+16x6-6x7+8x8<=192 +12x1-12x2+48x3-200x4-80x5+16x6-6x7+48x8<=192 -6x2+12x3-52x4-40x5+8x6+12x8<=0 -2x2+3x3-21x4-10x5+3x6+5x8<=0 +8x1+12x3-12x4+8x5+2x6+4x8<=256 +6x1+7x3-13x4+6x5+3x6+5x8<=192 +16x1+24x3+16x5+4x6+2x8<=512 +14x1+6x2+4x3+32x4-2x6-2x7<=512 +16x1+8x2+8x3+40x4-2x6-2x7<=640 +20x1+14x2+20x3+60x4-2x6-4x7<=960 +20x1+12x2+4x3+60x4-72x5+12x6-2x7+20x8<=960 +20x1+12x2+4x3+60x4-104x5+12x6-2x7+28x8<=960 +12x1-12x2-20x3-36x4+8x5+28x6-6x7<=192 -2x2+3x3-5x4-10x5+3x6+1x8<=0 -28x1+4x2+44x3+4x4-24x5-20x6-10x7+12x8<=192 -8x1+12x3+4x4-8x5-4x6-2x7+2x8<=64 -14x1-6x2+36x3+16x4-32x5-4x6-2x7+8x8<=256 -4x1-6x2+10x3+2x4-20x5+8x6+4x8<=48 -2x1-4x2+4x3-8x5+4x6+2x8<=16 -12x1-36x2+28x3-12x4-56x5+28x6-2x7+12x8<=0 -4x1-4x2+8x3-8x5-2x7<=0 -4x1-8x2+12x3+4x4-8x5+4x6-2x7<=64 -12x1-12x2+36x3+28x4-8x5+12x6-2x7+4x8<=448 +10x1+8x2+28x3+48x4-8x5+4x6+4x8<=768 +22x1+16x2+52x3+96x4-56x5+12x6+28x8<=1536 +16x1+16x2+88x3+88x4+48x5-2x7+16x8<=1792 -6x1+10x2+20x3+24x4-4x6-6x7<=384 +12x1+28x2+104x3+144x4+8x6-6x7<=2304 +48x1+40x2+168x3+200x4+80x5+8x6-2x7+40x8<=3840 -8x2+6x3-10x4-4x5+2x6-2x7+4x8<=0 -4x1-8x2+6x3-18x4-4x5+2x6-2x7+10x8<=0 +16x1+10x2+16x3+48x4-24x5+2x6-2x7+12x8<=768 +56x1+32x2+32x3+144x4-96x5-8x6-10x7+48x8<=2304 +48x1+24x2+16x3+112x4-8x6-10x7<=1792 +56x1+32x2+32x3+144x4-8x6-10x7<=2304 +6x1+7x3-5x4+6x5+3x6+3x8<=192 +14x1+19x3-1x4+14x5+5x6+3x8<=448 +18x1+24x3-4x4+16x5+8x6+4x8<=576 +60x1+36x2+96x3+168x4+16x5-8x6-6x7+16x8<=2880 +6x1-10x3+10x4+4x5+2x6+2x8<=192 +8x1-12x3+12x4+8x5+4x6+2x8<=256 +16x1+24x4+16x5+2x6+4x8<=512 +6x1-2x3+10x4+4x5+2x8<=192 +18x1-4x3+24x4+16x5+4x6+8x8<=576 +14x1-1x3+19x4+14x5+3x6+5x8<=448 +18x1+3x3+23x4+22x5+3x6+5x8<=576 +6x1-5x3+7x4+6x5+3x6+3x8<=192 +6x1-13x3+7x4+6x5+5x6+3x8<=192 +4x1-4x2-20x3+4x4-24x5-4x6-2x7+4x8<=64 +56x1+32x2+96x3+96x4+96x5-16x6-10x7<=2304 +30x1+32x3+28x4+32x5-8x6-6x7<=768 -1x1<=0 -1x2<=0 -1x3<=0 -1x4<=0 -1x5<=0 -1x6<=0 -1x7<=0 -1x8<=0 END lrslib-062/ine/test-062/porta/mit71-61.ine.ieq0000600001553200155320000001350112722006616016300 0ustar avisDIM = 60 INEQUALITIES_SECTION +384x1-192x3-768x6+512x9+768x13-768x19-192x33+384x39-64x51<=64 -2x9+6x10-6x11+2x12+2x28-6x29+6x30-2x31<=0 -2x9+2x10+2x11-2x12+2x28-2x29-2x30+2x31<=0 -2x9-2x10+2x11+2x12+2x28+2x29-2x30-2x31<=0 -2x9-6x10-6x11-2x12+2x28+6x29+6x30+2x31<=0 -4x6+8x7-4x8+8x9-16x10+8x11-4x28+8x29-4x30<=0 -4x6+4x8+8x9-8x11-4x28+4x30<=0 -4x6-8x7-4x8+8x9+16x10+8x11-4x28-8x29-4x30<=0 -8x1+8x2+24x6-24x7-24x9+24x10+8x28-8x29<=0 -8x1-8x2+24x6+24x7-24x9-24x10+8x28+8x29<=0 +64x1-96x6+64x9-16x28<=16 -1x51+6x52-12x53-3x54+12x55+8x56-3x57-12x58+6x59-1x60<=0 -1x51+4x52-4x53-1x54+1x57+4x58-4x59+1x60<=0 -1x51+2x52+1x54-4x55+1x57+2x59-1x60<=0 -1x51+2x52+4x53-3x54+4x55-8x56-3x57+4x58+2x59-1x60<=0 -1x51+4x53-1x54+1x57-4x58+1x60<=0 -1x51+3x54-3x57+1x60<=0 -1x51-2x52+4x53-3x54-4x55+8x56-3x57+4x58-2x59-1x60<=0 -1x51-2x52+1x54+4x55+1x57-2x59-1x60<=0 -1x51-4x52-4x53-1x54+1x57+4x58+4x59+1x60<=0 -1x51-6x52-12x53-3x54-12x55-8x56-3x57-12x58-6x59-1x60<=0 -2x39+8x40+2x41-8x42-4x43-8x44+4x45+8x46+8x47-8x48-2x49+2x50+2x51-10x52+16x53+4x54-12x55-8x56+2x57+8x58-2x59<=0 -2x39+4x40+2x41-4x42-4x47+4x48+2x49-2x50+2x51-6x52+4x53+4x55-2x57-4x58+2x59<=0 -2x39+8x40-2x41+8x42-4x43-8x44-4x45-8x46+8x47+8x48-2x49-2x50+2x51-6x52+4x54-4x55+8x56+2x57-8x58+2x59<=0 -2x39+4x40-2x41+4x42-4x47-4x48+2x49+2x50+2x51-2x52-4x53+4x55-2x57+4x58-2x59<=0 -2x39+2x41-4x43+8x44+4x45-8x46-2x49+2x50+2x51-2x52-8x53+4x54-4x55+8x56+2x57-2x59<=0 -2x39+2x41+4x43-4x45-2x49+2x50+2x51-2x52-4x54+4x55+2x57-2x59<=0 -2x39-2x41-4x43+8x44-4x45+8x46-2x49-2x50+2x51+2x52-8x53+4x54+4x55-8x56+2x57+2x59<=0 -2x39-2x41+4x43+4x45-2x49-2x50+2x51+2x52-4x54-4x55+2x57+2x59<=0 -2x39-4x40+2x41+4x42+4x47-4x48+2x49-2x50+2x51+2x52-4x53-4x55-2x57+4x58+2x59<=0 -2x39-4x40-2x41-4x42+4x47+4x48+2x49+2x50+2x51+6x52+4x53-4x55-2x57-4x58-2x59<=0 -2x39-8x40+2x41+8x42-4x43-8x44+4x45+8x46-8x47+8x48-2x49+2x50+2x51+6x52+4x54+4x55-8x56+2x57-8x58-2x59<=0 -2x39-8x40-2x41-8x42-4x43-8x44-4x45-8x46-8x47-8x48-2x49-2x50+2x51+10x52+16x53+4x54+12x55+8x56+2x57+8x58+2x59<=0 -4x19+8x20+8x21-4x22-16x23-4x24+8x25+8x26-4x27+8x39-24x40-8x41+24x42+8x43+16x44-8x45-16x46-8x47+8x48-4x51+16x52-20x53-4x54+8x55+8x56-4x58<=0 -4x19+8x21+4x22-4x24-8x25+4x27+8x39-16x40-8x42+8x43+16x46-8x48-4x51+8x52+4x53-4x54-8x56+4x58<=0 -4x19+8x20-4x22+4x24-8x26+4x27+8x39-8x40-8x41+8x42-8x43+8x45+8x47-8x48-4x51+8x52-4x53+4x54-8x55+4x58<=0 -4x19-8x20+8x21-4x22+16x23-4x24+8x25-8x26-4x27+8x39-8x40+8x41-8x42+8x43-16x44+8x45-16x46+8x47+8x48-4x51+12x53-4x54-8x55+8x56-4x58<=0 -4x19+4x22+4x24-4x27+8x39-8x42-8x43+8x48-4x51+4x53+4x54-4x58<=0 -4x19+8x20-8x21-4x22+16x23-4x24-8x25+8x26-4x27+8x39+8x40-8x41-8x42+8x43-16x44-8x45+16x46-8x47+8x48-4x51+12x53-4x54+8x55-8x56-4x58<=0 -4x19-8x20-4x22+4x24+8x26+4x27+8x39+8x40+8x41+8x42-8x43-8x45-8x47-8x48-4x51-8x52-4x53+4x54+8x55+4x58<=0 -4x19-8x21+4x22-4x24+8x25+4x27+8x39+16x40-8x42+8x43-16x46-8x48-4x51-8x52+4x53-4x54+8x56+4x58<=0 -4x19-8x20-8x21-4x22-16x23-4x24-8x25-8x26-4x27+8x39+24x40+8x41+24x42+8x43+16x44+8x45+16x46+8x47+8x48-4x51-16x52-20x53-4x54-8x55-8x56-4x58<=0 -4x33+16x34-8x35-16x36+16x37-4x38+8x39-32x40+16x43+32x44-32x47+8x49-4x51+16x52-16x53-8x54+16x55-4x57<=0 -4x33+8x34-8x37+4x38+8x39-16x40+16x47-8x49-4x51+8x52-8x55+4x57<=0 -4x33-8x35+16x36-4x38+8x39+16x43-32x44+8x49-4x51+16x53-8x54-4x57<=0 -4x33+8x35-4x38+8x39-16x43+8x49-4x51+8x54-4x57<=0 -4x33-8x34+8x37+4x38+8x39+16x40-16x47-8x49-4x51-8x52+8x55+4x57<=0 -4x33-16x34-8x35-16x36-16x37-4x38+8x39+32x40+16x43+32x44+32x47+8x49-4x51-16x52-16x53-8x54-16x55-4x57<=0 -8x13+8x14+16x15-16x16-8x17+8x18+16x19-16x20-32x21+32x23+16x24-16x26+8x33-24x34+8x35+16x36-8x37-24x39+64x40+8x41-16x42-24x43-32x44+8x45+16x47+8x51-24x52+16x53+8x54-8x55<=0 -8x13-8x14+16x15+16x16-8x17-8x18+16x19+16x20-32x21-32x23+16x24+16x26+8x33-8x34+8x35-16x36+8x37-24x39+32x40-8x41+16x42-24x43+32x44-8x45-16x47+8x51-8x52-16x53+8x54+8x55<=0 -8x13+8x14+8x17-8x18+16x19-16x20-16x24+16x26+8x33-8x34-8x35+8x37-24x39+16x40+8x41+24x43-8x45-16x47+8x51-8x52-8x54+8x55<=0 -8x13-8x14+8x17+8x18+16x19+16x20-16x24-16x26+8x33+8x34-8x35-8x37-24x39-16x40-8x41+24x43+8x45+16x47+8x51+8x52-8x54-8x55<=0 -8x13+8x14-16x15+16x16-8x17+8x18+16x19-16x20+32x21-32x23+16x24-16x26+8x33+8x34+8x35-16x36-8x37-24x39-32x40+8x41+16x42-24x43+32x44+8x45+16x47+8x51+8x52-16x53+8x54-8x55<=0 -8x13-8x14-16x15-16x16-8x17-8x18+16x19+16x20+32x21+32x23+16x24+16x26+8x33+24x34+8x35+16x36+8x37-24x39-64x40-8x41-16x42-24x43-32x44-8x45-16x47+8x51+24x52+16x53+8x54+8x55<=0 -8x9+24x10-24x11+8x12+24x19-48x20-24x21+24x22+48x23-24x25-24x39+48x40+24x41-48x42-24x44+24x46+8x51-24x52+24x53-8x56<=0 -8x9+8x10+8x11-8x12+24x19-16x20-8x21-8x22-16x23+24x25-24x39+16x40+8x41+16x42+8x44-24x46+8x51-8x52-8x53+8x56<=0 -8x9-8x10+8x11+8x12+24x19+16x20+8x21-8x22-16x23-24x25-24x39-16x40-8x41+16x42+8x44+24x46+8x51+8x52-8x53-8x56<=0 -8x9-24x10-24x11-8x12+24x19+48x20+24x21+24x22+48x23+24x25-24x39-48x40-24x41-48x42-24x44-24x46+8x51+24x52+24x53+8x56<=0 -16x3+32x4-16x5+64x13-128x15+64x17-64x19+128x21-64x24-32x33+64x34-32x35+64x39-128x40+64x43-16x51+32x52-16x54<=0 -16x3+16x5+64x13-64x17-64x19+64x24-32x33+32x35+64x39-64x43-16x51+16x54<=0 -16x3-32x4-16x5+64x13+128x15+64x17-64x19-128x21-64x24-32x33-64x34-32x35+64x39+128x40+64x43-16x51-32x52-16x54<=0 -16x6+32x7-16x8+32x9-64x10+32x11+32x13-32x14-32x15+32x16-80x19+96x20+64x21-16x22-64x23-16x33+32x34-16x36+64x39-96x40-32x41+32x42+32x44-16x51+32x52-16x53<=0 -16x6+16x8+32x9-32x11+32x13-32x16-80x19+16x22+64x23-16x33+16x36+64x39-32x42-32x44-16x51+16x53<=0 -16x6-32x7-16x8+32x9+64x10+32x11+32x13+32x14+32x15+32x16-80x19-96x20-64x21-16x22-64x23-16x33-32x34-16x36+64x39+96x40+32x41+32x42+32x44-16x51-32x52-16x53<=0 -32x1+32x2+32x3-32x4+128x6-128x7-128x9+128x10-192x13+64x14+128x15+256x19-128x20-128x21+64x33-64x34-160x39+128x40+32x41+32x51-32x52<=0 -32x1-32x2+32x3+32x4+128x6+128x7-128x9-128x10-192x13-64x14-128x15+256x19+128x20+128x21+64x33+64x34-160x39-128x40-32x41+32x51+32x52<=0 -1x28+4x29-6x30+4x31-1x32<=0 -1x28+2x29-2x31+1x32<=0 -1x28+2x30-1x32<=0 -1x28-2x29+2x31+1x32<=0 -1x28-4x29-6x30-4x31-1x32<=0 END lrslib-062/ine/test-062/porta/bv7.ine.ieq0000600001553200155320000000236512722006616015617 0ustar avisDIM = 56 INEQUALITIES_SECTION -7x1-6x8-5x15-4x22-3x29-2x36-1x43+1x50==0 -7x2-6x9-5x16-4x23-3x30-2x37-1x44+1x51==0 -7x3-6x10-5x17-4x24-3x31-2x38-1x45+1x52==0 -7x4-6x11-5x18-4x25-3x32-2x39-1x46+1x53==0 -7x5-6x12-5x19-4x26-3x33-2x40-1x47+1x54==0 -7x6-6x13-5x20-4x27-3x34-2x41-1x48+1x55==0 -7x7-6x14-5x21-4x28-3x35-2x42-1x49+1x56==0 -1x1-1x2-1x3-1x4-1x5-1x6-1x7==-1 -1x8-1x9-1x10-1x11-1x12-1x13-1x14==-1 -1x15-1x16-1x17-1x18-1x19-1x20-1x21==-1 -1x22-1x23-1x24-1x25-1x26-1x27-1x28==-1 -1x29-1x30-1x31-1x32-1x33-1x34-1x35==-1 -1x36-1x37-1x38-1x39-1x40-1x41-1x42==-1 -1x43-1x44-1x45-1x46-1x47-1x48-1x49==-1 -1x1-1x8-1x15-1x22-1x29-1x36-1x43==-1 -1x2-1x9-1x16-1x23-1x30-1x37-1x44==-1 -1x3-1x10-1x17-1x24-1x31-1x38-1x45==-1 -1x4-1x11-1x18-1x25-1x32-1x39-1x46==-1 -1x5-1x12-1x19-1x26-1x33-1x40-1x47==-1 -1x6-1x13-1x20-1x27-1x34-1x41-1x48==-1 -1x1<=0 -1x2<=0 -1x3<=0 -1x4<=0 -1x5<=0 -1x6<=0 -1x7<=0 -1x8<=0 -1x9<=0 -1x10<=0 -1x11<=0 -1x12<=0 -1x13<=0 -1x14<=0 -1x15<=0 -1x16<=0 -1x17<=0 -1x18<=0 -1x19<=0 -1x20<=0 -1x21<=0 -1x22<=0 -1x23<=0 -1x24<=0 -1x25<=0 -1x26<=0 -1x27<=0 -1x28<=0 -1x29<=0 -1x30<=0 -1x31<=0 -1x32<=0 -1x33<=0 -1x34<=0 -1x35<=0 -1x36<=0 -1x37<=0 -1x38<=0 -1x39<=0 -1x40<=0 -1x41<=0 -1x42<=0 -1x43<=0 -1x44<=0 -1x45<=0 -1x46<=0 -1x47<=0 -1x48<=0 -1x49<=0 END lrslib-062/ine/test-062/porta/perm10.ine.ieq0000600001553200155320000006310312722006616016222 0ustar avisDIM = 10 VALID 1 2 3 4 5 6 7 8 9 10 INEQUALITIES_SECTION -1x1-1x2-1x3-1x4-1x5-1x6-1x7-1x8-1x9-1x10==-55 +1x1+1x2+1x3+1x4+1x5+1x6+1x7+1x8+1x9<=54 +1x1+1x2+1x3+1x4+1x5+1x6+1x7+1x8+1x10<=54 +1x1+1x2+1x3+1x4+1x5+1x6+1x7+1x9+1x10<=54 +1x1+1x2+1x3+1x4+1x5+1x6+1x8+1x9+1x10<=54 +1x1+1x2+1x3+1x4+1x5+1x7+1x8+1x9+1x10<=54 +1x1+1x2+1x3+1x4+1x6+1x7+1x8+1x9+1x10<=54 +1x1+1x2+1x3+1x5+1x6+1x7+1x8+1x9+1x10<=54 +1x1+1x2+1x4+1x5+1x6+1x7+1x8+1x9+1x10<=54 +1x1+1x3+1x4+1x5+1x6+1x7+1x8+1x9+1x10<=54 +1x2+1x3+1x4+1x5+1x6+1x7+1x8+1x9+1x10<=54 +1x1+1x2+1x3+1x4+1x5+1x6+1x7+1x8<=52 +1x1+1x2+1x3+1x4+1x5+1x6+1x7+1x9<=52 +1x1+1x2+1x3+1x4+1x5+1x6+1x7+1x10<=52 +1x1+1x2+1x3+1x4+1x5+1x6+1x8+1x9<=52 +1x1+1x2+1x3+1x4+1x5+1x6+1x8+1x10<=52 +1x1+1x2+1x3+1x4+1x5+1x6+1x9+1x10<=52 +1x1+1x2+1x3+1x4+1x5+1x7+1x8+1x9<=52 +1x1+1x2+1x3+1x4+1x5+1x7+1x8+1x10<=52 +1x1+1x2+1x3+1x4+1x5+1x7+1x9+1x10<=52 +1x1+1x2+1x3+1x4+1x5+1x8+1x9+1x10<=52 +1x1+1x2+1x3+1x4+1x6+1x7+1x8+1x9<=52 +1x1+1x2+1x3+1x4+1x6+1x7+1x8+1x10<=52 +1x1+1x2+1x3+1x4+1x6+1x7+1x9+1x10<=52 +1x1+1x2+1x3+1x4+1x6+1x8+1x9+1x10<=52 +1x1+1x2+1x3+1x4+1x7+1x8+1x9+1x10<=52 +1x1+1x2+1x3+1x5+1x6+1x7+1x8+1x9<=52 +1x1+1x2+1x3+1x5+1x6+1x7+1x8+1x10<=52 +1x1+1x2+1x3+1x5+1x6+1x7+1x9+1x10<=52 +1x1+1x2+1x3+1x5+1x6+1x8+1x9+1x10<=52 +1x1+1x2+1x3+1x5+1x7+1x8+1x9+1x10<=52 +1x1+1x2+1x3+1x6+1x7+1x8+1x9+1x10<=52 +1x1+1x2+1x4+1x5+1x6+1x7+1x8+1x9<=52 +1x1+1x2+1x4+1x5+1x6+1x7+1x8+1x10<=52 +1x1+1x2+1x4+1x5+1x6+1x7+1x9+1x10<=52 +1x1+1x2+1x4+1x5+1x6+1x8+1x9+1x10<=52 +1x1+1x2+1x4+1x5+1x7+1x8+1x9+1x10<=52 +1x1+1x2+1x4+1x6+1x7+1x8+1x9+1x10<=52 +1x1+1x2+1x5+1x6+1x7+1x8+1x9+1x10<=52 +1x1+1x3+1x4+1x5+1x6+1x7+1x8+1x9<=52 +1x1+1x3+1x4+1x5+1x6+1x7+1x8+1x10<=52 +1x1+1x3+1x4+1x5+1x6+1x7+1x9+1x10<=52 +1x1+1x3+1x4+1x5+1x6+1x8+1x9+1x10<=52 +1x1+1x3+1x4+1x5+1x7+1x8+1x9+1x10<=52 +1x1+1x3+1x4+1x6+1x7+1x8+1x9+1x10<=52 +1x1+1x3+1x5+1x6+1x7+1x8+1x9+1x10<=52 +1x1+1x4+1x5+1x6+1x7+1x8+1x9+1x10<=52 +1x2+1x3+1x4+1x5+1x6+1x7+1x8+1x9<=52 +1x2+1x3+1x4+1x5+1x6+1x7+1x8+1x10<=52 +1x2+1x3+1x4+1x5+1x6+1x7+1x9+1x10<=52 +1x2+1x3+1x4+1x5+1x6+1x8+1x9+1x10<=52 +1x2+1x3+1x4+1x5+1x7+1x8+1x9+1x10<=52 +1x2+1x3+1x4+1x6+1x7+1x8+1x9+1x10<=52 +1x2+1x3+1x5+1x6+1x7+1x8+1x9+1x10<=52 +1x2+1x4+1x5+1x6+1x7+1x8+1x9+1x10<=52 +1x3+1x4+1x5+1x6+1x7+1x8+1x9+1x10<=52 +1x1+1x2+1x3+1x4+1x5+1x6+1x7<=49 +1x1+1x2+1x3+1x4+1x5+1x6+1x8<=49 +1x1+1x2+1x3+1x4+1x5+1x6+1x9<=49 +1x1+1x2+1x3+1x4+1x5+1x6+1x10<=49 +1x1+1x2+1x3+1x4+1x5+1x7+1x8<=49 +1x1+1x2+1x3+1x4+1x5+1x7+1x9<=49 +1x1+1x2+1x3+1x4+1x5+1x7+1x10<=49 +1x1+1x2+1x3+1x4+1x5+1x8+1x9<=49 +1x1+1x2+1x3+1x4+1x5+1x8+1x10<=49 +1x1+1x2+1x3+1x4+1x5+1x9+1x10<=49 +1x1+1x2+1x3+1x4+1x6+1x7+1x8<=49 +1x1+1x2+1x3+1x4+1x6+1x7+1x9<=49 +1x1+1x2+1x3+1x4+1x6+1x7+1x10<=49 +1x1+1x2+1x3+1x4+1x6+1x8+1x9<=49 +1x1+1x2+1x3+1x4+1x6+1x8+1x10<=49 +1x1+1x2+1x3+1x4+1x6+1x9+1x10<=49 +1x1+1x2+1x3+1x4+1x7+1x8+1x9<=49 +1x1+1x2+1x3+1x4+1x7+1x8+1x10<=49 +1x1+1x2+1x3+1x4+1x7+1x9+1x10<=49 +1x1+1x2+1x3+1x4+1x8+1x9+1x10<=49 +1x1+1x2+1x3+1x5+1x6+1x7+1x8<=49 +1x1+1x2+1x3+1x5+1x6+1x7+1x9<=49 +1x1+1x2+1x3+1x5+1x6+1x7+1x10<=49 +1x1+1x2+1x3+1x5+1x6+1x8+1x9<=49 +1x1+1x2+1x3+1x5+1x6+1x8+1x10<=49 +1x1+1x2+1x3+1x5+1x6+1x9+1x10<=49 +1x1+1x2+1x3+1x5+1x7+1x8+1x9<=49 +1x1+1x2+1x3+1x5+1x7+1x8+1x10<=49 +1x1+1x2+1x3+1x5+1x7+1x9+1x10<=49 +1x1+1x2+1x3+1x5+1x8+1x9+1x10<=49 +1x1+1x2+1x3+1x6+1x7+1x8+1x9<=49 +1x1+1x2+1x3+1x6+1x7+1x8+1x10<=49 +1x1+1x2+1x3+1x6+1x7+1x9+1x10<=49 +1x1+1x2+1x3+1x6+1x8+1x9+1x10<=49 +1x1+1x2+1x3+1x7+1x8+1x9+1x10<=49 +1x1+1x2+1x4+1x5+1x6+1x7+1x8<=49 +1x1+1x2+1x4+1x5+1x6+1x7+1x9<=49 +1x1+1x2+1x4+1x5+1x6+1x7+1x10<=49 +1x1+1x2+1x4+1x5+1x6+1x8+1x9<=49 +1x1+1x2+1x4+1x5+1x6+1x8+1x10<=49 +1x1+1x2+1x4+1x5+1x6+1x9+1x10<=49 +1x1+1x2+1x4+1x5+1x7+1x8+1x9<=49 +1x1+1x2+1x4+1x5+1x7+1x8+1x10<=49 +1x1+1x2+1x4+1x5+1x7+1x9+1x10<=49 +1x1+1x2+1x4+1x5+1x8+1x9+1x10<=49 +1x1+1x2+1x4+1x6+1x7+1x8+1x9<=49 +1x1+1x2+1x4+1x6+1x7+1x8+1x10<=49 +1x1+1x2+1x4+1x6+1x7+1x9+1x10<=49 +1x1+1x2+1x4+1x6+1x8+1x9+1x10<=49 +1x1+1x2+1x4+1x7+1x8+1x9+1x10<=49 +1x1+1x2+1x5+1x6+1x7+1x8+1x9<=49 +1x1+1x2+1x5+1x6+1x7+1x8+1x10<=49 +1x1+1x2+1x5+1x6+1x7+1x9+1x10<=49 +1x1+1x2+1x5+1x6+1x8+1x9+1x10<=49 +1x1+1x2+1x5+1x7+1x8+1x9+1x10<=49 +1x1+1x2+1x6+1x7+1x8+1x9+1x10<=49 +1x1+1x3+1x4+1x5+1x6+1x7+1x8<=49 +1x1+1x3+1x4+1x5+1x6+1x7+1x9<=49 +1x1+1x3+1x4+1x5+1x6+1x7+1x10<=49 +1x1+1x3+1x4+1x5+1x6+1x8+1x9<=49 +1x1+1x3+1x4+1x5+1x6+1x8+1x10<=49 +1x1+1x3+1x4+1x5+1x6+1x9+1x10<=49 +1x1+1x3+1x4+1x5+1x7+1x8+1x9<=49 +1x1+1x3+1x4+1x5+1x7+1x8+1x10<=49 +1x1+1x3+1x4+1x5+1x7+1x9+1x10<=49 +1x1+1x3+1x4+1x5+1x8+1x9+1x10<=49 +1x1+1x3+1x4+1x6+1x7+1x8+1x9<=49 +1x1+1x3+1x4+1x6+1x7+1x8+1x10<=49 +1x1+1x3+1x4+1x6+1x7+1x9+1x10<=49 +1x1+1x3+1x4+1x6+1x8+1x9+1x10<=49 +1x1+1x3+1x4+1x7+1x8+1x9+1x10<=49 +1x1+1x3+1x5+1x6+1x7+1x8+1x9<=49 +1x1+1x3+1x5+1x6+1x7+1x8+1x10<=49 +1x1+1x3+1x5+1x6+1x7+1x9+1x10<=49 +1x1+1x3+1x5+1x6+1x8+1x9+1x10<=49 +1x1+1x3+1x5+1x7+1x8+1x9+1x10<=49 +1x1+1x3+1x6+1x7+1x8+1x9+1x10<=49 +1x1+1x4+1x5+1x6+1x7+1x8+1x9<=49 +1x1+1x4+1x5+1x6+1x7+1x8+1x10<=49 +1x1+1x4+1x5+1x6+1x7+1x9+1x10<=49 +1x1+1x4+1x5+1x6+1x8+1x9+1x10<=49 +1x1+1x4+1x5+1x7+1x8+1x9+1x10<=49 +1x1+1x4+1x6+1x7+1x8+1x9+1x10<=49 +1x1+1x5+1x6+1x7+1x8+1x9+1x10<=49 +1x2+1x3+1x4+1x5+1x6+1x7+1x8<=49 +1x2+1x3+1x4+1x5+1x6+1x7+1x9<=49 +1x2+1x3+1x4+1x5+1x6+1x7+1x10<=49 +1x2+1x3+1x4+1x5+1x6+1x8+1x9<=49 +1x2+1x3+1x4+1x5+1x6+1x8+1x10<=49 +1x2+1x3+1x4+1x5+1x6+1x9+1x10<=49 +1x2+1x3+1x4+1x5+1x7+1x8+1x9<=49 +1x2+1x3+1x4+1x5+1x7+1x8+1x10<=49 +1x2+1x3+1x4+1x5+1x7+1x9+1x10<=49 +1x2+1x3+1x4+1x5+1x8+1x9+1x10<=49 +1x2+1x3+1x4+1x6+1x7+1x8+1x9<=49 +1x2+1x3+1x4+1x6+1x7+1x8+1x10<=49 +1x2+1x3+1x4+1x6+1x7+1x9+1x10<=49 +1x2+1x3+1x4+1x6+1x8+1x9+1x10<=49 +1x2+1x3+1x4+1x7+1x8+1x9+1x10<=49 +1x2+1x3+1x5+1x6+1x7+1x8+1x9<=49 +1x2+1x3+1x5+1x6+1x7+1x8+1x10<=49 +1x2+1x3+1x5+1x6+1x7+1x9+1x10<=49 +1x2+1x3+1x5+1x6+1x8+1x9+1x10<=49 +1x2+1x3+1x5+1x7+1x8+1x9+1x10<=49 +1x2+1x3+1x6+1x7+1x8+1x9+1x10<=49 +1x2+1x4+1x5+1x6+1x7+1x8+1x9<=49 +1x2+1x4+1x5+1x6+1x7+1x8+1x10<=49 +1x2+1x4+1x5+1x6+1x7+1x9+1x10<=49 +1x2+1x4+1x5+1x6+1x8+1x9+1x10<=49 +1x2+1x4+1x5+1x7+1x8+1x9+1x10<=49 +1x2+1x4+1x6+1x7+1x8+1x9+1x10<=49 +1x2+1x5+1x6+1x7+1x8+1x9+1x10<=49 +1x3+1x4+1x5+1x6+1x7+1x8+1x9<=49 +1x3+1x4+1x5+1x6+1x7+1x8+1x10<=49 +1x3+1x4+1x5+1x6+1x7+1x9+1x10<=49 +1x3+1x4+1x5+1x6+1x8+1x9+1x10<=49 +1x3+1x4+1x5+1x7+1x8+1x9+1x10<=49 +1x3+1x4+1x6+1x7+1x8+1x9+1x10<=49 +1x3+1x5+1x6+1x7+1x8+1x9+1x10<=49 +1x4+1x5+1x6+1x7+1x8+1x9+1x10<=49 +1x1+1x2+1x3+1x4+1x5+1x6<=45 +1x1+1x2+1x3+1x4+1x5+1x7<=45 +1x1+1x2+1x3+1x4+1x5+1x8<=45 +1x1+1x2+1x3+1x4+1x5+1x9<=45 +1x1+1x2+1x3+1x4+1x5+1x10<=45 +1x1+1x2+1x3+1x4+1x6+1x7<=45 +1x1+1x2+1x3+1x4+1x6+1x8<=45 +1x1+1x2+1x3+1x4+1x6+1x9<=45 +1x1+1x2+1x3+1x4+1x6+1x10<=45 +1x1+1x2+1x3+1x4+1x7+1x8<=45 +1x1+1x2+1x3+1x4+1x7+1x9<=45 +1x1+1x2+1x3+1x4+1x7+1x10<=45 +1x1+1x2+1x3+1x4+1x8+1x9<=45 +1x1+1x2+1x3+1x4+1x8+1x10<=45 +1x1+1x2+1x3+1x4+1x9+1x10<=45 +1x1+1x2+1x3+1x5+1x6+1x7<=45 +1x1+1x2+1x3+1x5+1x6+1x8<=45 +1x1+1x2+1x3+1x5+1x6+1x9<=45 +1x1+1x2+1x3+1x5+1x6+1x10<=45 +1x1+1x2+1x3+1x5+1x7+1x8<=45 +1x1+1x2+1x3+1x5+1x7+1x9<=45 +1x1+1x2+1x3+1x5+1x7+1x10<=45 +1x1+1x2+1x3+1x5+1x8+1x9<=45 +1x1+1x2+1x3+1x5+1x8+1x10<=45 +1x1+1x2+1x3+1x5+1x9+1x10<=45 +1x1+1x2+1x3+1x6+1x7+1x8<=45 +1x1+1x2+1x3+1x6+1x7+1x9<=45 +1x1+1x2+1x3+1x6+1x7+1x10<=45 +1x1+1x2+1x3+1x6+1x8+1x9<=45 +1x1+1x2+1x3+1x6+1x8+1x10<=45 +1x1+1x2+1x3+1x6+1x9+1x10<=45 +1x1+1x2+1x3+1x7+1x8+1x9<=45 +1x1+1x2+1x3+1x7+1x8+1x10<=45 +1x1+1x2+1x3+1x7+1x9+1x10<=45 +1x1+1x2+1x3+1x8+1x9+1x10<=45 +1x1+1x2+1x4+1x5+1x6+1x7<=45 +1x1+1x2+1x4+1x5+1x6+1x8<=45 +1x1+1x2+1x4+1x5+1x6+1x9<=45 +1x1+1x2+1x4+1x5+1x6+1x10<=45 +1x1+1x2+1x4+1x5+1x7+1x8<=45 +1x1+1x2+1x4+1x5+1x7+1x9<=45 +1x1+1x2+1x4+1x5+1x7+1x10<=45 +1x1+1x2+1x4+1x5+1x8+1x9<=45 +1x1+1x2+1x4+1x5+1x8+1x10<=45 +1x1+1x2+1x4+1x5+1x9+1x10<=45 +1x1+1x2+1x4+1x6+1x7+1x8<=45 +1x1+1x2+1x4+1x6+1x7+1x9<=45 +1x1+1x2+1x4+1x6+1x7+1x10<=45 +1x1+1x2+1x4+1x6+1x8+1x9<=45 +1x1+1x2+1x4+1x6+1x8+1x10<=45 +1x1+1x2+1x4+1x6+1x9+1x10<=45 +1x1+1x2+1x4+1x7+1x8+1x9<=45 +1x1+1x2+1x4+1x7+1x8+1x10<=45 +1x1+1x2+1x4+1x7+1x9+1x10<=45 +1x1+1x2+1x4+1x8+1x9+1x10<=45 +1x1+1x2+1x5+1x6+1x7+1x8<=45 +1x1+1x2+1x5+1x6+1x7+1x9<=45 +1x1+1x2+1x5+1x6+1x7+1x10<=45 +1x1+1x2+1x5+1x6+1x8+1x9<=45 +1x1+1x2+1x5+1x6+1x8+1x10<=45 +1x1+1x2+1x5+1x6+1x9+1x10<=45 +1x1+1x2+1x5+1x7+1x8+1x9<=45 +1x1+1x2+1x5+1x7+1x8+1x10<=45 +1x1+1x2+1x5+1x7+1x9+1x10<=45 +1x1+1x2+1x5+1x8+1x9+1x10<=45 +1x1+1x2+1x6+1x7+1x8+1x9<=45 +1x1+1x2+1x6+1x7+1x8+1x10<=45 +1x1+1x2+1x6+1x7+1x9+1x10<=45 +1x1+1x2+1x6+1x8+1x9+1x10<=45 +1x1+1x2+1x7+1x8+1x9+1x10<=45 +1x1+1x3+1x4+1x5+1x6+1x7<=45 +1x1+1x3+1x4+1x5+1x6+1x8<=45 +1x1+1x3+1x4+1x5+1x6+1x9<=45 +1x1+1x3+1x4+1x5+1x6+1x10<=45 +1x1+1x3+1x4+1x5+1x7+1x8<=45 +1x1+1x3+1x4+1x5+1x7+1x9<=45 +1x1+1x3+1x4+1x5+1x7+1x10<=45 +1x1+1x3+1x4+1x5+1x8+1x9<=45 +1x1+1x3+1x4+1x5+1x8+1x10<=45 +1x1+1x3+1x4+1x5+1x9+1x10<=45 +1x1+1x3+1x4+1x6+1x7+1x8<=45 +1x1+1x3+1x4+1x6+1x7+1x9<=45 +1x1+1x3+1x4+1x6+1x7+1x10<=45 +1x1+1x3+1x4+1x6+1x8+1x9<=45 +1x1+1x3+1x4+1x6+1x8+1x10<=45 +1x1+1x3+1x4+1x6+1x9+1x10<=45 +1x1+1x3+1x4+1x7+1x8+1x9<=45 +1x1+1x3+1x4+1x7+1x8+1x10<=45 +1x1+1x3+1x4+1x7+1x9+1x10<=45 +1x1+1x3+1x4+1x8+1x9+1x10<=45 +1x1+1x3+1x5+1x6+1x7+1x8<=45 +1x1+1x3+1x5+1x6+1x7+1x9<=45 +1x1+1x3+1x5+1x6+1x7+1x10<=45 +1x1+1x3+1x5+1x6+1x8+1x9<=45 +1x1+1x3+1x5+1x6+1x8+1x10<=45 +1x1+1x3+1x5+1x6+1x9+1x10<=45 +1x1+1x3+1x5+1x7+1x8+1x9<=45 +1x1+1x3+1x5+1x7+1x8+1x10<=45 +1x1+1x3+1x5+1x7+1x9+1x10<=45 +1x1+1x3+1x5+1x8+1x9+1x10<=45 +1x1+1x3+1x6+1x7+1x8+1x9<=45 +1x1+1x3+1x6+1x7+1x8+1x10<=45 +1x1+1x3+1x6+1x7+1x9+1x10<=45 +1x1+1x3+1x6+1x8+1x9+1x10<=45 +1x1+1x3+1x7+1x8+1x9+1x10<=45 +1x1+1x4+1x5+1x6+1x7+1x8<=45 +1x1+1x4+1x5+1x6+1x7+1x9<=45 +1x1+1x4+1x5+1x6+1x7+1x10<=45 +1x1+1x4+1x5+1x6+1x8+1x9<=45 +1x1+1x4+1x5+1x6+1x8+1x10<=45 +1x1+1x4+1x5+1x6+1x9+1x10<=45 +1x1+1x4+1x5+1x7+1x8+1x9<=45 +1x1+1x4+1x5+1x7+1x8+1x10<=45 +1x1+1x4+1x5+1x7+1x9+1x10<=45 +1x1+1x4+1x5+1x8+1x9+1x10<=45 +1x1+1x4+1x6+1x7+1x8+1x9<=45 +1x1+1x4+1x6+1x7+1x8+1x10<=45 +1x1+1x4+1x6+1x7+1x9+1x10<=45 +1x1+1x4+1x6+1x8+1x9+1x10<=45 +1x1+1x4+1x7+1x8+1x9+1x10<=45 +1x1+1x5+1x6+1x7+1x8+1x9<=45 +1x1+1x5+1x6+1x7+1x8+1x10<=45 +1x1+1x5+1x6+1x7+1x9+1x10<=45 +1x1+1x5+1x6+1x8+1x9+1x10<=45 +1x1+1x5+1x7+1x8+1x9+1x10<=45 +1x1+1x6+1x7+1x8+1x9+1x10<=45 +1x2+1x3+1x4+1x5+1x6+1x7<=45 +1x2+1x3+1x4+1x5+1x6+1x8<=45 +1x2+1x3+1x4+1x5+1x6+1x9<=45 +1x2+1x3+1x4+1x5+1x6+1x10<=45 +1x2+1x3+1x4+1x5+1x7+1x8<=45 +1x2+1x3+1x4+1x5+1x7+1x9<=45 +1x2+1x3+1x4+1x5+1x7+1x10<=45 +1x2+1x3+1x4+1x5+1x8+1x9<=45 +1x2+1x3+1x4+1x5+1x8+1x10<=45 +1x2+1x3+1x4+1x5+1x9+1x10<=45 +1x2+1x3+1x4+1x6+1x7+1x8<=45 +1x2+1x3+1x4+1x6+1x7+1x9<=45 +1x2+1x3+1x4+1x6+1x7+1x10<=45 +1x2+1x3+1x4+1x6+1x8+1x9<=45 +1x2+1x3+1x4+1x6+1x8+1x10<=45 +1x2+1x3+1x4+1x6+1x9+1x10<=45 +1x2+1x3+1x4+1x7+1x8+1x9<=45 +1x2+1x3+1x4+1x7+1x8+1x10<=45 +1x2+1x3+1x4+1x7+1x9+1x10<=45 +1x2+1x3+1x4+1x8+1x9+1x10<=45 +1x2+1x3+1x5+1x6+1x7+1x8<=45 +1x2+1x3+1x5+1x6+1x7+1x9<=45 +1x2+1x3+1x5+1x6+1x7+1x10<=45 +1x2+1x3+1x5+1x6+1x8+1x9<=45 +1x2+1x3+1x5+1x6+1x8+1x10<=45 +1x2+1x3+1x5+1x6+1x9+1x10<=45 +1x2+1x3+1x5+1x7+1x8+1x9<=45 +1x2+1x3+1x5+1x7+1x8+1x10<=45 +1x2+1x3+1x5+1x7+1x9+1x10<=45 +1x2+1x3+1x5+1x8+1x9+1x10<=45 +1x2+1x3+1x6+1x7+1x8+1x9<=45 +1x2+1x3+1x6+1x7+1x8+1x10<=45 +1x2+1x3+1x6+1x7+1x9+1x10<=45 +1x2+1x3+1x6+1x8+1x9+1x10<=45 +1x2+1x3+1x7+1x8+1x9+1x10<=45 +1x2+1x4+1x5+1x6+1x7+1x8<=45 +1x2+1x4+1x5+1x6+1x7+1x9<=45 +1x2+1x4+1x5+1x6+1x7+1x10<=45 +1x2+1x4+1x5+1x6+1x8+1x9<=45 +1x2+1x4+1x5+1x6+1x8+1x10<=45 +1x2+1x4+1x5+1x6+1x9+1x10<=45 +1x2+1x4+1x5+1x7+1x8+1x9<=45 +1x2+1x4+1x5+1x7+1x8+1x10<=45 +1x2+1x4+1x5+1x7+1x9+1x10<=45 +1x2+1x4+1x5+1x8+1x9+1x10<=45 +1x2+1x4+1x6+1x7+1x8+1x9<=45 +1x2+1x4+1x6+1x7+1x8+1x10<=45 +1x2+1x4+1x6+1x7+1x9+1x10<=45 +1x2+1x4+1x6+1x8+1x9+1x10<=45 +1x2+1x4+1x7+1x8+1x9+1x10<=45 +1x2+1x5+1x6+1x7+1x8+1x9<=45 +1x2+1x5+1x6+1x7+1x8+1x10<=45 +1x2+1x5+1x6+1x7+1x9+1x10<=45 +1x2+1x5+1x6+1x8+1x9+1x10<=45 +1x2+1x5+1x7+1x8+1x9+1x10<=45 +1x2+1x6+1x7+1x8+1x9+1x10<=45 +1x3+1x4+1x5+1x6+1x7+1x8<=45 +1x3+1x4+1x5+1x6+1x7+1x9<=45 +1x3+1x4+1x5+1x6+1x7+1x10<=45 +1x3+1x4+1x5+1x6+1x8+1x9<=45 +1x3+1x4+1x5+1x6+1x8+1x10<=45 +1x3+1x4+1x5+1x6+1x9+1x10<=45 +1x3+1x4+1x5+1x7+1x8+1x9<=45 +1x3+1x4+1x5+1x7+1x8+1x10<=45 +1x3+1x4+1x5+1x7+1x9+1x10<=45 +1x3+1x4+1x5+1x8+1x9+1x10<=45 +1x3+1x4+1x6+1x7+1x8+1x9<=45 +1x3+1x4+1x6+1x7+1x8+1x10<=45 +1x3+1x4+1x6+1x7+1x9+1x10<=45 +1x3+1x4+1x6+1x8+1x9+1x10<=45 +1x3+1x4+1x7+1x8+1x9+1x10<=45 +1x3+1x5+1x6+1x7+1x8+1x9<=45 +1x3+1x5+1x6+1x7+1x8+1x10<=45 +1x3+1x5+1x6+1x7+1x9+1x10<=45 +1x3+1x5+1x6+1x8+1x9+1x10<=45 +1x3+1x5+1x7+1x8+1x9+1x10<=45 +1x3+1x6+1x7+1x8+1x9+1x10<=45 +1x4+1x5+1x6+1x7+1x8+1x9<=45 +1x4+1x5+1x6+1x7+1x8+1x10<=45 +1x4+1x5+1x6+1x7+1x9+1x10<=45 +1x4+1x5+1x6+1x8+1x9+1x10<=45 +1x4+1x5+1x7+1x8+1x9+1x10<=45 +1x4+1x6+1x7+1x8+1x9+1x10<=45 +1x5+1x6+1x7+1x8+1x9+1x10<=45 +1x1+1x2+1x3+1x4+1x5<=40 +1x1+1x2+1x3+1x4+1x6<=40 +1x1+1x2+1x3+1x4+1x7<=40 +1x1+1x2+1x3+1x4+1x8<=40 +1x1+1x2+1x3+1x4+1x9<=40 +1x1+1x2+1x3+1x4+1x10<=40 +1x1+1x2+1x3+1x5+1x6<=40 +1x1+1x2+1x3+1x5+1x7<=40 +1x1+1x2+1x3+1x5+1x8<=40 +1x1+1x2+1x3+1x5+1x9<=40 +1x1+1x2+1x3+1x5+1x10<=40 +1x1+1x2+1x3+1x6+1x7<=40 +1x1+1x2+1x3+1x6+1x8<=40 +1x1+1x2+1x3+1x6+1x9<=40 +1x1+1x2+1x3+1x6+1x10<=40 +1x1+1x2+1x3+1x7+1x8<=40 +1x1+1x2+1x3+1x7+1x9<=40 +1x1+1x2+1x3+1x7+1x10<=40 +1x1+1x2+1x3+1x8+1x9<=40 +1x1+1x2+1x3+1x8+1x10<=40 +1x1+1x2+1x3+1x9+1x10<=40 +1x1+1x2+1x4+1x5+1x6<=40 +1x1+1x2+1x4+1x5+1x7<=40 +1x1+1x2+1x4+1x5+1x8<=40 +1x1+1x2+1x4+1x5+1x9<=40 +1x1+1x2+1x4+1x5+1x10<=40 +1x1+1x2+1x4+1x6+1x7<=40 +1x1+1x2+1x4+1x6+1x8<=40 +1x1+1x2+1x4+1x6+1x9<=40 +1x1+1x2+1x4+1x6+1x10<=40 +1x1+1x2+1x4+1x7+1x8<=40 +1x1+1x2+1x4+1x7+1x9<=40 +1x1+1x2+1x4+1x7+1x10<=40 +1x1+1x2+1x4+1x8+1x9<=40 +1x1+1x2+1x4+1x8+1x10<=40 +1x1+1x2+1x4+1x9+1x10<=40 +1x1+1x2+1x5+1x6+1x7<=40 +1x1+1x2+1x5+1x6+1x8<=40 +1x1+1x2+1x5+1x6+1x9<=40 +1x1+1x2+1x5+1x6+1x10<=40 +1x1+1x2+1x5+1x7+1x8<=40 +1x1+1x2+1x5+1x7+1x9<=40 +1x1+1x2+1x5+1x7+1x10<=40 +1x1+1x2+1x5+1x8+1x9<=40 +1x1+1x2+1x5+1x8+1x10<=40 +1x1+1x2+1x5+1x9+1x10<=40 +1x1+1x2+1x6+1x7+1x8<=40 +1x1+1x2+1x6+1x7+1x9<=40 +1x1+1x2+1x6+1x7+1x10<=40 +1x1+1x2+1x6+1x8+1x9<=40 +1x1+1x2+1x6+1x8+1x10<=40 +1x1+1x2+1x6+1x9+1x10<=40 +1x1+1x2+1x7+1x8+1x9<=40 +1x1+1x2+1x7+1x8+1x10<=40 +1x1+1x2+1x7+1x9+1x10<=40 +1x1+1x2+1x8+1x9+1x10<=40 +1x1+1x3+1x4+1x5+1x6<=40 +1x1+1x3+1x4+1x5+1x7<=40 +1x1+1x3+1x4+1x5+1x8<=40 +1x1+1x3+1x4+1x5+1x9<=40 +1x1+1x3+1x4+1x5+1x10<=40 +1x1+1x3+1x4+1x6+1x7<=40 +1x1+1x3+1x4+1x6+1x8<=40 +1x1+1x3+1x4+1x6+1x9<=40 +1x1+1x3+1x4+1x6+1x10<=40 +1x1+1x3+1x4+1x7+1x8<=40 +1x1+1x3+1x4+1x7+1x9<=40 +1x1+1x3+1x4+1x7+1x10<=40 +1x1+1x3+1x4+1x8+1x9<=40 +1x1+1x3+1x4+1x8+1x10<=40 +1x1+1x3+1x4+1x9+1x10<=40 +1x1+1x3+1x5+1x6+1x7<=40 +1x1+1x3+1x5+1x6+1x8<=40 +1x1+1x3+1x5+1x6+1x9<=40 +1x1+1x3+1x5+1x6+1x10<=40 +1x1+1x3+1x5+1x7+1x8<=40 +1x1+1x3+1x5+1x7+1x9<=40 +1x1+1x3+1x5+1x7+1x10<=40 +1x1+1x3+1x5+1x8+1x9<=40 +1x1+1x3+1x5+1x8+1x10<=40 +1x1+1x3+1x5+1x9+1x10<=40 +1x1+1x3+1x6+1x7+1x8<=40 +1x1+1x3+1x6+1x7+1x9<=40 +1x1+1x3+1x6+1x7+1x10<=40 +1x1+1x3+1x6+1x8+1x9<=40 +1x1+1x3+1x6+1x8+1x10<=40 +1x1+1x3+1x6+1x9+1x10<=40 +1x1+1x3+1x7+1x8+1x9<=40 +1x1+1x3+1x7+1x8+1x10<=40 +1x1+1x3+1x7+1x9+1x10<=40 +1x1+1x3+1x8+1x9+1x10<=40 +1x1+1x4+1x5+1x6+1x7<=40 +1x1+1x4+1x5+1x6+1x8<=40 +1x1+1x4+1x5+1x6+1x9<=40 +1x1+1x4+1x5+1x6+1x10<=40 +1x1+1x4+1x5+1x7+1x8<=40 +1x1+1x4+1x5+1x7+1x9<=40 +1x1+1x4+1x5+1x7+1x10<=40 +1x1+1x4+1x5+1x8+1x9<=40 +1x1+1x4+1x5+1x8+1x10<=40 +1x1+1x4+1x5+1x9+1x10<=40 +1x1+1x4+1x6+1x7+1x8<=40 +1x1+1x4+1x6+1x7+1x9<=40 +1x1+1x4+1x6+1x7+1x10<=40 +1x1+1x4+1x6+1x8+1x9<=40 +1x1+1x4+1x6+1x8+1x10<=40 +1x1+1x4+1x6+1x9+1x10<=40 +1x1+1x4+1x7+1x8+1x9<=40 +1x1+1x4+1x7+1x8+1x10<=40 +1x1+1x4+1x7+1x9+1x10<=40 +1x1+1x4+1x8+1x9+1x10<=40 +1x1+1x5+1x6+1x7+1x8<=40 +1x1+1x5+1x6+1x7+1x9<=40 +1x1+1x5+1x6+1x7+1x10<=40 +1x1+1x5+1x6+1x8+1x9<=40 +1x1+1x5+1x6+1x8+1x10<=40 +1x1+1x5+1x6+1x9+1x10<=40 +1x1+1x5+1x7+1x8+1x9<=40 +1x1+1x5+1x7+1x8+1x10<=40 +1x1+1x5+1x7+1x9+1x10<=40 +1x1+1x5+1x8+1x9+1x10<=40 +1x1+1x6+1x7+1x8+1x9<=40 +1x1+1x6+1x7+1x8+1x10<=40 +1x1+1x6+1x7+1x9+1x10<=40 +1x1+1x6+1x8+1x9+1x10<=40 +1x1+1x7+1x8+1x9+1x10<=40 +1x2+1x3+1x4+1x5+1x6<=40 +1x2+1x3+1x4+1x5+1x7<=40 +1x2+1x3+1x4+1x5+1x8<=40 +1x2+1x3+1x4+1x5+1x9<=40 +1x2+1x3+1x4+1x5+1x10<=40 +1x2+1x3+1x4+1x6+1x7<=40 +1x2+1x3+1x4+1x6+1x8<=40 +1x2+1x3+1x4+1x6+1x9<=40 +1x2+1x3+1x4+1x6+1x10<=40 +1x2+1x3+1x4+1x7+1x8<=40 +1x2+1x3+1x4+1x7+1x9<=40 +1x2+1x3+1x4+1x7+1x10<=40 +1x2+1x3+1x4+1x8+1x9<=40 +1x2+1x3+1x4+1x8+1x10<=40 +1x2+1x3+1x4+1x9+1x10<=40 +1x2+1x3+1x5+1x6+1x7<=40 +1x2+1x3+1x5+1x6+1x8<=40 +1x2+1x3+1x5+1x6+1x9<=40 +1x2+1x3+1x5+1x6+1x10<=40 +1x2+1x3+1x5+1x7+1x8<=40 +1x2+1x3+1x5+1x7+1x9<=40 +1x2+1x3+1x5+1x7+1x10<=40 +1x2+1x3+1x5+1x8+1x9<=40 +1x2+1x3+1x5+1x8+1x10<=40 +1x2+1x3+1x5+1x9+1x10<=40 +1x2+1x3+1x6+1x7+1x8<=40 +1x2+1x3+1x6+1x7+1x9<=40 +1x2+1x3+1x6+1x7+1x10<=40 +1x2+1x3+1x6+1x8+1x9<=40 +1x2+1x3+1x6+1x8+1x10<=40 +1x2+1x3+1x6+1x9+1x10<=40 +1x2+1x3+1x7+1x8+1x9<=40 +1x2+1x3+1x7+1x8+1x10<=40 +1x2+1x3+1x7+1x9+1x10<=40 +1x2+1x3+1x8+1x9+1x10<=40 +1x2+1x4+1x5+1x6+1x7<=40 +1x2+1x4+1x5+1x6+1x8<=40 +1x2+1x4+1x5+1x6+1x9<=40 +1x2+1x4+1x5+1x6+1x10<=40 +1x2+1x4+1x5+1x7+1x8<=40 +1x2+1x4+1x5+1x7+1x9<=40 +1x2+1x4+1x5+1x7+1x10<=40 +1x2+1x4+1x5+1x8+1x9<=40 +1x2+1x4+1x5+1x8+1x10<=40 +1x2+1x4+1x5+1x9+1x10<=40 +1x2+1x4+1x6+1x7+1x8<=40 +1x2+1x4+1x6+1x7+1x9<=40 +1x2+1x4+1x6+1x7+1x10<=40 +1x2+1x4+1x6+1x8+1x9<=40 +1x2+1x4+1x6+1x8+1x10<=40 +1x2+1x4+1x6+1x9+1x10<=40 +1x2+1x4+1x7+1x8+1x9<=40 +1x2+1x4+1x7+1x8+1x10<=40 +1x2+1x4+1x7+1x9+1x10<=40 +1x2+1x4+1x8+1x9+1x10<=40 +1x2+1x5+1x6+1x7+1x8<=40 +1x2+1x5+1x6+1x7+1x9<=40 +1x2+1x5+1x6+1x7+1x10<=40 +1x2+1x5+1x6+1x8+1x9<=40 +1x2+1x5+1x6+1x8+1x10<=40 +1x2+1x5+1x6+1x9+1x10<=40 +1x2+1x5+1x7+1x8+1x9<=40 +1x2+1x5+1x7+1x8+1x10<=40 +1x2+1x5+1x7+1x9+1x10<=40 +1x2+1x5+1x8+1x9+1x10<=40 +1x2+1x6+1x7+1x8+1x9<=40 +1x2+1x6+1x7+1x8+1x10<=40 +1x2+1x6+1x7+1x9+1x10<=40 +1x2+1x6+1x8+1x9+1x10<=40 +1x2+1x7+1x8+1x9+1x10<=40 +1x3+1x4+1x5+1x6+1x7<=40 +1x3+1x4+1x5+1x6+1x8<=40 +1x3+1x4+1x5+1x6+1x9<=40 +1x3+1x4+1x5+1x6+1x10<=40 +1x3+1x4+1x5+1x7+1x8<=40 +1x3+1x4+1x5+1x7+1x9<=40 +1x3+1x4+1x5+1x7+1x10<=40 +1x3+1x4+1x5+1x8+1x9<=40 +1x3+1x4+1x5+1x8+1x10<=40 +1x3+1x4+1x5+1x9+1x10<=40 +1x3+1x4+1x6+1x7+1x8<=40 +1x3+1x4+1x6+1x7+1x9<=40 +1x3+1x4+1x6+1x7+1x10<=40 +1x3+1x4+1x6+1x8+1x9<=40 +1x3+1x4+1x6+1x8+1x10<=40 +1x3+1x4+1x6+1x9+1x10<=40 +1x3+1x4+1x7+1x8+1x9<=40 +1x3+1x4+1x7+1x8+1x10<=40 +1x3+1x4+1x7+1x9+1x10<=40 +1x3+1x4+1x8+1x9+1x10<=40 +1x3+1x5+1x6+1x7+1x8<=40 +1x3+1x5+1x6+1x7+1x9<=40 +1x3+1x5+1x6+1x7+1x10<=40 +1x3+1x5+1x6+1x8+1x9<=40 +1x3+1x5+1x6+1x8+1x10<=40 +1x3+1x5+1x6+1x9+1x10<=40 +1x3+1x5+1x7+1x8+1x9<=40 +1x3+1x5+1x7+1x8+1x10<=40 +1x3+1x5+1x7+1x9+1x10<=40 +1x3+1x5+1x8+1x9+1x10<=40 +1x3+1x6+1x7+1x8+1x9<=40 +1x3+1x6+1x7+1x8+1x10<=40 +1x3+1x6+1x7+1x9+1x10<=40 +1x3+1x6+1x8+1x9+1x10<=40 +1x3+1x7+1x8+1x9+1x10<=40 +1x4+1x5+1x6+1x7+1x8<=40 +1x4+1x5+1x6+1x7+1x9<=40 +1x4+1x5+1x6+1x7+1x10<=40 +1x4+1x5+1x6+1x8+1x9<=40 +1x4+1x5+1x6+1x8+1x10<=40 +1x4+1x5+1x6+1x9+1x10<=40 +1x4+1x5+1x7+1x8+1x9<=40 +1x4+1x5+1x7+1x8+1x10<=40 +1x4+1x5+1x7+1x9+1x10<=40 +1x4+1x5+1x8+1x9+1x10<=40 +1x4+1x6+1x7+1x8+1x9<=40 +1x4+1x6+1x7+1x8+1x10<=40 +1x4+1x6+1x7+1x9+1x10<=40 +1x4+1x6+1x8+1x9+1x10<=40 +1x4+1x7+1x8+1x9+1x10<=40 +1x5+1x6+1x7+1x8+1x9<=40 +1x5+1x6+1x7+1x8+1x10<=40 +1x5+1x6+1x7+1x9+1x10<=40 +1x5+1x6+1x8+1x9+1x10<=40 +1x5+1x7+1x8+1x9+1x10<=40 +1x6+1x7+1x8+1x9+1x10<=40 +1x1+1x2+1x3+1x4<=34 +1x1+1x2+1x3+1x5<=34 +1x1+1x2+1x3+1x6<=34 +1x1+1x2+1x3+1x7<=34 +1x1+1x2+1x3+1x8<=34 +1x1+1x2+1x3+1x9<=34 +1x1+1x2+1x3+1x10<=34 +1x1+1x2+1x4+1x5<=34 +1x1+1x2+1x4+1x6<=34 +1x1+1x2+1x4+1x7<=34 +1x1+1x2+1x4+1x8<=34 +1x1+1x2+1x4+1x9<=34 +1x1+1x2+1x4+1x10<=34 +1x1+1x2+1x5+1x6<=34 +1x1+1x2+1x5+1x7<=34 +1x1+1x2+1x5+1x8<=34 +1x1+1x2+1x5+1x9<=34 +1x1+1x2+1x5+1x10<=34 +1x1+1x2+1x6+1x7<=34 +1x1+1x2+1x6+1x8<=34 +1x1+1x2+1x6+1x9<=34 +1x1+1x2+1x6+1x10<=34 +1x1+1x2+1x7+1x8<=34 +1x1+1x2+1x7+1x9<=34 +1x1+1x2+1x7+1x10<=34 +1x1+1x2+1x8+1x9<=34 +1x1+1x2+1x8+1x10<=34 +1x1+1x2+1x9+1x10<=34 +1x1+1x3+1x4+1x5<=34 +1x1+1x3+1x4+1x6<=34 +1x1+1x3+1x4+1x7<=34 +1x1+1x3+1x4+1x8<=34 +1x1+1x3+1x4+1x9<=34 +1x1+1x3+1x4+1x10<=34 +1x1+1x3+1x5+1x6<=34 +1x1+1x3+1x5+1x7<=34 +1x1+1x3+1x5+1x8<=34 +1x1+1x3+1x5+1x9<=34 +1x1+1x3+1x5+1x10<=34 +1x1+1x3+1x6+1x7<=34 +1x1+1x3+1x6+1x8<=34 +1x1+1x3+1x6+1x9<=34 +1x1+1x3+1x6+1x10<=34 +1x1+1x3+1x7+1x8<=34 +1x1+1x3+1x7+1x9<=34 +1x1+1x3+1x7+1x10<=34 +1x1+1x3+1x8+1x9<=34 +1x1+1x3+1x8+1x10<=34 +1x1+1x3+1x9+1x10<=34 +1x1+1x4+1x5+1x6<=34 +1x1+1x4+1x5+1x7<=34 +1x1+1x4+1x5+1x8<=34 +1x1+1x4+1x5+1x9<=34 +1x1+1x4+1x5+1x10<=34 +1x1+1x4+1x6+1x7<=34 +1x1+1x4+1x6+1x8<=34 +1x1+1x4+1x6+1x9<=34 +1x1+1x4+1x6+1x10<=34 +1x1+1x4+1x7+1x8<=34 +1x1+1x4+1x7+1x9<=34 +1x1+1x4+1x7+1x10<=34 +1x1+1x4+1x8+1x9<=34 +1x1+1x4+1x8+1x10<=34 +1x1+1x4+1x9+1x10<=34 +1x1+1x5+1x6+1x7<=34 +1x1+1x5+1x6+1x8<=34 +1x1+1x5+1x6+1x9<=34 +1x1+1x5+1x6+1x10<=34 +1x1+1x5+1x7+1x8<=34 +1x1+1x5+1x7+1x9<=34 +1x1+1x5+1x7+1x10<=34 +1x1+1x5+1x8+1x9<=34 +1x1+1x5+1x8+1x10<=34 +1x1+1x5+1x9+1x10<=34 +1x1+1x6+1x7+1x8<=34 +1x1+1x6+1x7+1x9<=34 +1x1+1x6+1x7+1x10<=34 +1x1+1x6+1x8+1x9<=34 +1x1+1x6+1x8+1x10<=34 +1x1+1x6+1x9+1x10<=34 +1x1+1x7+1x8+1x9<=34 +1x1+1x7+1x8+1x10<=34 +1x1+1x7+1x9+1x10<=34 +1x1+1x8+1x9+1x10<=34 +1x2+1x3+1x4+1x5<=34 +1x2+1x3+1x4+1x6<=34 +1x2+1x3+1x4+1x7<=34 +1x2+1x3+1x4+1x8<=34 +1x2+1x3+1x4+1x9<=34 +1x2+1x3+1x4+1x10<=34 +1x2+1x3+1x5+1x6<=34 +1x2+1x3+1x5+1x7<=34 +1x2+1x3+1x5+1x8<=34 +1x2+1x3+1x5+1x9<=34 +1x2+1x3+1x5+1x10<=34 +1x2+1x3+1x6+1x7<=34 +1x2+1x3+1x6+1x8<=34 +1x2+1x3+1x6+1x9<=34 +1x2+1x3+1x6+1x10<=34 +1x2+1x3+1x7+1x8<=34 +1x2+1x3+1x7+1x9<=34 +1x2+1x3+1x7+1x10<=34 +1x2+1x3+1x8+1x9<=34 +1x2+1x3+1x8+1x10<=34 +1x2+1x3+1x9+1x10<=34 +1x2+1x4+1x5+1x6<=34 +1x2+1x4+1x5+1x7<=34 +1x2+1x4+1x5+1x8<=34 +1x2+1x4+1x5+1x9<=34 +1x2+1x4+1x5+1x10<=34 +1x2+1x4+1x6+1x7<=34 +1x2+1x4+1x6+1x8<=34 +1x2+1x4+1x6+1x9<=34 +1x2+1x4+1x6+1x10<=34 +1x2+1x4+1x7+1x8<=34 +1x2+1x4+1x7+1x9<=34 +1x2+1x4+1x7+1x10<=34 +1x2+1x4+1x8+1x9<=34 +1x2+1x4+1x8+1x10<=34 +1x2+1x4+1x9+1x10<=34 +1x2+1x5+1x6+1x7<=34 +1x2+1x5+1x6+1x8<=34 +1x2+1x5+1x6+1x9<=34 +1x2+1x5+1x6+1x10<=34 +1x2+1x5+1x7+1x8<=34 +1x2+1x5+1x7+1x9<=34 +1x2+1x5+1x7+1x10<=34 +1x2+1x5+1x8+1x9<=34 +1x2+1x5+1x8+1x10<=34 +1x2+1x5+1x9+1x10<=34 +1x2+1x6+1x7+1x8<=34 +1x2+1x6+1x7+1x9<=34 +1x2+1x6+1x7+1x10<=34 +1x2+1x6+1x8+1x9<=34 +1x2+1x6+1x8+1x10<=34 +1x2+1x6+1x9+1x10<=34 +1x2+1x7+1x8+1x9<=34 +1x2+1x7+1x8+1x10<=34 +1x2+1x7+1x9+1x10<=34 +1x2+1x8+1x9+1x10<=34 +1x3+1x4+1x5+1x6<=34 +1x3+1x4+1x5+1x7<=34 +1x3+1x4+1x5+1x8<=34 +1x3+1x4+1x5+1x9<=34 +1x3+1x4+1x5+1x10<=34 +1x3+1x4+1x6+1x7<=34 +1x3+1x4+1x6+1x8<=34 +1x3+1x4+1x6+1x9<=34 +1x3+1x4+1x6+1x10<=34 +1x3+1x4+1x7+1x8<=34 +1x3+1x4+1x7+1x9<=34 +1x3+1x4+1x7+1x10<=34 +1x3+1x4+1x8+1x9<=34 +1x3+1x4+1x8+1x10<=34 +1x3+1x4+1x9+1x10<=34 +1x3+1x5+1x6+1x7<=34 +1x3+1x5+1x6+1x8<=34 +1x3+1x5+1x6+1x9<=34 +1x3+1x5+1x6+1x10<=34 +1x3+1x5+1x7+1x8<=34 +1x3+1x5+1x7+1x9<=34 +1x3+1x5+1x7+1x10<=34 +1x3+1x5+1x8+1x9<=34 +1x3+1x5+1x8+1x10<=34 +1x3+1x5+1x9+1x10<=34 +1x3+1x6+1x7+1x8<=34 +1x3+1x6+1x7+1x9<=34 +1x3+1x6+1x7+1x10<=34 +1x3+1x6+1x8+1x9<=34 +1x3+1x6+1x8+1x10<=34 +1x3+1x6+1x9+1x10<=34 +1x3+1x7+1x8+1x9<=34 +1x3+1x7+1x8+1x10<=34 +1x3+1x7+1x9+1x10<=34 +1x3+1x8+1x9+1x10<=34 +1x4+1x5+1x6+1x7<=34 +1x4+1x5+1x6+1x8<=34 +1x4+1x5+1x6+1x9<=34 +1x4+1x5+1x6+1x10<=34 +1x4+1x5+1x7+1x8<=34 +1x4+1x5+1x7+1x9<=34 +1x4+1x5+1x7+1x10<=34 +1x4+1x5+1x8+1x9<=34 +1x4+1x5+1x8+1x10<=34 +1x4+1x5+1x9+1x10<=34 +1x4+1x6+1x7+1x8<=34 +1x4+1x6+1x7+1x9<=34 +1x4+1x6+1x7+1x10<=34 +1x4+1x6+1x8+1x9<=34 +1x4+1x6+1x8+1x10<=34 +1x4+1x6+1x9+1x10<=34 +1x4+1x7+1x8+1x9<=34 +1x4+1x7+1x8+1x10<=34 +1x4+1x7+1x9+1x10<=34 +1x4+1x8+1x9+1x10<=34 +1x5+1x6+1x7+1x8<=34 +1x5+1x6+1x7+1x9<=34 +1x5+1x6+1x7+1x10<=34 +1x5+1x6+1x8+1x9<=34 +1x5+1x6+1x8+1x10<=34 +1x5+1x6+1x9+1x10<=34 +1x5+1x7+1x8+1x9<=34 +1x5+1x7+1x8+1x10<=34 +1x5+1x7+1x9+1x10<=34 +1x5+1x8+1x9+1x10<=34 +1x6+1x7+1x8+1x9<=34 +1x6+1x7+1x8+1x10<=34 +1x6+1x7+1x9+1x10<=34 +1x6+1x8+1x9+1x10<=34 +1x7+1x8+1x9+1x10<=34 +1x1+1x2+1x3<=27 +1x1+1x2+1x4<=27 +1x1+1x2+1x5<=27 +1x1+1x2+1x6<=27 +1x1+1x2+1x7<=27 +1x1+1x2+1x8<=27 +1x1+1x2+1x9<=27 +1x1+1x2+1x10<=27 +1x1+1x3+1x4<=27 +1x1+1x3+1x5<=27 +1x1+1x3+1x6<=27 +1x1+1x3+1x7<=27 +1x1+1x3+1x8<=27 +1x1+1x3+1x9<=27 +1x1+1x3+1x10<=27 +1x1+1x4+1x5<=27 +1x1+1x4+1x6<=27 +1x1+1x4+1x7<=27 +1x1+1x4+1x8<=27 +1x1+1x4+1x9<=27 +1x1+1x4+1x10<=27 +1x1+1x5+1x6<=27 +1x1+1x5+1x7<=27 +1x1+1x5+1x8<=27 +1x1+1x5+1x9<=27 +1x1+1x5+1x10<=27 +1x1+1x6+1x7<=27 +1x1+1x6+1x8<=27 +1x1+1x6+1x9<=27 +1x1+1x6+1x10<=27 +1x1+1x7+1x8<=27 +1x1+1x7+1x9<=27 +1x1+1x7+1x10<=27 +1x1+1x8+1x9<=27 +1x1+1x8+1x10<=27 +1x1+1x9+1x10<=27 +1x2+1x3+1x4<=27 +1x2+1x3+1x5<=27 +1x2+1x3+1x6<=27 +1x2+1x3+1x7<=27 +1x2+1x3+1x8<=27 +1x2+1x3+1x9<=27 +1x2+1x3+1x10<=27 +1x2+1x4+1x5<=27 +1x2+1x4+1x6<=27 +1x2+1x4+1x7<=27 +1x2+1x4+1x8<=27 +1x2+1x4+1x9<=27 +1x2+1x4+1x10<=27 +1x2+1x5+1x6<=27 +1x2+1x5+1x7<=27 +1x2+1x5+1x8<=27 +1x2+1x5+1x9<=27 +1x2+1x5+1x10<=27 +1x2+1x6+1x7<=27 +1x2+1x6+1x8<=27 +1x2+1x6+1x9<=27 +1x2+1x6+1x10<=27 +1x2+1x7+1x8<=27 +1x2+1x7+1x9<=27 +1x2+1x7+1x10<=27 +1x2+1x8+1x9<=27 +1x2+1x8+1x10<=27 +1x2+1x9+1x10<=27 +1x3+1x4+1x5<=27 +1x3+1x4+1x6<=27 +1x3+1x4+1x7<=27 +1x3+1x4+1x8<=27 +1x3+1x4+1x9<=27 +1x3+1x4+1x10<=27 +1x3+1x5+1x6<=27 +1x3+1x5+1x7<=27 +1x3+1x5+1x8<=27 +1x3+1x5+1x9<=27 +1x3+1x5+1x10<=27 +1x3+1x6+1x7<=27 +1x3+1x6+1x8<=27 +1x3+1x6+1x9<=27 +1x3+1x6+1x10<=27 +1x3+1x7+1x8<=27 +1x3+1x7+1x9<=27 +1x3+1x7+1x10<=27 +1x3+1x8+1x9<=27 +1x3+1x8+1x10<=27 +1x3+1x9+1x10<=27 +1x4+1x5+1x6<=27 +1x4+1x5+1x7<=27 +1x4+1x5+1x8<=27 +1x4+1x5+1x9<=27 +1x4+1x5+1x10<=27 +1x4+1x6+1x7<=27 +1x4+1x6+1x8<=27 +1x4+1x6+1x9<=27 +1x4+1x6+1x10<=27 +1x4+1x7+1x8<=27 +1x4+1x7+1x9<=27 +1x4+1x7+1x10<=27 +1x4+1x8+1x9<=27 +1x4+1x8+1x10<=27 +1x4+1x9+1x10<=27 +1x5+1x6+1x7<=27 +1x5+1x6+1x8<=27 +1x5+1x6+1x9<=27 +1x5+1x6+1x10<=27 +1x5+1x7+1x8<=27 +1x5+1x7+1x9<=27 +1x5+1x7+1x10<=27 +1x5+1x8+1x9<=27 +1x5+1x8+1x10<=27 +1x5+1x9+1x10<=27 +1x6+1x7+1x8<=27 +1x6+1x7+1x9<=27 +1x6+1x7+1x10<=27 +1x6+1x8+1x9<=27 +1x6+1x8+1x10<=27 +1x6+1x9+1x10<=27 +1x7+1x8+1x9<=27 +1x7+1x8+1x10<=27 +1x7+1x9+1x10<=27 +1x8+1x9+1x10<=27 +1x1+1x2<=19 +1x1+1x3<=19 +1x1+1x4<=19 +1x1+1x5<=19 +1x1+1x6<=19 +1x1+1x7<=19 +1x1+1x8<=19 +1x1+1x9<=19 +1x1+1x10<=19 +1x2+1x3<=19 +1x2+1x4<=19 +1x2+1x5<=19 +1x2+1x6<=19 +1x2+1x7<=19 +1x2+1x8<=19 +1x2+1x9<=19 +1x2+1x10<=19 +1x3+1x4<=19 +1x3+1x5<=19 +1x3+1x6<=19 +1x3+1x7<=19 +1x3+1x8<=19 +1x3+1x9<=19 +1x3+1x10<=19 +1x4+1x5<=19 +1x4+1x6<=19 +1x4+1x7<=19 +1x4+1x8<=19 +1x4+1x9<=19 +1x4+1x10<=19 +1x5+1x6<=19 +1x5+1x7<=19 +1x5+1x8<=19 +1x5+1x9<=19 +1x5+1x10<=19 +1x6+1x7<=19 +1x6+1x8<=19 +1x6+1x9<=19 +1x6+1x10<=19 +1x7+1x8<=19 +1x7+1x9<=19 +1x7+1x10<=19 +1x8+1x9<=19 +1x8+1x10<=19 +1x9+1x10<=19 +1x1<=10 +1x2<=10 +1x3<=10 +1x4<=10 +1x5<=10 +1x6<=10 +1x7<=10 +1x8<=10 +1x9<=10 +1x10<=10 END lrslib-062/ine/test-062/porta/cp6.ine.ieq0000600001553200155320000004601112722006616015605 0ustar avisDIM = 15 INEQUALITIES_SECTION -1x2-1x3-1x4-1x5+1x10+1x11+1x12+1x13+1x14+1x15<=2 -1x1-1x3-1x4-1x5+1x7+1x8+1x9+1x13+1x14+1x15<=2 -1x1-1x2-1x4-1x5+1x6+1x8+1x9+1x11+1x12+1x15<=2 -1x1-1x4+1x8<=0 -1x1-1x5+1x9<=0 -1x2-1x4+1x11<=0 -1x2-1x5+1x12<=0 -1x3-1x4+1x13<=0 -1x3-1x5+1x14<=0 -1x4-1x5+1x15<=0 -2x1-2x2-2x3-2x4-2x5+1x6+1x7+1x8+1x9+1x10+1x11+1x12+1x13+1x14+1x15<=2 -1x2-1x3+1x10<=0 +1x1-1x2-1x6<=0 +2x1-2x2-2x3-2x4-2x5-1x6-1x7-1x8-1x9+1x10+1x11+1x12+1x13+1x14+1x15<=0 +2x1-1x2-1x3-1x4-1x5-2x6-2x7-2x8-2x9+1x10+1x11+1x12+1x13+1x14+1x15<=0 -1x1+1x2-2x3+1x4+1x5-1x6+2x7-1x8-1x9-2x10+1x11+1x12-2x13-2x14+1x15<=0 -1x1+1x2+1x3-2x4+1x5-1x6-1x7+2x8-1x9+1x10-2x11+1x12-2x13+1x14-2x15<=0 +2x1-1x2-1x3+1x4+1x5-2x6-2x7+2x8+2x9+1x10-1x11-1x12-1x13-1x14+1x15<=2 +1x1-2x2-1x3+1x4+1x5-2x6-1x7+1x8+1x9+2x10-2x11-2x12-1x13-1x14+1x15<=0 +2x1-1x2+1x3+1x4-1x5-2x6+2x7+2x8-2x9-1x10-1x11+1x12+1x13-1x14-1x15<=2 +1x1-2x2+1x3+1x4-1x5-2x6+1x7+1x8-1x9-2x10-2x11+2x12+1x13-1x14-1x15<=0 +1x1-2x2-1x3-1x4-1x5-2x6-1x7-1x8-1x9+2x10+2x11+2x12+1x13+1x14+1x15<=2 +2x1-1x2+1x3-1x4+1x5-2x6+2x7-2x8+2x9-1x10+1x11-1x12-1x13+1x14-1x15<=2 +1x1-2x2+1x3-1x4+1x5-2x6+1x7-1x8+1x9-2x10+2x11-2x12-1x13+1x14-1x15<=0 -1x1+1x2+1x3+1x4-2x5-1x6-1x7-1x8+2x9+1x10+1x11-2x12+1x13-2x14-2x15<=0 -1x6+1x9-1x12<=0 +1x1-1x2-1x3-1x4-1x6-1x7-1x8+1x10+1x11+1x13<=0 -1x1+2x2+1x3+1x4-1x5-2x6-1x7-1x8+1x9+2x10+2x11-2x12+1x13-1x14-1x15<=2 -2x1+1x2+1x3+1x4-1x5-2x6-2x7-2x8+2x9+1x10+1x11-1x12+1x13-1x14-1x15<=0 -1x2-1x3-1x4+1x5+1x10+1x11-1x12+1x13-1x14-1x15<=0 +1x1-2x2-1x3-1x4+1x5-2x6-1x7-1x8+1x9+2x10+2x11-2x12+1x13-1x14-1x15<=0 -1x6-1x7-1x8+1x9+1x10+1x11-1x12+1x13-1x14-1x15<=0 -1x1-2x2+1x3+1x4+1x5+2x6-1x7-1x8-1x9-2x10-2x11-2x12+1x13+1x14+1x15<=0 +2x1-2x2+2x3-2x4+2x5-1x6+1x7-1x8+1x9-1x10+1x11-1x12-1x13+1x14-1x15<=2 +1x1-1x2+1x3-1x4+2x5-1x6+1x7-1x8+2x9-1x10+1x11-2x12-1x13+2x14-2x15<=2 -1x2+1x5-1x12<=0 +1x1-2x2+1x3+1x4+1x5-2x6+1x7+1x8+1x9-2x10-2x11-2x12+1x13+1x14+1x15<=2 +1x1-1x2+1x3+1x4+2x5-1x6+1x7+1x8+2x9-1x10-1x11-2x12+1x13+2x14+2x15<=6 -1x2+1x3+1x4+1x5-1x10-1x11-1x12+1x13+1x14+1x15<=2 +1x1-1x2+1x3+1x5-1x6+1x7+1x9-1x10-1x12+1x14<=2 +1x1-1x2+1x4+1x5-1x6+1x8+1x9-1x11-1x12+1x15<=2 -1x6+1x7+1x8+1x9-1x10-1x11-1x12+1x13+1x14+1x15<=2 -1x1+1x2-1x3-1x4-2x5-1x6+1x7+1x8+2x9-1x10-1x11-2x12+1x13+2x14+2x15<=2 +2x1-1x2-1x3-1x4+1x5-2x6-2x7-2x8+2x9+1x10+1x11-1x12+1x13-1x14-1x15<=0 +1x1-1x2-1x4+1x5-1x6-1x8+1x9+1x11-1x12-1x15<=0 +1x1-1x2-1x3+1x5-1x6-1x7+1x9+1x10-1x12-1x14<=0 +1x1+1x5+1x9<=2 +1x1-1x3-1x4+1x5-1x7-1x8+1x9+1x13-1x14-1x15<=0 +2x1-2x2-2x3-2x4+2x5-1x6-1x7-1x8+1x9+1x10+1x11-1x12+1x13-1x14-1x15<=0 +2x1+2x2-2x3-2x4+2x5+1x6-1x7-1x8+1x9-1x10-1x11+1x12+1x13-1x14-1x15<=2 +1x1+1x2-1x3-1x4+2x5+1x6-1x7-1x8+2x9-1x10-1x11+2x12+1x13-2x14-2x15<=2 +1x1+1x2+1x3+1x4+2x5+1x6+1x7+1x8+2x9+1x10+1x11+2x12+1x13+2x14+2x15<=12 -1x6+1x8-1x11<=0 +1x1-1x2-1x3-1x5-1x6-1x7-1x9+1x10+1x12+1x14<=0 -1x1+2x2+1x3-1x4+1x5-2x6-1x7+1x8-1x9+2x10-2x11+2x12-1x13+1x14-1x15<=2 -2x1+1x2+1x3-1x4+1x5-2x6-2x7+2x8-2x9+1x10-1x11+1x12-1x13+1x14-1x15<=0 -1x2-1x3+1x4-1x5+1x10-1x11+1x12-1x13+1x14-1x15<=0 +1x1-2x2-1x3+1x4-1x5-2x6-1x7+1x8-1x9+2x10-2x11+2x12-1x13+1x14-1x15<=0 -1x6-1x7+1x8-1x9+1x10-1x11+1x12-1x13+1x14-1x15<=0 -1x6-1x7+1x10<=0 -1x1+1x2-1x4-1x5-1x6+1x8+1x9-1x11-1x12+1x15<=0 -1x1+1x2+2x3-1x4+1x5-1x6-2x7+1x8-1x9+2x10-1x11+1x12-2x13+2x14-1x15<=2 +2x1+1x2-1x3+1x4-1x5+2x6-2x7+2x8-2x9-1x10+1x11-1x12-1x13+1x14-1x15<=2 +1x1+1x2-2x3+1x4-1x5+1x6-2x7+1x8-1x9-2x10+1x11-1x12-2x13+2x14-1x15<=0 +1x1-1x2-2x3-1x4-1x5-1x6-2x7-1x8-1x9+2x10+1x11+1x12+2x13+2x14+1x15<=2 -1x1+1x2-1x3-2x4-1x5-1x6+1x7+2x8+1x9-1x10-2x11-1x12+2x13+1x14+2x15<=2 +1x10-1x11-1x13<=0 -1x1+1x2+1x3-1x4-1x6-1x7+1x8+1x10-1x11-1x13<=0 -1x7+1x8-1x13<=0 -1x1+1x3-1x4-1x5-1x7+1x8+1x9-1x13-1x14+1x15<=0 -2x1+1x2+1x3-1x4-1x5-2x6-2x7+2x8+2x9+1x10-1x11-1x12-1x13-1x14+1x15<=0 -1x1-1x2+1x3-2x4-1x5+1x6-1x7+2x8+1x9-1x10+2x11+1x12-2x13-1x14+2x15<=2 -1x1+1x2+1x3-2x4-1x5-1x6-1x7+2x8+1x9+1x10-2x11-1x12-2x13-1x14+2x15<=0 +1x1-1x2-2x3+1x4+1x5-1x6-2x7+1x8+1x9+2x10-1x11-1x12-2x13-2x14+1x15<=0 +1x1-1x2-1x3+1x4-1x6-1x7+1x8+1x10-1x11-1x13<=0 +1x1-1x2-2x3+1x4-1x5-1x6-2x7+1x8-1x9+2x10-1x11+1x12-2x13+2x14-1x15<=0 -1x6-1x7+1x8+1x9+1x10-1x11-1x12-1x13-1x14+1x15<=0 +2x1+1x2-1x3-1x4+1x5+2x6-2x7-2x8+2x9-1x10-1x11+1x12+1x13-1x14-1x15<=2 +1x1+1x2-2x3-1x4+1x5+1x6-2x7-1x8+1x9-2x10-1x11+1x12+2x13-2x14-1x15<=0 -1x2+1x4-1x11<=0 -1x11-1x12+1x15<=0 +2x1-1x2-1x3+1x4-1x5-2x6-2x7+2x8-2x9+1x10-1x11+1x12-1x13+1x14-1x15<=0 +1x1-1x2+1x4-1x5-1x6+1x8-1x9-1x11+1x12-1x15<=0 +1x10-1x12-1x14<=0 -1x1+2x2+1x3-1x4-1x5-2x6-1x7+1x8+1x9+2x10-2x11-2x12-1x13-1x14+1x15<=0 -1x1+1x2+1x3-1x5-1x6-1x7+1x9+1x10-1x12-1x14<=0 +2x1-2x2+2x3+2x4-2x5-1x6+1x7+1x8-1x9-1x10-1x11+1x12+1x13-1x14-1x15<=2 +1x1-1x2+1x3+2x4-1x5-1x6+1x7+2x8-1x9-1x10-2x11+1x12+2x13-1x14-2x15<=2 -1x1+1x2+2x3+1x4-1x5-1x6-2x7-1x8+1x9+2x10+1x11-1x12+2x13-2x14-1x15<=2 +1x1-1x2+1x3+2x4+1x5-1x6+1x7+2x8+1x9-1x10-2x11-1x12+2x13+1x14+2x15<=6 +1x1-1x2+1x3+1x4-1x6+1x7+1x8-1x10-1x11+1x13<=2 -1x1+1x2+2x3-1x4-1x5-1x6-2x7+1x8+1x9+2x10-1x11-1x12-2x13-2x14+1x15<=0 +1x1-1x2-2x3-1x4+1x5-1x6-2x7-1x8+1x9+2x10+1x11-1x12+2x13-2x14-1x15<=0 +1x1+1x2-1x3+2x4+1x5+1x6-1x7+2x8+1x9-1x10+2x11+1x12-2x13-1x14+2x15<=6 +1x1+1x2-1x3+1x4+1x6-1x7+1x8-1x10+1x11-1x13<=2 +1x1+1x4+1x8<=2 +1x1-1x3+1x4-1x5-1x7+1x8-1x9-1x13+1x14-1x15<=0 +2x1-2x2-2x3+2x4-2x5-1x6-1x7+1x8-1x9+1x10-1x11+1x12-1x13+1x14-1x15<=0 +2x1+2x2-2x3+2x4-2x5+1x6-1x7+1x8-1x9-1x10+1x11-1x12-1x13+1x14-1x15<=2 +1x1+1x2-1x3+2x4-1x5+1x6-1x7+2x8-1x9-1x10+2x11-1x12-2x13+1x14-2x15<=2 +1x1+1x2+1x3+2x4+1x5+1x6+1x7+2x8+1x9+1x10+2x11+1x12+2x13+1x14+2x15<=12 -1x1+1x2+1x3-1x4-2x5-1x6-1x7+1x8+2x9+1x10-1x11-2x12-1x13-2x14+2x15<=0 +1x8+1x9+1x15<=2 -1x7+1x9-1x14<=0 +1x1-1x3-1x7<=0 -1x3+1x5-1x14<=0 +1x1+1x2-2x3+1x4+1x5+1x6-2x7+1x8+1x9-2x10+1x11+1x12-2x13-2x14+1x15<=2 +1x1+1x2-1x3+1x4+2x5+1x6-1x7+1x8+2x9-1x10+1x11+2x12-1x13-2x14+2x15<=6 +1x2-1x3+1x4+1x5-1x10+1x11+1x12-1x13-1x14+1x15<=2 +1x1+1x2-1x3+1x5+1x6-1x7+1x9-1x10+1x12-1x14<=2 +1x1-1x3+1x4+1x5-1x7+1x8+1x9-1x13-1x14+1x15<=2 +1x6-1x7+1x8+1x9-1x10+1x11+1x12-1x13-1x14+1x15<=2 -1x1-1x2+1x3-1x4-2x5+1x6-1x7+1x8+2x9-1x10+1x11+2x12-1x13-2x14+2x15<=2 -1x3+1x4-1x13<=0 -1x13-1x14+1x15<=0 -1x1-1x3+1x7<=0 -1x6+1x7-1x10<=0 +1x1-1x2-1x4-1x5-1x6-1x8-1x9+1x11+1x12+1x15<=0 -1x1+2x2-1x3+1x4+1x5-2x6+1x7-1x8-1x9-2x10+2x11+2x12-1x13-1x14+1x15<=2 -2x1+1x2-1x3+1x4+1x5-2x6+2x7-2x8-2x9-1x10+1x11+1x12-1x13-1x14+1x15<=0 -1x2+1x3-1x4-1x5-1x10+1x11+1x12-1x13-1x14+1x15<=0 +1x1-2x2+1x3-1x4-1x5-2x6+1x7-1x8-1x9-2x10+2x11+2x12-1x13-1x14+1x15<=0 -1x6+1x7-1x8-1x9-1x10+1x11+1x12-1x13-1x14+1x15<=0 -1x6-1x8+1x11<=0 -1x1+1x2-1x3-1x5-1x6+1x7+1x9-1x10-1x12+1x14<=0 -1x1+1x2-1x3+2x4+1x5-1x6+1x7-2x8-1x9-1x10+2x11+1x12-2x13-1x14+2x15<=2 +2x1+1x2+1x3-1x4-1x5+2x6+2x7-2x8-2x9+1x10-1x11-1x12-1x13-1x14+1x15<=2 +1x1+1x2+1x3-2x4-1x5+1x6+1x7-2x8-1x9+1x10-2x11-1x12-2x13-1x14+2x15<=0 +2x1-2x2-2x3+2x4+2x5-1x6-1x7+1x8+1x9+1x10-1x11-1x12-1x13-1x14+1x15<=2 -1x1+1x2-2x3-1x4-1x5-1x6+2x7+1x8+1x9-2x10-1x11-1x12+2x13+2x14+1x15<=2 -1x1-2x2+1x3-1x4-1x5+2x6-1x7+1x8+1x9-2x10+2x11+2x12-1x13-1x14+1x15<=2 +1x1-1x2-1x3-2x4-1x5-1x6-1x7-2x8-1x9+1x10+2x11+1x12+2x13+1x14+2x15<=2 -2x1+2x2+2x3-2x4+2x5-1x6-1x7+1x8-1x9+1x10-1x11+1x12-1x13+1x14-1x15<=2 +1x1-1x2-1x3+1x4+2x5-1x6-1x7+1x8+2x9+1x10-1x11-2x12-1x13-2x14+2x15<=2 -1x1+1x2+1x3-1x4+2x5-1x6-1x7+1x8-2x9+1x10-1x11+2x12-1x13+2x14-2x15<=2 +1x7-1x8-1x13<=0 -1x1-1x3+1x4-1x5+1x7-1x8+1x9-1x13+1x14-1x15<=0 -2x1+1x2-1x3+1x4-1x5-2x6+2x7-2x8+2x9-1x10+1x11-1x12-1x13+1x14-1x15<=0 -1x1-1x2-2x3+1x4-1x5+1x6+2x7-1x8+1x9+2x10-1x11+1x12-2x13+2x14-1x15<=2 -1x1+1x2-2x3+1x4-1x5-1x6+2x7-1x8+1x9-2x10+1x11-1x12-2x13+2x14-1x15<=0 +1x1-1x2+1x3-2x4+1x5-1x6+1x7-2x8+1x9-1x10+2x11-1x12-2x13+1x14-2x15<=0 +1x1-1x2+1x3-1x4-1x6+1x7-1x8-1x10+1x11-1x13<=0 +1x1-1x2+1x3-2x4-1x5-1x6+1x7-2x8-1x9-1x10+2x11+1x12-2x13-1x14+2x15<=0 -1x6+1x7-1x8+1x9-1x10+1x11-1x12-1x13+1x14-1x15<=0 -1x10+1x11-1x13<=0 -1x1+1x2-1x3+1x4-1x6+1x7-1x8-1x10+1x11-1x13<=0 -1x6-1x9+1x12<=0 -1x1+1x2-1x3-1x4-1x6+1x7+1x8-1x10-1x11+1x13<=0 -1x1+1x2-1x6<=0 -2x1+2x2-2x3-2x4-2x5-1x6+1x7+1x8+1x9-1x10-1x11-1x12+1x13+1x14+1x15<=0 -1x1+2x2-1x3-1x4-1x5-2x6+1x7+1x8+1x9-2x10-2x11-2x12+1x13+1x14+1x15<=0 -2x1+1x2-1x3-1x4-1x5-2x6+2x7+2x8+2x9-1x10-1x11-1x12+1x13+1x14+1x15<=2 -1x1+1x5-1x9<=0 -1x1-1x2-1x3-1x4+2x5+1x6+1x7+1x8-2x9+1x10+1x11-2x12+1x13-2x14-2x15<=0 -2x1-2x2-2x3-2x4+2x5+1x6+1x7+1x8-1x9+1x10+1x11-1x12+1x13-1x14-1x15<=0 -2x1-1x2-1x3-1x4+1x5+2x6+2x7+2x8-2x9+1x10+1x11-1x12+1x13-1x14-1x15<=2 -2x1-2x2+2x3+2x4+2x5+1x6-1x7-1x8-1x9-1x10-1x11-1x12+1x13+1x14+1x15<=2 -2x1+1x2+1x3+1x4+1x5-2x6-2x7-2x8-2x9+1x10+1x11+1x12+1x13+1x14+1x15<=2 -1x1+1x2+1x3+1x4+2x5-1x6-1x7-1x8-2x9+1x10+1x11+2x12+1x13+2x14+2x15<=6 -1x1+1x3+1x4+1x5-1x7-1x8-1x9+1x13+1x14+1x15<=2 -1x1-1x2+1x3+1x4+2x5+1x6-1x7-1x8-2x9-1x10-1x11-2x12+1x13+2x14+2x15<=2 -1x1+1x2+1x3+1x5-1x6-1x7-1x9+1x10+1x12+1x14<=2 -1x1+1x2+1x3+2x4+1x5-1x6-1x7-2x8-1x9+1x10+2x11+1x12+2x13+1x14+2x15<=6 -1x1+1x2+1x4+1x5-1x6-1x8-1x9+1x11+1x12+1x15<=2 -2x1+2x2-2x3+2x4+2x5-1x6+1x7-1x8-1x9-1x10+1x11+1x12-1x13-1x14+1x15<=2 -1x1+1x2-1x3+1x4+2x5-1x6+1x7-1x8-2x9-1x10+1x11+2x12-1x13-2x14+2x15<=2 +1x1+2x2-1x3-1x4+1x5+2x6-1x7-1x8+1x9-2x10-2x11+2x12+1x13-1x14-1x15<=2 +1x1-1x2-1x3+2x4+1x5-1x6-1x7+2x8+1x9+1x10-2x11-1x12-2x13-1x14+2x15<=2 +1x1-1x2-1x3-1x4-2x5-1x6-1x7-1x8-2x9+1x10+1x11+2x12+1x13+2x14+2x15<=2 -2x1+2x2+2x3+2x4-2x5-1x6-1x7-1x8+1x9+1x10+1x11-1x12+1x13-1x14-1x15<=2 +1x1-1x2+2x3-1x4+1x5-1x6+2x7-1x8+1x9-2x10+1x11-1x12-2x13+2x14-1x15<=2 -1x1+1x2+1x3+1x4-1x6-1x7-1x8+1x10+1x11+1x13<=2 -1x6-1x7-1x8-1x9+1x10+1x11+1x12+1x13+1x14+1x15<=2 -1x1+2x2-1x3-1x4+1x5-2x6+1x7+1x8-1x9-2x10-2x11+2x12+1x13-1x14-1x15<=0 -1x1+1x2-1x4+1x5-1x6+1x8-1x9-1x11+1x12-1x15<=0 -1x1+1x2-1x3+1x5-1x6+1x7-1x9-1x10+1x12-1x14<=0 +1x2+1x5+1x12<=2 +1x2-1x3-1x4+1x5-1x10-1x11+1x12+1x13-1x14-1x15<=0 -2x1+2x2-2x3-2x4+2x5-1x6+1x7+1x8-1x9-1x10-1x11+1x12+1x13-1x14-1x15<=0 -1x8-1x9+1x15<=0 -1x1-1x2-1x3+1x4+1x6+1x7-1x8+1x10-1x11-1x13<=0 -1x1+1x4-1x8<=0 -2x1-1x2-1x3+1x4-1x5+2x6+2x7-2x8+2x9+1x10-1x11+1x12-1x13+1x14-1x15<=2 -2x1-2x2-2x3+2x4-2x5+1x6+1x7-1x8+1x9+1x10-1x11+1x12-1x13+1x14-1x15<=0 -1x1-1x2-1x3+2x4-1x5+1x6+1x7-2x8+1x9+1x10-2x11+1x12-2x13+1x14-2x15<=0 -1x1-1x2-1x3+2x4+1x5+1x6+1x7-2x8-1x9+1x10-2x11-1x12-2x13-1x14+2x15<=0 -1x1-1x3+1x4+1x5+1x7-1x8-1x9-1x13-1x14+1x15<=0 -1x1-1x2+1x4+1x5+1x6-1x8-1x9-1x11-1x12+1x15<=0 +1x4+1x5+1x15<=2 -1x2-1x3+1x4+1x5+1x10-1x11-1x12-1x13-1x14+1x15<=0 -2x1-2x2-2x3+2x4+2x5+1x6+1x7-1x8-1x9+1x10-1x11-1x12-1x13-1x14+1x15<=0 -1x1-1x2+1x3+2x4+1x5+1x6-1x7-2x8-1x9-1x10-2x11-1x12+2x13+1x14+2x15<=2 +1x7-1x9-1x14<=0 -1x1-1x2-2x3-1x4+1x5+1x6+2x7+1x8-1x9+2x10+1x11-1x12+2x13-2x14-1x15<=2 -1x1-1x3-1x4+1x5+1x7+1x8-1x9+1x13-1x14-1x15<=0 -2x1+1x2-1x3-1x4+1x5-2x6+2x7+2x8-2x9-1x10-1x11+1x12+1x13-1x14-1x15<=0 -1x1+1x2-2x3-1x4+1x5-1x6+2x7+1x8-1x9-2x10-1x11+1x12+2x13-2x14-1x15<=0 +1x1-1x2+1x3+1x4-2x5-1x6+1x7+1x8-2x9-1x10-1x11+2x12+1x13-2x14-2x15<=0 +2x1-1x2+1x3-1x4-1x5-2x6+2x7-2x8-2x9-1x10+1x11+1x12-1x13-1x14+1x15<=0 +1x1-1x2+1x3-1x5-1x6+1x7-1x9-1x10+1x12-1x14<=0 +1x1-1x2+2x3-1x4-1x5-1x6+2x7-1x8-1x9-2x10+1x11+1x12-2x13-2x14+1x15<=0 +1x1-1x2+1x3-1x4-2x5-1x6+1x7-1x8-2x9-1x10+1x11+2x12-1x13-2x14+2x15<=0 -1x6+1x7+1x8-1x9-1x10-1x11+1x12+1x13-1x14-1x15<=0 -1x1+2x2-1x3+1x4-1x5-2x6+1x7-1x8+1x9-2x10+2x11-2x12-1x13+1x14-1x15<=0 -1x1+1x2+1x4-1x5-1x6-1x8+1x9+1x11-1x12-1x15<=0 +1x6+1x7-1x8-1x9+1x10-1x11-1x12-1x13-1x14+1x15<=0 -1x1-1x2-2x3+1x4+1x5+1x6+2x7-1x8-1x9+2x10-1x11-1x12-2x13-2x14+1x15<=0 +1x1+2x2-1x3+1x4-1x5+2x6-1x7+1x8-1x9-2x10+2x11-2x12-1x13+1x14-1x15<=2 +1x1+1x2+1x3-1x4-2x5+1x6+1x7-1x8-2x9+1x10-1x11-2x12-1x13-2x14+2x15<=0 -1x1+1x2+1x3+2x4-1x5-1x6-1x7-2x8+1x9+1x10+2x11-1x12+2x13-1x14-2x15<=2 +1x1-1x2+2x3+1x4-1x5-1x6+2x7+1x8-1x9-2x10-1x11+1x12+2x13-2x14-1x15<=2 +1x2+1x4+1x11<=2 +1x2-1x3+1x4-1x5-1x10+1x11-1x12-1x13+1x14-1x15<=0 -2x1+2x2-2x3+2x4-2x5-1x6+1x7-1x8+1x9-1x10+1x11-1x12-1x13+1x14-1x15<=0 +1x11+1x12+1x15<=2 -1x10+1x12-1x14<=0 +1x2-1x3-1x10<=0 -1x1-1x2+1x6<=0 +1x6-1x7-1x10<=0 +1x1-1x3-1x4-1x5-1x7-1x8-1x9+1x13+1x14+1x15<=0 -1x1-1x2+2x3+1x4+1x5+1x6-2x7-1x8-1x9-2x10-1x11-1x12+2x13+2x14+1x15<=2 -2x1-1x2+1x3+1x4+1x5+2x6-2x7-2x8-2x9-1x10-1x11-1x12+1x13+1x14+1x15<=0 +1x2-1x3-1x4-1x5-1x10-1x11-1x12+1x13+1x14+1x15<=0 +1x1+1x2-2x3-1x4-1x5+1x6-2x7-1x8-1x9-2x10-1x11-1x12+2x13+2x14+1x15<=0 +1x6-1x7-1x8-1x9-1x10-1x11-1x12+1x13+1x14+1x15<=0 -1x7-1x8+1x13<=0 -1x1-1x2+1x3-1x5+1x6-1x7+1x9-1x10+1x12-1x14<=0 -1x10-1x11+1x13<=0 -1x1-1x2+1x3+1x4+1x6-1x7-1x8-1x10-1x11+1x13<=0 -1x7-1x9+1x14<=0 -1x1-1x2+1x3-1x4+1x6-1x7+1x8-1x10+1x11-1x13<=0 -1x1+1x3-1x7<=0 -2x1-1x2+1x3-1x4-1x5+2x6-2x7+2x8+2x9-1x10+1x11+1x12-1x13-1x14+1x15<=2 -2x1-2x2+2x3-2x4-2x5+1x6-1x7+1x8+1x9-1x10+1x11+1x12-1x13-1x14+1x15<=0 -1x1-1x2+2x3-1x4-1x5+1x6-2x7+1x8+1x9-2x10+1x11+1x12-2x13-2x14+1x15<=0 -1x1-1x2+2x3-1x4+1x5+1x6-2x7+1x8-1x9-2x10+1x11-1x12-2x13+2x14-1x15<=0 -1x1+1x3-1x4+1x5-1x7+1x8-1x9-1x13+1x14-1x15<=0 -1x1-1x2+1x3+1x5+1x6-1x7-1x9-1x10-1x12+1x14<=0 +1x3+1x5+1x14<=2 -1x2+1x3-1x4+1x5-1x10+1x11-1x12-1x13+1x14-1x15<=0 -2x1-2x2+2x3-2x4+2x5+1x6-1x7+1x8-1x9-1x10+1x11-1x12-1x13+1x14-1x15<=0 +1x13+1x14+1x15<=2 -1x2+1x3-1x10<=0 -1x10-1x12+1x14<=0 -1x1-1x2-1x3-1x4+1x6+1x7+1x8+1x10+1x11+1x13<=2 +1x7+1x8+1x13<=2 +1x8-1x9-1x15<=0 +1x1-1x5-1x9<=0 +1x4-1x5-1x15<=0 +1x1+1x2+1x3+1x4-2x5+1x6+1x7+1x8-2x9+1x10+1x11-2x12+1x13-2x14-2x15<=2 +1x1+1x2+1x3+2x4-1x5+1x6+1x7+2x8-1x9+1x10+2x11-1x12+2x13-1x14-2x15<=6 +1x2+1x3+1x4-1x5+1x10+1x11-1x12+1x13-1x14-1x15<=2 +1x1+1x2+1x4-1x5+1x6+1x8-1x9+1x11-1x12-1x15<=2 +1x1+1x3+1x4-1x5+1x7+1x8-1x9+1x13-1x14-1x15<=2 +1x6+1x7+1x8-1x9+1x10+1x11-1x12+1x13-1x14-1x15<=2 -1x1-1x2-1x3-2x4+1x5+1x6+1x7+2x8-1x9+1x10+2x11-1x12+2x13-1x14-2x15<=2 +1x13-1x14-1x15<=0 +1x3-1x5-1x14<=0 +1x10+1x11+1x13<=2 +1x11-1x12-1x15<=0 +1x2-1x5-1x12<=0 +1x6-1x9-1x12<=0 -1x1-2x2-1x3-1x4+1x5+2x6+1x7+1x8-1x9+2x10+2x11-2x12+1x13-1x14-1x15<=2 -1x1-1x2-1x4+1x5+1x6+1x8-1x9+1x11-1x12-1x15<=0 -2x1-1x2+1x3-1x4+1x5+2x6-2x7+2x8-2x9-1x10+1x11-1x12-1x13+1x14-1x15<=0 -1x1-2x2+1x3-1x4+1x5+2x6-1x7+1x8-1x9-2x10+2x11-2x12-1x13+1x14-1x15<=0 -1x1-1x2-1x3+1x5+1x6+1x7-1x9+1x10-1x12-1x14<=0 -2x1-1x2-1x3+1x4+1x5+2x6+2x7-2x8-2x9+1x10-1x11-1x12-1x13-1x14+1x15<=0 -1x1-1x2-1x3+1x4+2x5+1x6+1x7-1x8-2x9+1x10-1x11-2x12-1x13-2x14+2x15<=0 -1x1-2x2-1x3+1x4+1x5+2x6+1x7-1x8-1x9+2x10-2x11-2x12-1x13-1x14+1x15<=0 -1x1-1x2+1x3-1x4+2x5+1x6-1x7+1x8-2x9-1x10+1x11-2x12-1x13+2x14-2x15<=0 +2x1+1x2-1x3-1x4-1x5+2x6-2x7-2x8-2x9-1x10-1x11-1x12+1x13+1x14+1x15<=0 +1x1+1x2-1x3-1x5+1x6-1x7-1x9-1x10-1x12+1x14<=0 +1x1+2x2-1x3-1x4-1x5+2x6-1x7-1x8-1x9-2x10-2x11-2x12+1x13+1x14+1x15<=0 +1x1+1x2-1x3-1x4-2x5+1x6-1x7-1x8-2x9-1x10-1x11-2x12+1x13+2x14+2x15<=0 +1x1+1x2-1x3+1x4-2x5+1x6-1x7+1x8-2x9-1x10+1x11-2x12-1x13+2x14-2x15<=0 -1x1-1x2+2x3+1x4-1x5+1x6-2x7-1x8+1x9-2x10-1x11+1x12+2x13-2x14-1x15<=0 -1x1+1x3+1x4-1x5-1x7-1x8+1x9+1x13-1x14-1x15<=0 +1x3+1x4+1x13<=2 -1x2+1x3+1x4-1x5-1x10-1x11+1x12+1x13-1x14-1x15<=0 -2x1-2x2+2x3+2x4-2x5+1x6-1x7-1x8+1x9-1x10-1x11+1x12+1x13-1x14-1x15<=0 +1x6-1x7+1x8-1x9-1x10+1x11-1x12-1x13+1x14-1x15<=0 -1x1-1x2+1x3-2x4+1x5+1x6-1x7+2x8-1x9-1x10+2x11-1x12-2x13+1x14-2x15<=0 -1x1+1x2+2x3+1x4+1x5-1x6-2x7-1x8-1x9+2x10+1x11+1x12+2x13+2x14+1x15<=6 +1x6+1x8+1x11<=2 -1x1-1x2-1x3-2x4-1x5+1x6+1x7+2x8+1x9+1x10+2x11+1x12+2x13+1x14+2x15<=6 -1x1-1x2-1x3-1x5+1x6+1x7+1x9+1x10+1x12+1x14<=2 +1x7+1x9+1x14<=2 -1x8+1x9-1x15<=0 +1x1-1x4-1x8<=0 -1x4+1x5-1x15<=0 +1x1+1x2+1x3-2x4+1x5+1x6+1x7-2x8+1x9+1x10-2x11+1x12-2x13+1x14-2x15<=2 +1x1+1x2+1x3-1x4+2x5+1x6+1x7-1x8+2x9+1x10-1x11+2x12-1x13+2x14-2x15<=6 +1x2+1x3-1x4+1x5+1x10-1x11+1x12-1x13+1x14-1x15<=2 +1x1+1x2-1x4+1x5+1x6-1x8+1x9-1x11+1x12-1x15<=2 +1x1+1x3-1x4+1x5+1x7-1x8+1x9-1x13+1x14-1x15<=2 +1x6+1x7-1x8+1x9+1x10-1x11+1x12-1x13+1x14-1x15<=2 -1x1-1x2-1x3+1x4-2x5+1x6+1x7-1x8+2x9+1x10-1x11+2x12-1x13+2x14-2x15<=2 -1x13+1x14-1x15<=0 +1x3-1x4-1x13<=0 +1x10+1x12+1x14<=2 -1x11+1x12-1x15<=0 +1x2-1x4-1x11<=0 +1x6-1x8-1x11<=0 -1x1-1x2+1x4-1x5+1x6-1x8+1x9-1x11+1x12-1x15<=0 -2x1-1x2+1x3+1x4-1x5+2x6-2x7-2x8+2x9-1x10-1x11+1x12+1x13-1x14-1x15<=0 -1x1-2x2-1x3+1x4-1x5+2x6+1x7-1x8+1x9+2x10-2x11+2x12-1x13+1x14-1x15<=2 -1x1-2x2+1x3+1x4-1x5+2x6-1x7-1x8+1x9-2x10-2x11+2x12+1x13-1x14-1x15<=0 +1x1+1x2-1x3-1x4+1x6-1x7-1x8-1x10-1x11+1x13<=0 +1x1+1x2-1x3-2x4-1x5+1x6-1x7-2x8-1x9-1x10-2x11-1x12+2x13+1x14+2x15<=0 +1x1+1x2-1x3-2x4+1x5+1x6-1x7-2x8+1x9-1x10-2x11+1x12+2x13-1x14-2x15<=0 +1x6-1x7-1x8+1x9-1x10-1x11+1x12+1x13-1x14-1x15<=0 +1x6+1x7+1x10<=2 -1x1-1x2-2x3-1x4-1x5+1x6+2x7+1x8+1x9+2x10+1x11+1x12+2x13+2x14+1x15<=6 -1x1+1x2-1x3-1x4+2x5-1x6+1x7+1x8-2x9-1x10-1x11+2x12+1x13-2x14-2x15<=0 +1x1-1x2-1x3+2x4-1x5-1x6-1x7+2x8-1x9+1x10-2x11+1x12-2x13+1x14-2x15<=0 +1x1+1x2+2x3+1x4-1x5+1x6+2x7+1x8-1x9+2x10+1x11-1x12+2x13-2x14-1x15<=6 +1x1+1x2+1x3-1x5+1x6+1x7-1x9+1x10-1x12-1x14<=2 +1x1-1x2-1x3+1x4-2x5-1x6-1x7+1x8-2x9+1x10-1x11+2x12-1x13+2x14-2x15<=0 -1x1+1x2-1x3-2x4+1x5-1x6+1x7+2x8-1x9-1x10-2x11+1x12+2x13-1x14-2x15<=0 -1x1+1x2-1x3+2x4-1x5-1x6+1x7-2x8+1x9-1x10+2x11-1x12-2x13+1x14-2x15<=0 +1x1-1x2-1x3-1x4+2x5-1x6-1x7-1x8+2x9+1x10+1x11-2x12+1x13-2x14-2x15<=0 +1x1-1x2-1x3-2x4+1x5-1x6-1x7-2x8+1x9+1x10+2x11-1x12+2x13-1x14-2x15<=0 +1x1+1x2+2x3-1x4+1x5+1x6+2x7-1x8+1x9+2x10-1x11+1x12-2x13+2x14-1x15<=6 +1x1+1x2+1x3-1x4+1x6+1x7-1x8+1x10-1x11-1x13<=2 +2x1+2x2+2x3-2x4-2x5+1x6+1x7-1x8-1x9+1x10-1x11-1x12-1x13-1x14+1x15<=2 +2x1-2x2+2x3-2x4-2x5-1x6+1x7-1x8-1x9-1x10+1x11+1x12-1x13-1x14+1x15<=0 +1x1+1x3-1x4-1x5+1x7-1x8-1x9-1x13-1x14+1x15<=0 +1x1+1x2+2x3-1x4-1x5+1x6+2x7-1x8-1x9+2x10-1x11-1x12-2x13-2x14+1x15<=2 +1x1+1x3+1x7<=2 +2x1+2x2+2x3+2x4+2x5+1x6+1x7+1x8+1x9+1x10+1x11+1x12+1x13+1x14+1x15<=12 +1x1+1x2+2x3+1x4+1x5+1x6+2x7+1x8+1x9+2x10+1x11+1x12+2x13+2x14+1x15<=12 +1x1-1x2+2x3+1x4+1x5-1x6+2x7+1x8+1x9-2x10-1x11-1x12+2x13+2x14+1x15<=6 +1x1+1x3+1x4+1x5+1x7+1x8+1x9+1x13+1x14+1x15<=6 +2x1-1x2+1x3+1x4+1x5-2x6+2x7+2x8+2x9-1x10-1x11-1x12+1x13+1x14+1x15<=6 -1x1+1x2-1x3+1x4-2x5-1x6+1x7-1x8+2x9-1x10+1x11-2x12-1x13+2x14-2x15<=0 -2x1+2x2+2x3-2x4-2x5-1x6-1x7+1x8+1x9+1x10-1x11-1x12-1x13-1x14+1x15<=0 +1x2+1x3-1x4-1x5+1x10-1x11-1x12-1x13-1x14+1x15<=0 +1x2+1x3+1x10<=2 -1x1-1x2+1x3+2x4-1x5+1x6-1x7-2x8+1x9-1x10-2x11+1x12+2x13-1x14-2x15<=0 +2x1+2x2-2x3-2x4-2x5+1x6-1x7-1x8-1x9-1x10-1x11-1x12+1x13+1x14+1x15<=0 +1x1+1x2-1x4-1x5+1x6-1x8-1x9-1x11-1x12+1x15<=0 +1x1+2x2+1x3-1x4-1x5+2x6+1x7-1x8-1x9+2x10-2x11-2x12-1x13-1x14+1x15<=2 -1x1-1x2+1x3+1x4-2x5+1x6-1x7-1x8+2x9-1x10-1x11+2x12+1x13-2x14-2x15<=0 -1x1-2x2-1x3-1x4-1x5+2x6+1x7+1x8+1x9+2x10+2x11+2x12+1x13+1x14+1x15<=6 -2x1+2x2+2x3+2x4+2x5-1x6-1x7-1x8-1x9+1x10+1x11+1x12+1x13+1x14+1x15<=6 -2x1-1x2-1x3-1x4-1x5+2x6+2x7+2x8+2x9+1x10+1x11+1x12+1x13+1x14+1x15<=6 +2x1-2x2+2x3+2x4+2x5-1x6+1x7+1x8+1x9-1x10-1x11-1x12+1x13+1x14+1x15<=6 +2x1+2x2-2x3+2x4+2x5+1x6-1x7+1x8+1x9-1x10+1x11+1x12-1x13-1x14+1x15<=6 +1x1+1x2+1x6<=2 +1x1+2x2+1x3+1x4+1x5+2x6+1x7+1x8+1x9+2x10+2x11+2x12+1x13+1x14+1x15<=12 +1x1+2x2-1x3+1x4+1x5+2x6-1x7+1x8+1x9-2x10+2x11+2x12-1x13-1x14+1x15<=6 +1x1+1x2+1x4+1x5+1x6+1x8+1x9+1x11+1x12+1x15<=6 +2x1+1x2-1x3+1x4+1x5+2x6-2x7+2x8+2x9-1x10+1x11+1x12-1x13-1x14+1x15<=6 +1x1+2x2+1x3-1x4+1x5+2x6+1x7-1x8+1x9+2x10-2x11+2x12-1x13+1x14-1x15<=6 +2x1+2x2+2x3-2x4+2x5+1x6+1x7-1x8+1x9+1x10-1x11+1x12-1x13+1x14-1x15<=6 +1x1+1x2+1x3+1x5+1x6+1x7+1x9+1x10+1x12+1x14<=6 +2x1+1x2+1x3-1x4+1x5+2x6+2x7-2x8+2x9+1x10-1x11+1x12-1x13+1x14-1x15<=6 +2x1+1x2+1x3+1x4+1x5+2x6+2x7+2x8+2x9+1x10+1x11+1x12+1x13+1x14+1x15<=12 +1x1+2x2+1x3+1x4-1x5+2x6+1x7+1x8-1x9+2x10+2x11-2x12+1x13-1x14-1x15<=6 +2x1+2x2+2x3+2x4-2x5+1x6+1x7+1x8-1x9+1x10+1x11-1x12+1x13-1x14-1x15<=6 +1x1+1x2+1x3+1x4+1x6+1x7+1x8+1x10+1x11+1x13<=6 +2x1+1x2+1x3+1x4-1x5+2x6+2x7+2x8-2x9+1x10+1x11-1x12+1x13-1x14-1x15<=6 +1x2+1x3+1x4+1x5+1x10+1x11+1x12+1x13+1x14+1x15<=6 -1x1+2x2+1x3+1x4+1x5-2x6-1x7-1x8-1x9+2x10+2x11+2x12+1x13+1x14+1x15<=6 +1x6+1x7+1x8+1x9+1x10+1x11+1x12+1x13+1x14+1x15<=6 +1x6+1x9+1x12<=2 -1x1-1x2-1x3-1x4-2x5+1x6+1x7+1x8+2x9+1x10+1x11+2x12+1x13+2x14+2x15<=6 END lrslib-062/ine/test-062/porta/fq48-19.ine.ieq0000600001553200155320000000131212722006616016121 0ustar avisDIM = 18 INEQUALITIES_SECTION +1x1+1x2+1x3<=1 +1x4+1x5+1x6<=1 +1x7+1x8+1x9<=1 +1x10+1x11+1x12<=1 +1x13+1x14+1x16<=1 +1x13+1x15+1x17<=1 +1x14+1x15+1x18<=1 +1x16+1x17+1x18<=1 +1x4+1x7+1x10<=1 +1x1+1x8+1x11<=1 +1x2+1x5+1x12<=1 +1x3+1x6+1x9<=1 +1x2-1x4+1x15<=1 +1x3-1x4+1x17<=1 -1x5+1x7+1x13<=1 -1x5+1x9+1x17<=1 -1x6+1x10+1x13<=1 -1x6+1x12+1x15<=1 +1x1-1x7+1x15<=1 +1x3-1x7+1x18<=1 +1x4-1x8+1x14<=1 +1x6-1x8+1x18<=1 -1x9+1x10+1x14<=1 -1x9+1x11+1x15<=1 +1x1-1x10+1x17<=1 +1x2-1x10+1x18<=1 +1x4-1x11+1x16<=1 +1x5-1x11+1x18<=1 +1x7-1x12+1x16<=1 +1x8-1x12+1x17<=1 -1x1<=0 -1x2<=0 -1x3<=0 -1x4<=0 -1x5<=0 -1x6<=0 -1x7<=0 -1x8<=0 -1x9<=0 -1x10<=0 -1x11<=0 -1x12<=0 -1x13<=0 -1x14<=0 -1x15<=0 -1x16<=0 -1x17<=0 -1x18<=0 END lrslib-062/ine/test-062/porta/m6.ine.ieq0000600001553200155320000000260312722006616015436 0ustar avisDIM = 15 INEQUALITIES_SECTION +1x1-1x2-1x6<=0 -1x1+1x2-1x6<=0 -1x1-1x2+1x6<=0 +1x1+1x2+1x6<=2 +1x1-1x3-1x7<=0 -1x1+1x3-1x7<=0 -1x1-1x3+1x7<=0 +1x1+1x3+1x7<=2 +1x1-1x4-1x8<=0 -1x1+1x4-1x8<=0 -1x1-1x4+1x8<=0 +1x1+1x4+1x8<=2 +1x1-1x5-1x9<=0 -1x1+1x5-1x9<=0 -1x1-1x5+1x9<=0 +1x1+1x5+1x9<=2 +1x2-1x3-1x10<=0 -1x2+1x3-1x10<=0 -1x2-1x3+1x10<=0 +1x2+1x3+1x10<=2 +1x2-1x4-1x11<=0 -1x2+1x4-1x11<=0 -1x2-1x4+1x11<=0 +1x2+1x4+1x11<=2 +1x2-1x5-1x12<=0 -1x2+1x5-1x12<=0 -1x2-1x5+1x12<=0 +1x2+1x5+1x12<=2 +1x3-1x4-1x13<=0 -1x3+1x4-1x13<=0 -1x3-1x4+1x13<=0 +1x3+1x4+1x13<=2 +1x3-1x5-1x14<=0 -1x3+1x5-1x14<=0 -1x3-1x5+1x14<=0 +1x3+1x5+1x14<=2 +1x4-1x5-1x15<=0 -1x4+1x5-1x15<=0 -1x4-1x5+1x15<=0 +1x4+1x5+1x15<=2 +1x6-1x7-1x10<=0 -1x6+1x7-1x10<=0 -1x6-1x7+1x10<=0 +1x6+1x7+1x10<=2 +1x6-1x8-1x11<=0 -1x6+1x8-1x11<=0 -1x6-1x8+1x11<=0 +1x6+1x8+1x11<=2 +1x6-1x9-1x12<=0 -1x6+1x9-1x12<=0 -1x6-1x9+1x12<=0 +1x6+1x9+1x12<=2 +1x7-1x8-1x13<=0 -1x7+1x8-1x13<=0 -1x7-1x8+1x13<=0 +1x7+1x8+1x13<=2 +1x7-1x9-1x14<=0 -1x7+1x9-1x14<=0 -1x7-1x9+1x14<=0 +1x7+1x9+1x14<=2 +1x8-1x9-1x15<=0 -1x8+1x9-1x15<=0 -1x8-1x9+1x15<=0 +1x8+1x9+1x15<=2 +1x10-1x11-1x13<=0 -1x10+1x11-1x13<=0 -1x10-1x11+1x13<=0 +1x10+1x11+1x13<=2 +1x10-1x12-1x14<=0 -1x10+1x12-1x14<=0 -1x10-1x12+1x14<=0 +1x10+1x12+1x14<=2 +1x11-1x12-1x15<=0 -1x11+1x12-1x15<=0 -1x11-1x12+1x15<=0 +1x11+1x12+1x15<=2 +1x13-1x14-1x15<=0 -1x13+1x14-1x15<=0 -1x13-1x14+1x15<=0 +1x13+1x14+1x15<=2 END lrslib-062/ine/mit/0000700001553200155320000000000012722006424012014 5ustar avislrslib-062/ine/mit/mit31-20.ine0000600001553200155320000000271112722006424013670 0ustar avismit31-20.ine begin 31 20 integer 1 -6 12 3 0 0 0 -12 -8 0 0 12 3 0 0 0 -6 0 1 0 1 2 -1 2 -2 0 -4 4 -4 -2 0 2 0 1 -2 2 0 0 0 1 1 0 -3 0 0 2 0 0 -2 0 4 0 0 -1 0 -2 0 2 0 -1 1 0 1 -2 -2 0 0 0 0 2 0 2 0 1 -2 0 0 0 0 -1 1 0 -3 2 -2 0 0 0 0 2 0 -2 0 1 2 0 0 0 0 -1 1 -2 -1 0 0 2 0 0 2 0 0 0 0 -1 0 0 0 -2 0 1 1 -2 -5 2 2 -4 4 4 0 2 -8 2 0 1 2 2 0 -4 0 1 1 -2 3 -2 -2 0 4 4 -4 -2 0 -2 0 1 2 -2 0 0 0 1 1 -2 -1 2 -2 0 4 -4 4 -2 0 2 0 1 -2 -2 0 0 0 1 1 -4 1 2 2 -4 0 0 4 -2 0 -2 0 1 -2 0 0 4 0 -1 1 -4 5 0 0 2 0 0 -2 0 -4 0 0 -1 0 2 0 2 0 -1 1 -6 11 2 2 -4 -4 -4 -8 2 8 2 0 1 2 -2 0 -4 0 1 1 6 12 3 0 0 0 12 8 0 0 12 3 0 0 0 6 0 1 0 1 4 4 1 0 0 0 0 0 0 0 -4 -1 0 0 0 -4 0 -1 0 1 2 0 -1 0 0 0 -4 0 0 0 0 -1 0 0 0 2 0 1 0 1 2 -4 3 0 0 0 4 -8 0 0 -4 3 0 0 0 2 0 1 0 1 0 -4 1 0 0 0 0 0 0 0 4 -1 0 0 0 0 0 -1 0 1 0 0 -3 0 0 0 0 0 0 0 0 3 0 0 0 0 0 -1 0 1 -2 -4 3 0 0 0 -4 8 0 0 -4 3 0 0 0 -2 0 1 0 1 -2 0 -1 0 0 0 4 0 0 0 0 -1 0 0 0 -2 0 1 0 1 -4 4 1 0 0 0 0 0 0 0 -4 -1 0 0 0 4 0 -1 0 1 6 11 2 2 4 4 4 8 2 8 2 0 1 2 2 0 4 0 1 1 4 5 0 0 -2 0 0 2 0 -4 0 0 -1 0 -2 0 -2 0 -1 1 4 1 2 2 4 0 0 -4 -2 0 -2 0 1 -2 0 0 -4 0 -1 1 2 3 -2 -2 0 -4 -4 4 -2 0 -2 0 1 2 2 0 0 0 1 1 2 -1 0 0 -2 0 0 -2 0 0 0 0 -1 0 0 0 2 0 1 1 2 -1 -2 2 0 4 -4 -4 2 0 -2 0 1 -2 2 0 0 0 1 1 2 -5 2 2 4 -4 -4 0 2 -8 2 0 1 2 -2 0 4 0 1 1 0 -3 -2 2 0 0 0 0 -2 0 2 0 1 2 0 0 0 0 -1 1 0 -3 0 0 -2 0 0 2 0 4 0 0 -1 0 2 0 -2 0 -1 1 -2 -1 -2 2 0 -4 4 4 2 0 -2 0 1 -2 -2 0 0 0 1 end maxdepth 2 estimates 10 lrslib-062/ine/mit/mit708-9.ine0000600001553200155320000004604112722006424013716 0ustar avismit708-9.ine begin 708 9 rational 72 0 0 -4 -4 -2 0 0 0 216 -2 -2 -10 -12 -6 0 0 0 192 -4 -2 -8 -8 -8 0 0 0 288 -12 6 8 -16 -8 0 0 0 96 -4 2 0 -4 -4 0 0 0 144 -5 1 -4 -6 -6 0 0 0 288 -8 -2 -10 -12 -12 0 0 0 96 -4 2 -4 -2 -4 0 0 0 240 -7 -1 -10 -8 -10 0 0 0 288 -8 -2 -12 -8 -12 0 0 0 288 -8 -2 -8 -16 -8 0 0 0 96 -4 2 -8 0 0 0 0 0 0 0 6 -8 4 8 0 0 0 0 4 6 -8 0 8 0 0 0 24 2 2 -4 -2 2 0 0 0 864 -24 -6 -40 -16 -32 0 0 0 24 0 0 -2 -2 2 0 0 0 0 4 10 -16 0 24 0 0 0 0 1 1 -4 0 12 0 0 0 0 0 6 -16 8 40 0 0 0 96 -4 2 -16 16 32 0 0 0 288 -8 -2 -16 0 0 0 0 0 96 -4 2 8 -8 8 0 0 0 288 -8 -2 8 -24 24 0 0 0 0 0 2 -8 8 24 0 0 0 96 -1 -1 -4 -8 8 0 0 0 576 -12 -6 -16 -40 16 0 0 0 192 -4 -2 0 -16 16 0 0 0 576 -8 -6 -24 -32 -16 0 0 0 576 -12 -6 -20 -32 -16 0 0 0 960 -16 -10 -40 -56 -16 0 0 0 160 0 0 -7 -7 -6 -1 0 -1 480 -4 -4 -21 -21 -18 -1 0 -3 192 -4 -4 -12 -4 -8 4 2 -4 640 -16 -8 -28 -28 -24 4 2 -4 640 -8 -6 -28 -28 -24 0 0 -4 192 -8 0 -8 -8 -8 4 2 0 384 -12 -4 -16 -16 -16 4 2 0 960 -20 -12 -42 -42 -36 4 2 -6 240 -9 -1 -11 -9 -10 3 2 -1 0 2 2 4 0 0 -4 -2 0 640 -22 -4 -24 -28 -24 8 4 -4 1920 -60 -20 -76 -84 -72 20 10 -12 1920 -32 -22 -84 -84 -72 4 2 -12 960 -28 -10 -44 -36 -40 8 4 -4 1152 -36 -12 -52 -44 -48 12 6 -4 720 -23 -7 -33 -27 -30 7 4 -3 1920 -48 -24 -88 -72 -80 12 6 -8 3456 -96 -40 -160 -128 -144 28 14 -16 576 -15 -7 -26 -20 -24 4 2 -4 384 -12 -4 -20 -12 -16 4 2 0 336 -11 -3 -17 -11 -14 3 2 -1 192 -8 0 -12 -4 -8 4 2 0 0 0 0 -4 4 0 4 2 0 0 0 2 -8 8 0 8 4 -2 192 -12 12 -28 12 -8 20 10 -4 192 -12 12 -20 4 -8 12 6 -2 1920 -48 -24 -92 -60 -80 12 6 -4 576 -15 -7 -28 -18 -24 4 2 -2 1536 -42 -18 -76 -40 -64 12 6 -8 384 -12 -4 -20 4 -16 4 2 -4 1920 -60 -20 -102 18 -76 14 10 -18 1920 -60 -20 -102 -46 -76 14 10 -2 672 -22 -6 -37 -17 -26 5 4 -1 640 -22 -4 -36 -16 -24 4 4 0 960 -40 0 -64 -16 -32 8 10 0 64 -4 4 -8 0 0 0 2 0 0 0 8 -6 2 4 -2 2 0 0 8 18 -8 0 8 -8 2 0 64 36 60 -28 -4 24 -28 6 -4 192 28 36 -20 -12 8 -20 2 -4 96 4 4 -5 -5 -2 -3 0 -1 64 4 6 -4 -4 0 -4 0 0 96 0 0 -5 -5 -2 -1 0 -1 192 -6 0 -8 12 -8 0 0 -4 960 -30 -8 -48 -20 -40 8 4 -4 960 -32 -8 -52 -20 -40 12 6 -4 960 -32 -8 -52 44 -40 12 6 -20 960 -30 -8 -48 12 -40 8 4 -12 576 -16 -6 -28 -12 -24 4 2 -4 208 -8 0 -8 -8 -8 4 2 -2 160 -7 1 -5 -7 -6 3 2 -1 192 -12 12 0 -8 -8 8 6 0 160 -9 7 -1 -7 -6 5 4 -1 640 -20 -4 -20 -28 -24 4 2 -4 96 -5 3 -2 -4 -4 2 2 0 480 -18 -2 -17 -21 -18 7 4 -3 528 -19 -3 -20 -22 -20 8 4 -4 1152 -36 -4 -32 -40 -48 0 2 -8 1152 -36 -12 -48 -40 -48 8 6 -8 192 -8 0 -4 -4 -8 4 2 -4 192 -6 0 0 -4 -8 0 0 -4 384 -12 -4 -8 -8 -16 4 2 -8 1920 -48 -24 -48 -40 -80 12 6 -40 384 -16 2 -20 -12 -16 4 4 0 576 -24 0 -32 -16 -24 8 6 0 432 -17 -1 -23 -13 -18 5 4 -1 576 -28 12 -36 -12 -24 12 10 -4 960 -52 36 -92 12 -40 52 26 -12 0 0 4 -14 10 4 6 6 -2 2688 -72 -32 -120 -104 -112 16 10 -8 0 0 8 -20 12 56 -12 2 -4 64 -4 4 -16 8 24 -4 2 0 192 -8 0 -16 0 0 0 2 0 64 8 16 -20 -4 24 -12 2 -4 0 2 4 -4 0 8 -4 0 0 288 -13 3 -12 -10 -12 6 4 -2 336 -14 2 -15 -11 -14 7 4 -3 96 3 1 -8 -6 4 0 0 -2 192 12 0 -20 -12 8 4 2 -4 0 4 8 -6 2 4 -2 2 -2 192 -12 12 -28 28 -8 20 10 -12 0 0 0 -4 16 0 4 2 -6 0 0 0 -4 40 0 4 2 -12 192 -8 0 -12 44 -8 4 2 -12 0 0 2 0 32 0 0 0 -8 192 -12 12 -20 300 -8 12 6 -76 960 -40 0 -64 208 -32 8 10 -56 2112 -72 -16 -120 120 -80 16 14 -48 512 -16 -4 -26 6 -20 2 2 -6 512 -16 -4 -26 -10 -20 2 2 -2 448 -16 0 -24 -8 -16 0 2 0 448 24 8 -68 -20 56 12 6 -20 192 8 2 -24 -8 16 4 2 -8 192 16 0 -36 -4 24 12 6 -12 448 -13 -5 -23 -13 -18 3 2 -1 0 2 -2 -4 4 0 4 2 -2 0 0 0 -22 22 4 14 10 0 0 0 0 -22 82 4 14 10 -30 0 0 4 -14 34 4 6 6 -14 480 -21 3 -20 -18 -20 8 6 -2 480 -19 1 -16 -18 -20 4 4 -2 1344 -52 0 -44 -52 -56 12 10 -4 576 -22 0 -12 -24 -24 4 4 0 768 -28 -4 -24 -32 -32 8 6 0 768 -28 -4 40 -32 -32 -8 6 0 576 -22 0 20 -24 -24 -4 4 0 320 -12 0 10 -14 -12 -2 2 -2 160 -7 1 3 -7 -6 1 2 -1 0 2 2 -12 8 16 4 2 -4 0 22 14 -52 16 80 12 6 -16 192 32 16 -68 -4 88 12 6 -20 128 18 10 -36 -8 48 4 2 -8 64 8 8 -20 -4 24 -4 2 -4 0 4 2 -4 4 8 0 0 -4 0 4 8 -14 2 20 -4 2 -2 0 1 7 -11 3 14 -3 2 -1 0 0 8 -12 4 16 -4 2 0 0 4 12 -20 4 32 -8 2 0 0 0 24 -44 20 64 -16 6 0 0 0 4 -10 6 12 -2 2 -2 0 14 22 -44 8 64 -12 6 -8 0 6 10 -18 2 28 -6 2 -2 192 28 36 -52 -12 72 -36 2 -12 96 3 3 -8 -6 4 -4 0 -2 0 0 12 -10 6 12 -6 2 -2 48 0 0 -3 -3 2 -1 0 -1 192 16 24 -44 -12 72 -28 2 -12 0 4 12 -14 2 20 -8 2 -2 0 1 9 -11 3 14 -5 2 -1 192 32 40 -68 -4 88 -36 6 -20 16 1 1 -3 -1 6 -1 0 -1 64 4 6 -12 -4 24 -8 0 -4 0 4 12 -20 4 40 -12 2 -4 0 0 10 -16 8 24 -8 2 0 192 -12 12 -40 16 32 -8 6 0 0 0 24 -34 14 44 -14 6 -2 64 -4 4 -16 8 16 0 2 0 0 0 4 -14 10 20 2 2 -2 0 0 2 -2 2 4 -2 0 0 0 0 24 -44 20 72 -20 6 -4 0 6 10 -16 4 24 -8 2 -4 0 1 1 -1 1 2 -1 0 -1 0 6 18 -16 4 24 -12 2 -4 384 0 -2 -20 -20 -8 0 0 -4 384 -12 -4 -12 -20 -8 4 2 -4 640 -16 -8 -20 -36 -8 4 2 -4 1280 -6 -14 -60 -80 0 -4 2 0 1024 -2 -10 -52 -64 0 -4 2 0 1024 -12 -12 -48 -56 -16 0 2 -8 384 8 -4 -24 -24 0 0 2 0 256 4 -4 -16 -16 0 2 2 0 1024 0 -16 -56 -56 -16 8 6 -8 960 0 -16 -52 -52 -16 12 6 -8 6400 -96 -72 -280 -280 -240 8 6 -40 960 -16 -12 -42 -42 -36 2 2 -6 3840 -48 -40 -168 -168 -144 0 2 -24 4032 -72 -48 -178 -178 -148 10 6 -26 1152 -20 -14 -52 -52 -40 4 2 -8 0 2 -2 0 0 0 2 2 0 192 -6 0 12 -8 -8 -4 0 0 192 -4 -4 -8 -8 -8 4 2 0 6912 -176 -88 -288 -288 -288 40 26 0 1920 -48 -24 -80 -80 -80 10 6 0 576 -12 -10 -24 -24 -24 6 4 0 5760 -168 -64 -264 -216 -240 48 26 -24 960 -48 24 -36 -36 -40 20 18 -4 960 -44 12 -28 -36 -40 12 14 -4 192 -12 12 4 -4 -8 4 6 -4 960 -56 48 -20 -36 -40 28 26 -4 640 -20 0 -4 -28 -24 -2 0 -4 576 -24 0 -28 -12 -24 4 6 -4 0 0 0 4 8 0 -2 0 -4 192 -6 0 -4 12 -8 -4 0 -6 960 -30 0 -32 -12 -40 -8 0 -6 960 -32 0 -36 -20 -40 -4 2 -4 640 -20 0 -28 -4 -24 -4 0 -2 0 0 20 -4 12 8 -12 0 -2 16 0 0 -1 -1 6 -1 0 -1 1536 -62 0 -80 -44 -64 16 14 0 1344 -42 -12 -64 -44 -56 12 6 -4 2880 -90 -28 -128 -108 -120 28 14 -12 960 -30 0 -12 -32 -40 -6 0 -8 768 -30 0 -24 -28 -32 6 6 -4 576 -24 0 -20 -20 -24 8 6 -4 576 -24 0 -15 -23 -22 9 6 -5 192 -8 0 12 -4 -8 -4 2 -4 0 0 0 -8 8 8 4 2 0 192 -12 12 -76 76 88 20 10 -12 0 0 6 -28 28 40 8 4 -6 576 -15 -7 -29 -15 -22 3 2 -1 448 -13 -5 -25 -7 -14 3 2 -1 512 -14 -6 -26 -14 -20 4 2 -2 448 -13 -5 -23 -5 -18 3 2 -3 384 -6 -4 -16 -20 -8 0 0 -4 0 8 8 -24 8 48 0 2 -8 96 -1 -1 0 -6 36 -4 0 -6 192 -4 -4 12 -12 72 -4 2 -12 0 0 0 -6 6 4 2 2 0 384 -12 -4 -22 -6 -12 2 2 0 1216 -31 -15 -59 -37 -50 7 4 -3 960 -20 -16 -42 -42 -36 10 6 -6 2304 -72 -20 -112 -64 -96 16 10 -8 1344 -42 -12 -64 -36 -56 8 6 -6 1152 -36 -12 -56 -32 -48 8 6 -4 384 -12 -4 -16 -8 -16 0 2 0 192 -6 0 -4 0 -8 -4 0 0 912 -26 -10 -43 -31 -38 5 4 -1 960 -27 -11 -46 -32 -40 6 4 -2 1344 -39 -15 -66 -44 -56 10 6 -4 4224 -120 -48 -200 -152 -176 32 18 -16 4992 -132 -60 -240 -168 -208 32 18 -16 3456 -96 -40 -168 -104 -144 24 14 -16 2688 -76 -28 -128 -72 -112 16 10 -16 960 -29 -9 -46 -28 -40 6 4 -4 0 2 -2 12 0 0 -4 2 0 960 -20 -20 134 -42 -36 -38 10 -6 1920 -60 -20 148 -84 -72 -36 10 -12 1920 -68 -12 100 -84 -72 -20 14 -12 320 -12 0 -6 -14 -12 2 2 -2 960 -40 0 -26 -42 -36 18 10 -6 576 -12 -8 -22 -30 -12 2 2 -6 576 -12 -10 -8 -24 -24 -2 4 0 2304 -56 -32 -80 -96 -96 8 10 0 960 -20 -20 -38 -42 -36 20 10 -6 192 -6 0 -4 -4 -8 -2 0 -2 0 0 0 1 1 2 -1 0 -1 192 -8 0 -4 28 -8 -4 2 -12 192 -8 0 -4 60 -8 -4 2 -20 0 0 2 -4 4 16 -4 0 0 1792 -28 -20 -80 -88 -48 0 2 -16 384 -3 -3 -18 -20 -8 -2 0 -4 8064 -204 -100 -384 -264 -336 48 26 -24 1920 -48 -24 -88 -56 -80 8 6 -8 384 -12 -4 -16 8 -16 0 2 -8 192 -12 12 -12 -4 -8 4 6 0 192 -12 12 -12 12 -8 4 6 -8 192 -12 12 4 60 -8 -12 6 -28 0 0 0 -8 8 16 0 2 0 192 -4 -2 -4 -4 -8 0 0 -4 192 -4 -4 16 -12 0 -4 2 0 768 -20 -12 40 -48 0 -8 6 0 512 -14 -6 20 -32 0 -4 2 0 1344 -60 12 -68 -44 -56 20 18 -4 2112 -92 12 -116 -60 -88 28 26 -4 960 -44 12 -52 -28 -40 12 14 0 1920 -48 -24 -72 -56 -80 8 6 -24 96 -5 3 -4 -2 -4 0 2 0 0 0 2 -8 24 0 8 4 -10 0 4 4 -16 8 112 -16 2 -8 384 -12 -4 -24 0 0 0 2 0 0 2 -2 -4 16 0 4 2 -8 64 -4 4 -20 20 24 4 2 -2 128 -6 2 -20 16 16 4 2 -2 192 -8 0 -20 12 8 4 2 0 96 -4 0 -14 10 8 4 2 -2 448 -20 4 -76 60 56 20 10 -12 192 -4 -2 -4 -12 8 0 0 -4 384 -12 -4 0 -24 16 4 2 -8 192 -8 0 4 -12 8 4 2 -4 192 12 20 -20 -12 8 -12 2 -4 192 12 4 -20 -12 8 -4 2 -4 192 76 20 -84 -12 72 -4 18 -12 64 20 12 -28 -4 24 -4 6 -4 64 20 44 -28 -4 24 -20 6 -4 0 12 36 -22 2 20 -14 6 -2 0 4 10 -8 0 8 -4 2 0 0 4 6 -8 0 8 -2 2 0 0 4 0 -6 2 4 2 2 -2 0 0 4 -6 2 4 0 2 0 192 4 2 -12 -12 0 -4 0 0 0 8 8 -16 0 24 -4 2 0 64 20 4 -28 -4 24 4 6 -4 0 20 4 -24 0 24 4 6 0 0 8 0 -8 0 8 4 2 0 0 5 -1 -6 2 4 4 2 -2 64 24 0 -28 -4 24 12 6 -4 96 46 -10 -42 -6 36 18 14 -6 32 18 -6 -14 -2 12 10 6 -2 192 112 -40 -84 -12 72 76 38 -12 0 6 -2 -4 0 4 4 2 0 0 0 0 0 16 0 0 2 -8 192 -12 12 4 28 -8 4 6 -20 960 -40 0 38 -42 -36 2 10 -6 960 -40 8 -20 -36 -40 4 10 -4 192 -8 2 0 -8 -8 0 2 0 384 -18 6 -4 -16 -16 4 6 0 192 -8 0 8 -8 -8 0 2 0 320 -20 20 10 -14 -12 14 10 -2 576 -8 -6 -20 -36 24 -4 0 -12 96 -1 -1 -4 -6 4 0 0 -2 192 16 -8 -20 -12 8 12 6 -4 960 12 -20 -60 -52 -8 20 10 -12 576 -12 -8 -26 -26 -20 4 2 -4 1920 -48 -24 -68 -100 -40 12 6 -20 640 -16 -8 -32 -16 -24 4 2 0 384 -12 -4 -24 0 -8 4 2 0 192 -8 0 -36 44 24 12 6 -12 192 -8 0 -36 76 24 12 6 -20 128 -6 2 -20 40 16 4 2 -8 64 -4 4 -20 60 24 4 2 -12 0 0 2 -4 20 8 0 0 -4 624 -21 -5 -34 -16 -24 4 4 0 400 -12 -4 -20 -12 -16 2 2 0 192 1 -1 -10 -12 0 -2 0 0 640 -16 -8 -8 -40 48 0 2 -16 1920 -48 -24 -24 -120 80 8 6 -40 96 8 8 -22 -6 36 -10 2 -6 0 8 8 -16 0 32 -8 2 0 2112 -72 -16 -120 -40 -80 16 14 -8 3456 -100 -36 -160 -120 -144 24 14 -16 1152 -36 -12 -59 -27 -46 7 6 -3 1920 -48 -24 -96 -32 -64 8 6 0 640 -16 -8 -32 0 0 0 2 0 240 -2 -2 -11 -15 10 -3 0 -5 960 -20 -12 -32 -56 16 0 2 -16 1920 -48 -24 216 -80 -80 -64 6 0 384 -12 -4 32 -16 -16 -8 2 0 320 -10 0 18 -14 -12 -6 0 -2 192 -6 0 20 -4 -8 -8 0 -4 320 -10 0 -14 18 -12 -2 0 -6 32 -1 1 -4 6 20 -4 0 -2 192 -8 0 -16 32 0 0 2 -8 192 -8 0 -20 28 8 4 2 -4 0 0 0 -8 28 8 4 2 -8 0 0 0 -6 34 4 2 2 -10 384 -12 -4 -22 2 -12 2 2 -2 192 -12 12 28 -12 8 12 6 -4 576 -24 0 -8 -24 -16 8 6 -8 192 -8 0 -2 -10 -4 4 2 -2 768 0 -8 -40 -40 -16 0 2 -8 3840 0 -56 -200 -200 -80 24 18 -40 384 0 -6 -20 -20 -8 4 2 -4 768 -12 -10 -36 -36 -24 4 2 -6 192 -8 0 -20 28 88 -12 2 -4 64 -4 4 -20 52 200 -28 2 -12 0 0 8 -24 72 336 -48 2 -24 0 1 1 -2 4 40 -6 0 -4 0 0 2 -4 12 48 -8 0 -4 1792 -4 -20 -88 -112 0 -8 6 0 768 4 -12 -40 -48 0 0 6 0 192 0 -4 -10 -10 -4 2 2 -2 96 -5 3 1 -5 -2 3 2 -1 96 6 -2 -10 -6 4 2 2 -2 528 9 -11 -35 -29 -2 9 6 -7 480 38 -18 -50 -30 20 22 14 -10 640 12 -12 -40 -40 0 8 6 0 48 -3 3 -14 8 24 -4 2 0 384 2 -6 -20 -24 144 4 2 -24 192 -4 -2 -6 -10 -4 0 0 -2 1344 -24 -16 -56 -72 -16 0 2 -16 2880 -60 -36 -112 -152 -56 12 6 -28 1344 -24 -16 -56 -72 -24 4 2 -12 384 -6 -6 -12 -24 0 0 2 0 64 -4 4 4 -4 0 4 2 0 384 -12 -4 48 -8 -16 -16 2 -8 192 -6 0 12 -4 -8 -6 0 -4 576 -18 0 -23 -3 -22 -5 0 -3 0 0 0 -22 194 4 14 10 -58 64 -4 4 -8 96 0 0 2 -24 0 0 10 -2 154 4 -6 0 -38 384 -12 -4 16 -24 80 0 2 -16 64 -2 0 8 -4 24 0 0 -4 384 -12 -4 48 -24 144 0 2 -24 192 -8 0 4 -12 0 4 2 0 384 -12 -4 16 -24 16 0 2 -8 0 0 6 1 9 2 -5 0 -3 0 0 2 4 16 0 -4 0 -6 1344 -56 8 -60 -44 -56 12 14 -4 192 -4 -2 32 -4 -8 -12 0 -4 1920 -48 -24 296 -40 -80 -104 6 -40 192 -4 -2 24 -8 -8 -8 0 0 960 -20 -10 114 -42 -36 -38 0 -6 640 -16 -8 68 -28 -24 -20 2 -4 0 10 2 -12 0 160 -20 2 0 0 3 -1 -6 4 40 -2 2 -4 0 8 -8 -24 24 80 8 10 -8 0 116 -36 -80 0 80 64 38 0 0 136 -56 -120 40 80 104 58 -40 0 14 -6 -12 4 8 12 6 -4 0 10 -6 -12 8 16 12 6 -8 192 8 -8 -20 -4 88 12 6 -20 960 0 -16 -52 -52 248 12 6 -52 0 0 2 -4 20 80 -12 0 -4 64 -2 0 -4 8 24 -4 0 0 1920 -40 -20 -68 -84 -72 -2 0 -12 576 -12 -6 -19 -23 -22 -1 0 -5 1920 -48 -24 -72 -72 -80 4 6 -8 192 -4 -4 4 -4 -8 -4 2 -4 1920 -68 -12 -60 -84 -72 20 14 -12 0 1 1 -2 4 24 -4 0 -4 0 0 2 -4 12 32 -6 0 -4 64 -4 4 -20 52 72 -12 2 -12 192 -8 0 -20 28 24 -4 2 -4 448 -16 0 -36 28 56 -12 2 -4 288 -8 -4 -2 -18 12 2 2 -6 192 -4 -4 12 -12 8 -4 2 -4 192 -12 12 14 -10 -4 10 6 -2 192 -8 0 36 -12 72 4 2 -12 1344 -24 -16 -36 -84 120 -12 2 -36 960 -20 -12 -20 -60 72 -4 2 -24 640 -16 -8 -20 -36 0 4 2 -8 576 -12 -8 -18 -34 -4 2 2 -2 192 -4 -4 -4 -12 0 4 2 0 192 -4 -4 -6 -10 -4 4 2 -2 192 -4 -4 36 -4 -8 -12 2 -4 192 -4 -4 28 -8 -8 -8 2 0 192 -4 -4 4 -8 -8 -2 2 0 960 -20 -20 22 -42 -36 -10 10 -6 384 -12 -4 16 -8 -16 -8 2 -8 576 -12 -6 0 -16 -24 -10 0 -8 1920 -48 -24 -24 -56 -80 -16 6 -24 1920 -48 -24 72 -40 -80 -48 6 -40 192 -4 -2 8 -4 -8 -6 0 -4 576 -12 -6 -15 -23 -22 -3 0 -5 0 0 0 -8 24 80 -8 2 -8 64 -4 4 -20 20 72 -12 2 -4 192 -8 0 -20 12 24 -4 2 0 192 -6 0 -12 8 8 -4 0 0 0 0 0 -8 24 16 0 2 -8 0 0 2 -4 20 16 -4 0 -4 0 0 2 -4 12 24 -4 0 -4 96 -4 0 -14 10 20 -2 2 -2 64 -4 4 -20 52 40 -4 2 -12 192 -12 12 -60 188 152 -28 6 -36 0 0 14 -18 6 20 -6 4 0 576 -8 -8 -20 -36 24 -4 2 -12 640 -16 -8 24 -40 48 -8 2 -16 192 -6 0 8 -12 8 0 0 -4 640 -20 -4 16 -40 48 0 2 -16 960 -20 -12 -4 -60 168 -12 2 -36 640 -16 -8 24 -40 176 -8 2 -32 640 -16 -8 56 -40 240 -8 2 -40 960 -20 -12 28 -60 296 -20 2 -52 192 -4 -2 12 -12 72 -4 0 -12 1920 -48 -24 156 -100 -40 -44 6 -20 384 -12 -4 20 -20 -8 -4 2 -4 192 -8 0 6 -10 -4 2 2 -2 0 0 0 8 4 0 -4 0 -2 192 -12 12 4 12 -8 -12 6 -4 192 -8 0 -4 4 -8 -4 2 0 192 -6 0 -4 20 -8 -4 0 -8 0 3 11 -9 1 10 -5 2 -1 576 -12 -6 -16 -16 -24 -2 0 -8 1920 -48 -24 -48 -112 32 8 6 -32 640 -16 -8 -8 -40 16 0 2 -8 1152 -12 -12 -52 -60 -24 -4 2 -12 2880 -60 -36 -112 -152 -48 8 6 -32 0 8 16 -36 12 120 -28 2 -12 0 2 4 -8 4 40 -8 0 -4 0 0 4 -16 16 48 -8 2 -4 0 4 4 -16 8 48 -8 2 -8 128 -6 2 -2 -6 -4 2 2 0 160 -7 1 1 -9 -2 3 2 -1 288 -8 -4 -2 -18 0 2 2 0 768 -20 -12 8 -48 0 0 6 0 0 8 0 0 0 96 -16 2 0 192 4 -4 12 -12 72 -20 2 -12 0 6 -2 12 0 48 -12 2 0 0 12 -4 -8 0 96 -8 6 0 192 16 -16 -12 -12 72 4 14 -12 0 14 -10 -4 0 48 4 10 0 640 -16 -8 32 -40 0 -8 2 0 1920 -48 -24 104 -120 80 -24 6 -40 1920 -48 -24 116 -108 8 -36 6 -28 640 -16 -8 24 -40 16 -8 2 -8 192 -4 -2 12 -12 8 -4 0 -4 192 -4 -2 13 -11 2 -5 0 -3 576 -12 -6 28 -36 16 -12 0 -8 192 -4 -2 12 -12 0 -4 0 0 192 -4 -2 18 -10 -4 -6 0 -2 384 -12 -4 16 -24 0 0 2 0 384 -12 -4 0 -24 0 4 2 0 1920 -48 -24 -56 -56 -80 -8 6 -8 0 20 4 -24 0 288 -40 6 0 0 2 0 4 0 8 -4 0 0 0 10 -6 -4 0 16 4 6 0 0 14 -6 -8 0 8 8 6 0 0 20 -4 -16 0 16 8 6 0 0 8 2 -8 0 8 0 2 0 0 32 0 -32 0 32 8 10 0 48 19 -1 -21 -3 18 5 6 -3 1152 -18 -14 -50 -62 -20 2 2 -10 0 2 -2 -2 2 4 2 2 -2 192 -4 -2 4 -12 40 -4 0 -8 192 -4 -2 4 -12 24 -4 0 -6 128 -3 -1 2 -8 16 -2 0 -4 64 -4 4 -20 20 40 -4 2 -4 192 -12 12 -52 36 104 -20 6 -4 0 0 6 -12 20 40 -8 0 -4 384 -12 -4 -24 32 64 -8 2 0 0 0 0 -6 18 4 2 2 -6 0 0 0 -8 20 8 4 2 -6 0 0 8 -24 40 208 -32 2 -16 0 0 8 -24 40 144 -24 2 -16 0 0 8 -24 40 112 -16 2 -16 192 -8 0 -20 60 152 -20 2 -4 64 -4 4 -20 84 264 -36 2 -12 960 -16 -12 -26 -42 -36 -6 2 -6 960 -20 -12 -34 -42 -36 0 2 -6 960 -20 -16 -18 -42 -36 -2 6 -6 576 -8 -8 -20 -36 88 -4 2 -20 192 132 -60 -84 -12 72 76 58 -12 192 20 -12 -20 -12 8 12 10 -4 96 3 -3 -6 -6 0 2 2 0 768 16 -16 -48 -48 0 8 10 0 96 -1 -1 0 -6 20 -4 0 -4 0 3 5 -10 8 72 -14 0 -8 0 4 12 -32 24 176 -32 2 -16 192 -12 12 -60 60 152 -28 6 -4 192 -12 12 -76 76 184 -28 10 -12 0 0 0 0 48 0 0 2 -16 576 -12 -8 -12 -36 24 0 2 -12 192 -4 -4 -4 -12 8 4 2 -4 0 0 12 -32 32 96 -16 2 -8 0 24 -8 -24 8 16 16 10 -8 0 52 -28 -64 40 80 48 30 -40 192 -12 12 20 156 -8 -28 6 -60 192 -12 12 20 380 -8 -28 6 -116 0 0 2 4 40 0 -4 0 -12 0 0 6 8 24 0 -8 0 -10 0 0 8 -36 28 152 -20 6 -4 32 -2 2 -12 8 32 -4 2 0 0 0 2 4 4 0 -4 0 0 0 0 6 8 8 0 -8 0 -2 0 0 6 1 5 2 -5 0 -1 1024 -16 -12 -48 -48 -32 4 2 -8 1248 -23 -15 -55 -57 -42 3 2 -9 1344 -24 -16 -58 -66 -36 2 2 -12 1056 -21 -13 -45 -51 -30 3 2 -9 960 -20 -12 -40 -48 -24 4 2 -8 0 0 8 -24 24 112 -20 2 -8 0 4 12 -32 24 144 -24 2 -16 0 0 8 -24 24 80 -12 2 -8 0 8 0 -8 24 80 -8 2 -24 0 6 -2 -4 16 48 4 2 -16 0 14 -10 -20 16 48 20 10 -16 0 20 -12 -32 24 80 16 14 -24 0 14 -2 -20 8 16 12 6 -8 0 12 -4 -16 8 16 8 6 -8 0 2 0 0 4 8 0 0 -4 192 4 -4 -12 -4 88 4 2 -20 96 1 -3 -4 -6 36 0 2 -6 192 4 -12 -4 -12 72 12 10 -12 192 -4 -4 22 -10 -4 -6 2 -2 1344 -28 -16 -54 -62 -44 2 2 -10 2688 -36 -28 -120 -144 -32 -8 2 -32 640 -8 -6 -28 -36 0 -4 0 -8 112 -1 -1 -5 -7 2 -1 0 -1 48 2 2 -7 -3 18 -5 0 -3 0 1 1 -2 0 8 -2 0 0 0 12 20 -48 24 240 -48 2 -24 4864 -80 -56 -216 -216 -176 8 6 -32 2304 -32 -24 -104 -104 -80 0 2 -16 1152 -24 -14 -44 -60 -24 4 2 -12 384 -6 -4 -12 -24 24 -4 0 -8 1728 -28 -20 -64 -104 48 -8 2 -32 1344 -24 -16 -36 -84 88 -12 2 -28 192 8 -8 -12 -12 8 4 6 -4 192 48 -32 -28 -12 72 20 30 -12 1920 -48 -24 -44 -108 8 4 6 -28 960 -20 -12 -20 -60 40 -4 2 -16 1344 -28 -16 -28 -84 40 -4 2 -20 768 -14 -8 -20 -48 24 -4 0 -12 2112 -32 -24 -68 -132 152 -20 2 -52 192 -4 -2 -3 -11 2 -1 0 -3 576 -12 -6 -4 -36 16 -4 0 -8 192 -4 -2 4 -12 16 -4 0 -4 1728 -36 -18 -59 -75 -62 -3 0 -13 192 4 -4 -12 -12 0 4 2 0 96 -1 -1 -3 -5 -2 -1 0 -1 192 0 -2 -4 -12 0 -4 0 0 960 -12 -12 -36 -60 8 -4 2 -4 1920 -18 -26 -76 -120 0 -4 6 0 2688 -42 -34 -116 -144 -48 4 6 -24 864 -17 -11 -37 -43 -22 3 2 -7 2880 -60 -36 -118 -142 -76 10 6 -26 192 -6 0 -10 10 -4 -2 0 -2 192 -6 0 -10 2 -4 -2 0 0 0 0 2 -2 26 4 -2 0 -6 192 -12 12 -40 240 32 -8 6 -56 480 -7 -5 -12 -30 52 -8 0 -14 0 0 4 -16 16 80 -12 2 -4 0 4 6 -12 4 48 -12 0 -4 1152 -36 -12 -60 -20 -40 4 6 -4 0 2 8 -16 12 56 -12 0 -4 0 10 16 -32 12 120 -28 0 -12 96 9 -1 16 -6 36 -20 0 -6 96 1 -1 0 -6 4 -4 0 -2 416 -10 -6 -12 -24 16 4 2 -8 192 -4 -4 6 -10 -4 -2 2 -2 192 -4 -4 8 -12 0 -2 2 0 0 4 -2 -3 1 2 3 2 -1 960 -12 -12 -44 -52 -16 4 2 -8 576 -8 -8 -28 -28 -16 4 2 -4 0 3 5 -9 1 10 -1 2 -1 0 3 7 -9 1 10 -3 2 -1 1792 -16 -24 -88 -88 -48 8 6 -16 864 -15 -11 -39 -41 -26 3 2 -7 672 -11 -9 -31 -33 -18 3 2 -5 960 -16 -12 -42 -50 -20 2 2 -8 3200 -80 -40 -154 -90 -132 18 10 -6 1920 -48 -24 -94 -46 -76 10 6 -2 1056 -12 -12 -50 -58 -4 -2 2 -14 960 -12 -12 -44 -52 -8 4 2 -12 0 0 6 -20 20 56 -8 2 -6 192 8 8 -24 -8 16 -8 2 -8 0 3 1 -2 4 8 -2 0 -4 0 11 1 -2 20 40 -6 0 -20 0 0 18 -3 13 10 -13 0 -3 400 -6 -4 -16 -20 -8 -2 0 -4 3648 -64 -40 -144 -176 -96 -8 2 -32 624 -8 -6 -26 -34 -4 -4 0 -8 576 0 -6 -28 -36 0 -4 2 0 4608 -60 -52 -200 -240 -96 -8 6 -48 1152 -18 -14 -48 -60 -24 0 2 -12 1920 -34 -22 -80 -92 -56 0 2 -16 1728 -36 -22 -74 -82 -52 8 4 -14 1344 -28 -20 -40 -80 96 8 6 -32 576 -12 -8 -12 -36 56 0 2 -16 528 -13 -7 -16 -30 4 4 2 -8 192 -12 12 -48 40 80 -16 6 -8 192 -12 12 -48 200 80 -16 6 -48 0 0 6 -12 52 40 -8 0 -12 0 0 2 -3 21 10 -3 0 -5 256 -8 0 -12 12 -8 -2 0 -4 192 -6 0 -7 13 -6 -3 0 -5 512 -16 0 -24 0 -16 -4 0 -2 512 -14 -6 -4 -32 0 2 2 0 640 -16 -8 -8 -40 0 2 2 0 960 -20 -14 -20 -60 0 2 4 0 960 -20 -12 -4 -60 72 -12 2 -20 960 -20 -12 -4 -60 104 -12 2 -28 192 -12 12 20 36 -8 -28 6 0 0 0 2 -3 5 10 -3 0 -1 192 28 -4 -44 -4 24 20 10 -12 64 8 0 -12 -4 8 4 2 -2 256 14 6 -36 -16 32 4 2 -8 48 4 6 -10 -2 20 -8 0 -4 16 2 4 -4 0 8 -4 0 -2 0 12 36 -28 12 56 -28 2 -12 0 4 4 -8 0 8 0 2 0 64 4 8 -12 -4 8 -4 2 0 448 12 12 -36 -28 8 -12 2 -4 1536 -22 -16 -52 -96 56 -12 0 -28 1792 -16 -16 -88 -88 -48 0 2 -16 384 6 -10 -20 -24 0 4 6 0 2304 -12 -28 -104 -144 0 -8 6 0 3840 -48 -40 -168 -200 -80 -8 2 -40 0 0 8 -6 10 4 -2 2 -4 0 4 8 -6 18 4 -2 2 -10 768 -16 -10 -16 -48 24 -2 2 -12 2304 -56 -32 -32 -144 96 8 10 -48 1792 -48 -24 -16 -112 0 8 10 0 2304 -56 -32 -32 -144 0 8 10 0 192 -6 0 -7 5 -6 -3 0 -3 448 -14 0 -19 1 -14 -5 0 -3 576 -18 0 -24 4 -16 -8 0 -4 192 -6 0 10 -10 -4 -2 0 -2 256 -8 0 12 -12 -8 -4 0 -2 512 -16 0 0 -24 -16 -2 0 -4 192 -6 0 2 -10 -4 0 0 -2 576 -18 0 4 -24 -16 -4 0 -8 448 -14 0 1 -19 -14 -3 0 -5 576 -18 0 -3 -23 -22 -3 0 -5 192 -6 0 5 -7 -6 -3 0 -3 192 -6 0 13 -7 -6 -5 0 -3 64 -4 4 20 -4 24 4 2 -4 2304 -56 -32 -96 -96 -96 16 10 0 768 -30 0 -32 -28 -32 8 6 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 end nonnegative lrslib-062/ine/mit/mit71-61.ine0000600001553200155320000002272512722006424013710 0ustar avismit71.ine begin 71 61 rational 64 -384 0 192 0 0 768 0 0 -512 0 0 0 -768 0 0 0 0 0 768 0 0 0 0 0 0 0 0 0 0 0 0 0 192 0 0 0 0 0 -384 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -6 6 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 6 -6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -2 -2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 2 2 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 -2 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 -6 -6 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 4 -8 16 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 -4 -8 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 4 -8 -16 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 -8 0 0 0 -24 24 0 24 -24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 0 0 0 -24 -24 0 24 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 -64 0 0 0 0 96 0 0 -64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -6 12 3 -12 -8 3 12 -6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -4 4 1 0 0 -1 -4 4 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -2 0 -1 4 0 -1 0 -2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -2 -4 3 -4 8 3 -4 -2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -4 1 0 0 -1 4 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 -3 0 0 3 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 -4 3 4 -8 3 -4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 -1 -4 0 -1 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 4 1 0 0 -1 -4 -4 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 12 3 12 8 3 12 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -8 -2 8 4 8 -4 -8 -8 8 2 -2 -2 10 -16 -4 12 8 -2 -8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -4 -2 4 0 0 0 0 4 -4 -2 2 -2 6 -4 0 -4 0 2 4 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -8 2 -8 4 8 4 8 -8 -8 2 2 -2 6 0 -4 4 -8 -2 8 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -4 2 -4 0 0 0 0 4 4 -2 -2 -2 2 4 0 -4 0 2 -4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 -2 0 4 -8 -4 8 0 0 2 -2 -2 2 8 -4 4 -8 -2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 -2 0 -4 0 4 0 0 0 2 -2 -2 2 0 4 -4 0 -2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 4 -8 4 -8 0 0 2 2 -2 -2 8 -4 -4 8 -2 0 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 -4 0 -4 0 0 0 2 2 -2 -2 0 4 4 0 -2 0 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 -2 -4 0 0 0 0 -4 4 -2 2 -2 -2 4 0 4 0 2 -4 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 2 4 0 0 0 0 -4 -4 -2 -2 -2 -6 -4 0 4 0 2 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 8 -2 -8 4 8 -4 -8 8 -8 2 -2 -2 -6 0 -4 -4 8 -2 8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 8 2 8 4 8 4 8 8 8 2 2 -2 -10 -16 -4 -12 -8 -2 -8 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 -8 4 16 4 -8 -8 4 0 0 0 0 0 0 0 0 0 0 0 -8 24 8 -24 -8 -16 8 16 8 -8 0 0 4 -16 20 4 -8 -8 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 -8 -4 0 4 8 0 -4 0 0 0 0 0 0 0 0 0 0 0 -8 16 0 8 -8 0 0 -16 0 8 0 0 4 -8 -4 4 0 8 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 0 4 0 -4 0 8 -4 0 0 0 0 0 0 0 0 0 0 0 -8 8 8 -8 8 0 -8 0 -8 8 0 0 4 -8 4 -4 8 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 -8 4 -16 4 -8 8 4 0 0 0 0 0 0 0 0 0 0 0 -8 8 -8 8 -8 16 -8 16 -8 -8 0 0 4 0 -12 4 8 -8 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 -4 0 -4 0 0 4 0 0 0 0 0 0 0 0 0 0 0 -8 0 0 8 8 0 0 0 0 -8 0 0 4 0 -4 -4 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 8 4 -16 4 8 -8 4 0 0 0 0 0 0 0 0 0 0 0 -8 -8 8 8 -8 16 8 -16 8 -8 0 0 4 0 -12 4 -8 8 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 0 4 0 -4 0 -8 -4 0 0 0 0 0 0 0 0 0 0 0 -8 -8 -8 -8 8 0 8 0 8 8 0 0 4 8 4 -4 -8 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 8 -4 0 4 -8 0 -4 0 0 0 0 0 0 0 0 0 0 0 -8 -16 0 8 -8 0 0 16 0 8 0 0 4 8 -4 4 0 -8 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 8 4 16 4 8 8 4 0 0 0 0 0 0 0 0 0 0 0 -8 -24 -8 -24 -8 -16 -8 -16 -8 -8 0 0 4 16 20 4 8 8 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -16 8 16 -16 4 -8 32 0 0 -16 -32 0 0 32 0 -8 0 4 -16 16 8 -16 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 0 0 8 -4 -8 16 0 0 0 0 0 0 -16 0 8 0 4 -8 0 0 8 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 8 -16 0 4 -8 0 0 0 -16 32 0 0 0 0 -8 0 4 0 -16 8 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 -8 0 0 4 -8 0 0 0 16 0 0 0 0 0 -8 0 4 0 0 -8 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 0 0 -8 -4 -8 -16 0 0 0 0 0 0 16 0 8 0 4 8 0 0 -8 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 16 8 16 16 4 -8 -32 0 0 -16 -32 0 0 -32 0 -8 0 4 16 16 8 16 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 -8 -16 16 8 -8 -16 16 32 0 -32 -16 0 16 0 0 0 0 0 0 -8 24 -8 -16 8 0 24 -64 -8 16 24 32 -8 0 -16 0 0 0 -8 24 -16 -8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 -16 -16 8 8 -16 -16 32 0 32 -16 0 -16 0 0 0 0 0 0 -8 8 -8 16 -8 0 24 -32 8 -16 24 -32 8 0 16 0 0 0 -8 8 16 -8 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 -8 0 0 -8 8 -16 16 0 0 0 16 0 -16 0 0 0 0 0 0 -8 8 8 0 -8 0 24 -16 -8 0 -24 0 8 0 16 0 0 0 -8 8 0 8 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 0 0 -8 -8 -16 -16 0 0 0 16 0 16 0 0 0 0 0 0 -8 -8 8 0 8 0 24 16 8 0 -24 0 -8 0 -16 0 0 0 -8 -8 0 8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 -8 16 -16 8 -8 -16 16 -32 0 32 -16 0 16 0 0 0 0 0 0 -8 -8 -8 16 8 0 24 32 -8 -16 24 -32 -8 0 -16 0 0 0 -8 -8 16 -8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 16 16 8 8 -16 -16 -32 0 -32 -16 0 -16 0 0 0 0 0 0 -8 -24 -8 -16 -8 0 24 64 8 16 24 32 8 0 16 0 0 0 -8 -24 -16 -8 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 -24 24 -8 0 0 0 0 0 0 -24 48 24 -24 -48 0 24 0 0 0 0 0 0 0 0 0 0 0 0 0 24 -48 -24 48 0 24 0 -24 0 0 0 0 -8 24 -24 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 8 -8 -8 8 0 0 0 0 0 0 -24 16 8 8 16 0 -24 0 0 0 0 0 0 0 0 0 0 0 0 0 24 -16 -8 -16 0 -8 0 24 0 0 0 0 -8 8 8 0 0 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 -8 -8 0 0 0 0 0 0 -24 -16 -8 8 16 0 24 0 0 0 0 0 0 0 0 0 0 0 0 0 24 16 8 -16 0 -8 0 -24 0 0 0 0 -8 -8 8 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 8 24 24 8 0 0 0 0 0 0 -24 -48 -24 -24 -48 0 -24 0 0 0 0 0 0 0 0 0 0 0 0 0 24 48 24 48 0 24 0 24 0 0 0 0 -8 -24 -24 0 0 -8 0 0 0 0 0 0 0 16 -32 16 0 0 0 0 0 0 0 -64 0 128 0 -64 0 64 0 -128 0 0 64 0 0 0 0 0 0 0 0 32 -64 32 0 0 0 -64 128 0 0 -64 0 0 0 0 0 0 0 16 -32 0 16 0 0 0 0 0 0 0 0 0 16 0 -16 0 0 0 0 0 0 0 -64 0 0 0 64 0 64 0 0 0 0 -64 0 0 0 0 0 0 0 0 32 0 -32 0 0 0 -64 0 0 0 64 0 0 0 0 0 0 0 16 0 0 -16 0 0 0 0 0 0 0 0 0 16 32 16 0 0 0 0 0 0 0 -64 0 -128 0 -64 0 64 0 128 0 0 64 0 0 0 0 0 0 0 0 32 64 32 0 0 0 -64 -128 0 0 -64 0 0 0 0 0 0 0 16 32 0 16 0 0 0 0 0 0 0 0 0 0 0 0 16 -32 16 -32 64 -32 0 -32 32 32 -32 0 0 80 -96 -64 16 64 0 0 0 0 0 0 0 0 0 16 -32 0 16 0 0 -64 96 32 -32 0 -32 0 0 0 0 0 0 16 -32 16 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 -16 -32 0 32 0 -32 0 0 32 0 0 80 0 0 -16 -64 0 0 0 0 0 0 0 0 0 16 0 0 -16 0 0 -64 0 0 32 0 32 0 0 0 0 0 0 16 0 -16 0 0 0 0 0 0 0 0 0 0 0 0 0 16 32 16 -32 -64 -32 0 -32 -32 -32 -32 0 0 80 96 64 16 64 0 0 0 0 0 0 0 0 0 16 32 0 16 0 0 -64 -96 -32 -32 0 -32 0 0 0 0 0 0 16 32 16 0 0 0 0 0 0 0 0 32 -32 -32 32 0 -128 128 0 128 -128 0 0 192 -64 -128 0 0 0 -256 128 128 0 0 0 0 0 0 0 0 0 0 0 -64 64 0 0 0 0 160 -128 -32 0 0 0 0 0 0 0 0 0 -32 32 0 0 0 0 0 0 0 0 0 32 32 -32 -32 0 -128 -128 0 128 128 0 0 192 64 128 0 0 0 -256 -128 -128 0 0 0 0 0 0 0 0 0 0 0 -64 -64 0 0 0 0 160 128 32 0 0 0 0 0 0 0 0 0 -32 -32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -4 6 -4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -2 0 2 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 -2 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 end lrslib-062/ine/mit/mit41-16.ine0000600001553200155320000000271612722006424013703 0ustar avismit41-16.ine begin 41 16 rational 1 -1 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 1 -3 2 0 1 0 -1 0 0 0 0 0 0 0 0 0 1 1 0 -1 0 0 0 0 -1 0 0 0 0 0 0 0 1 -1 0 -1 0 0 0 0 1 0 0 0 0 0 0 0 1 -1 -2 1 0 0 0 0 1 0 0 0 0 0 0 0 1 -3 2 1 0 0 0 0 -1 0 0 0 0 0 0 0 1 1 -1 1 -1 0 0 0 0 -1 0 0 0 0 0 0 1 1 -1 -1 1 0 0 0 0 -1 0 0 0 0 0 0 1 1 1 -1 -1 0 0 0 0 -1 0 0 0 0 0 0 1 -1 1 -1 -1 0 0 0 0 1 0 0 0 0 0 0 1 -1 -1 -1 1 0 0 0 0 1 0 0 0 0 0 0 1 -1 -1 1 -1 0 0 0 0 1 0 0 0 0 0 0 1 -3 1 1 1 0 0 0 0 -1 0 0 0 0 0 0 1 1 -1 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 1 1 0 -2 0 0 0 0 0 -1 0 0 0 0 0 1 -1 -1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 -1 1 0 -2 0 0 0 0 0 1 0 0 0 0 0 1 -3 1 0 2 0 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 -2 0 0 0 0 0 0 0 1 0 0 0 1 -2 0 0 0 2 0 0 0 0 0 0 -1 0 0 0 1 -4 0 0 6 -4 0 0 0 0 0 0 1 0 0 0 1 0 0 -3 0 0 0 0 0 0 0 0 0 3 0 -1 1 -2 0 3 -4 8 0 -4 0 0 0 -4 0 3 -2 1 1 -2 0 -1 0 0 0 4 0 0 0 0 0 -1 -2 1 1 -4 0 1 4 0 0 0 0 0 0 -4 0 -1 4 -1 1 -6 0 3 12 -8 0 -12 0 0 0 12 0 3 -6 1 1 3 2 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 -1 0 -1 0 0 0 0 0 0 0 0 0 1 1 -2 0 1 0 -1 0 0 0 0 0 0 0 0 0 1 -1 -2 0 1 0 1 0 0 0 0 0 0 0 0 0 1 3 2 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 -2 1 0 0 0 0 -1 0 0 0 0 0 0 0 1 3 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 3 1 0 2 0 0 0 0 0 1 0 0 0 0 0 1 4 0 0 6 4 0 0 0 0 0 0 1 0 0 0 1 2 0 0 0 -2 0 0 0 0 0 0 -1 0 0 0 1 6 0 3 12 8 0 12 0 0 0 12 0 3 6 1 1 4 0 1 4 0 0 0 0 0 0 -4 0 -1 -4 -1 1 2 0 -1 0 0 0 -4 0 0 0 0 0 -1 2 1 1 2 0 3 -4 -8 0 4 0 0 0 -4 0 3 2 1 1 0 0 1 -4 0 0 0 0 0 0 4 0 -1 0 -1 end lrslib-062/ine/mit/mit.ine0000600001553200155320000005044712722006424013316 0ustar avismit.ine begin 729 9 integer 72 0 0 -4 -4 -2 0 0 0 216 -2 -2 -10 -12 -6 0 0 0 192 -4 -2 -8 -8 -8 0 0 0 288 -12 6 8 -16 -8 0 0 0 96 -4 2 0 -4 -4 0 0 0 144 -5 1 -4 -6 -6 0 0 0 288 -8 -2 -10 -12 -12 0 0 0 96 -4 2 -4 -2 -4 0 0 0 240 -7 -1 -10 -8 -10 0 0 0 288 -8 -2 -12 -8 -12 0 0 0 288 -8 -2 -8 -16 -8 0 0 0 96 -4 2 -8 0 0 0 0 0 0 0 6 -8 4 8 0 0 0 0 4 6 -8 0 8 0 0 0 24 2 2 -4 -2 2 0 0 0 864 -24 -6 -40 -16 -32 0 0 0 24 0 0 -2 -2 2 0 0 0 0 4 10 -16 0 24 0 0 0 0 1 1 -4 0 12 0 0 0 0 0 6 -16 8 40 0 0 0 96 -4 2 -16 16 32 0 0 0 288 -8 -2 -16 0 0 0 0 0 96 -4 2 8 -8 8 0 0 0 288 -8 -2 8 -24 24 0 0 0 0 0 2 -8 8 24 0 0 0 96 -1 -1 -4 -8 8 0 0 0 576 -12 -6 -16 -40 16 0 0 0 192 -4 -2 0 -16 16 0 0 0 576 -8 -6 -24 -32 -16 0 0 0 576 -12 -6 -20 -32 -16 0 0 0 960 -16 -10 -40 -56 -16 0 0 0 160 0 0 -7 -7 -6 -1 0 -1 480 -4 -4 -21 -21 -18 -1 0 -3 192 -4 -4 -12 -4 -8 4 2 -4 640 -16 -8 -28 -28 -24 4 2 -4 640 -8 -6 -28 -28 -24 0 0 -4 192 -8 0 -8 -8 -8 4 2 0 384 -12 -4 -16 -16 -16 4 2 0 960 -20 -12 -42 -42 -36 4 2 -6 240 -9 -1 -11 -9 -10 3 2 -1 0 2 2 4 0 0 -4 -2 0 640 -22 -4 -24 -28 -24 8 4 -4 1920 -60 -20 -76 -84 -72 20 10 -12 1920 -32 -22 -84 -84 -72 4 2 -12 960 -28 -10 -44 -36 -40 8 4 -4 1152 -36 -12 -52 -44 -48 12 6 -4 720 -23 -7 -33 -27 -30 7 4 -3 1920 -48 -24 -88 -72 -80 12 6 -8 3456 -96 -40 -160 -128 -144 28 14 -16 576 -15 -7 -26 -20 -24 4 2 -4 384 -12 -4 -20 -12 -16 4 2 0 336 -11 -3 -17 -11 -14 3 2 -1 192 -8 0 -12 -4 -8 4 2 0 0 0 0 -4 4 0 4 2 0 0 0 2 -8 8 0 8 4 -2 192 -12 12 -28 12 -8 20 10 -4 192 -12 12 -20 4 -8 12 6 -2 1920 -48 -24 -92 -60 -80 12 6 -4 576 -15 -7 -28 -18 -24 4 2 -2 1536 -42 -18 -76 -40 -64 12 6 -8 384 -12 -4 -20 4 -16 4 2 -4 1920 -60 -20 -102 18 -76 14 10 -18 1920 -60 -20 -102 -46 -76 14 10 -2 672 -22 -6 -37 -17 -26 5 4 -1 640 -22 -4 -36 -16 -24 4 4 0 960 -40 0 -64 -16 -32 8 10 0 64 -4 4 -8 0 0 0 2 0 0 0 8 -6 2 4 -2 2 0 0 8 18 -8 0 8 -8 2 0 64 36 60 -28 -4 24 -28 6 -4 192 28 36 -20 -12 8 -20 2 -4 96 4 4 -5 -5 -2 -3 0 -1 64 4 6 -4 -4 0 -4 0 0 96 0 0 -5 -5 -2 -1 0 -1 16 0 0 -1 -1 0 0 0 0 192 -6 0 -8 12 -8 0 0 -4 192 -6 0 -8 -4 -8 0 0 0 960 -30 -8 -48 -20 -40 8 4 -4 960 -32 -8 -52 -20 -40 12 6 -4 960 -32 -8 -52 44 -40 12 6 -20 960 -30 -8 -48 12 -40 8 4 -12 576 -16 -6 -28 -12 -24 4 2 -4 208 -8 0 -8 -8 -8 4 2 -2 160 -7 1 -5 -7 -6 3 2 -1 192 -12 12 0 -8 -8 8 6 0 160 -9 7 -1 -7 -6 5 4 -1 640 -20 -4 -20 -28 -24 4 2 -4 96 -5 3 -2 -4 -4 2 2 0 192 -6 0 -4 -8 -8 0 0 0 480 -18 -2 -17 -21 -18 7 4 -3 528 -19 -3 -20 -22 -20 8 4 -4 960 -30 -4 -32 -36 -40 4 2 -4 1152 -36 -4 -32 -40 -48 0 2 -8 1152 -36 -12 -48 -40 -48 8 6 -8 192 -8 0 -4 -4 -8 4 2 -4 192 -6 0 0 -4 -8 0 0 -4 384 -12 -4 -8 -8 -16 4 2 -8 1920 -48 -24 -48 -40 -80 12 6 -40 384 -16 2 -20 -12 -16 4 4 0 576 -24 0 -32 -16 -24 8 6 0 432 -17 -1 -23 -13 -18 5 4 -1 576 -28 12 -36 -12 -24 12 10 -4 960 -52 36 -92 12 -40 52 26 -12 0 0 4 -14 10 4 6 6 -2 2688 -72 -32 -120 -104 -112 16 10 -8 0 0 8 -20 12 56 -12 2 -4 64 -4 4 -16 8 24 -4 2 0 192 -8 0 -16 0 0 0 2 0 64 8 16 -20 -4 24 -12 2 -4 0 2 4 -4 0 8 -4 0 0 288 -13 3 -12 -10 -12 6 4 -2 336 -14 2 -15 -11 -14 7 4 -3 96 3 1 -8 -6 4 0 0 -2 192 12 0 -20 -12 8 4 2 -4 0 4 8 -6 2 4 -2 2 -2 192 -12 12 -28 28 -8 20 10 -12 0 0 0 -4 16 0 4 2 -6 0 0 0 -4 40 0 4 2 -12 192 -8 0 -12 44 -8 4 2 -12 0 0 2 0 32 0 0 0 -8 192 -12 12 -20 300 -8 12 6 -76 960 -40 0 -64 208 -32 8 10 -56 2112 -72 -16 -120 120 -80 16 14 -48 512 -16 -4 -26 6 -20 2 2 -6 512 -16 -4 -26 -10 -20 2 2 -2 448 -16 0 -24 -8 -16 0 2 0 448 24 8 -68 -20 56 12 6 -20 192 8 2 -24 -8 16 4 2 -8 192 16 0 -36 -4 24 12 6 -12 448 -13 -5 -23 -13 -18 3 2 -1 64 -2 0 -4 0 0 0 0 0 0 2 -2 -4 4 0 4 2 -2 0 0 0 -22 22 4 14 10 0 0 0 0 -22 82 4 14 10 -30 0 0 4 -14 34 4 6 6 -14 480 -21 3 -20 -18 -20 8 6 -2 480 -19 1 -16 -18 -20 4 4 -2 1344 -52 0 -44 -52 -56 12 10 -4 576 -22 0 -12 -24 -24 4 4 0 768 -28 -4 -24 -32 -32 8 6 0 768 -28 -4 40 -32 -32 -8 6 0 576 -22 0 20 -24 -24 -4 4 0 320 -12 0 10 -14 -12 -2 2 -2 160 -7 1 3 -7 -6 1 2 -1 0 2 2 -12 8 16 4 2 -4 0 22 14 -52 16 80 12 6 -16 192 32 16 -68 -4 88 12 6 -20 128 18 10 -36 -8 48 4 2 -8 64 8 8 -20 -4 24 -4 2 -4 0 4 2 -4 4 8 0 0 -4 0 4 8 -14 2 20 -4 2 -2 0 1 7 -11 3 14 -3 2 -1 0 0 8 -12 4 16 -4 2 0 0 4 12 -20 4 32 -8 2 0 0 0 24 -44 20 64 -16 6 0 0 0 4 -10 6 12 -2 2 -2 0 14 22 -44 8 64 -12 6 -8 0 6 10 -18 2 28 -6 2 -2 192 28 36 -52 -12 72 -36 2 -12 96 3 3 -8 -6 4 -4 0 -2 0 1 1 -2 0 4 0 0 0 0 0 12 -10 6 12 -6 2 -2 48 0 0 -3 -3 2 -1 0 -1 192 16 24 -44 -12 72 -28 2 -12 0 4 12 -14 2 20 -8 2 -2 0 1 9 -11 3 14 -5 2 -1 192 32 40 -68 -4 88 -36 6 -20 16 1 1 -3 -1 6 -1 0 -1 64 4 6 -12 -4 24 -8 0 -4 0 4 12 -20 4 40 -12 2 -4 0 0 10 -16 8 24 -8 2 0 192 -12 12 -40 16 32 -8 6 0 0 0 24 -34 14 44 -14 6 -2 64 -4 4 -16 8 16 0 2 0 0 0 8 -20 12 32 0 2 0 0 0 4 -14 10 20 2 2 -2 0 0 2 -2 2 4 -2 0 0 0 0 24 -44 20 72 -20 6 -4 0 0 24 -60 36 104 -4 6 -4 0 6 10 -16 4 24 -8 2 -4 0 1 1 -1 1 2 -1 0 -1 0 6 18 -16 4 24 -12 2 -4 384 0 -2 -20 -20 -8 0 0 -4 384 -12 -4 -12 -20 -8 4 2 -4 640 -16 -8 -20 -36 -8 4 2 -4 960 -20 -12 -32 -56 -8 4 2 -4 96 -1 -1 -4 -6 0 0 0 0 1280 -6 -14 -60 -80 0 -4 2 0 1024 -2 -10 -52 -64 0 -4 2 0 1024 -12 -12 -48 -56 -16 0 2 -8 384 8 -4 -24 -24 0 0 2 0 256 4 -4 -16 -16 0 2 2 0 1024 0 -16 -56 -56 -16 8 6 -8 960 0 -16 -52 -52 -16 12 6 -8 6400 -96 -72 -280 -280 -240 8 6 -40 960 -16 -12 -42 -42 -36 2 2 -6 3840 -48 -40 -168 -168 -144 0 2 -24 4032 -72 -48 -178 -178 -148 10 6 -26 1152 -20 -14 -52 -52 -40 4 2 -8 0 2 -2 0 0 0 2 2 0 192 -6 0 12 -8 -8 -4 0 0 192 -4 -4 -8 -8 -8 4 2 0 6912 -176 -88 -288 -288 -288 40 26 0 1920 -48 -24 -80 -80 -80 10 6 0 576 -12 -10 -24 -24 -24 6 4 0 5760 -168 -64 -264 -216 -240 48 26 -24 960 -48 24 -36 -36 -40 20 18 -4 960 -44 12 -28 -36 -40 12 14 -4 192 -12 12 4 -4 -8 4 6 -4 960 -56 48 -20 -36 -40 28 26 -4 640 -20 0 -4 -28 -24 -2 0 -4 576 -24 0 -28 -12 -24 4 6 -4 0 0 0 4 8 0 -2 0 -4 192 -6 0 -4 12 -8 -4 0 -6 960 -30 0 -32 -12 -40 -8 0 -6 960 -32 0 -36 -20 -40 -4 2 -4 640 -20 0 -28 -4 -24 -4 0 -2 0 0 20 -4 12 8 -12 0 -2 16 0 0 -1 -1 6 -1 0 -1 720 -23 -3 -25 -27 -30 3 2 -3 624 -21 -1 -27 -17 -26 1 2 -1 768 -26 0 -32 -20 -32 0 2 0 1536 -62 0 -80 -44 -64 16 14 0 1344 -42 -12 -64 -44 -56 12 6 -4 2880 -90 -28 -128 -108 -120 28 14 -12 960 -30 0 -12 -32 -40 -6 0 -8 768 -30 0 -24 -28 -32 6 6 -4 576 -24 0 -20 -20 -24 8 6 -4 576 -24 0 -15 -23 -22 9 6 -5 192 -8 0 12 -4 -8 -4 2 -4 0 0 2 -4 4 8 0 0 0 0 0 0 -8 8 8 4 2 0 192 -12 12 -76 76 88 20 10 -12 0 0 6 -28 28 40 8 4 -6 576 -15 -7 -29 -15 -22 3 2 -1 448 -13 -5 -25 -7 -14 3 2 -1 512 -14 -6 -26 -14 -20 4 2 -2 448 -13 -5 -23 -5 -18 3 2 -3 384 -6 -4 -16 -20 -8 0 0 -4 0 6 8 -16 4 40 -4 0 -4 0 8 8 -24 8 48 0 2 -8 96 -1 -1 0 -6 36 -4 0 -6 192 -4 -4 12 -12 72 -4 2 -12 0 0 0 -6 6 4 2 2 0 384 -12 -4 -22 -6 -12 2 2 0 1216 -31 -15 -59 -37 -50 7 4 -3 960 -20 -16 -42 -42 -36 10 6 -6 2304 -72 -20 -112 -64 -96 16 10 -8 1344 -42 -12 -64 -36 -56 8 6 -6 1152 -36 -12 -56 -32 -48 8 6 -4 384 -12 -4 -16 -8 -16 0 2 0 192 -6 0 -4 0 -8 -4 0 0 912 -26 -10 -43 -31 -38 5 4 -1 960 -27 -11 -46 -32 -40 6 4 -2 1344 -39 -15 -66 -44 -56 10 6 -4 4224 -120 -48 -200 -152 -176 32 18 -16 4992 -132 -60 -240 -168 -208 32 18 -16 3456 -96 -40 -168 -104 -144 24 14 -16 2688 -76 -28 -128 -72 -112 16 10 -16 960 -29 -9 -46 -28 -40 6 4 -4 0 2 -2 12 0 0 -4 2 0 960 -20 -20 134 -42 -36 -38 10 -6 1920 -60 -20 148 -84 -72 -36 10 -12 1920 -68 -12 100 -84 -72 -20 14 -12 320 -12 0 -6 -14 -12 2 2 -2 960 -40 0 -26 -42 -36 18 10 -6 576 -12 -8 -22 -30 -12 2 2 -6 576 -12 -10 -8 -24 -24 -2 4 0 2304 -56 -32 -80 -96 -96 8 10 0 960 -20 -20 -38 -42 -36 20 10 -6 192 -6 0 -4 -4 -8 -2 0 -2 0 0 0 1 1 2 -1 0 -1 192 -8 0 -4 28 -8 -4 2 -12 192 -8 0 -4 60 -8 -4 2 -20 0 0 2 -4 4 16 -4 0 0 1792 -28 -20 -80 -88 -48 0 2 -16 384 -3 -3 -18 -20 -8 -2 0 -4 8064 -204 -100 -384 -264 -336 48 26 -24 1920 -48 -24 -88 -56 -80 8 6 -8 384 -12 -4 -16 8 -16 0 2 -8 192 -12 12 -12 -4 -8 4 6 0 192 -12 12 -12 12 -8 4 6 -8 192 -12 12 4 60 -8 -12 6 -28 0 0 0 -8 8 16 0 2 0 192 -4 -2 -4 -4 -8 0 0 -4 192 -4 -4 16 -12 0 -4 2 0 768 -20 -12 40 -48 0 -8 6 0 512 -14 -6 20 -32 0 -4 2 0 64 -2 0 0 -4 0 0 0 0 1344 -60 12 -68 -44 -56 20 18 -4 2112 -92 12 -116 -60 -88 28 26 -4 960 -44 12 -52 -28 -40 12 14 0 1920 -48 -24 -72 -56 -80 8 6 -24 96 -5 3 -4 -2 -4 0 2 0 0 0 2 -8 24 0 8 4 -10 0 4 4 -16 8 112 -16 2 -8 384 -12 -4 -24 0 0 0 2 0 0 2 -2 -4 16 0 4 2 -8 64 -4 4 -20 20 24 4 2 -2 128 -6 2 -20 16 16 4 2 -2 192 -8 0 -20 12 8 4 2 0 96 -4 0 -14 10 8 4 2 -2 448 -20 4 -76 60 56 20 10 -12 192 -4 -2 -4 -12 8 0 0 -4 384 -12 -4 0 -24 16 4 2 -8 192 -8 0 4 -12 8 4 2 -4 192 12 20 -20 -12 8 -12 2 -4 192 12 4 -20 -12 8 -4 2 -4 192 76 20 -84 -12 72 -4 18 -12 64 20 12 -28 -4 24 -4 6 -4 64 20 44 -28 -4 24 -20 6 -4 0 12 36 -22 2 20 -14 6 -2 0 4 10 -8 0 8 -4 2 0 0 4 6 -8 0 8 -2 2 0 0 4 0 -6 2 4 2 2 -2 0 0 4 -6 2 4 0 2 0 192 4 2 -12 -12 0 -4 0 0 0 8 8 -16 0 24 -4 2 0 64 20 4 -28 -4 24 4 6 -4 0 20 4 -24 0 24 4 6 0 0 8 0 -8 0 8 4 2 0 0 5 -1 -6 2 4 4 2 -2 64 24 0 -28 -4 24 12 6 -4 96 46 -10 -42 -6 36 18 14 -6 32 18 -6 -14 -2 12 10 6 -2 192 112 -40 -84 -12 72 76 38 -12 0 6 -2 -4 0 4 4 2 0 0 0 0 0 16 0 0 2 -8 192 -12 12 4 28 -8 4 6 -20 960 -40 0 38 -42 -36 2 10 -6 960 -40 8 -20 -36 -40 4 10 -4 192 -8 2 0 -8 -8 0 2 0 384 -18 6 -4 -16 -16 4 6 0 192 -8 0 8 -8 -8 0 2 0 320 -20 20 10 -14 -12 14 10 -2 576 -8 -6 -20 -36 24 -4 0 -12 96 -1 -1 -4 -6 4 0 0 -2 192 16 -8 -20 -12 8 12 6 -4 960 12 -20 -60 -52 -8 20 10 -12 576 -12 -8 -26 -26 -20 4 2 -4 1920 -48 -24 -68 -100 -40 12 6 -20 640 -16 -8 -32 -16 -24 4 2 0 384 -12 -4 -24 0 -8 4 2 0 192 -8 0 -36 44 24 12 6 -12 192 -8 0 -36 76 24 12 6 -20 128 -6 2 -20 40 16 4 2 -8 64 -4 4 -20 60 24 4 2 -12 0 0 2 -4 20 8 0 0 -4 624 -21 -5 -34 -16 -24 4 4 0 400 -12 -4 -20 -12 -16 2 2 0 192 1 -1 -10 -12 0 -2 0 0 640 -16 -8 -8 -40 48 0 2 -16 1920 -48 -24 -24 -120 80 8 6 -40 96 8 8 -22 -6 36 -10 2 -6 0 8 8 -16 0 32 -8 2 0 2112 -72 -16 -120 -40 -80 16 14 -8 3456 -100 -36 -160 -120 -144 24 14 -16 1152 -36 -12 -59 -27 -46 7 6 -3 1920 -48 -24 -96 -32 -64 8 6 0 640 -16 -8 -32 0 0 0 2 0 240 -2 -2 -11 -15 10 -3 0 -5 960 -20 -12 -32 -56 16 0 2 -16 1920 -48 -24 216 -80 -80 -64 6 0 384 -12 -4 32 -16 -16 -8 2 0 320 -10 0 18 -14 -12 -6 0 -2 192 -6 0 20 -4 -8 -8 0 -4 320 -10 0 -14 18 -12 -2 0 -6 32 -1 1 -4 6 20 -4 0 -2 192 -8 0 -16 32 0 0 2 -8 192 -8 0 -20 28 8 4 2 -4 0 0 0 -8 28 8 4 2 -8 0 0 0 -6 34 4 2 2 -10 384 -12 -4 -22 2 -12 2 2 -2 192 -12 12 28 -12 8 12 6 -4 576 -24 0 -8 -24 -16 8 6 -8 192 -8 0 -2 -10 -4 4 2 -2 768 0 -8 -40 -40 -16 0 2 -8 3840 0 -56 -200 -200 -80 24 18 -40 384 0 -6 -20 -20 -8 4 2 -4 768 -12 -10 -36 -36 -24 4 2 -6 192 -8 0 -20 28 88 -12 2 -4 64 -4 4 -20 52 200 -28 2 -12 0 0 8 -24 72 336 -48 2 -24 0 1 1 -2 4 40 -6 0 -4 0 0 2 -4 12 48 -8 0 -4 1792 -4 -20 -88 -112 0 -8 6 0 768 4 -12 -40 -48 0 0 6 0 192 0 -4 -10 -10 -4 2 2 -2 96 -5 3 1 -5 -2 3 2 -1 96 6 -2 -10 -6 4 2 2 -2 528 9 -11 -35 -29 -2 9 6 -7 480 38 -18 -50 -30 20 22 14 -10 640 12 -12 -40 -40 0 8 6 0 48 -3 3 -14 8 24 -4 2 0 384 2 -6 -20 -24 144 4 2 -24 192 -4 -2 -6 -10 -4 0 0 -2 1344 -24 -16 -56 -72 -16 0 2 -16 2880 -60 -36 -112 -152 -56 12 6 -28 1344 -24 -16 -56 -72 -24 4 2 -12 384 -6 -6 -12 -24 0 0 2 0 64 -4 4 4 -4 0 4 2 0 384 -12 -4 48 -8 -16 -16 2 -8 192 -6 0 12 -4 -8 -6 0 -4 576 -18 0 -23 -3 -22 -5 0 -3 0 0 0 -22 194 4 14 10 -58 64 -4 4 -8 96 0 0 2 -24 0 0 10 -2 154 4 -6 0 -38 384 -12 -4 16 -24 80 0 2 -16 64 -2 0 8 -4 24 0 0 -4 384 -12 -4 48 -24 144 0 2 -24 192 -8 0 4 -12 0 4 2 0 384 -12 -4 16 -24 16 0 2 -8 0 0 6 1 9 2 -5 0 -3 0 0 2 4 16 0 -4 0 -6 1344 -56 8 -60 -44 -56 12 14 -4 192 -4 -2 32 -4 -8 -12 0 -4 1920 -48 -24 296 -40 -80 -104 6 -40 192 -4 -2 24 -8 -8 -8 0 0 960 -20 -10 114 -42 -36 -38 0 -6 640 -16 -8 68 -28 -24 -20 2 -4 0 10 2 -12 0 160 -20 2 0 0 3 -1 -6 4 40 -2 2 -4 0 8 -8 -24 24 80 8 10 -8 0 116 -36 -80 0 80 64 38 0 0 136 -56 -120 40 80 104 58 -40 0 14 -6 -12 4 8 12 6 -4 0 10 -6 -12 8 16 12 6 -8 192 8 -8 -20 -4 88 12 6 -20 960 0 -16 -52 -52 248 12 6 -52 0 0 2 -4 20 80 -12 0 -4 64 -2 0 -4 8 24 -4 0 0 1920 -40 -20 -68 -84 -72 -2 0 -12 576 -12 -6 -19 -23 -22 -1 0 -5 1920 -48 -24 -72 -72 -80 4 6 -8 192 -4 -4 4 -4 -8 -4 2 -4 1920 -68 -12 -60 -84 -72 20 14 -12 0 1 1 -2 4 24 -4 0 -4 0 0 2 -4 12 32 -6 0 -4 64 -4 4 -20 52 72 -12 2 -12 192 -8 0 -20 28 24 -4 2 -4 448 -16 0 -36 28 56 -12 2 -4 288 -8 -4 -2 -18 12 2 2 -6 192 -4 -4 12 -12 8 -4 2 -4 192 -12 12 14 -10 -4 10 6 -2 192 -8 0 36 -12 72 4 2 -12 1344 -24 -16 -36 -84 120 -12 2 -36 960 -20 -12 -20 -60 72 -4 2 -24 640 -16 -8 -20 -36 0 4 2 -8 576 -12 -8 -18 -34 -4 2 2 -2 192 -4 -4 -4 -12 0 4 2 0 192 -4 -4 -6 -10 -4 4 2 -2 192 -4 -4 36 -4 -8 -12 2 -4 192 -4 -4 28 -8 -8 -8 2 0 192 -4 -4 4 -8 -8 -2 2 0 960 -20 -20 22 -42 -36 -10 10 -6 384 -12 -4 16 -8 -16 -8 2 -8 576 -12 -6 0 -16 -24 -10 0 -8 1920 -48 -24 -24 -56 -80 -16 6 -24 1920 -48 -24 72 -40 -80 -48 6 -40 192 -4 -2 8 -4 -8 -6 0 -4 576 -12 -6 -15 -23 -22 -3 0 -5 0 0 0 -8 24 80 -8 2 -8 64 -4 4 -20 20 72 -12 2 -4 192 -8 0 -20 12 24 -4 2 0 192 -6 0 -12 8 8 -4 0 0 0 0 0 -8 24 16 0 2 -8 0 0 2 -4 20 16 -4 0 -4 0 0 2 -4 12 24 -4 0 -4 96 -4 0 -14 10 20 -2 2 -2 64 -4 4 -20 52 40 -4 2 -12 192 -12 12 -60 188 152 -28 6 -36 192 -4 -2 -4 -12 0 0 0 0 0 16 24 -52 12 120 -12 2 -12 0 0 14 -18 6 20 -6 4 0 576 -8 -8 -20 -36 24 -4 2 -12 640 -16 -8 24 -40 48 -8 2 -16 192 -6 0 8 -12 8 0 0 -4 640 -20 -4 16 -40 48 0 2 -16 960 -20 -12 -4 -60 168 -12 2 -36 640 -16 -8 24 -40 176 -8 2 -32 640 -16 -8 56 -40 240 -8 2 -40 960 -20 -12 28 -60 296 -20 2 -52 192 -4 -2 12 -12 72 -4 0 -12 1920 -48 -24 156 -100 -40 -44 6 -20 384 -12 -4 20 -20 -8 -4 2 -4 192 -8 0 6 -10 -4 2 2 -2 0 0 0 8 4 0 -4 0 -2 192 -12 12 4 12 -8 -12 6 -4 192 -8 0 -4 4 -8 -4 2 0 192 -6 0 -4 20 -8 -4 0 -8 0 3 11 -9 1 10 -5 2 -1 576 -12 -6 -16 -16 -24 -2 0 -8 1920 -48 -24 -48 -112 32 8 6 -32 640 -16 -8 -8 -40 16 0 2 -8 1152 -12 -12 -52 -60 -24 -4 2 -12 2880 -60 -36 -112 -152 -48 8 6 -32 0 8 16 -36 12 120 -28 2 -12 0 2 4 -8 4 40 -8 0 -4 0 0 4 -16 16 48 -8 2 -4 0 4 4 -16 8 48 -8 2 -8 128 -6 2 -2 -6 -4 2 2 0 160 -7 1 1 -9 -2 3 2 -1 288 -8 -4 -2 -18 0 2 2 0 768 -20 -12 8 -48 0 0 6 0 0 8 0 0 0 96 -16 2 0 192 4 -4 12 -12 72 -20 2 -12 0 6 -2 12 0 48 -12 2 0 0 12 -4 -8 0 96 -8 6 0 192 16 -16 -12 -12 72 4 14 -12 0 14 -10 -4 0 48 4 10 0 640 -16 -8 32 -40 0 -8 2 0 1920 -48 -24 104 -120 80 -24 6 -40 1920 -48 -24 116 -108 8 -36 6 -28 640 -16 -8 24 -40 16 -8 2 -8 192 -4 -2 12 -12 8 -4 0 -4 192 -4 -2 13 -11 2 -5 0 -3 576 -12 -6 28 -36 16 -12 0 -8 192 -4 -2 12 -12 0 -4 0 0 192 -4 -2 18 -10 -4 -6 0 -2 384 -12 -4 16 -24 0 0 2 0 384 -12 -4 0 -24 0 4 2 0 1920 -48 -24 -56 -56 -80 -8 6 -8 0 20 4 -24 0 288 -40 6 0 0 2 0 4 0 8 -4 0 0 0 10 -6 -4 0 16 4 6 0 0 14 -6 -8 0 8 8 6 0 0 20 -4 -16 0 16 8 6 0 0 8 2 -8 0 8 0 2 0 0 32 0 -32 0 32 8 10 0 48 19 -1 -21 -3 18 5 6 -3 1152 -18 -14 -50 -62 -20 2 2 -10 0 2 -2 -2 2 4 2 2 -2 192 -4 -2 4 -12 40 -4 0 -8 192 -4 -2 4 -12 24 -4 0 -6 128 -3 -1 2 -8 16 -2 0 -4 64 -4 4 -20 20 40 -4 2 -4 192 -12 12 -52 36 104 -20 6 -4 0 0 6 -12 20 40 -8 0 -4 384 -12 -4 -24 32 64 -8 2 0 0 0 0 -6 18 4 2 2 -6 0 0 0 -8 20 8 4 2 -6 0 0 8 -24 40 208 -32 2 -16 0 0 8 -24 40 144 -24 2 -16 0 0 8 -24 40 112 -16 2 -16 192 -8 0 -20 60 152 -20 2 -4 64 -4 4 -20 84 264 -36 2 -12 960 -16 -12 -26 -42 -36 -6 2 -6 960 -20 -12 -34 -42 -36 0 2 -6 960 -20 -16 -18 -42 -36 -2 6 -6 576 -8 -8 -20 -36 88 -4 2 -20 192 132 -60 -84 -12 72 76 58 -12 192 20 -12 -20 -12 8 12 10 -4 96 3 -3 -6 -6 0 2 2 0 768 16 -16 -48 -48 0 8 10 0 96 -1 -1 0 -6 20 -4 0 -4 0 3 5 -10 8 72 -14 0 -8 0 4 12 -32 24 176 -32 2 -16 192 -12 12 -60 60 152 -28 6 -4 192 -12 12 -76 76 184 -28 10 -12 0 0 0 0 48 0 0 2 -16 576 -12 -8 -12 -36 24 0 2 -12 192 -4 -4 -4 -12 8 4 2 -4 0 0 12 -32 32 96 -16 2 -8 0 24 -8 -24 8 16 16 10 -8 0 52 -28 -64 40 80 48 30 -40 192 -12 12 20 156 -8 -28 6 -60 192 -12 12 20 380 -8 -28 6 -116 0 0 2 4 40 0 -4 0 -12 0 0 6 8 24 0 -8 0 -10 0 0 8 -36 28 152 -20 6 -4 32 -2 2 -12 8 32 -4 2 0 0 0 2 4 4 0 -4 0 0 0 0 6 8 8 0 -8 0 -2 0 0 6 1 5 2 -5 0 -1 1024 -16 -12 -48 -48 -32 4 2 -8 1248 -23 -15 -55 -57 -42 3 2 -9 1344 -24 -16 -58 -66 -36 2 2 -12 1056 -21 -13 -45 -51 -30 3 2 -9 960 -20 -12 -40 -48 -24 4 2 -8 0 0 8 -24 24 112 -20 2 -8 0 4 12 -32 24 144 -24 2 -16 0 0 8 -24 24 80 -12 2 -8 0 8 0 -8 24 80 -8 2 -24 0 6 -2 -4 16 48 4 2 -16 0 14 -10 -20 16 48 20 10 -16 0 20 -12 -32 24 80 16 14 -24 0 14 -2 -20 8 16 12 6 -8 0 12 -4 -16 8 16 8 6 -8 0 2 0 0 4 8 0 0 -4 192 4 -4 -12 -4 88 4 2 -20 96 1 -3 -4 -6 36 0 2 -6 192 4 -12 -4 -12 72 12 10 -12 192 -4 -4 22 -10 -4 -6 2 -2 1344 -28 -16 -54 -62 -44 2 2 -10 2688 -36 -28 -120 -144 -32 -8 2 -32 640 -8 -6 -28 -36 0 -4 0 -8 112 -1 -1 -5 -7 2 -1 0 -1 48 2 2 -7 -3 18 -5 0 -3 0 1 1 -2 0 8 -2 0 0 0 12 20 -48 24 240 -48 2 -24 4864 -80 -56 -216 -216 -176 8 6 -32 2304 -32 -24 -104 -104 -80 0 2 -16 1152 -24 -14 -44 -60 -24 4 2 -12 384 -6 -4 -12 -24 24 -4 0 -8 1728 -28 -20 -64 -104 48 -8 2 -32 1344 -24 -16 -36 -84 88 -12 2 -28 192 8 -8 -12 -12 8 4 6 -4 192 48 -32 -28 -12 72 20 30 -12 1920 -48 -24 -44 -108 8 4 6 -28 960 -20 -12 -20 -60 40 -4 2 -16 1344 -28 -16 -28 -84 40 -4 2 -20 768 -14 -8 -20 -48 24 -4 0 -12 2112 -32 -24 -68 -132 152 -20 2 -52 192 -4 -2 -3 -11 2 -1 0 -3 576 -12 -6 -4 -36 16 -4 0 -8 192 -4 -2 4 -12 16 -4 0 -4 1728 -36 -18 -59 -75 -62 -3 0 -13 192 4 -4 -12 -12 0 4 2 0 96 -1 -1 -3 -5 -2 -1 0 -1 192 0 -2 -4 -12 0 -4 0 0 2496 -36 -28 -96 -152 16 -8 2 -16 960 -12 -12 -36 -60 8 -4 2 -4 1920 -18 -26 -76 -120 0 -4 6 0 2688 -42 -34 -116 -144 -48 4 6 -24 864 -17 -11 -37 -43 -22 3 2 -7 2880 -60 -36 -118 -142 -76 10 6 -26 192 -6 0 -10 10 -4 -2 0 -2 192 -6 0 -10 2 -4 -2 0 0 0 0 2 -2 26 4 -2 0 -6 192 -12 12 -40 240 32 -8 6 -56 480 -7 -5 -12 -30 52 -8 0 -14 0 0 4 -16 16 80 -12 2 -4 0 4 6 -12 4 48 -12 0 -4 1152 -36 -12 -60 -20 -40 4 6 -4 0 2 8 -16 12 56 -12 0 -4 0 10 16 -32 12 120 -28 0 -12 96 9 -1 16 -6 36 -20 0 -6 96 1 -1 0 -6 4 -4 0 -2 416 -10 -6 -12 -24 16 4 2 -8 192 -4 -4 6 -10 -4 -2 2 -2 192 -4 -4 8 -12 0 -2 2 0 0 4 -2 -3 1 2 3 2 -1 960 -12 -12 -44 -52 -16 4 2 -8 576 -8 -8 -28 -28 -16 4 2 -4 0 3 5 -9 1 10 -1 2 -1 0 3 7 -9 1 10 -3 2 -1 1792 -16 -24 -88 -88 -48 8 6 -16 864 -15 -11 -39 -41 -26 3 2 -7 672 -11 -9 -31 -33 -18 3 2 -5 960 -16 -12 -42 -50 -20 2 2 -8 3200 -80 -40 -154 -90 -132 18 10 -6 1920 -48 -24 -94 -46 -76 10 6 -2 1056 -12 -12 -50 -58 -4 -2 2 -14 960 -12 -12 -44 -52 -8 4 2 -12 0 0 6 -20 20 56 -8 2 -6 192 8 8 -24 -8 16 -8 2 -8 0 3 1 -2 4 8 -2 0 -4 0 11 1 -2 20 40 -6 0 -20 0 0 18 -3 13 10 -13 0 -3 400 -6 -4 -16 -20 -8 -2 0 -4 3648 -64 -40 -144 -176 -96 -8 2 -32 624 -8 -6 -26 -34 -4 -4 0 -8 576 0 -6 -28 -36 0 -4 2 0 4608 -60 -52 -200 -240 -96 -8 6 -48 1152 -18 -14 -48 -60 -24 0 2 -12 1920 -34 -22 -80 -92 -56 0 2 -16 1728 -36 -22 -74 -82 -52 8 4 -14 1344 -28 -20 -40 -80 96 8 6 -32 576 -12 -8 -12 -36 56 0 2 -16 528 -13 -7 -16 -30 4 4 2 -8 192 -12 12 -48 40 80 -16 6 -8 192 -12 12 -48 200 80 -16 6 -48 0 0 6 -12 52 40 -8 0 -12 0 0 2 -3 21 10 -3 0 -5 256 -8 0 -12 12 -8 -2 0 -4 192 -6 0 -7 13 -6 -3 0 -5 512 -16 0 -24 0 -16 -4 0 -2 512 -14 -6 -4 -32 0 2 2 0 640 -16 -8 -8 -40 0 2 2 0 960 -20 -14 -20 -60 0 2 4 0 960 -20 -12 -4 -60 72 -12 2 -20 960 -20 -12 -4 -60 104 -12 2 -28 192 -12 12 20 36 -8 -28 6 0 0 0 2 -3 5 10 -3 0 -1 192 28 -4 -44 -4 24 20 10 -12 64 8 0 -12 -4 8 4 2 -2 256 14 6 -36 -16 32 4 2 -8 48 4 6 -10 -2 20 -8 0 -4 16 2 4 -4 0 8 -4 0 -2 0 12 36 -28 12 56 -28 2 -12 0 4 4 -8 0 8 0 2 0 64 4 8 -12 -4 8 -4 2 0 448 12 12 -36 -28 8 -12 2 -4 768 -10 -8 -28 -48 8 -4 0 -4 1536 -22 -16 -52 -96 56 -12 0 -28 1792 -16 -16 -88 -88 -48 0 2 -16 384 6 -10 -20 -24 0 4 6 0 2304 -12 -28 -104 -144 0 -8 6 0 3840 -48 -40 -168 -200 -80 -8 2 -40 0 0 8 -6 10 4 -2 2 -4 0 4 8 -6 18 4 -2 2 -10 768 -16 -10 -16 -48 24 -2 2 -12 2304 -56 -32 -32 -144 96 8 10 -48 1792 -48 -24 -16 -112 0 8 10 0 2304 -56 -32 -32 -144 0 8 10 0 192 -6 0 -7 5 -6 -3 0 -3 448 -14 0 -19 1 -14 -5 0 -3 576 -18 0 -24 4 -16 -8 0 -4 2880 -60 -36 -96 -168 -16 8 6 -16 192 -6 0 10 -10 -4 -2 0 -2 256 -8 0 12 -12 -8 -4 0 -2 512 -16 0 0 -24 -16 -2 0 -4 192 -6 0 2 -10 -4 0 0 -2 576 -18 0 4 -24 -16 -4 0 -8 448 -14 0 1 -19 -14 -3 0 -5 576 -18 0 -3 -23 -22 -3 0 -5 192 -6 0 5 -7 -6 -3 0 -3 192 -6 0 13 -7 -6 -5 0 -3 64 -4 4 20 -4 24 4 2 -4 2304 -56 -32 -96 -96 -96 16 10 0 768 -30 0 -32 -28 -32 8 6 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 end *maxdepth 4 *estimates 10 verbose lrslib-062/ine/mit/mit90-86.ine0000600001553200155320000004436112722006424013720 0ustar avismit90-86.ine digits 300 begin 90 86 rational 1 -4 6 0 -3 0 0 12 0 0 0 0 0 0 -4 0 -4 0 4 0 -12 0 0 12 1 0 0 3 -6 0 -12 0 0 0 0 -12 0 12 0 0 0 0 -12 0 0 0 12 0 -12 12 12 0 0 0 12 0 0 4 -12 6 0 0 -1 -3 -4 0 0 -4 4 -12 0 0 0 4 0 0 0 0 3 0 0 -6 0 4 0 -1 1 -4 6 0 -3 0 0 12 0 0 0 0 0 0 -4 0 4 0 -4 0 -12 0 0 -12 1 0 0 3 -6 0 12 0 0 0 0 12 0 12 0 0 0 0 -12 0 0 0 -12 0 12 -12 12 0 0 0 -12 0 0 -4 12 6 0 0 -1 -3 4 0 0 4 -4 -12 0 0 0 4 0 0 0 0 3 0 0 -6 0 4 0 -1 1 -6 6 4 -1 4 0 4 -2 -8 0 4 0 -2 -4 0 0 0 0 0 -4 0 -8 0 1 4 4 -1 -2 0 0 -8 -2 4 0 0 8 4 0 0 0 -2 4 0 8 0 0 4 0 0 -4 0 -8 0 0 0 -8 0 0 -2 4 0 1 -1 0 0 4 0 0 4 -8 0 0 -4 -2 -2 0 4 -1 4 0 6 4 -4 -2 1 1 -8 6 8 1 12 -4 -4 -4 -16 -4 0 -8 -4 -4 4 0 8 0 8 4 -4 0 0 1 8 8 -1 2 4 0 0 -4 0 4 0 0 -4 -4 -8 -4 4 4 8 0 4 0 0 0 0 -4 -8 0 -4 0 -4 0 0 0 -2 -8 -8 -1 1 0 4 -8 0 0 4 16 8 4 4 4 4 4 0 -1 -8 -4 -6 -8 4 4 -1 1 -10 6 12 3 24 -12 -12 -6 -24 -20 -12 -24 -6 -4 12 4 24 4 24 12 12 24 12 1 12 12 3 6 12 12 24 -6 -12 -12 -12 -24 -12 -12 -24 -12 -6 -12 -24 -24 -12 -12 -12 -12 -12 12 24 24 12 12 12 24 4 12 6 12 24 1 3 4 12 12 -4 -4 -12 -24 -24 -12 -4 -6 -6 -12 -12 3 12 12 6 12 -4 -6 1 1 10 6 12 3 24 12 12 6 24 20 12 24 6 4 12 4 24 4 24 12 12 24 12 1 12 12 3 6 12 12 24 6 12 12 12 24 12 12 24 12 6 12 24 24 12 12 12 12 12 12 24 24 12 12 12 24 4 12 6 12 24 1 3 4 12 12 4 4 12 24 24 12 4 6 6 12 12 3 12 12 6 12 4 6 1 1 8 6 8 1 12 4 4 4 16 4 0 8 4 4 4 0 8 0 8 4 -4 0 0 1 8 8 -1 2 4 0 0 4 0 -4 0 0 4 4 8 4 -4 -4 -8 0 -4 0 0 0 0 -4 -8 0 -4 0 -4 0 0 0 -2 -8 -8 -1 1 0 4 -8 0 0 -4 -16 -8 -4 -4 -4 -4 -4 0 -1 -8 -4 -6 -8 -4 -4 -1 1 8 0 6 3 18 6 6 0 0 14 12 12 0 -2 0 2 0 2 0 0 12 12 6 -1 -6 -6 3 0 0 6 12 -6 0 6 0 0 -6 -6 -12 -6 6 6 12 0 6 0 0 0 0 0 0 -12 0 -6 0 -12 -2 -6 0 6 0 1 -3 -2 -12 6 -4 -4 -6 0 -12 -6 2 0 0 -6 -12 -3 -6 -12 0 -6 -2 -6 -1 1 6 0 2 1 10 -2 2 2 0 6 0 4 -2 -2 0 2 8 -2 -8 0 -4 4 2 -1 -6 -2 -1 0 0 -2 -4 -4 -4 -6 -4 0 -2 -6 -4 2 -4 -2 -4 0 2 -4 4 4 4 0 -8 -4 0 -2 0 4 2 2 0 -2 8 -1 -1 -2 -4 -6 0 0 2 0 4 6 -2 -2 2 -2 0 1 2 4 0 6 2 4 1 1 6 6 4 -1 4 0 -4 2 8 0 -4 0 2 4 0 0 0 0 0 -4 0 -8 0 1 4 4 -1 -2 0 0 -8 2 -4 0 0 -8 -4 0 0 0 2 -4 0 -8 0 0 -4 0 0 -4 0 -8 0 0 0 -8 0 0 -2 4 0 1 -1 0 0 4 0 0 -4 8 0 0 4 2 2 0 -4 -1 4 0 6 4 4 2 1 1 6 0 6 1 6 6 2 -2 0 -2 0 4 2 -2 0 -2 -8 2 8 0 -4 -4 -2 -1 -2 -6 -1 0 0 2 4 -4 4 2 4 0 -2 2 -4 -6 -4 -2 -4 0 -6 4 -4 -4 -4 0 8 4 0 2 0 -4 -2 -2 0 -6 -8 -1 -1 2 -4 -2 0 0 2 0 4 -2 -2 2 -2 6 0 1 6 4 0 2 2 4 1 1 6 6 4 3 0 -4 12 2 8 -12 4 -8 2 4 -4 -4 -8 -4 -8 12 -4 8 -12 1 4 4 3 6 -4 -12 8 2 4 -4 -12 8 12 -4 -8 -4 2 12 -8 8 -4 -12 4 -12 -12 12 -8 8 -4 -12 -4 8 -4 -12 6 4 -8 1 3 -4 -4 4 -4 -4 12 8 -8 -4 4 2 2 -4 4 3 4 -4 6 4 4 2 1 1 6 -2 0 3 12 0 0 -2 -8 8 12 0 -2 0 -4 0 -8 0 -8 -4 12 0 0 1 0 0 3 -2 -4 0 0 6 -4 0 -4 -8 0 0 0 0 6 0 0 -8 0 -4 -4 -4 -4 -4 -8 0 -4 0 -4 0 0 0 -2 0 -8 1 3 0 12 0 4 4 0 -8 0 0 0 -2 -2 0 12 3 0 12 -2 0 0 6 1 1 4 -2 -4 1 8 -8 0 -4 0 8 0 0 -4 0 4 4 -8 -4 -8 4 -4 8 4 1 4 -4 -1 -6 4 -4 -8 4 0 -8 0 -16 0 8 0 -8 -4 0 0 16 8 0 0 0 0 -4 8 8 -4 4 -4 -8 -4 -4 6 4 8 -1 1 4 4 -4 0 0 0 0 0 -8 0 4 4 8 0 -1 4 -4 2 -4 0 -4 -1 1 4 0 -2 -1 6 -6 -2 4 0 2 -4 4 -4 -2 -4 -2 8 -2 -8 0 0 -4 2 -1 -6 2 -1 0 4 2 -4 -2 0 2 -4 0 2 -2 -4 6 2 -2 4 0 -6 4 0 4 -4 0 8 4 -4 -2 4 4 2 -2 0 -2 -8 1 1 2 0 6 0 0 2 0 -4 -2 2 4 -4 6 4 1 2 0 0 -6 -2 -2 -1 1 4 0 2 -1 2 2 -2 0 0 2 -4 -4 0 -2 4 2 0 2 0 0 0 -4 -2 -1 -2 -2 -1 0 -4 -2 -4 -2 0 2 4 0 2 -2 4 -2 2 -2 -4 0 2 -4 0 -4 4 0 0 4 4 2 -4 4 -2 2 0 2 0 1 1 -2 0 2 0 0 2 0 4 -2 2 0 0 -2 4 1 -2 0 0 -2 -2 -2 -1 1 4 -2 0 1 4 0 0 0 -8 0 0 0 0 0 -4 0 0 0 0 -4 -4 0 0 1 0 0 -1 2 -4 0 0 4 0 0 0 8 0 0 0 0 -4 0 0 -8 0 0 0 0 0 4 0 0 4 0 4 0 0 0 -2 0 0 -1 1 0 4 0 0 0 0 8 0 0 0 0 0 0 0 -1 0 -4 2 0 0 -4 -1 1 4 0 2 3 -2 -2 6 0 0 -10 4 -4 0 -2 0 -2 0 -2 0 0 -4 4 -6 -1 -2 -2 3 0 0 -6 4 -2 0 -2 0 0 -6 2 4 2 2 6 -4 0 -2 0 0 0 0 0 0 -4 0 6 0 -4 2 6 0 2 0 1 -3 2 4 2 4 4 -6 0 4 2 2 0 0 2 -4 -3 -2 4 0 -2 -2 -2 -1 1 4 6 0 -3 0 0 -12 0 0 0 0 0 0 4 0 4 0 -4 0 -12 0 0 -12 1 0 0 3 -6 0 12 0 0 0 0 -12 0 -12 0 0 0 0 12 0 0 0 12 0 -12 12 12 0 0 0 -12 0 0 -4 12 6 0 0 -1 -3 4 0 0 -4 4 12 0 0 0 -4 0 0 0 0 3 0 0 -6 0 -4 0 -1 1 4 6 0 -3 0 0 -12 0 0 0 0 0 0 4 0 -4 0 4 0 -12 0 0 12 1 0 0 3 -6 0 -12 0 0 0 0 12 0 -12 0 0 0 0 12 0 0 0 -12 0 12 -12 12 0 0 0 12 0 0 4 -12 6 0 0 -1 -3 -4 0 0 4 -4 12 0 0 0 -4 0 0 0 0 3 0 0 -6 0 -4 0 -1 1 4 6 0 1 -4 -4 4 0 0 -4 0 -8 0 4 -4 0 -8 0 -8 4 4 0 0 1 0 0 -1 2 -4 0 0 0 0 4 0 0 4 -4 -8 -4 0 -4 8 0 4 0 0 0 0 -4 8 0 4 0 4 0 0 0 -2 0 8 -1 1 0 -4 0 0 0 -4 0 8 4 -4 0 0 4 0 -1 0 4 -6 0 -4 0 -1 1 4 0 6 -1 -2 2 -2 -4 0 -6 -4 4 4 -2 -4 -2 -8 -2 8 0 0 -4 2 -1 2 -6 -1 0 4 2 -4 -2 0 -6 -4 0 2 6 -4 -2 2 -2 4 0 2 4 0 4 -4 0 -8 4 -4 -2 4 4 2 -2 0 6 8 1 1 2 0 -2 0 0 2 0 -4 6 2 -4 4 -2 4 1 -6 0 0 2 -2 -2 -1 1 4 -2 4 1 0 8 0 -4 0 -8 0 0 -4 0 4 -4 -8 4 -8 4 -4 -8 -4 1 -4 4 -1 -6 4 4 8 4 0 8 0 -16 0 -8 0 8 -4 0 0 16 -8 0 0 0 0 -4 8 -8 -4 -4 -4 8 4 4 6 -4 8 -1 1 -4 4 4 0 0 0 0 0 8 0 4 4 -8 0 -1 -4 -4 2 4 0 -4 -1 1 4 0 -6 3 6 -6 -6 0 0 2 12 -12 0 2 0 -2 0 -2 0 0 12 -12 -6 -1 6 6 3 0 0 -6 -12 -6 0 -6 0 0 6 6 12 6 6 -6 -12 0 -6 0 0 0 0 0 0 12 0 6 0 12 2 6 0 -6 0 1 -3 2 -12 -6 -4 -4 6 0 12 6 -2 0 0 6 -12 -3 6 -12 0 6 2 -6 -1 1 2 -2 -4 -1 4 -4 0 -2 0 4 -4 0 -2 0 0 0 0 0 0 4 0 0 0 1 4 -4 -1 -2 0 0 0 2 4 4 0 0 0 4 0 -4 2 0 0 0 -4 0 4 0 0 4 0 0 0 0 0 0 0 0 -2 -4 0 1 -1 0 0 4 0 0 0 0 0 4 0 -2 -2 -4 -4 -1 -4 0 -2 4 0 2 1 1 2 0 -6 1 2 -6 -2 -2 0 2 0 -4 2 2 0 2 -8 -2 8 0 -4 4 2 -1 2 6 -1 0 0 -2 -4 -4 4 -2 4 0 2 -2 4 6 -4 2 4 0 6 4 -4 -4 -4 0 8 -4 0 -2 0 4 2 2 0 6 -8 -1 -1 -2 -4 2 0 0 -2 0 -4 2 2 2 -2 -6 0 1 -6 4 0 -2 -2 4 1 1 2 -2 0 3 -4 0 0 -6 8 -8 4 0 -6 0 12 0 -8 0 -8 -4 -4 0 0 1 0 0 3 -2 12 0 0 2 -12 0 4 8 0 0 0 0 2 0 0 8 0 4 -12 4 4 -4 -8 0 12 0 12 0 0 0 -2 0 -8 1 3 0 -4 0 -4 -4 0 8 0 0 0 -6 -6 0 4 3 0 -4 -2 0 0 2 1 1 2 0 -2 -3 2 2 -6 2 0 2 0 -4 -2 -2 4 2 0 -2 0 0 0 -4 -6 -1 -2 2 3 0 -4 6 4 0 4 -2 0 0 6 -2 4 -2 0 6 4 0 -2 0 -4 0 0 0 0 4 -4 6 4 -4 2 -6 0 2 0 -1 3 -2 0 -2 4 -4 -6 0 -4 2 -2 -2 2 2 0 -3 -2 0 0 2 2 0 1 1 2 0 -6 -3 6 -6 -6 6 0 -6 0 12 -6 -2 -12 -2 0 2 0 0 0 -12 6 -1 -6 6 3 0 12 -6 12 0 12 6 0 0 6 6 -12 6 0 6 -12 0 6 0 -12 0 0 0 0 12 12 -6 -12 -12 -2 6 0 6 0 -1 3 2 0 -6 -4 4 -6 0 12 -6 -2 -6 6 -6 0 -3 -6 0 0 6 2 0 1 1 2 0 -2 1 -2 -2 2 2 0 -2 0 -4 -2 -2 0 -2 0 2 0 0 4 4 -2 -1 -2 2 -1 0 0 2 -4 0 -4 2 4 0 -2 2 4 2 0 -2 4 0 2 4 4 -4 -4 0 0 -4 0 2 0 4 -2 -2 0 2 0 -1 -1 2 4 -2 0 0 2 0 -4 -2 -2 -2 2 -2 0 1 -2 -4 0 2 2 0 1 1 2 -2 0 -1 0 -4 0 2 -8 -4 -4 8 2 0 0 -4 0 -4 0 -4 0 0 4 1 0 0 -1 6 0 4 0 2 -4 -4 0 8 0 -4 8 -4 2 0 8 8 -4 0 -4 0 0 -4 0 0 0 4 0 0 -4 4 6 0 0 1 -1 -4 0 0 0 0 0 -8 8 -4 0 2 2 -4 -4 -1 0 0 -2 0 0 2 1 1 2 0 2 -3 -2 2 -6 -2 0 2 0 -4 2 -2 4 -2 0 2 0 0 0 4 6 -1 2 -2 3 0 -4 -6 -4 0 -4 -2 0 0 6 -2 4 -2 0 6 4 0 -2 0 4 0 0 0 0 -4 -4 -6 4 4 -2 6 0 -2 0 -1 3 2 0 2 -4 4 -6 0 -4 2 -2 2 -2 2 0 -3 2 0 0 -2 2 0 1 1 2 -2 0 -1 0 4 0 2 -8 4 -4 -8 2 0 0 4 0 4 0 -4 0 0 -4 1 0 0 -1 6 0 -4 0 2 -4 4 0 8 0 4 -8 4 2 0 -8 8 4 0 -4 0 0 -4 0 0 0 -4 0 0 4 -4 6 0 0 1 -1 4 0 0 0 0 0 -8 -8 4 0 2 2 4 -4 -1 0 0 -2 0 0 2 1 1 2 0 2 1 -6 -2 2 -2 0 -2 0 -4 2 -2 0 2 0 -2 0 0 4 -4 2 -1 2 -2 -1 0 0 -2 4 0 4 2 -4 0 -2 2 4 2 0 -2 4 0 2 -4 -4 4 4 0 0 4 0 -2 0 -4 2 2 0 -2 0 -1 -1 -2 4 2 0 0 2 0 -4 -2 -2 2 -2 -2 0 1 2 -4 0 -2 2 0 1 1 2 -2 4 -1 -4 4 0 -2 0 -4 -4 0 -2 0 0 0 0 0 0 4 0 0 0 1 -4 4 -1 -2 0 0 0 2 4 -4 0 0 0 -4 0 4 2 0 0 0 4 0 4 0 0 4 0 0 0 0 0 0 0 0 -2 4 0 1 -1 0 0 -4 0 0 0 0 0 -4 0 -2 -2 4 -4 -1 4 0 -2 -4 0 2 1 1 2 -2 0 3 -4 0 0 2 -8 -8 4 0 2 0 -4 0 8 0 8 -4 -4 0 0 1 0 0 3 -2 -4 0 0 2 4 0 4 -8 0 0 0 0 2 0 0 -8 0 4 4 4 4 -4 8 0 -4 0 -4 0 0 0 -2 0 8 1 3 0 -4 0 -4 -4 0 -8 0 0 0 2 2 0 4 3 0 -4 -2 0 0 2 1 1 2 0 -2 1 -2 2 -2 2 0 -6 0 -4 -2 2 0 -2 8 2 -8 0 -4 -4 -2 -1 6 2 -1 0 0 2 4 -4 -4 6 -4 0 2 6 4 -2 -4 2 4 0 -2 -4 4 4 4 0 -8 4 0 2 0 -4 -2 -2 0 2 8 -1 -1 2 -4 6 0 0 -2 0 -4 -6 2 -2 2 2 0 1 -2 4 0 -6 -2 4 1 1 2 6 -4 -1 -4 0 -4 -2 -8 0 4 0 -2 4 0 0 0 0 0 -4 0 8 0 1 -4 -4 -1 -2 0 0 8 -2 4 0 0 8 -4 0 0 0 -2 -4 0 8 0 0 4 0 0 -4 0 8 0 0 0 8 0 0 -2 -4 0 1 -1 0 0 -4 0 0 -4 -8 0 0 4 -2 -2 0 4 -1 -4 0 6 -4 4 -2 1 1 2 0 6 -3 -6 -6 -6 -6 0 -6 0 12 6 -2 -12 2 0 -2 0 0 0 12 -6 -1 6 -6 3 0 12 6 -12 0 -12 6 0 0 6 6 -12 6 0 6 -12 0 6 0 12 0 0 0 0 -12 12 6 -12 12 2 -6 0 -6 0 -1 3 -2 0 6 4 -4 -6 0 12 -6 -2 6 -6 -6 0 -3 6 0 0 -6 2 0 1 1 2 6 -4 3 -8 -4 12 -2 -8 4 -4 -8 -2 4 -4 4 -8 4 -8 12 -4 -8 12 1 -4 -4 3 6 -4 12 -8 -2 -4 -4 12 -8 12 -4 -8 -4 -2 12 -8 -8 -4 12 -4 12 12 12 -8 -8 -4 12 -4 -8 4 12 6 -4 -8 1 3 4 -4 -4 4 4 12 -8 -8 -4 4 -2 -2 -4 -4 3 -4 -4 6 -4 4 -2 1 1 2 6 -12 3 0 -12 -12 6 24 -4 12 -24 6 -4 12 -4 24 -4 24 12 12 -24 -12 1 -12 -12 3 6 12 -12 -24 6 12 -12 12 24 -12 -12 -24 -12 6 -12 -24 24 -12 12 12 12 12 12 24 -24 12 -12 12 -24 -4 -12 6 -12 24 1 3 -4 12 -12 4 4 -12 24 -24 -12 -4 6 6 -12 12 3 -12 12 6 -12 -4 6 1 1 0 -2 -4 -3 4 4 0 0 0 4 0 -8 0 0 0 0 0 0 0 4 0 -8 0 1 4 -4 3 2 0 0 8 0 0 -4 4 0 0 4 -8 4 0 0 8 0 -4 -4 0 4 -4 -4 0 -8 0 0 0 8 0 0 -2 4 0 -1 -3 0 0 -4 -4 4 0 0 8 -4 0 0 0 -4 0 3 4 0 2 -4 0 0 -1 1 0 -2 -4 -3 4 -4 0 0 0 -4 0 8 0 0 0 0 0 0 0 4 0 -8 0 1 4 -4 3 2 0 0 8 0 0 4 -4 0 0 -4 8 -4 0 0 -8 0 4 4 0 -4 4 -4 0 -8 0 0 0 8 0 0 -2 4 0 -1 -3 0 0 -4 4 -4 0 0 -8 4 0 0 0 4 0 3 4 0 2 -4 0 0 -1 1 0 -2 -4 1 0 0 0 0 0 0 0 0 0 0 -4 -4 8 4 8 4 4 8 -4 1 4 -4 -1 -6 -4 4 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 -8 8 4 -4 4 -8 4 4 6 4 -8 -1 1 -4 -4 -4 0 0 0 0 0 0 0 0 0 0 0 -1 4 4 2 -4 0 0 -1 1 0 0 -6 -1 2 -2 2 -4 0 6 -4 -4 4 2 -4 2 -8 2 8 0 0 4 -2 -1 -2 6 -1 0 4 -2 4 -2 0 6 -4 0 -2 -6 4 2 2 2 -4 0 -2 4 0 4 -4 0 -8 -4 -4 2 4 -4 -2 2 0 -6 8 1 1 -2 0 2 0 0 -2 0 4 -6 -2 -4 4 2 4 1 6 0 0 -2 2 -2 -1 1 0 -2 0 1 -4 0 0 -4 8 0 0 0 -4 0 4 0 0 0 0 -4 4 0 0 1 0 0 -1 2 4 0 0 0 0 0 0 8 0 0 0 0 0 0 0 -8 0 0 0 0 0 4 0 0 -4 0 -4 0 0 0 -2 0 0 -1 1 0 -4 0 0 0 0 -8 0 0 0 4 4 0 0 -1 0 4 2 0 0 0 -1 1 0 0 -2 -1 -2 -2 2 0 0 -2 -4 4 0 2 4 -2 0 -2 0 0 0 4 2 -1 2 2 -1 0 -4 2 4 -2 0 -2 4 0 -2 2 -4 2 2 2 4 0 -2 -4 0 -4 4 0 0 -4 4 -2 -4 -4 2 -2 0 -2 0 1 1 2 0 -2 0 0 -2 0 -4 2 -2 0 0 2 4 1 2 0 0 2 2 -2 -1 1 0 0 -2 3 -6 2 -6 0 0 -6 4 4 0 2 0 2 0 2 0 0 -4 -4 6 -1 2 2 3 0 0 6 -4 -2 0 2 0 0 6 -2 -4 -2 2 -6 4 0 2 0 0 0 0 0 0 4 0 -6 0 4 -2 -6 0 -2 0 1 -3 -2 4 -2 4 4 6 0 -4 -2 -2 0 0 -2 -4 -3 2 4 0 2 2 -2 -1 1 0 6 -8 1 -4 -4 -4 4 16 -4 0 -8 4 -4 4 0 8 0 8 4 -4 0 0 1 -8 -8 -1 2 4 0 0 4 0 4 0 0 -4 -4 -8 -4 -4 4 8 0 4 0 0 0 0 -4 -8 0 -4 0 -4 0 0 0 -2 8 -8 -1 1 0 4 8 0 0 4 -16 8 4 4 -4 -4 4 0 -1 8 -4 -6 8 4 -4 -1 1 0 0 -6 -1 2 2 -2 4 0 -6 4 4 -4 -2 -4 2 -8 2 8 0 0 4 -2 -1 -2 6 -1 0 4 -2 4 2 0 -6 4 0 2 6 -4 -2 -2 -2 4 0 2 -4 0 -4 4 0 -8 -4 -4 2 4 -4 -2 2 0 -6 8 1 1 -2 0 2 0 0 2 0 -4 6 2 4 -4 -2 -4 1 6 0 0 -2 -2 2 -1 1 0 0 -2 -1 -2 2 -2 0 0 2 4 -4 0 -2 4 -2 0 -2 0 0 0 4 2 -1 2 2 -1 0 -4 2 4 2 0 2 -4 0 2 -2 4 -2 -2 -2 -4 0 2 4 0 4 -4 0 0 -4 4 -2 -4 -4 2 -2 0 -2 0 1 1 2 0 -2 0 0 2 0 4 -2 2 0 0 -2 -4 1 2 0 0 2 -2 2 -1 1 0 -2 4 -3 -4 -4 0 0 0 -4 0 8 0 0 0 0 0 0 0 4 0 8 0 1 -4 4 3 2 0 0 -8 0 0 4 4 0 0 -4 8 -4 0 0 -8 0 4 -4 0 4 -4 -4 0 8 0 0 0 -8 0 0 -2 -4 0 -1 -3 0 0 4 -4 4 0 0 -8 4 0 0 0 4 0 3 -4 0 2 4 0 0 -1 1 0 0 -2 3 -6 -2 6 0 0 6 -4 -4 0 -2 0 2 0 2 0 0 -4 -4 6 -1 2 2 3 0 0 6 -4 2 0 -2 0 0 -6 2 4 2 -2 6 -4 0 -2 0 0 0 0 0 0 4 0 -6 0 4 -2 -6 0 -2 0 1 -3 -2 4 -2 -4 -4 -6 0 4 2 2 0 0 2 4 -3 2 4 0 2 -2 2 -1 1 0 -2 0 1 -4 0 0 4 -8 0 0 0 4 0 4 0 0 0 0 -4 4 0 0 1 0 0 -1 2 4 0 0 0 0 0 0 -8 0 0 0 0 0 0 0 8 0 0 0 0 0 4 0 0 -4 0 -4 0 0 0 -2 0 0 -1 1 0 -4 0 0 0 0 8 0 0 0 -4 -4 0 0 -1 0 4 2 0 0 0 -1 1 0 -2 4 -3 -4 4 0 0 0 4 0 -8 0 0 0 0 0 0 0 4 0 8 0 1 -4 4 3 2 0 0 -8 0 0 -4 -4 0 0 4 -8 4 0 0 8 0 -4 4 0 -4 4 -4 0 8 0 0 0 -8 0 0 -2 -4 0 -1 -3 0 0 4 4 -4 0 0 8 -4 0 0 0 -4 0 3 -4 0 2 4 0 0 -1 1 0 0 2 -1 -6 -6 -2 -4 0 2 4 4 4 -2 -4 2 8 2 -8 0 0 4 -2 -1 6 -2 -1 0 4 -2 4 2 0 2 4 0 2 -2 -4 6 -2 -2 4 0 -6 -4 0 -4 4 0 8 -4 -4 2 4 -4 -2 2 0 2 -8 1 1 -2 0 -6 0 0 2 0 -4 -2 2 -4 4 6 -4 1 -2 0 0 6 -2 2 -1 1 0 0 2 -1 -6 6 2 4 0 -2 -4 -4 -4 2 -4 2 8 2 -8 0 0 4 -2 -1 6 -2 -1 0 4 -2 4 -2 0 -2 -4 0 -2 2 4 -6 2 2 -4 0 6 4 0 4 -4 0 8 -4 -4 2 4 -4 -2 2 0 2 -8 1 1 -2 0 -6 0 0 -2 0 4 2 -2 4 -4 -6 4 1 -2 0 0 6 2 -2 -1 1 0 -2 4 1 -8 0 0 0 0 0 0 0 0 0 -4 4 8 -4 8 4 4 -8 4 1 -4 4 -1 -6 -4 -4 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 -8 -8 4 4 4 8 -4 -4 6 -4 -8 -1 1 4 -4 4 0 0 0 0 0 0 0 0 0 0 0 -1 -4 4 2 4 0 0 -1 1 0 6 -8 1 -4 4 4 -4 -16 4 0 8 -4 4 4 0 8 0 8 4 -4 0 0 1 -8 -8 -1 2 4 0 0 -4 0 -4 0 0 4 4 8 4 4 -4 -8 0 -4 0 0 0 0 -4 -8 0 -4 0 -4 0 0 0 -2 8 -8 -1 1 0 4 8 0 0 -4 16 -8 -4 -4 4 4 -4 0 -1 8 -4 -6 8 -4 4 -1 1 -2 -2 -4 -1 4 4 0 2 0 -4 4 0 2 0 0 0 0 0 0 4 0 0 0 1 4 -4 -1 -2 0 0 0 -2 -4 -4 0 0 0 -4 0 4 -2 0 0 0 4 0 -4 0 0 4 0 0 0 0 0 0 0 0 -2 -4 0 1 -1 0 0 4 0 0 0 0 0 -4 0 2 2 4 4 -1 -4 0 -2 4 0 -2 1 1 -2 0 -6 -3 6 6 6 -6 0 6 0 -12 6 2 -12 -2 0 2 0 0 0 -12 6 -1 -6 6 3 0 12 -6 12 0 -12 -6 0 0 -6 -6 12 -6 0 -6 12 0 -6 0 12 0 0 0 0 12 12 -6 -12 -12 -2 6 0 6 0 -1 3 2 0 -6 4 -4 6 0 -12 6 2 6 -6 6 0 -3 -6 0 0 6 -2 0 1 1 -2 -2 0 -1 0 4 0 -2 8 4 4 -8 -2 0 0 -4 0 -4 0 -4 0 0 4 1 0 0 -1 6 0 4 0 -2 4 4 0 -8 0 4 -8 4 -2 0 -8 -8 4 0 4 0 0 -4 0 0 0 4 0 0 -4 4 6 0 0 1 -1 -4 0 0 0 0 0 8 -8 4 0 -2 -2 4 4 -1 0 0 -2 0 0 -2 1 1 -2 0 2 -3 -2 -2 6 2 0 -2 0 4 -2 2 4 -2 0 2 0 0 0 4 6 -1 2 -2 3 0 -4 -6 -4 0 4 2 0 0 -6 2 -4 2 0 -6 -4 0 2 0 -4 0 0 0 0 -4 -4 -6 4 4 -2 6 0 -2 0 -1 3 2 0 2 4 -4 6 0 4 -2 2 -2 2 -2 0 -3 2 0 0 -2 -2 0 1 1 -2 0 -2 -3 2 -2 6 -2 0 -2 0 4 2 2 4 2 0 -2 0 0 0 -4 -6 -1 -2 2 3 0 -4 6 4 0 -4 2 0 0 -6 2 -4 2 0 -6 -4 0 2 0 4 0 0 0 0 4 -4 6 4 -4 2 -6 0 2 0 -1 3 -2 0 -2 -4 4 6 0 4 -2 2 2 -2 -2 0 -3 -2 0 0 2 -2 0 1 1 -2 -2 0 -1 0 -4 0 -2 8 -4 4 8 -2 0 0 4 0 4 0 -4 0 0 -4 1 0 0 -1 6 0 -4 0 -2 4 -4 0 -8 0 -4 8 -4 -2 0 8 -8 -4 0 4 0 0 -4 0 0 0 -4 0 0 4 -4 6 0 0 1 -1 4 0 0 0 0 0 8 8 -4 0 -2 -2 -4 4 -1 0 0 -2 0 0 -2 1 1 -2 0 -2 1 -2 2 -2 -2 0 2 0 4 2 2 0 -2 0 2 0 0 4 4 -2 -1 -2 2 -1 0 0 2 -4 0 4 -2 -4 0 2 -2 -4 -2 0 2 -4 0 -2 -4 -4 4 4 0 0 -4 0 2 0 4 -2 -2 0 2 0 -1 -1 2 4 -2 0 0 -2 0 4 2 2 2 -2 2 0 1 -2 -4 0 2 -2 0 1 1 -2 -2 0 3 -4 0 0 -2 8 8 -4 0 -2 0 -4 0 8 0 8 -4 -4 0 0 1 0 0 3 -2 -4 0 0 -2 -4 0 -4 8 0 0 0 0 -2 0 0 8 0 -4 -4 -4 -4 -4 8 0 -4 0 -4 0 0 0 -2 0 8 1 3 0 -4 0 4 4 0 8 0 0 0 -2 -2 0 -4 3 0 -4 -2 0 0 -2 1 1 -2 6 -4 -1 -4 0 4 2 8 0 -4 0 2 -4 0 0 0 0 0 -4 0 8 0 1 -4 -4 -1 -2 0 0 8 2 -4 0 0 -8 4 0 0 0 2 4 0 -8 0 0 -4 0 0 -4 0 8 0 0 0 8 0 0 -2 -4 0 1 -1 0 0 -4 0 0 4 8 0 0 -4 2 2 0 -4 -1 -4 0 6 -4 -4 2 1 1 -2 0 2 1 -6 2 -2 2 0 2 0 4 -2 2 0 2 0 -2 0 0 4 -4 2 -1 2 -2 -1 0 0 -2 4 0 -4 -2 4 0 2 -2 -4 -2 0 2 -4 0 -2 4 4 -4 -4 0 0 4 0 -2 0 -4 2 2 0 -2 0 -1 -1 -2 4 2 0 0 -2 0 4 2 2 -2 2 2 0 1 2 -4 0 -2 -2 0 1 1 -2 6 -4 3 -8 4 -12 2 8 -4 4 8 2 -4 -4 4 -8 4 -8 12 -4 -8 12 1 -4 -4 3 6 -4 12 -8 2 4 4 -12 8 -12 4 8 4 2 -12 8 8 4 -12 4 -12 -12 12 -8 -8 -4 12 -4 -8 4 12 6 -4 -8 1 3 4 -4 -4 -4 -4 -12 8 8 4 -4 2 2 4 4 3 -4 -4 6 -4 -4 2 1 1 -2 0 -6 1 2 6 2 2 0 -2 0 4 -2 -2 0 2 -8 -2 8 0 -4 4 2 -1 2 6 -1 0 0 -2 -4 4 -4 2 -4 0 -2 2 -4 -6 4 -2 -4 0 -6 -4 4 4 4 0 8 -4 0 -2 0 4 2 2 0 6 -8 -1 -1 -2 -4 2 0 0 2 0 4 -2 -2 -2 2 6 0 1 -6 4 0 -2 2 -4 1 1 -2 0 -2 1 -2 -2 2 -2 0 6 0 4 2 -2 0 -2 8 2 -8 0 -4 -4 -2 -1 6 2 -1 0 0 2 4 4 4 -6 4 0 -2 -6 -4 2 4 -2 -4 0 2 4 -4 -4 -4 0 -8 4 0 2 0 -4 -2 -2 0 2 8 -1 -1 2 -4 6 0 0 2 0 4 6 -2 2 -2 -2 0 1 -2 4 0 -6 2 -4 1 1 -2 -2 4 -1 -4 -4 0 2 0 4 4 0 2 0 0 0 0 0 0 4 0 0 0 1 -4 4 -1 -2 0 0 0 -2 -4 4 0 0 0 4 0 -4 -2 0 0 0 -4 0 -4 0 0 4 0 0 0 0 0 0 0 0 -2 4 0 1 -1 0 0 -4 0 0 0 0 0 4 0 2 2 -4 4 -1 4 0 -2 -4 0 -2 1 1 -2 -2 0 3 -4 0 0 6 -8 8 -4 0 6 0 12 0 -8 0 -8 -4 -4 0 0 1 0 0 3 -2 12 0 0 -2 12 0 -4 -8 0 0 0 0 -2 0 0 -8 0 -4 12 -4 -4 -4 -8 0 12 0 12 0 0 0 -2 0 -8 1 3 0 -4 0 4 4 0 -8 0 0 0 6 6 0 -4 3 0 -4 -2 0 0 -2 1 1 -2 0 6 -3 -6 6 6 6 0 6 0 -12 -6 2 -12 2 0 -2 0 0 0 12 -6 -1 6 -6 3 0 12 6 -12 0 12 -6 0 0 -6 -6 12 -6 0 -6 12 0 -6 0 -12 0 0 0 0 -12 12 6 -12 12 2 -6 0 -6 0 -1 3 -2 0 6 -4 4 6 0 -12 6 2 -6 6 6 0 -3 6 0 0 -6 -2 0 1 1 -2 6 -12 3 0 12 12 -6 -24 4 -12 24 -6 4 12 -4 24 -4 24 12 12 -24 -12 1 -12 -12 3 6 12 -12 -24 -6 -12 12 -12 -24 12 12 24 12 -6 12 24 -24 12 -12 -12 -12 -12 12 24 -24 12 -12 12 -24 -4 -12 6 -12 24 1 3 -4 12 -12 -4 -4 12 -24 24 12 4 -6 -6 12 -12 3 -12 12 6 -12 4 -6 1 1 -4 -2 -4 1 8 8 0 4 0 -8 0 0 4 0 4 4 -8 -4 -8 4 -4 8 4 1 4 -4 -1 -6 4 -4 -8 -4 0 8 0 16 0 -8 0 8 4 0 0 -16 -8 0 0 0 0 -4 8 8 -4 4 -4 -8 -4 -4 6 4 8 -1 1 4 4 -4 0 0 0 0 0 8 0 -4 -4 -8 0 -1 4 -4 2 -4 0 4 -1 1 -4 0 -2 -1 6 6 2 -4 0 -2 4 -4 4 2 -4 -2 8 -2 -8 0 0 -4 2 -1 -6 2 -1 0 4 2 -4 2 0 -2 4 0 -2 2 4 -6 -2 2 -4 0 6 -4 0 -4 4 0 8 4 -4 -2 4 4 2 -2 0 -2 -8 1 1 2 0 6 0 0 -2 0 4 2 -2 -4 4 -6 -4 1 2 0 0 -6 2 2 -1 1 -4 -2 0 1 4 0 0 0 8 0 0 0 0 0 -4 0 0 0 0 -4 -4 0 0 1 0 0 -1 2 -4 0 0 -4 0 0 0 -8 0 0 0 0 4 0 0 8 0 0 0 0 0 4 0 0 4 0 4 0 0 0 -2 0 0 -1 1 0 4 0 0 0 0 -8 0 0 0 0 0 0 0 -1 0 -4 2 0 0 4 -1 1 -4 0 2 -1 2 -2 2 0 0 -2 4 4 0 2 4 2 0 2 0 0 0 -4 -2 -1 -2 -2 -1 0 -4 -2 -4 2 0 -2 -4 0 -2 2 -4 2 -2 2 4 0 -2 4 0 4 -4 0 0 4 4 2 -4 4 -2 2 0 2 0 1 1 -2 0 2 0 0 -2 0 -4 2 -2 0 0 2 -4 1 -2 0 0 -2 2 2 -1 1 -4 0 6 -1 -2 -2 2 4 0 6 4 -4 -4 2 -4 -2 -8 -2 8 0 0 -4 2 -1 2 -6 -1 0 4 2 -4 2 0 6 4 0 -2 -6 4 2 -2 2 -4 0 -2 -4 0 -4 4 0 -8 4 -4 -2 4 4 2 -2 0 6 8 1 1 2 0 -2 0 0 -2 0 4 -6 -2 4 -4 2 -4 1 -6 0 0 2 2 2 -1 1 -4 0 2 3 -2 2 -6 0 0 10 -4 4 0 2 0 -2 0 -2 0 0 -4 4 -6 -1 -2 -2 3 0 0 -6 4 2 0 2 0 0 6 -2 -4 -2 -2 -6 4 0 2 0 0 0 0 0 0 -4 0 6 0 -4 2 6 0 2 0 1 -3 2 4 2 -4 -4 6 0 -4 -2 -2 0 0 -2 4 -3 -2 4 0 -2 2 2 -1 1 -4 6 0 1 -4 4 -4 0 0 4 0 8 0 -4 -4 0 -8 0 -8 4 4 0 0 1 0 0 -1 2 -4 0 0 0 0 -4 0 0 -4 4 8 4 0 4 -8 0 -4 0 0 0 0 -4 8 0 4 0 4 0 0 0 -2 0 8 -1 1 0 -4 0 0 0 4 0 -8 -4 4 0 0 -4 0 -1 0 4 -6 0 4 0 -1 1 -4 0 -6 3 6 6 6 0 0 -2 -12 12 0 -2 0 -2 0 -2 0 0 12 -12 -6 -1 6 6 3 0 0 -6 -12 6 0 6 0 0 -6 -6 -12 -6 -6 6 12 0 6 0 0 0 0 0 0 12 0 6 0 12 2 6 0 -6 0 1 -3 2 -12 -6 4 4 -6 0 -12 -6 2 0 0 -6 12 -3 6 -12 0 6 -2 6 -1 1 -4 -2 4 1 0 -8 0 4 0 8 0 0 4 0 4 -4 -8 4 -8 4 -4 -8 -4 1 -4 4 -1 -6 4 4 8 -4 0 -8 0 16 0 8 0 -8 4 0 0 -16 8 0 0 0 0 -4 8 -8 -4 -4 -4 8 4 4 6 -4 8 -1 1 -4 4 4 0 0 0 0 0 -8 0 -4 -4 8 0 -1 -4 -4 2 4 0 4 -1 1 -6 0 2 1 10 2 -2 -2 0 -6 0 -4 2 2 0 2 8 -2 -8 0 -4 4 2 -1 -6 -2 -1 0 0 -2 -4 4 4 6 4 0 2 6 4 -2 4 2 4 0 -2 4 -4 -4 -4 0 -8 -4 0 -2 0 4 2 2 0 -2 8 -1 -1 -2 -4 -6 0 0 -2 0 -4 -6 2 2 -2 2 0 1 2 4 0 6 -2 -4 1 1 -6 -2 0 3 12 0 0 2 8 -8 -12 0 2 0 -4 0 -8 0 -8 -4 12 0 0 1 0 0 3 -2 -4 0 0 -6 4 0 4 8 0 0 0 0 -6 0 0 8 0 4 4 4 4 -4 -8 0 -4 0 -4 0 0 0 -2 0 -8 1 3 0 12 0 -4 -4 0 8 0 0 0 2 2 0 -12 3 0 12 -2 0 0 -6 1 1 -6 0 6 1 6 -6 -2 2 0 2 0 -4 -2 2 0 -2 -8 2 8 0 -4 -4 -2 -1 -2 -6 -1 0 0 2 4 4 -4 -2 -4 0 2 -2 4 6 4 2 4 0 6 -4 4 4 4 0 8 4 0 2 0 -4 -2 -2 0 -6 -8 -1 -1 2 -4 -2 0 0 -2 0 -4 2 2 -2 2 -6 0 1 6 4 0 2 -2 -4 1 1 -6 6 4 3 0 4 -12 -2 -8 12 -4 8 -2 -4 -4 -4 -8 -4 -8 12 -4 8 -12 1 4 4 3 6 -4 -12 8 -2 -4 4 12 -8 -12 4 8 4 -2 -12 8 -8 4 12 -4 12 12 12 -8 8 -4 -12 -4 8 -4 -12 6 4 -8 1 3 -4 -4 4 4 4 -12 -8 8 4 -4 -2 -2 4 -4 3 4 -4 6 4 -4 -2 1 1 -8 0 6 3 18 -6 -6 0 0 -14 -12 -12 0 2 0 2 0 2 0 0 12 12 6 -1 -6 -6 3 0 0 6 12 6 0 -6 0 0 6 6 12 6 -6 -6 -12 0 -6 0 0 0 0 0 0 -12 0 -6 0 -12 -2 -6 0 6 0 1 -3 -2 -12 6 4 4 6 0 12 6 -2 0 0 6 12 -3 -6 -12 0 -6 2 6 -1 end lrslib-062/ine/mit/mit288-281.ine0000600001553200155320000057451212722006424014074 0ustar avis*Gerardo Garbulsky's problem: probably unsolved gdg@lanai.mit.edu mit288.ine digits 1500 begin 288 281 rational 1 -3 0 10 -4 -8 8 4 -4 -4 4 4 2 4 8 -12 -4 4 0 -2 1 0 -8 -4 0 4 -4 0 -8 -16 2 -8 4 4 12 8 2 0 -8 16 0 0 -4 -4 -8 -4 -4 0 24 8 0 -4 -2 8 -2 0 -8 -1 -16 -10 -8 -4 -12 0 24 8 -12 2 4 -4 4 -8 12 0 -8 -8 16 8 0 0 -4 -8 0 0 0 8 0 8 0 0 0 0 -16 -24 10 16 16 -16 0 4 -16 4 16 4 -16 8 16 8 12 -8 -4 -8 0 8 -8 4 -12 0 -8 4 16 4 -24 -6 8 -4 -8 12 8 8 4 8 -16 0 16 0 -16 0 -24 0 8 0 0 4 -16 -8 -4 -8 16 12 8 -16 -16 16 16 8 16 -16 16 -16 8 4 -8 8 0 8 4 0 0 -12 -16 16 -8 -8 4 0 4 0 10 8 4 0 12 -4 4 -24 -6 8 0 8 0 8 24 -8 -4 0 8 4 8 -12 -8 -8 -4 -2 -4 12 -16 0 0 16 -4 -4 -4 8 -4 0 -10 0 -8 -2 -4 0 -12 4 -1 0 -4 0 24 6 -8 -8 -8 -2 0 1 12 0 0 8 -4 -8 4 4 0 -4 -8 2 16 0 0 -16 4 -8 -8 4 -4 0 0 2 4 8 0 8 4 8 4 2 4 -8 -12 -4 -4 -8 -4 8 2 0 -1 -2 1 1 -5 0 12 -2 -4 0 4 -8 0 2 0 4 8 8 -8 0 0 0 -4 -1 -8 -8 -8 8 0 -4 0 0 -8 2 0 0 4 8 0 -2 0 0 4 -4 -8 0 0 -8 0 0 8 8 8 0 0 -2 0 2 0 -8 1 -4 0 0 0 -4 -8 0 0 0 0 0 0 -4 0 0 0 0 -8 8 0 8 4 0 8 0 0 0 0 0 4 4 0 0 0 0 0 0 8 0 8 0 0 0 0 0 0 -8 -8 0 8 4 0 4 0 4 8 0 0 0 -4 4 0 -8 0 -8 0 0 0 -8 0 0 0 0 8 8 0 8 0 0 0 0 0 0 0 0 0 -8 0 -4 8 0 0 -8 -8 0 -8 0 0 -8 0 8 0 -4 0 -4 0 -4 0 0 4 0 0 8 0 0 0 0 0 0 0 0 -8 0 -4 -4 0 0 8 0 -8 0 8 0 0 0 0 0 0 0 4 -8 0 8 0 0 2 0 0 4 -4 0 -8 0 0 0 0 0 -8 0 0 8 -2 0 -8 4 0 -1 8 0 0 -8 0 0 8 -8 4 8 1 -8 -8 0 0 4 0 0 -4 0 0 8 -2 -4 4 0 8 0 0 0 0 8 8 0 2 0 -8 0 0 -8 -4 -4 -4 -2 8 8 0 4 4 2 -8 -4 0 1 4 -1 1 -7 4 14 0 0 -8 4 -12 4 0 -4 -2 4 8 -8 4 -4 0 2 1 0 -8 -4 0 -4 -4 0 24 0 -2 0 4 4 4 -8 -2 0 0 -8 -8 -16 4 4 8 4 4 0 -8 -8 0 -4 2 0 2 0 8 -1 8 2 -8 4 4 0 8 0 -4 -10 -4 -4 4 -8 12 0 8 8 0 8 16 8 4 8 -16 0 0 8 0 0 0 0 0 0 16 -8 -2 0 0 0 0 -4 0 -4 0 -4 -16 -8 -16 -8 -4 -8 -4 -8 0 -8 -4 -4 -12 0 0 -4 16 4 8 6 8 4 8 4 4 8 4 -8 0 0 0 0 0 0 -8 0 8 0 0 -4 0 -8 -4 8 0 4 -8 0 0 0 0 8 0 0 16 16 0 4 0 8 0 4 -4 0 0 -12 -16 -16 -8 -4 -4 0 -4 0 -2 -8 -4 0 -4 4 4 8 6 -8 0 -8 0 0 8 -8 4 0 8 4 -8 -4 8 -8 -4 2 4 12 8 8 0 0 4 4 4 0 -4 16 2 0 8 2 4 0 4 -4 -1 0 -4 -16 -8 -6 8 8 8 2 0 1 4 0 16 -8 -4 0 -4 4 0 4 -8 -2 -8 -8 0 0 -4 8 0 4 -4 -16 0 -2 -4 8 -4 -8 4 0 4 -2 0 -8 -4 4 -4 0 0 8 6 4 -1 -6 1 1 -7 0 18 0 0 0 4 -12 0 0 -12 6 12 0 -12 0 0 12 -6 -3 -24 0 -12 24 0 -4 0 0 -12 6 0 0 12 12 0 -6 0 0 0 0 -24 12 12 -24 12 0 24 0 24 -12 12 -6 0 6 0 0 3 0 6 0 -12 12 -24 0 0 0 6 0 -12 -12 0 -12 0 0 0 12 0 24 0 -12 24 0 -12 4 -12 0 0 0 0 12 0 -24 0 -6 -24 0 24 -4 12 0 -12 -24 -12 0 -24 24 24 -12 0 12 12 0 0 0 -12 12 0 0 12 0 12 0 -6 0 0 -24 0 0 0 -12 0 0 0 0 0 24 -12 0 0 0 0 0 -12 0 0 12 -24 -24 0 0 24 0 -24 0 0 0 24 0 -24 0 -12 0 -12 0 0 12 0 0 12 0 24 12 0 12 4 -12 -4 -6 0 -12 0 -12 0 12 0 -6 24 12 -24 0 0 0 0 12 0 0 -12 24 0 0 0 12 -6 -12 -12 0 0 -12 12 0 -12 12 0 0 24 6 0 0 6 12 24 12 0 3 -24 -12 0 0 6 0 -24 24 -6 -24 -3 12 24 0 0 -4 0 0 12 0 0 0 6 0 0 12 -12 0 0 0 0 -12 -24 0 -6 0 0 0 0 12 0 4 6 0 -12 -12 0 -12 0 0 12 6 0 -1 -6 1 1 -7 0 14 0 4 0 0 -12 -4 0 -4 6 4 0 -4 4 4 -8 -6 -3 -16 0 -4 0 0 0 -8 8 8 2 0 0 0 4 0 -2 -8 0 4 -4 0 4 -12 8 4 0 16 0 0 8 12 -2 0 2 8 0 3 -4 -2 0 12 0 0 0 0 4 -2 12 4 0 0 -4 8 0 0 -8 8 0 4 -4 -8 -8 4 -4 -8 0 4 0 0 -4 0 0 0 2 16 -8 -16 4 -12 8 12 0 -4 8 8 0 -8 0 -8 0 8 0 0 0 -4 4 0 -4 4 -8 -4 0 2 0 -12 0 -4 0 0 -12 0 -8 0 8 0 0 4 0 0 0 0 0 -4 -8 -8 0 0 0 -4 0 -16 8 16 -8 0 8 0 -8 0 4 -12 -4 -8 0 0 4 0 0 4 8 0 8 0 -12 -4 12 4 2 0 -4 0 0 -12 -4 0 2 -8 -4 8 0 0 0 0 4 8 8 0 0 4 0 0 12 -2 -4 -4 -4 4 8 -8 0 12 -12 0 0 0 -2 8 0 2 4 16 0 12 3 0 4 -8 0 -2 0 8 -8 -6 -16 -3 4 0 8 0 0 0 4 0 -8 4 0 2 4 -4 -8 8 0 0 0 0 -4 0 -8 -2 -4 0 0 0 4 -4 0 6 0 -8 -4 -4 0 4 0 8 6 0 -1 -6 1 1 -9 4 20 2 8 -8 0 -16 -4 -2 -16 0 0 -8 -12 4 4 4 0 -1 -8 8 0 8 0 0 0 24 4 2 0 0 8 8 0 -2 0 0 0 0 -8 8 0 0 8 0 8 -8 0 -4 8 -2 0 2 0 8 1 0 4 -8 0 8 -8 8 0 -4 -4 4 0 0 8 0 0 0 8 -4 8 8 0 -8 0 -16 0 0 -4 8 -8 -4 0 0 -8 8 -8 -4 -8 0 -8 0 0 0 0 -8 -8 0 0 8 0 -8 -8 0 -4 -4 -8 -4 -8 0 4 -8 8 0 0 8 4 8 -4 0 4 -4 -8 -8 -8 -16 0 -16 0 -8 0 8 8 -8 0 0 8 16 8 0 0 8 -4 8 8 0 8 0 8 16 8 0 -8 8 8 8 4 4 4 -8 -4 -8 0 0 -8 4 4 0 0 0 0 4 8 8 4 8 4 0 -8 -4 0 0 0 0 0 -8 8 -8 0 -8 0 0 4 -8 -8 -8 2 8 0 0 0 4 4 0 0 0 0 0 -8 -4 0 -8 -2 -8 -8 -8 -4 -1 8 0 16 8 4 0 0 0 0 8 1 -8 -8 -16 0 0 0 -4 -8 0 -4 -8 -2 0 0 -4 -4 0 -8 0 0 0 8 0 2 4 8 4 8 0 8 0 0 2 12 8 4 8 -8 -2 -12 -8 -4 1 8 -1 1 -11 8 26 4 16 -24 -4 -20 -12 -4 -28 -6 -12 -24 -20 4 12 8 6 1 16 24 12 16 4 4 16 40 8 2 8 4 12 12 8 2 16 8 8 8 16 -4 -4 -8 -4 -4 -16 -8 -8 -8 -4 -2 -8 -2 -16 -8 -1 -8 -2 -8 -4 -4 -16 -8 -8 -4 -6 -4 -4 -4 -8 -4 -16 -8 -8 -8 -8 -16 -8 -4 -8 -16 0 0 0 0 0 0 0 0 0 0 8 2 0 0 0 0 4 0 4 0 4 0 8 0 8 4 8 4 0 0 8 0 4 4 0 0 4 0 4 8 2 8 4 8 4 0 8 4 8 0 0 0 0 0 0 8 0 8 0 0 4 0 8 4 8 0 4 8 0 0 0 0 8 0 0 0 0 0 4 0 0 0 0 4 0 0 4 0 0 0 0 4 0 4 0 2 8 4 0 4 4 4 8 2 8 0 8 0 -8 -8 -8 -4 -16 -8 -4 -8 -4 -8 -8 -4 -2 -4 -4 -8 -8 -8 -8 -4 -4 -4 -8 -4 -16 -2 -16 -8 -2 -4 -16 -4 -4 -1 -16 -4 -16 -8 -2 -8 -8 -8 6 16 1 12 16 16 8 4 8 12 12 16 4 24 2 8 8 8 8 4 24 8 4 12 16 16 2 -4 -24 -8 -24 -12 -16 -4 -6 -4 -16 -12 -12 -12 16 4 16 10 8 -1 -10 1 1 -13 12 36 6 24 -48 -8 -32 -24 -6 -48 -12 -24 -48 -36 8 24 24 12 3 48 48 24 48 12 8 48 96 24 6 24 12 24 24 24 6 48 24 24 24 48 -24 -24 -48 -24 -12 -48 -48 -48 -24 -24 -6 -24 -6 -48 -48 -3 -24 -12 -48 -24 -24 -48 -48 -24 -24 -24 -24 -24 -24 -48 -24 -48 -24 -48 -24 -48 -48 -24 -24 -48 -48 12 4 24 24 24 12 48 12 24 48 48 12 48 48 48 4 24 48 24 48 24 48 48 48 48 24 48 24 24 12 48 12 24 24 12 24 24 48 24 48 12 48 24 48 24 12 48 24 48 48 16 48 48 48 -12 -48 -24 -48 -48 -16 -24 -48 -48 -24 -48 -48 -24 -48 -48 -48 -48 -48 -48 -48 -48 -48 -48 -24 -24 -24 -24 -12 -12 -24 -12 -24 -24 -48 -48 -24 -12 -24 -4 -24 -4 -12 -48 -24 -12 -24 -24 -24 -48 -12 -48 -12 -48 -48 24 48 48 24 48 48 24 48 24 48 48 24 6 24 24 24 24 24 24 12 24 24 24 12 48 12 48 48 6 24 48 24 24 3 48 24 48 48 12 24 48 48 -12 -48 -3 -24 -48 -48 -24 -8 -24 -24 -24 -48 -8 -48 -6 -24 -24 -24 -24 -12 -48 -24 -12 -24 -48 -48 -6 8 48 12 48 24 24 8 12 6 24 24 24 24 -24 -6 -24 -12 -12 1 12 -1 1 13 12 36 6 24 48 8 32 24 6 48 12 24 48 36 8 24 24 12 3 48 48 24 48 12 8 48 96 24 6 24 12 24 24 24 6 48 24 24 24 48 24 24 48 24 12 48 48 48 24 24 6 24 6 48 48 3 24 12 48 24 24 48 48 24 24 24 24 24 24 48 24 48 24 48 24 48 48 24 24 48 48 12 4 24 24 24 12 48 12 24 48 48 12 48 48 48 4 24 48 24 48 24 48 48 48 48 24 48 24 24 12 48 12 24 24 12 24 24 48 24 48 12 48 24 48 24 12 48 24 48 48 16 48 48 48 12 48 24 48 48 16 24 48 48 24 48 48 24 48 48 48 48 48 48 48 48 48 48 24 24 24 24 12 12 24 12 24 24 48 48 24 12 24 4 24 4 12 48 24 12 24 24 24 48 12 48 12 48 48 24 48 48 24 48 48 24 48 24 48 48 24 6 24 24 24 24 24 24 12 24 24 24 12 48 12 48 48 6 24 48 24 24 3 48 24 48 48 12 24 48 48 12 48 3 24 48 48 24 8 24 24 24 48 8 48 6 24 24 24 24 12 48 24 12 24 48 48 6 8 48 12 48 24 24 8 12 6 24 24 24 24 24 6 24 12 12 1 12 1 1 11 8 26 4 16 24 4 20 12 4 28 6 12 24 20 4 12 8 6 1 16 24 12 16 4 4 16 40 8 2 8 4 12 12 8 2 16 8 8 8 16 4 4 8 4 4 16 8 8 8 4 2 8 2 16 8 1 8 2 8 4 4 16 8 8 4 6 4 4 4 8 4 16 8 8 8 8 16 8 4 8 16 0 0 0 0 0 0 0 0 0 0 8 2 0 0 0 0 4 0 4 0 4 0 8 0 8 4 8 4 0 0 8 0 4 4 0 0 4 0 4 8 2 8 4 8 4 0 8 4 8 0 0 0 0 0 0 -8 0 -8 0 0 -4 0 -8 -4 -8 0 -4 -8 0 0 0 0 -8 0 0 0 0 0 -4 0 0 0 0 -4 0 0 -4 0 0 0 0 -4 0 -4 0 -2 -8 -4 0 -4 -4 -4 -8 -2 -8 0 -8 0 -8 -8 -8 -4 -16 -8 -4 -8 -4 -8 -8 -4 -2 -4 -4 -8 -8 -8 -8 -4 -4 -4 -8 -4 -16 -2 -16 -8 -2 -4 -16 -4 -4 -1 -16 -4 -16 -8 -2 -8 -8 -8 -6 -16 -1 -12 -16 -16 -8 -4 -8 -12 -12 -16 -4 -24 -2 -8 -8 -8 -8 -4 -24 -8 -4 -12 -16 -16 -2 -4 -24 -8 -24 -12 -16 -4 -6 -4 -16 -12 -12 -12 -16 -4 -16 -10 -8 -1 -10 -1 1 11 12 12 6 24 48 8 -16 24 -6 0 12 24 48 12 -8 -24 24 -12 3 48 -48 -24 48 12 -8 48 0 24 6 24 12 -24 -24 24 6 48 24 24 24 48 24 24 48 24 -12 -48 48 48 -24 24 -6 -24 -6 -48 48 -3 -24 12 48 24 24 -48 48 -24 24 0 24 24 24 48 24 -48 -24 48 -24 48 -48 -24 24 48 -48 12 4 24 24 24 12 48 12 24 48 -48 -12 48 48 48 4 -24 48 -24 48 -24 48 -48 48 -48 -24 -48 -24 24 12 -48 12 -24 -24 12 24 -24 48 -24 -48 -12 -48 -24 -48 -24 12 -48 -24 -48 48 16 48 48 48 -12 48 -24 48 -48 -16 24 -48 48 24 48 -48 24 48 -48 -48 -48 -48 48 -48 -48 -48 -48 -24 24 -24 -24 -12 -12 24 -12 -24 24 -48 -48 -24 -12 24 -4 24 -4 12 48 24 -12 24 24 24 48 12 48 -12 48 -48 24 -48 -48 -24 48 -48 -24 -48 -24 -48 -48 -24 6 -24 -24 24 24 24 24 12 -24 -24 24 12 48 -12 48 -48 6 -24 48 -24 -24 3 48 -24 48 -48 -12 24 -48 -48 12 -48 -3 24 -48 -48 -24 8 -24 24 24 -48 8 48 -6 -24 -24 -24 -24 -12 48 -24 -12 24 -48 -48 -6 -8 -48 12 -48 -24 24 -8 -12 6 24 -24 -24 -24 -24 -6 -24 12 -12 1 -12 -1 1 9 8 16 2 8 16 0 8 0 2 8 8 8 0 16 0 0 -8 8 3 16 0 8 0 -4 0 16 16 -8 2 8 4 0 8 0 2 0 0 -8 -8 0 8 -16 -16 0 -4 16 -16 0 -8 16 2 8 2 16 -16 3 -8 0 0 -16 0 0 0 0 0 4 0 0 0 16 8 0 0 0 -8 0 0 -8 0 -16 0 -4 -4 8 0 8 -4 -32 -4 0 0 0 0 -16 -16 -16 -4 -16 -16 -16 0 0 0 -16 0 -16 0 0 0 8 4 0 8 8 8 -4 8 0 0 0 -16 0 0 0 0 0 8 16 16 -16 0 0 0 -16 0 -4 0 0 0 -16 0 8 0 0 0 0 0 0 0 -16 -16 -16 -16 16 0 0 0 0 8 16 8 8 4 8 0 -4 0 8 0 0 8 8 -16 -4 -16 -4 0 -16 0 -4 0 0 0 -16 0 -16 -4 -16 -32 8 0 0 8 16 0 0 0 0 0 16 16 2 0 8 -8 -8 -8 -8 -4 -16 -16 0 4 0 0 0 -16 2 0 16 0 0 3 0 0 0 -16 0 0 -16 -16 8 16 3 8 0 0 0 0 8 0 0 16 0 0 2 -8 -8 -8 -8 -4 16 0 4 8 0 0 2 0 0 8 16 8 8 0 8 2 8 8 0 0 8 2 8 8 8 1 8 1 1 9 4 20 2 8 8 0 16 4 2 16 0 0 8 12 4 4 4 0 -1 -8 8 0 8 0 0 0 24 4 2 0 0 8 8 0 -2 0 0 0 0 -8 -8 0 0 -8 0 -8 8 0 4 -8 2 0 -2 0 -8 -1 0 -4 8 0 -8 8 -8 0 4 4 -4 0 0 -8 0 0 0 -8 4 -8 -8 0 8 0 16 0 0 -4 8 -8 -4 0 0 -8 8 -8 -4 -8 0 -8 0 0 0 0 -8 -8 0 0 8 0 -8 -8 0 -4 -4 -8 -4 -8 0 4 -8 8 0 0 8 4 8 -4 0 4 -4 -8 -8 -8 -16 0 -16 0 -8 0 -8 -8 8 0 0 -8 -16 -8 0 0 -8 4 -8 -8 0 -8 0 -8 -16 -8 0 8 -8 -8 -8 -4 -4 -4 8 4 8 0 0 8 -4 -4 0 0 0 0 -4 -8 -8 -4 -8 -4 0 8 4 0 0 0 0 0 -8 8 -8 0 -8 0 0 4 -8 -8 -8 2 8 0 0 0 4 4 0 0 0 0 0 -8 -4 0 -8 -2 -8 -8 -8 -4 -1 8 0 16 8 4 0 0 0 0 -8 -1 8 8 16 0 0 0 4 8 0 4 8 2 0 0 4 4 0 8 0 0 0 -8 0 -2 4 8 4 8 0 8 0 0 2 12 8 4 8 8 2 12 8 4 1 8 1 1 9 4 16 6 8 0 0 8 0 6 8 8 0 32 4 0 0 8 8 3 16 32 0 -16 12 0 16 -16 8 -2 -8 -4 0 0 8 -2 -16 8 8 8 -16 0 16 0 -16 12 16 0 0 8 16 -2 -8 -2 16 0 3 8 -8 -32 16 0 -16 -32 8 0 -12 0 -16 0 0 0 -16 8 32 8 0 -16 8 -16 0 -16 -4 4 8 -24 8 -4 16 -4 -24 -16 -32 -8 16 16 16 4 16 16 16 -16 -16 -16 0 -16 0 0 0 0 8 12 32 4 0 0 -4 8 -16 -16 -16 0 -8 -32 0 0 0 4 0 16 0 -16 -16 -16 -16 -16 -4 -32 -24 -32 -16 -16 0 -16 0 0 0 -16 0 32 16 16 16 16 0 -16 -16 -16 -16 8 16 8 8 12 4 -16 -4 -24 0 -16 -16 8 4 16 4 16 4 -8 0 -16 -4 0 0 -16 0 -8 0 -4 0 16 -8 -32 -32 0 16 0 0 0 0 32 0 16 -2 -16 0 8 8 8 8 12 16 16 8 -4 -16 -8 -16 0 -2 -16 16 0 0 3 -16 -16 -16 0 -8 8 0 0 8 16 3 0 -16 -16 8 0 -8 0 0 16 0 32 -2 8 8 8 8 12 0 8 -4 0 -16 -16 -2 0 32 4 0 0 8 0 8 6 8 0 0 0 8 6 8 8 4 1 8 1 1 9 4 16 2 12 8 4 8 8 2 16 0 8 8 4 0 8 0 0 -1 0 8 8 0 0 4 -8 0 0 -2 0 0 4 0 0 2 8 0 4 4 16 0 0 0 8 0 0 -8 -8 0 -8 -2 0 2 -8 8 -1 4 4 -8 0 4 0 8 0 -8 -4 0 0 -4 -8 -8 8 0 -8 0 0 16 4 -8 0 -8 0 0 -8 -8 -4 4 0 0 8 -16 8 4 0 -8 0 0 0 -8 0 0 8 -8 0 -16 0 4 0 -4 -8 -4 -8 -4 0 -8 -4 -4 -8 -8 0 -8 -4 -8 0 -8 -8 -4 -8 -8 8 8 0 8 0 0 0 8 8 -8 0 0 0 8 0 -4 -8 0 -8 -8 0 -8 0 -8 -8 8 0 -8 -16 -4 -8 -4 -8 -4 -4 -8 -4 -8 -8 -8 -16 -8 -4 0 0 0 0 4 8 8 4 4 0 0 -8 -4 0 0 0 0 0 8 -8 0 -8 0 -4 -8 -8 -8 -8 -8 -2 -8 -8 4 4 0 0 0 0 0 0 0 16 4 8 8 2 8 0 4 0 -1 0 0 -8 -8 -4 0 0 0 0 0 -1 0 0 -8 0 4 0 8 4 -8 0 8 -2 4 4 0 0 0 8 0 0 8 16 8 2 0 8 4 8 8 12 4 0 2 8 0 8 4 12 2 8 8 4 1 8 1 1 9 8 6 4 16 24 4 -12 12 -4 -4 6 12 24 4 -4 -12 8 -6 1 16 -24 -12 16 4 -4 16 -8 8 2 8 4 -12 -12 8 2 16 8 8 8 16 4 4 8 4 -4 -16 8 8 -8 4 -2 -8 -2 -16 8 -1 -8 2 8 4 4 -16 8 -8 4 -2 4 4 4 8 4 -16 -8 8 -8 8 -16 -8 4 8 -16 0 0 0 0 0 0 0 0 0 0 -8 -2 0 0 0 0 -4 0 -4 0 -4 0 -8 0 -8 -4 -8 -4 0 0 -8 0 -4 -4 0 0 -4 0 -4 -8 -2 -8 -4 -8 -4 0 -8 -4 -8 0 0 0 0 0 0 -8 0 -8 0 0 -4 0 -8 -4 -8 0 -4 -8 0 0 0 0 -8 0 0 0 0 0 -4 0 0 0 0 -4 0 0 -4 0 0 0 0 -4 0 -4 0 -2 -8 -4 0 -4 -4 -4 -8 -2 -8 0 -8 0 -8 8 8 4 -16 8 4 8 4 8 8 4 -2 4 4 -8 -8 -8 -8 -4 4 4 -8 -4 -16 2 -16 8 -2 4 -16 4 4 -1 -16 4 -16 8 2 -8 8 8 -6 16 1 -12 16 16 8 -4 8 -12 -12 16 -4 -24 2 8 8 8 8 4 -24 8 4 -12 16 16 2 4 24 -8 24 12 -16 4 6 -4 -16 12 12 12 16 4 16 -10 8 -1 10 1 1 7 4 14 0 0 8 -4 12 -4 0 4 2 -4 -8 8 4 -4 0 2 1 0 -8 -4 0 -4 -4 0 24 0 -2 0 4 4 4 -8 -2 0 0 -8 -8 -16 -4 -4 -8 -4 -4 0 8 8 0 4 -2 0 -2 0 -8 1 -8 -2 8 -4 -4 0 -8 0 4 10 4 4 -4 8 -12 0 -8 -8 0 -8 -16 -8 -4 -8 16 0 0 8 0 0 0 0 0 0 16 -8 -2 0 0 0 0 -4 0 -4 0 -4 -16 -8 -16 -8 -4 -8 -4 -8 0 -8 -4 -4 -12 0 0 -4 16 4 8 6 8 4 8 4 4 8 4 -8 0 0 0 0 0 0 8 0 -8 0 0 4 0 8 4 -8 0 -4 8 0 0 0 0 -8 0 0 -16 -16 0 -4 0 -8 0 -4 4 0 0 12 16 16 8 4 4 0 4 0 2 8 4 0 4 -4 -4 -8 -6 8 0 8 0 0 8 -8 4 0 8 4 -8 -4 8 -8 -4 2 4 12 8 8 0 0 4 4 4 0 -4 16 2 0 8 2 4 0 4 -4 -1 0 -4 -16 -8 -6 8 8 8 -2 0 -1 -4 0 -16 8 4 0 4 -4 0 -4 8 2 8 8 0 0 4 -8 0 -4 4 16 0 2 -4 8 -4 -8 4 0 4 -2 0 -8 -4 4 -4 0 0 -8 -6 -4 -1 -6 -1 1 7 8 6 4 0 8 -4 -4 -12 4 -12 10 4 8 12 -4 -12 -8 10 1 16 8 4 -16 4 -4 16 -8 -8 2 8 4 -12 4 8 2 -16 8 -8 -8 -16 12 -4 -8 -4 4 16 -8 -8 -8 -4 2 8 2 16 -8 1 -8 -2 -8 -4 -4 -16 -8 8 -4 2 -4 -4 -4 24 12 -16 8 24 -8 -8 -16 -8 -4 -8 -16 0 0 -16 0 16 0 0 0 0 0 -8 -2 0 0 0 0 -4 0 -4 0 -4 0 -8 0 -8 -4 -8 -4 16 0 24 0 12 12 0 -16 -4 0 -4 -8 -2 -8 -4 -8 -4 0 24 -4 -8 0 0 0 0 0 0 8 0 8 0 0 -12 0 8 4 8 0 4 -24 0 0 0 0 -24 0 0 0 0 -16 4 16 16 0 0 4 0 0 -12 0 0 -16 0 4 0 4 0 2 8 4 0 4 4 4 8 2 8 0 8 0 -8 8 8 -12 -16 8 4 8 4 -24 -24 4 -2 4 -12 8 8 8 8 -4 4 4 -8 -4 16 2 16 8 -2 4 -16 4 4 -1 16 4 16 8 2 -8 8 8 -10 -16 -1 -4 16 16 -8 4 -8 12 12 -16 4 -8 -2 8 8 8 8 -4 -8 -8 -4 -4 16 16 -2 4 -8 -8 -8 -4 0 4 -10 -4 0 -4 12 12 0 -4 0 -6 -8 -1 -6 -1 1 7 4 6 0 8 8 4 -4 4 0 4 2 4 -8 0 -4 4 -8 2 1 0 -8 4 0 -4 4 0 -8 -8 -2 0 4 -4 -4 -8 -2 0 0 0 0 16 -12 -4 -8 -4 -4 0 -8 -8 -8 4 -2 0 -2 0 8 1 0 6 -8 -4 4 0 8 0 -4 2 -4 4 4 8 -4 0 -8 -8 -8 8 16 0 -4 -8 -16 0 0 0 0 -8 0 0 0 0 0 8 6 0 0 0 0 -4 0 -4 -16 -4 0 -8 0 -8 4 8 4 0 0 -8 -4 -12 -4 0 8 -4 0 4 -8 -2 -8 -4 -8 -4 4 8 4 8 -16 0 16 0 16 0 -8 0 8 0 0 12 16 -8 -4 8 16 4 8 0 0 0 0 -8 -16 -16 0 0 8 -4 -8 0 0 -4 4 0 0 4 0 0 0 4 4 0 4 0 -6 -8 4 0 -4 4 -4 8 2 8 0 8 0 0 -8 8 12 0 -8 -4 8 4 8 -8 -4 2 4 4 0 0 8 8 4 4 4 0 -4 -16 -6 0 -8 2 4 0 -4 4 -1 0 -4 16 8 2 8 8 8 -2 0 -1 4 0 16 8 -4 0 -4 4 0 4 8 2 0 0 8 8 4 -8 0 -4 -4 -16 0 2 4 8 -4 -8 -4 -8 -4 -2 0 0 4 -4 4 -8 0 0 -6 -4 -1 -6 -1 1 7 4 10 0 4 0 0 4 0 0 4 2 4 -8 8 0 0 -4 2 1 0 -8 4 0 -4 0 0 0 -4 2 0 -4 0 4 0 2 0 -8 -4 -4 0 4 -4 0 4 -4 0 -8 0 -4 4 2 0 2 0 -8 1 -4 -2 0 -4 0 0 0 -8 0 -6 0 -4 0 -16 4 0 0 -8 -4 0 0 -4 4 0 0 0 0 4 0 -4 0 0 0 0 -8 0 -2 0 0 0 0 -4 0 -4 8 4 8 0 8 0 0 0 0 -4 0 -8 4 4 4 0 4 4 -8 -4 -8 -2 0 0 0 0 -4 -16 4 -8 8 0 -8 0 -8 0 0 0 0 0 0 -4 -8 0 0 0 -8 0 8 0 0 0 0 16 8 8 8 8 4 -4 -4 -4 0 4 -4 0 0 -4 -8 -8 4 -4 4 0 4 0 2 8 -4 0 0 0 4 8 2 0 0 0 0 0 0 0 -4 0 0 0 0 0 8 16 -4 -2 -4 -4 4 4 4 4 4 4 4 8 4 0 2 0 8 -2 -4 0 0 0 -1 0 4 0 8 2 0 0 0 -2 0 -1 -4 0 0 0 0 0 0 0 0 0 8 -2 4 4 4 4 4 0 8 4 -4 0 0 -2 0 8 -4 0 -4 -4 0 -2 0 -4 -4 0 0 -4 0 -4 -6 -4 -1 -6 -1 1 7 8 0 2 8 16 0 -8 0 -2 -8 8 8 0 0 0 0 -8 -8 3 16 0 -8 0 -4 0 16 -16 -8 2 8 4 0 -8 0 2 0 0 -8 -8 0 8 -16 -16 0 4 -16 -16 0 8 16 -2 -8 -2 -16 -16 -3 8 0 0 -16 0 0 0 0 0 -4 0 0 0 16 8 0 0 0 8 0 0 8 0 -16 0 -4 -4 8 0 8 -4 -32 -4 0 0 0 0 -16 -16 -16 -4 16 -16 16 0 0 0 16 0 16 0 0 0 8 4 0 8 -8 -8 -4 8 0 0 0 16 0 0 0 0 0 8 -16 -16 16 0 0 0 -16 0 4 0 0 0 16 0 8 0 0 0 0 0 0 0 16 16 16 16 16 0 0 0 0 -8 16 -8 -8 -4 -8 0 4 0 8 0 0 -8 -8 -16 4 -16 4 0 -16 0 4 0 0 0 -16 0 -16 4 -16 32 8 0 0 -8 16 0 0 0 0 0 -16 -16 2 0 -8 -8 -8 -8 -8 -4 16 16 0 4 0 0 0 16 2 0 16 0 0 3 0 0 0 16 0 0 16 16 8 -16 -3 8 0 0 0 0 -8 0 0 -16 0 0 -2 8 8 8 8 4 16 0 -4 8 0 0 -2 0 0 8 -16 -8 8 0 -8 2 8 -8 0 0 -8 -2 -8 8 -8 1 -8 -1 1 7 0 10 4 4 -8 0 4 0 4 4 2 -4 16 -4 0 0 4 2 1 0 16 -4 -8 4 0 0 -16 4 -2 -8 -4 0 -4 0 -2 -8 0 4 4 -8 -4 4 0 -4 4 0 0 0 4 4 -2 -8 -2 0 0 1 4 -2 -8 4 0 -8 -8 0 0 -6 0 -4 0 -8 -4 -8 0 0 4 0 -8 4 -4 0 -8 0 0 4 0 -4 0 0 0 0 0 -8 -2 0 0 0 0 4 0 4 0 -4 0 0 0 0 0 0 0 -4 0 0 0 -4 -4 0 4 -4 0 -4 0 -2 -8 0 0 0 0 -8 4 0 0 0 0 0 0 0 8 0 8 0 0 4 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 4 -4 -4 -4 0 0 4 0 0 4 0 0 4 0 -4 0 -4 0 2 0 4 0 0 0 4 0 2 0 0 0 0 8 8 8 4 0 0 0 0 0 0 8 -4 2 4 4 -4 -4 -4 -4 -4 -4 -4 0 4 8 2 8 0 2 4 0 0 0 -1 8 4 8 0 2 0 0 0 -2 0 -1 4 8 8 0 0 8 0 0 0 0 -16 2 -4 -4 -4 -4 -4 8 0 4 4 8 8 2 0 -16 0 8 4 -4 0 -2 -4 -4 4 0 0 -4 -4 -4 -6 0 -1 -6 -1 1 7 0 18 0 0 0 -4 12 0 0 12 -6 -12 0 12 0 0 12 -6 -3 -24 0 -12 24 0 -4 0 0 -12 6 0 0 12 12 0 -6 0 0 0 0 -24 -12 -12 24 -12 0 -24 0 -24 12 -12 6 0 -6 0 0 -3 0 -6 0 12 -12 24 0 0 0 -6 0 12 12 0 12 0 0 0 -12 0 -24 0 12 -24 0 -12 4 -12 0 0 0 0 12 0 -24 0 -6 -24 0 24 -4 12 0 -12 -24 -12 0 -24 24 24 -12 0 12 12 0 0 0 -12 12 0 0 12 0 12 0 -6 0 0 -24 0 0 0 -12 0 0 0 0 0 24 12 0 0 0 0 0 12 0 0 -12 24 24 0 0 -24 0 24 0 0 0 -24 0 24 0 12 0 12 0 0 -12 0 0 -12 0 -24 -12 0 -12 -4 12 4 6 0 12 0 12 0 -12 0 6 -24 -12 24 0 0 0 0 12 0 0 -12 24 0 0 0 12 -6 -12 -12 0 0 -12 12 0 -12 12 0 0 24 6 0 0 6 12 24 12 0 3 -24 -12 0 0 6 0 -24 24 6 24 3 -12 -24 0 0 4 0 0 -12 0 0 0 -6 0 0 -12 12 0 0 0 0 12 24 0 6 0 0 0 0 12 0 4 6 0 -12 -12 0 -12 0 0 -12 -6 0 -1 -6 -1 1 7 0 14 0 4 0 0 12 4 0 4 -6 -4 0 4 4 4 -8 -6 -3 -16 0 -4 0 0 0 -8 8 8 2 0 0 0 4 0 -2 -8 0 4 -4 0 -4 12 -8 -4 0 -16 0 0 -8 -12 2 0 -2 -8 0 -3 4 2 0 -12 0 0 0 0 -4 2 -12 -4 0 0 4 -8 0 0 8 -8 0 -4 4 8 8 4 -4 -8 0 4 0 0 -4 0 0 0 2 16 -8 -16 4 -12 8 12 0 -4 8 8 0 -8 0 -8 0 8 0 0 0 -4 4 0 -4 4 -8 -4 0 2 0 -12 0 -4 0 0 -12 0 -8 0 8 0 0 -4 0 0 0 0 0 4 8 8 0 0 0 4 0 16 -8 -16 8 0 -8 0 8 0 -4 12 4 8 0 0 -4 0 0 -4 -8 0 -8 0 12 4 -12 -4 -2 0 4 0 0 12 4 0 -2 8 4 -8 0 0 0 0 4 8 8 0 0 4 0 0 12 -2 -4 -4 -4 4 8 -8 0 12 -12 0 0 0 -2 8 0 2 4 16 0 12 3 0 4 -8 0 -2 0 8 -8 6 16 3 -4 0 -8 0 0 0 -4 0 8 -4 0 -2 -4 4 8 -8 0 0 0 0 4 0 8 2 -4 0 0 0 4 -4 0 6 0 -8 -4 -4 0 -4 0 -8 -6 0 -1 -6 -1 1 7 0 10 0 8 0 4 4 0 0 12 -6 4 0 -4 0 0 4 -6 -3 -8 0 4 -8 0 4 -16 0 -4 -2 0 0 4 -4 0 2 0 0 -8 8 8 4 -12 -8 4 0 -8 0 -8 4 -12 -2 0 2 -16 0 -3 -8 2 0 12 -4 -8 0 0 0 2 0 -4 -12 0 -4 0 0 0 -4 0 8 8 -4 8 0 4 4 -4 0 8 0 0 -4 0 8 0 2 -8 16 8 -4 12 -16 -12 8 4 0 8 -8 -8 -4 0 -12 4 0 0 0 4 -4 0 -8 -4 0 -4 0 2 0 0 -8 0 0 0 -12 0 0 0 0 0 -8 -4 0 0 0 0 0 -4 0 0 12 8 -8 0 0 -8 16 8 -16 0 0 8 0 -8 -8 12 8 4 0 0 4 0 0 4 0 8 -4 0 -12 -4 12 4 -2 0 -4 0 4 0 4 0 -2 8 4 -8 0 0 0 0 -4 16 0 12 8 0 0 0 12 2 4 4 8 -8 -4 4 0 -12 12 0 0 -8 -2 0 0 -2 -4 8 4 0 3 8 4 0 0 -2 0 8 -8 6 8 3 4 8 0 0 -4 0 0 -4 16 0 0 2 8 -8 -4 4 0 0 0 0 -4 -8 0 -2 0 0 0 0 -4 -8 -4 6 0 -4 4 0 -4 -8 0 -4 -6 0 -1 -6 -1 1 7 4 4 2 8 8 0 -8 4 -2 0 0 0 8 4 -4 -4 4 0 -1 -8 -8 0 8 0 0 0 8 4 2 0 0 -8 -8 0 -2 0 0 0 0 -8 -8 0 0 -8 0 8 8 0 -4 -8 -2 0 2 0 -8 1 0 -4 8 0 -8 -8 -8 0 4 4 -4 0 0 -8 0 0 0 -8 -4 -8 8 0 8 0 -16 0 0 -4 8 -8 -4 0 0 -8 8 8 4 -8 0 -8 0 0 0 0 -8 8 0 0 8 0 8 8 0 -4 -4 8 -4 8 0 4 -8 -8 0 0 -8 -4 -8 4 0 -4 -4 8 8 8 -16 0 -16 0 -8 0 -8 8 8 0 0 -8 16 -8 0 0 8 4 -8 8 0 8 0 -8 16 8 0 -8 8 -8 8 4 4 4 8 -4 -8 0 0 -8 4 4 0 0 0 0 -4 -8 -8 4 -8 -4 0 8 4 0 0 0 0 0 8 -8 8 0 8 0 0 -4 8 8 8 2 -8 0 0 0 4 4 0 0 0 0 0 -8 4 0 8 -2 8 -8 8 4 -1 8 0 16 -8 -4 0 0 0 0 8 1 8 -8 -16 0 0 0 4 8 0 4 8 -2 0 0 -4 -4 0 8 0 0 0 8 0 2 -4 -8 4 -8 0 8 0 0 2 12 -8 -4 -8 -8 -2 -12 8 -4 1 -8 -1 1 7 4 0 6 8 0 0 -8 0 -6 -8 8 0 32 -4 0 0 8 -8 3 16 -32 0 -16 12 0 16 -16 8 -2 -8 -4 0 0 8 -2 -16 8 8 8 -16 0 16 0 -16 -12 -16 0 0 -8 16 2 8 2 -16 0 -3 -8 -8 -32 16 0 16 -32 -8 0 -4 0 -16 0 0 0 16 -8 32 -8 0 16 -8 -16 0 16 -4 4 8 -24 8 -4 16 -4 -24 -16 32 8 16 16 16 4 -16 16 -16 -16 16 -16 0 -16 0 0 0 0 8 12 -32 4 0 0 -4 8 16 -16 16 0 8 32 0 0 0 4 0 -16 0 -16 -16 -16 -16 -16 4 -32 24 -32 16 16 0 16 0 0 0 16 0 32 -16 -16 -16 -16 0 16 16 16 16 -8 16 -8 -8 -12 -4 -16 4 24 0 16 16 -8 -4 16 -4 16 -4 -8 0 -16 4 0 0 -16 0 -8 0 4 0 -16 -8 32 32 0 16 0 0 0 0 -32 0 -16 -2 16 0 8 8 8 8 12 -16 -16 8 -4 -16 8 -16 0 -2 16 16 0 0 3 -16 16 -16 0 8 8 0 0 8 -16 -3 0 16 16 -8 0 8 0 0 -16 0 32 2 -8 -8 -8 -8 -12 0 -8 4 0 16 16 2 0 -32 4 0 0 8 0 -8 6 8 0 0 0 -8 -6 -8 8 -4 1 -8 -1 1 7 0 6 0 12 0 0 -4 12 0 12 -6 12 0 -12 -4 12 0 -6 -3 0 0 12 0 0 0 -24 -24 0 -6 0 0 0 -12 0 6 24 0 12 -12 0 12 12 24 12 0 0 0 0 0 -12 -6 0 6 -24 0 -3 12 -6 0 -12 0 0 0 0 -12 -6 12 12 0 0 -12 24 0 0 0 -24 0 -12 -12 -24 -24 -12 -4 0 0 12 0 0 12 0 0 0 -6 0 -24 0 4 -12 24 12 0 12 -24 -24 0 24 0 -24 0 0 0 0 0 12 -12 0 -12 -12 24 12 0 -6 0 12 0 -12 0 0 -12 0 24 0 -24 0 0 12 0 0 0 0 0 -12 -24 24 0 0 0 12 0 0 -24 0 24 0 24 0 -24 0 -12 12 12 0 0 0 12 0 0 12 24 0 0 0 12 4 -12 -4 6 0 -12 0 0 -12 -12 0 6 -24 -12 24 0 0 0 0 -12 24 24 0 0 12 0 0 12 6 12 12 -12 12 0 0 0 12 -12 0 0 0 6 -24 0 -6 -12 0 0 -12 3 0 -12 24 0 6 0 -24 24 6 0 3 12 0 24 0 0 0 -12 0 24 4 0 6 -12 12 0 0 0 0 0 0 -12 0 -24 -6 4 0 0 0 -12 -12 0 6 0 0 12 -12 0 -12 0 0 -6 0 -1 -6 -1 1 7 4 0 2 12 8 4 -8 8 -2 -8 0 8 8 -4 0 -8 0 0 -1 0 -8 -8 0 0 -4 -8 -16 0 -2 0 0 -4 0 0 2 8 0 4 4 16 0 0 0 8 0 0 -8 -8 0 -8 2 0 -2 8 8 1 -4 4 -8 0 4 0 8 0 -8 -4 0 0 -4 -8 -8 -8 0 -8 0 0 -16 -4 -8 0 8 0 0 -8 -8 -4 4 0 0 8 -16 -8 -4 0 -8 0 0 0 -8 0 0 -8 -8 0 -16 0 -4 0 4 -8 -4 8 -4 0 8 -4 -4 8 -8 0 8 4 8 0 8 8 -4 8 8 -8 8 0 8 0 0 0 8 -8 -8 0 0 0 -8 0 -4 -8 0 -8 -8 0 8 0 8 -8 -8 0 8 16 4 -8 4 8 4 4 -8 4 8 -8 8 16 8 4 0 0 0 0 4 8 8 -4 4 0 0 -8 -4 0 0 0 0 0 -8 8 0 -8 0 4 8 8 8 8 8 -2 8 8 4 4 0 0 0 0 0 0 0 16 -4 8 -8 2 -8 0 -4 0 -1 0 0 -8 8 4 0 0 0 0 0 1 0 0 8 0 4 0 8 4 8 0 8 2 -4 -4 0 0 0 8 0 0 8 -16 -8 -2 0 -8 4 -8 -8 12 -4 0 2 8 0 -8 -4 -12 -2 -8 8 -4 1 -8 -1 1 5 4 12 -2 -8 16 -8 16 -8 -2 0 4 -8 -16 -4 8 -8 8 4 3 16 -16 -8 -16 -4 -8 -16 32 8 -2 -8 12 8 -8 -24 -2 16 8 -8 -8 -16 -8 8 -16 8 -4 16 16 16 8 8 -2 -8 -2 -16 16 3 -8 4 -16 8 8 -16 -16 8 -8 16 24 8 -24 16 -8 16 -24 -16 8 -16 -16 -8 8 -16 16 -4 4 8 8 -8 12 16 -4 8 -16 -16 4 16 -16 16 4 8 -16 8 -16 8 16 -16 -16 -16 8 -16 -24 8 -4 -16 4 -8 -8 12 -8 8 16 8 16 4 -16 24 16 -8 4 16 8 16 16 -16 16 -16 -16 -4 -16 8 -16 -16 -16 -8 16 -16 -24 16 -16 -8 -16 16 -16 16 -16 16 16 -16 16 -16 -8 8 -8 8 -4 4 8 12 8 -8 16 -16 8 4 8 4 8 4 4 16 8 12 8 24 8 16 4 -16 -4 -16 16 -8 -16 -16 -8 -16 -16 -24 16 -8 -16 16 8 -2 8 -8 -8 -8 8 8 -4 8 8 8 12 -16 4 16 16 -2 8 16 8 24 3 -16 8 16 16 4 -24 -16 -16 4 16 3 -8 -16 16 -24 -8 -8 -8 8 -16 8 -16 -2 -8 -8 8 8 -4 16 8 12 -8 -16 16 -2 8 -16 4 16 -8 -8 -8 4 -2 8 -8 -8 8 -8 -2 8 4 4 1 4 1 1 5 4 4 2 -4 0 -4 0 -8 2 -8 4 0 0 4 0 -8 0 4 -1 0 0 0 -8 0 -4 8 0 0 -2 0 0 -4 0 0 2 0 0 -4 -4 -8 0 0 0 8 0 0 0 8 0 -8 -2 0 2 8 0 -1 -4 0 0 0 -4 -8 0 0 8 0 0 0 4 0 0 0 0 0 0 0 -8 -4 -8 0 0 0 0 0 -8 -4 4 0 0 8 8 0 0 0 8 0 0 0 8 0 8 8 0 0 8 0 -4 0 4 0 -4 0 -4 0 0 -4 -4 -8 0 0 0 0 0 0 8 8 -4 0 -8 0 0 0 0 0 8 0 0 8 0 0 0 0 0 0 4 8 8 8 0 0 8 0 8 0 0 8 0 8 -4 -8 -4 0 -4 -4 -8 -4 -8 0 0 8 0 -4 0 0 0 0 0 0 8 4 -4 0 0 0 0 0 0 0 0 0 0 0 0 8 0 4 8 8 0 0 -8 -2 -8 0 -4 -4 0 0 0 0 0 0 0 -8 0 0 0 2 8 0 -4 0 -1 -8 0 0 0 0 0 0 0 4 0 -1 0 -8 0 0 -4 0 -8 -4 8 0 0 -2 -4 -4 0 0 0 0 0 0 0 -8 0 2 0 0 4 0 0 -4 -4 4 2 0 0 -8 -4 -4 2 0 4 4 1 4 1 1 5 4 4 -2 0 0 0 0 0 -2 0 4 0 -16 4 0 0 0 4 3 0 -16 0 0 -4 0 0 0 0 -2 8 -4 0 0 -8 -2 0 -8 0 0 0 0 8 0 -8 -4 0 0 0 0 8 -2 8 -2 0 0 3 0 -4 16 8 0 0 16 -8 0 -8 0 -8 0 0 0 0 -8 -16 0 0 0 0 -8 0 0 -4 4 0 -8 0 -4 16 -4 -8 0 16 -4 0 0 0 4 8 0 8 0 -8 0 0 0 0 0 0 0 0 -4 -16 4 0 0 -4 0 -8 0 -8 0 -4 16 0 0 0 4 0 8 0 0 16 0 16 0 -4 16 -8 16 16 16 0 0 0 0 0 0 0 -16 0 0 0 0 0 0 0 0 0 0 8 0 0 -4 4 -8 -4 -8 0 0 0 0 4 8 4 8 4 -4 0 -8 -4 0 0 -8 0 -4 0 -4 0 16 8 16 16 0 0 0 0 0 0 -16 0 8 -2 -8 0 0 0 0 0 -4 8 8 -8 -4 0 -4 0 0 -2 -8 0 0 0 3 0 -8 0 0 -4 -8 0 0 4 0 3 0 0 0 -8 0 8 0 0 0 0 -16 -2 0 0 0 0 -4 0 -8 -4 0 0 0 -2 0 -16 4 0 0 0 0 4 -2 0 0 0 0 0 -2 0 4 4 1 4 1 1 5 0 4 2 0 0 0 0 0 2 0 4 -8 0 -8 0 0 0 4 3 0 0 -8 0 -4 0 0 0 0 -6 -8 4 0 -8 0 -6 0 0 0 0 0 -8 -8 16 -8 -4 0 0 0 0 8 -6 -8 -6 0 0 3 0 4 0 -8 0 0 0 0 0 8 0 8 0 0 -8 0 0 0 0 0 0 0 -8 16 0 12 -4 0 0 0 -4 0 12 0 0 0 4 0 0 0 -4 -8 0 -8 0 -8 0 16 0 16 0 0 0 0 4 0 0 -8 -8 -4 0 -8 0 8 0 4 0 0 0 0 0 0 8 0 0 0 0 16 0 12 0 0 0 16 0 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 4 0 -8 -4 0 -8 0 0 0 0 -8 -4 -8 -4 4 0 -8 -4 0 0 8 0 4 16 12 16 0 -8 0 0 -8 0 0 0 0 0 0 0 8 -6 -8 -8 0 0 0 0 -4 -8 -8 0 4 0 4 0 0 -6 -8 0 0 0 3 0 8 0 0 4 0 16 16 4 0 3 -8 0 0 0 0 -8 0 0 0 0 0 -6 0 0 0 0 -4 0 0 4 -8 0 0 -6 0 0 0 0 -8 0 0 4 2 0 -8 0 0 0 2 0 4 0 1 4 1 1 5 0 12 -2 -4 0 -4 8 0 -2 0 -4 -8 -8 8 0 0 0 -4 -1 -8 -8 -8 8 0 -4 0 0 -8 2 0 0 4 8 0 -2 0 0 4 -4 -8 0 0 8 0 0 -8 -8 -8 0 0 2 0 -2 0 8 -1 4 0 0 0 4 8 0 0 0 0 0 0 4 0 0 0 0 8 -8 0 -8 -4 0 -8 0 0 0 0 0 4 4 0 0 0 0 0 0 8 0 8 0 0 0 0 0 0 -8 -8 0 8 4 0 4 0 4 8 0 0 0 -4 4 0 -8 0 -8 0 0 0 -8 0 0 0 0 8 8 0 8 0 0 0 0 0 0 0 0 0 8 0 4 -8 0 0 8 8 0 8 0 0 8 0 -8 0 4 0 4 0 4 0 0 -4 0 0 -8 0 0 0 0 0 0 0 0 8 0 4 4 0 0 -8 0 8 0 -8 0 0 0 0 0 0 0 4 -8 0 8 0 0 2 0 0 4 -4 0 -8 0 0 0 0 0 -8 0 0 8 -2 0 -8 4 0 -1 8 0 0 -8 0 0 8 -8 -4 -8 -1 8 8 0 0 -4 0 0 4 0 0 -8 2 4 -4 0 -8 0 0 0 0 -8 -8 0 -2 0 -8 0 0 -8 -4 -4 -4 -2 8 8 0 4 -4 -2 8 4 0 1 4 1 1 5 0 8 -2 0 0 0 8 -4 -2 0 -4 0 -8 0 4 -4 -4 -4 -1 0 -8 0 0 0 0 -8 8 4 -2 0 0 0 0 0 2 -8 0 -8 0 0 8 0 -8 0 0 0 8 0 -4 0 -2 0 2 -8 -8 -1 -8 0 0 0 0 0 0 0 -4 0 -4 0 0 0 -8 -8 0 8 4 8 0 0 0 8 8 0 0 -4 0 8 -4 0 0 0 -8 0 0 0 8 0 0 0 8 0 8 0 0 8 -8 -8 0 8 0 -4 4 8 0 8 -8 4 8 0 0 0 8 0 0 -4 0 -4 0 0 0 -8 0 0 0 0 8 0 0 0 0 0 0 8 0 8 0 0 8 -4 8 0 8 0 8 0 0 8 0 -8 8 0 8 -4 4 0 0 4 0 -8 0 -8 -4 0 0 0 0 0 0 -8 0 -4 0 -4 0 8 0 -8 0 8 0 0 0 0 8 -8 8 0 0 -4 8 0 0 -2 0 -8 -8 0 -4 4 0 0 0 0 0 0 0 -8 -8 2 0 0 0 -4 -1 0 0 8 8 0 0 -8 8 -4 0 -1 0 0 8 0 0 0 -4 0 -8 4 -8 -2 -8 0 -4 4 0 0 0 0 0 0 -8 2 4 -8 0 0 0 0 0 -4 -2 4 0 -4 0 0 -2 4 4 0 1 4 1 1 5 4 2 0 0 8 -4 -4 -4 0 4 2 -4 -8 0 -4 4 0 -2 1 0 8 4 0 -4 4 0 8 0 -2 0 4 -4 -4 -8 -2 0 0 -8 -8 -16 -4 -4 -8 -4 4 0 8 8 0 4 2 0 2 0 -8 -1 8 -2 8 -4 -4 0 -8 0 4 2 4 4 -4 8 -12 0 8 -8 0 -8 16 8 -4 -8 -16 0 0 8 0 0 0 0 0 0 16 8 2 0 0 0 0 4 0 4 0 4 -16 8 -16 8 4 8 4 -8 0 8 -4 4 12 0 0 4 16 -4 -8 -6 -8 -4 -8 -4 4 -8 -4 8 0 0 0 0 0 0 8 0 -8 0 0 4 0 8 4 -8 0 -4 8 0 0 0 0 -8 0 0 16 16 0 -4 0 8 0 4 4 0 0 12 -16 -16 -8 -4 4 0 4 0 2 8 4 0 4 -4 -4 -8 -6 8 0 8 0 0 -8 8 -4 0 -8 -4 8 4 -8 8 4 2 -4 -12 8 8 0 0 4 -4 -4 0 -4 16 -2 0 -8 2 -4 0 -4 4 -1 0 4 -16 8 6 8 -8 -8 -2 0 1 -4 0 16 -8 4 0 4 -4 0 -4 8 -2 -8 -8 0 0 -4 -8 0 4 4 -16 0 -2 4 -8 -4 8 -4 0 -4 2 0 -8 4 -4 4 0 0 8 -6 4 -1 6 1 1 5 12 -4 6 -8 16 -8 -16 -24 6 -32 4 8 16 20 -8 -24 -8 4 3 -16 16 8 -16 12 -8 -16 0 -8 6 24 12 -24 8 24 6 -16 24 -8 -8 -16 8 8 16 8 12 -16 16 -48 -8 8 6 24 6 -16 16 3 -8 4 16 8 -24 -16 16 24 -24 16 -24 8 -24 16 8 -16 24 16 -8 -48 -16 -8 8 16 -16 12 4 -8 24 -8 12 48 12 24 -16 16 4 -16 -16 -16 4 8 -16 8 -16 8 -16 16 -16 16 -24 -48 -24 -8 12 16 12 8 8 12 -8 8 -16 8 16 4 16 -24 -48 -24 12 16 8 16 -16 16 -16 48 -16 12 16 24 16 48 16 8 -16 -48 -24 -48 -16 -24 16 -16 -16 -16 -16 16 -16 -16 -16 -16 -8 8 -8 -8 12 12 8 12 24 8 -16 -16 -8 12 8 4 8 4 4 16 8 12 -24 -24 8 16 4 16 12 16 48 24 16 16 8 -16 -48 -24 -48 -24 16 16 8 6 8 8 -8 -8 -8 -8 12 8 8 24 12 -16 4 -16 16 6 8 -16 -24 -24 3 -16 8 -16 16 4 24 16 16 4 -16 3 8 -16 -16 24 -8 24 -24 -24 -16 -8 16 6 -8 -8 -8 -8 12 16 24 12 8 -16 -16 6 -8 16 12 16 8 -8 -8 4 6 -8 8 -24 -24 -8 6 -8 4 12 1 4 1 1 5 4 0 2 0 0 0 -8 -4 2 -8 4 0 0 4 -4 -4 -4 4 -1 8 0 0 0 0 0 0 -8 -4 2 0 0 -8 0 0 -2 -8 0 0 0 0 0 0 0 -8 0 8 0 0 -4 -8 2 0 -2 0 0 -1 0 0 0 0 8 0 0 0 -4 0 4 0 0 0 0 -8 0 0 -4 8 0 0 8 0 -8 0 0 -4 8 0 -4 0 0 -8 0 0 0 8 0 8 0 0 0 0 0 -8 8 0 0 0 8 8 0 -4 -4 0 -4 0 0 4 0 8 8 0 0 0 0 4 0 -4 -4 0 -8 0 8 0 8 0 0 0 0 -8 0 0 0 0 8 8 0 0 0 -4 0 8 0 8 0 0 8 0 8 0 0 -8 0 -4 -4 -4 8 4 8 0 8 0 -4 -4 0 0 0 0 0 0 -8 -4 8 4 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 -4 0 0 -8 2 8 0 0 0 -4 -4 0 0 0 0 0 0 0 -8 0 -2 -8 8 8 4 -1 0 0 -8 0 0 0 0 0 4 8 -1 0 0 -8 0 0 0 -4 -8 0 -4 0 2 0 0 -4 -4 0 0 0 0 0 0 -8 -2 -4 0 4 0 0 0 0 4 2 -4 0 -4 -8 0 2 -4 4 4 1 4 1 1 5 8 -6 4 0 8 -4 -4 -12 -4 -12 10 4 8 -4 4 12 -8 -10 1 16 -8 -4 -16 4 4 16 -24 -8 2 8 4 12 -4 8 2 -16 8 -8 -8 -16 12 -4 -8 -4 -4 -16 -8 -8 8 -4 -2 -8 -2 -16 -8 -1 8 -2 -8 -4 -4 16 -8 -8 -4 -6 -4 -4 -4 24 12 16 -8 24 8 -8 16 8 -4 -8 16 0 0 -16 0 16 0 0 0 0 0 8 2 0 0 0 0 4 0 4 0 4 0 8 0 8 4 8 4 16 0 -24 0 -12 -12 0 -16 4 0 4 8 2 8 4 8 4 0 -24 4 8 0 0 0 0 0 0 8 0 8 0 0 -12 0 8 4 8 0 4 -24 0 0 0 0 -24 0 0 0 0 16 4 -16 -16 0 0 4 0 0 -12 0 0 16 0 4 0 4 0 2 8 4 0 4 4 4 8 2 8 0 8 0 -8 -8 -8 12 -16 -8 -4 -8 -4 24 24 -4 -2 -4 12 8 8 8 8 -4 -4 -4 -8 -4 16 -2 16 -8 -2 -4 -16 -4 -4 -1 16 -4 16 -8 -2 -8 -8 -8 -10 16 1 -4 -16 -16 8 4 8 12 12 16 4 -8 2 -8 -8 -8 -8 4 -8 8 4 -4 -16 -16 2 -4 8 -8 8 4 0 -4 10 -4 0 4 -12 -12 0 4 0 -6 8 -1 6 1 1 5 4 -4 -2 8 16 8 -16 8 -2 0 4 -8 -16 -4 -8 8 -8 4 3 -16 -16 -8 16 -4 8 16 0 -8 -2 -8 12 -8 -8 -24 -2 -16 8 8 8 16 -8 8 -16 8 -4 -16 16 -16 -8 8 -2 -8 -2 16 16 3 8 4 -16 8 -8 16 -16 8 8 16 -24 8 24 16 -8 -16 -24 -16 -8 16 16 8 8 -16 -16 -4 4 -8 8 8 12 16 -4 8 16 -16 4 -16 16 -16 4 8 16 8 16 8 -16 -16 16 -16 -8 16 24 -8 -4 -16 4 -8 -8 12 8 8 -16 8 16 4 -16 -24 -16 8 4 16 8 16 -16 -16 -16 -16 16 -4 -16 8 -16 -16 -16 -8 -16 16 24 -16 16 8 -16 -16 16 -16 16 16 -16 16 -16 16 8 8 8 -8 -4 4 8 12 8 -8 -16 16 -8 4 8 4 8 4 4 16 8 12 -8 -24 8 16 4 -16 -4 -16 16 -8 -16 -16 -8 16 16 24 -16 8 -16 16 8 -2 8 -8 8 8 -8 -8 -4 8 8 8 12 16 4 -16 16 -2 8 -16 -8 -24 3 16 8 -16 16 4 -24 -16 -16 4 -16 3 -8 16 -16 -24 8 -8 8 -8 16 -8 -16 -2 8 8 -8 -8 -4 16 8 12 -8 16 -16 -2 -8 -16 4 16 -8 8 8 4 -2 -8 -8 8 -8 8 -2 -8 4 4 1 4 1 1 5 0 4 -2 4 0 4 0 0 -2 0 -4 0 -8 0 0 0 -8 -4 -1 -8 -8 0 -8 0 4 0 0 0 2 0 0 -4 0 0 -2 0 0 -4 4 8 -8 0 -8 0 0 -8 -8 8 -8 0 2 0 -2 0 8 -1 -4 0 0 0 -4 -8 0 0 0 0 0 0 -4 0 8 0 0 8 0 0 8 4 0 8 0 0 0 8 0 -4 4 0 0 0 0 0 0 8 0 8 0 0 0 0 0 0 8 8 0 -8 -4 0 -4 8 4 8 0 -8 8 -4 -4 0 8 0 -8 0 0 0 8 0 0 0 0 8 -8 0 -8 0 0 0 0 0 0 0 0 -8 -8 0 -4 8 0 0 8 8 0 8 0 0 -8 0 8 0 -4 0 -4 8 4 0 0 -4 0 8 8 0 8 0 0 0 0 0 0 8 0 4 -4 0 0 -8 0 -8 0 8 0 0 0 0 -8 0 0 -4 8 0 8 0 0 2 0 8 -4 4 -8 0 0 0 0 0 0 8 0 0 8 -2 0 -8 -4 0 -1 -8 0 0 -8 0 0 -8 8 -4 -8 -1 0 -8 0 0 4 0 0 -4 0 0 -8 2 -4 4 -8 0 0 0 0 0 0 8 0 -2 0 -8 0 0 0 4 4 -4 -2 0 0 0 -4 4 -2 0 4 0 1 4 1 1 5 0 0 -2 8 0 0 -8 4 -2 8 -4 8 -8 -8 -4 4 4 -4 -1 0 -8 8 0 0 0 -8 -8 -4 -2 0 0 0 -8 0 2 8 0 0 -8 0 0 0 8 0 0 0 8 0 4 0 -2 0 2 -8 -8 -1 0 0 0 0 0 0 0 0 4 0 4 0 0 0 0 8 0 8 -4 -8 0 -8 0 -8 -8 0 0 4 0 0 -4 0 0 0 8 0 0 0 8 0 0 0 8 0 -8 0 0 -8 8 8 0 -8 0 4 4 8 0 0 0 4 0 0 0 0 8 0 0 4 0 4 0 0 0 -8 0 0 0 0 -8 0 0 0 0 0 0 0 0 -8 0 0 -8 4 8 0 8 0 8 0 0 -8 0 8 0 0 0 4 4 0 0 4 0 0 0 8 4 0 0 0 0 0 0 -8 0 -4 0 4 0 8 0 8 0 -8 0 0 0 0 0 -8 -8 0 0 4 8 0 0 -2 0 0 0 -8 4 -4 0 0 0 0 0 0 0 8 -8 2 0 0 0 4 -1 0 0 -8 8 0 0 8 -8 -4 0 -1 -8 0 -8 0 0 0 4 0 -8 -4 -8 -2 0 -8 4 -4 0 0 0 0 8 0 8 2 -4 -8 0 0 8 8 0 -4 -2 -4 -8 4 0 8 -2 -4 4 0 1 4 1 1 5 4 -6 0 8 8 4 -4 4 0 -12 2 4 -8 -8 4 -4 -8 -2 1 0 8 -4 0 -4 -4 0 -24 -8 -2 0 4 4 4 -8 -2 0 0 0 0 16 -12 -4 -8 -4 4 0 -8 -8 8 4 2 0 2 0 8 -1 0 6 -8 -4 4 0 8 0 -4 -6 -4 4 4 8 -4 0 8 -8 8 8 -16 0 -4 -8 16 0 0 0 0 -8 0 0 0 0 0 -8 -6 0 0 0 0 4 0 4 -16 4 0 8 0 8 -4 -8 -4 0 0 8 -4 12 4 0 8 4 0 -4 8 2 8 4 8 4 4 -8 -4 -8 -16 0 16 0 16 0 -8 0 8 0 0 12 -16 -8 -4 8 -16 4 8 0 0 0 0 -8 16 16 0 0 -8 -4 8 0 0 4 4 0 0 4 0 0 0 -4 4 0 4 0 -6 -8 4 0 -4 4 -4 8 2 8 0 8 0 0 8 -8 -12 0 8 4 -8 -4 -8 8 4 2 -4 -4 0 0 8 8 4 -4 -4 0 -4 -16 6 0 8 2 -4 0 4 -4 -1 0 4 16 -8 -2 8 -8 -8 -2 0 1 4 0 -16 -8 -4 0 -4 4 0 4 8 -2 0 0 -8 -8 -4 -8 0 4 -4 16 0 -2 -4 -8 -4 8 4 -8 4 2 0 0 -4 4 -4 8 0 0 -6 4 -1 6 1 1 5 4 4 -2 0 -16 0 0 0 -2 0 4 8 -16 12 0 0 0 4 3 0 -16 8 0 -4 0 0 -16 0 6 -8 -4 0 8 8 6 0 -24 0 0 0 8 8 16 8 -4 0 -16 0 0 8 6 -8 6 0 -16 3 0 4 -16 8 0 0 -16 -24 0 0 0 8 0 -16 8 0 8 -16 0 0 0 0 8 16 0 12 4 0 8 0 -4 16 12 8 0 -16 4 0 0 0 4 8 0 8 0 8 0 16 0 16 0 0 0 0 -4 -16 4 8 8 -4 0 8 0 8 -16 4 -16 0 0 0 4 -16 8 -16 0 -16 0 -16 0 12 -16 8 -16 -16 -16 8 0 0 0 0 0 0 -16 0 0 0 0 -16 0 0 0 0 0 8 0 0 -4 4 8 -4 8 8 0 0 0 4 8 4 8 4 4 -16 8 -4 0 0 8 -16 4 16 12 16 16 -8 -16 -16 8 0 0 0 0 0 -16 -16 8 6 8 8 0 0 0 0 -4 8 8 -24 -4 0 4 0 -16 6 8 0 0 0 3 0 8 0 -16 4 8 16 16 4 0 3 8 0 0 8 0 -8 0 0 0 0 -16 6 0 0 0 0 -4 -16 -24 -4 8 0 0 6 0 -16 4 -16 8 0 0 4 -2 0 8 0 0 0 -2 0 4 4 1 4 1 1 5 0 4 2 0 -16 0 0 0 2 0 4 0 0 0 0 0 0 4 3 0 0 0 0 -4 0 0 -16 0 2 -8 -12 0 0 0 2 0 0 0 0 0 0 -8 0 8 -4 0 16 0 0 8 2 -8 2 0 16 3 0 -4 0 -8 0 0 0 0 0 -16 0 -8 0 -16 0 0 0 0 0 0 0 0 8 0 0 -4 -4 0 0 0 12 0 -4 0 0 0 -4 0 0 0 -4 -8 0 -8 0 8 0 0 0 0 0 0 0 0 4 0 0 0 0 12 0 8 0 -8 16 -4 0 0 0 0 0 -16 8 16 0 0 0 16 0 -4 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 -16 0 0 0 0 0 8 0 0 4 0 8 12 0 0 0 0 0 0 -8 -4 -8 -4 -4 16 8 12 0 0 -8 16 -4 0 -4 0 0 -8 0 0 0 0 0 0 0 0 0 -16 8 2 8 0 0 0 0 0 -4 -8 -8 0 -12 0 -4 0 16 2 8 0 0 0 3 0 -8 0 16 -4 0 0 0 4 0 3 0 0 0 0 0 -8 0 0 0 0 0 2 0 0 0 0 -4 -16 0 -12 0 0 0 2 0 0 0 -16 0 0 0 4 2 0 0 0 0 0 2 0 4 0 1 4 1 1 5 4 -2 0 4 0 0 -4 0 0 -4 2 4 -8 0 0 0 -4 -2 1 0 8 -4 0 -4 0 0 0 -4 2 0 -4 0 -4 0 2 0 -8 -4 -4 0 4 -4 0 4 4 0 -8 0 4 4 -2 0 -2 0 -8 -1 4 -2 0 -4 0 0 0 8 0 2 0 -4 0 -16 4 0 0 -8 4 0 0 4 4 0 0 0 0 4 0 -4 0 0 0 0 -8 0 2 0 0 0 0 4 0 4 8 -4 8 0 8 0 0 0 0 -4 0 8 4 -4 -4 0 4 -4 -8 4 8 2 0 0 0 0 -4 16 -4 8 8 0 -8 0 -8 0 0 0 0 0 0 -4 8 0 0 0 8 0 8 0 0 0 0 16 -8 -8 -8 -8 -4 -4 4 4 0 -4 -4 0 0 -4 8 8 -4 4 4 0 4 0 2 8 -4 0 0 0 4 8 2 0 0 0 0 0 0 0 4 0 0 0 0 0 -8 -16 4 -2 4 4 4 4 4 4 4 -4 -4 8 4 0 -2 0 -8 -2 4 0 0 0 -1 0 -4 0 -8 -2 0 0 0 -2 0 1 -4 0 0 0 0 0 0 0 0 0 8 2 -4 -4 -4 -4 -4 0 -8 -4 -4 0 0 2 0 -8 -4 0 4 -4 0 2 0 -4 4 0 0 4 0 4 -6 4 -1 6 1 1 5 -4 4 6 0 -16 0 0 0 6 0 4 -8 16 -12 0 0 0 4 3 0 16 -8 0 12 0 0 -16 0 -2 -8 -4 0 -8 -8 -2 0 -8 0 0 0 -8 8 -16 8 12 0 -16 0 0 8 -2 -8 -2 0 -16 3 0 4 16 8 0 0 16 -8 0 0 0 8 0 -16 -8 0 -8 16 0 0 0 0 8 -16 0 -4 4 0 24 0 -4 -16 -4 24 0 16 4 0 0 0 4 8 0 8 0 8 0 -16 0 -16 0 0 0 0 12 16 -4 -8 -8 -4 0 8 0 8 -16 4 16 0 0 0 -4 -16 8 -16 0 16 0 -16 0 -4 16 24 16 -16 16 -8 0 0 0 0 0 0 16 0 0 0 0 -16 0 0 0 0 0 8 0 0 12 -4 8 -4 24 -8 0 0 0 -4 8 4 8 4 4 -16 8 -4 0 0 8 -16 4 -16 -4 -16 -16 -8 16 16 -8 0 0 0 0 0 16 -16 8 -2 8 -8 0 0 0 0 12 8 8 -8 -4 0 4 0 -16 -2 8 0 0 0 3 0 8 0 -16 4 -8 -16 -16 4 0 3 -8 0 0 -8 0 -8 0 0 0 0 16 -2 0 0 0 0 12 -16 -8 -4 -8 0 0 -2 0 16 -4 -16 -8 0 0 4 6 0 -8 0 0 0 6 0 4 -4 1 4 1 1 5 -4 8 2 0 -8 0 0 -4 2 8 -4 -8 8 -4 -4 -4 12 -4 -1 -8 8 -8 8 0 0 0 -24 -4 2 0 0 8 0 0 -2 0 0 -8 8 -8 0 -8 0 0 0 -8 8 0 12 0 2 0 -2 0 -8 -1 -8 0 -8 8 -8 8 8 0 -4 -8 4 8 0 8 8 0 0 -8 -4 8 -8 8 0 0 -16 0 0 4 -8 0 -4 0 0 8 -8 8 0 -8 0 -8 0 8 0 -8 8 0 16 0 -8 0 -8 8 0 4 -4 -8 4 0 8 4 0 0 16 8 8 -8 -8 4 0 -4 4 8 0 -8 0 0 0 0 8 0 8 8 -8 0 0 0 0 8 0 0 8 -4 -8 -8 0 -8 0 8 0 8 16 -8 0 0 0 4 -4 4 0 4 -8 8 16 -8 4 4 8 0 -8 0 0 -8 0 -4 -8 4 8 8 -8 0 0 0 0 0 8 -8 0 0 8 0 0 -4 -8 8 0 2 0 8 -8 8 12 -4 0 8 -8 0 0 -8 0 0 -8 -2 0 -8 -8 4 -1 8 8 -16 8 -8 0 0 0 -4 -8 -1 0 8 -16 0 0 0 -4 8 0 -4 8 2 -8 8 12 -4 0 -8 0 0 -8 -8 0 -2 -4 8 -4 -8 -8 0 0 -4 2 4 0 -4 8 0 2 4 4 -4 1 4 1 1 5 -4 8 2 0 -8 0 8 4 2 -8 -4 -8 8 -4 4 4 -4 -4 -1 -8 8 -8 -8 0 0 0 -8 12 2 0 0 -8 0 0 -2 -16 0 8 -8 8 0 8 0 0 0 -8 8 0 -4 0 2 0 -2 0 -8 -1 8 8 -8 -8 8 -8 8 0 4 0 -4 -8 0 8 8 -16 0 -8 12 -8 8 -8 0 0 0 0 0 4 -8 0 -4 0 0 8 8 8 8 -8 0 -8 0 -8 0 8 -8 0 0 0 8 0 8 -8 0 4 -4 -8 4 0 8 4 0 0 0 -8 8 0 -8 -4 0 4 4 8 0 -8 16 0 16 0 -8 0 8 8 -8 0 0 0 16 -8 0 0 -8 4 -8 -8 0 -8 0 8 16 -8 0 8 0 0 0 4 -4 4 0 4 -8 8 0 8 4 4 -8 0 8 0 8 -8 0 -4 8 -4 -8 8 0 0 0 0 0 0 8 -8 0 0 -8 0 0 4 -8 8 0 2 0 8 8 -8 -4 12 0 -8 8 0 0 8 8 -16 -8 -2 0 -8 8 -4 -1 -8 -8 0 8 0 0 0 0 -4 -8 -1 0 -8 0 0 0 0 4 -8 0 4 8 2 8 -8 -4 12 0 -8 0 0 -8 8 -16 -2 4 8 -4 -8 -8 0 0 -4 2 4 0 4 -8 0 2 4 4 -4 1 4 1 1 5 -4 4 2 4 -8 -4 0 8 2 0 -4 0 8 -12 0 8 -8 -4 -1 0 8 0 0 0 -4 -8 -16 8 -2 0 0 -4 -8 0 2 8 0 12 -4 -16 8 8 0 0 0 0 -8 8 -8 0 -2 0 2 -8 8 -1 12 -8 8 -8 -4 0 -8 0 -8 0 0 8 4 8 0 8 0 -8 8 0 -16 -4 0 0 -8 0 0 0 8 4 4 0 0 -8 0 -8 -8 0 -8 0 0 -8 -8 8 16 0 8 0 0 0 -4 0 4 0 -4 -8 4 8 0 -4 4 0 8 8 -8 0 8 0 8 -8 4 8 0 8 -8 0 -8 0 16 0 -8 -8 8 0 0 8 -8 0 4 8 16 -8 -8 0 -8 0 -8 8 -8 16 8 0 4 0 4 0 -4 4 0 -4 8 0 8 0 0 4 -8 0 8 0 -8 8 0 4 -4 0 8 -8 0 0 0 0 0 0 -8 8 8 -8 0 4 8 -8 -8 8 0 -2 0 0 12 -4 -8 8 0 -8 8 0 0 -16 -8 8 8 2 0 0 -4 0 -1 0 8 -8 -8 0 0 0 0 -4 0 -1 -8 0 -8 0 -4 0 8 -4 -8 0 8 -2 12 -4 -8 8 0 -8 0 0 0 -16 8 2 0 8 -4 -8 0 4 -4 -4 2 0 -8 8 -4 4 2 0 4 -4 1 4 1 1 5 -4 4 2 4 -8 4 0 -8 2 8 -4 0 8 -12 0 -8 8 -4 -1 0 8 0 -16 0 4 -8 0 -8 -2 0 0 4 -8 0 2 -8 0 -4 12 0 8 -8 0 0 0 0 -8 -8 8 0 -2 0 2 -8 8 -1 -4 0 8 8 4 -16 -8 0 8 8 0 -8 -4 8 0 -8 0 -8 -8 0 0 12 0 0 8 0 0 0 8 4 4 0 0 -8 16 -8 0 0 -8 0 0 8 -8 -8 0 0 -8 0 16 0 4 0 -4 0 -4 -8 4 8 0 -4 4 0 -8 -8 -8 8 8 0 -8 8 4 8 0 8 8 0 8 0 0 0 -8 -8 8 0 0 8 8 0 -4 -8 0 8 -8 0 -8 0 -8 8 8 0 -8 16 4 0 4 0 -4 4 0 -4 8 0 -8 16 0 4 8 0 -8 0 0 8 0 4 4 0 -8 -8 8 0 0 0 0 0 -8 8 8 -8 0 -4 -8 8 -8 8 0 -2 0 0 -4 12 8 -8 0 8 -8 0 0 0 0 -8 8 2 0 0 4 0 -1 -16 -8 8 -8 8 0 0 0 -4 0 -1 -8 -16 8 0 4 0 -8 4 -8 0 8 -2 -4 12 8 -8 0 -8 0 0 0 0 -8 2 0 8 -4 -8 0 4 4 -4 2 0 -8 -8 4 4 2 0 4 -4 1 4 1 1 5 0 -2 4 4 -8 0 -4 0 -4 -4 2 -4 16 -4 0 0 4 -2 1 0 -16 4 -8 4 0 0 0 4 -2 -8 -4 0 4 0 -2 -8 0 4 4 -8 -4 4 0 -4 -4 0 0 0 -4 4 2 8 2 0 0 -1 -4 -2 -8 4 0 8 -8 0 0 2 0 -4 0 -8 -4 8 0 0 -4 0 8 -4 -4 0 8 0 0 4 0 -4 0 0 0 0 0 8 2 0 0 0 0 -4 0 -4 0 4 0 0 0 0 0 0 0 -4 0 0 0 4 4 0 4 4 0 4 0 2 8 0 0 0 0 8 -4 0 0 0 0 0 0 0 8 0 8 0 0 4 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 -4 -4 4 4 0 0 4 0 0 4 0 0 -4 0 -4 0 -4 0 2 0 4 0 0 0 4 0 2 0 0 0 0 8 -8 -8 -4 0 0 0 0 0 0 -8 4 2 -4 -4 -4 -4 -4 -4 -4 4 4 0 4 8 -2 8 0 2 -4 0 0 0 -1 8 -4 8 0 -2 0 0 0 -2 0 1 4 -8 -8 0 0 -8 0 0 0 0 -16 -2 4 4 4 4 4 8 0 -4 4 -8 -8 -2 0 16 0 -8 -4 -4 0 2 -4 -4 -4 0 0 4 4 4 -6 0 -1 6 1 1 5 0 6 0 0 0 -4 -12 0 0 12 -6 -12 0 12 0 0 12 6 -3 -24 0 12 24 0 4 0 0 -12 6 0 0 -12 -12 0 -6 0 0 0 0 -24 -12 -12 24 -12 0 24 0 -24 -12 -12 -6 0 6 0 0 3 0 -6 0 12 -12 -24 0 0 0 -6 0 12 12 0 12 0 0 0 12 0 24 0 12 -24 0 -12 4 -12 0 0 0 0 12 0 -24 0 6 -24 0 24 -4 -12 0 12 -24 12 0 24 24 -24 12 0 -12 12 0 0 0 12 -12 0 0 -12 0 -12 0 6 0 0 24 0 0 0 12 0 0 0 0 0 24 -12 0 0 0 0 0 12 0 0 -12 24 -24 0 0 24 0 -24 0 0 0 24 0 -24 0 12 0 -12 0 0 -12 0 0 -12 0 24 12 0 -12 4 12 -4 6 0 12 0 12 0 -12 0 6 -24 12 24 0 0 0 0 -12 0 0 12 -24 0 0 0 -12 -6 12 12 0 0 -12 12 0 12 -12 0 0 24 -6 0 0 6 -12 24 -12 0 3 -24 12 0 0 -6 0 24 -24 6 -24 -3 -12 24 0 0 4 0 0 -12 0 0 0 6 0 0 12 -12 0 0 0 0 12 -24 0 -6 0 0 0 0 -12 0 -4 -6 0 -12 12 0 12 0 0 12 -6 0 -1 6 1 1 5 0 2 0 4 0 0 -4 4 0 -4 -6 -4 0 4 -4 -4 -8 6 -3 -16 0 4 0 0 0 -8 8 8 2 0 0 0 -4 0 -2 -8 0 4 -4 0 -4 12 -8 -4 0 16 0 0 8 -12 -2 0 2 8 0 3 -4 2 0 -12 0 0 0 0 -4 2 -12 -4 0 0 4 8 0 0 -8 -8 0 4 4 8 -8 4 -4 -8 0 4 0 0 -4 0 0 0 -2 16 -8 -16 4 12 8 -12 0 4 8 -8 0 8 0 8 0 8 0 0 0 4 -4 0 -4 -4 -8 4 0 -2 0 12 0 4 0 0 12 0 -8 0 8 0 0 4 0 0 0 0 0 4 -8 8 0 0 0 4 0 -16 8 16 -8 0 8 0 -8 0 4 12 -4 -8 0 0 -4 0 0 -4 8 0 8 0 12 -4 -12 4 -2 0 4 0 0 12 4 0 -2 8 -4 -8 0 0 0 0 -4 8 -8 0 0 -4 0 0 -12 -2 4 4 -4 4 8 -8 0 -12 12 0 0 0 2 8 0 2 -4 16 0 -12 3 0 -4 -8 0 2 0 -8 8 6 -16 -3 -4 0 8 0 0 0 -4 0 -8 -4 0 2 4 -4 -8 8 0 0 0 0 4 0 -8 -2 4 0 0 0 -4 -4 0 -6 0 -8 4 4 0 4 0 8 -6 0 -1 6 1 1 5 0 -2 0 8 0 4 -4 0 0 -4 -6 4 0 -4 0 0 4 6 -3 -8 0 -4 -8 0 -4 -16 0 -4 -2 0 0 -4 4 0 2 0 0 -8 8 8 4 -12 -8 4 0 8 0 -8 -4 -12 2 0 -2 16 0 3 8 2 0 12 -4 8 0 0 0 2 0 -4 -12 0 -4 0 0 0 4 0 -8 -8 -4 8 0 4 4 -4 0 8 0 0 -4 0 8 0 -2 -8 16 8 -4 -12 -16 12 8 -4 0 -8 -8 8 4 0 12 4 0 0 0 -4 4 0 -8 4 0 4 0 -2 0 0 8 0 0 0 12 0 0 0 0 0 -8 4 0 0 0 0 0 -4 0 0 12 8 8 0 0 8 -16 -8 16 0 0 -8 0 8 8 12 -8 -4 0 0 4 0 0 4 0 -8 4 0 -12 4 12 -4 -2 0 -4 0 4 0 4 0 -2 8 -4 -8 0 0 0 0 4 16 0 -12 -8 0 0 0 -12 2 -4 -4 8 -8 -4 4 0 12 -12 0 0 -8 2 0 0 -2 4 8 -4 0 3 8 -4 0 0 2 0 -8 8 6 -8 -3 4 -8 0 0 -4 0 0 -4 -16 0 0 -2 -8 8 4 -4 0 0 0 0 -4 8 0 2 0 0 0 0 4 -8 4 -6 0 -4 -4 0 4 8 0 4 -6 0 -1 6 1 1 5 0 -6 0 12 0 0 -4 12 0 -12 -6 12 0 -12 4 -12 0 6 -3 0 0 -12 0 0 0 -24 -24 0 -6 0 0 0 12 0 6 24 0 12 -12 0 12 12 24 12 0 0 0 0 0 -12 6 0 -6 24 0 3 -12 -6 0 -12 0 0 0 0 -12 -6 12 12 0 0 -12 -24 0 0 0 -24 0 12 -12 -24 24 -12 -4 0 0 12 0 0 12 0 0 0 6 0 -24 0 4 12 24 -12 0 -12 -24 24 0 -24 0 24 0 0 0 0 0 -12 12 0 -12 12 24 -12 0 6 0 -12 0 12 0 0 12 0 24 0 -24 0 0 -12 0 0 0 0 0 -12 24 24 0 0 0 12 0 0 24 0 -24 0 -24 0 24 0 12 12 -12 0 0 0 12 0 0 12 -24 0 0 0 12 -4 -12 4 6 0 -12 0 0 -12 -12 0 6 -24 12 24 0 0 0 0 12 24 -24 0 0 -12 0 0 -12 6 -12 -12 -12 12 0 0 0 -12 12 0 0 0 -6 -24 0 -6 12 0 0 12 3 0 12 24 0 -6 0 24 -24 6 0 -3 12 0 -24 0 0 0 -12 0 -24 4 0 -6 12 -12 0 0 0 0 0 0 -12 0 24 6 -4 0 0 0 12 -12 0 -6 0 0 -12 12 0 12 0 0 -6 0 -1 6 1 1 3 4 2 0 -8 8 -4 4 -4 0 -4 6 -4 -8 -8 4 -4 8 6 1 0 -8 -4 -16 -4 -4 0 8 8 -2 0 4 4 -12 -8 -2 16 0 0 0 0 -4 4 8 4 -4 0 -8 8 8 -4 -2 0 -2 0 8 1 0 2 -8 4 -4 -16 8 0 4 -2 4 -4 -4 8 4 16 -8 -8 8 -8 0 0 4 8 0 0 0 0 0 8 0 0 0 0 -16 8 2 0 0 0 0 4 0 4 0 4 16 8 16 8 -4 -8 -4 0 0 -8 -4 -4 4 0 -8 4 -16 -4 -8 -6 -8 4 8 4 4 8 -4 8 0 0 0 0 0 0 -8 0 8 0 0 4 0 8 4 -8 0 -4 8 0 0 0 0 -8 0 0 16 16 -8 4 8 0 0 -4 -4 0 0 -4 -16 -16 0 4 -4 0 -4 0 -2 -8 -4 0 4 -4 4 8 6 -8 0 -8 0 0 -8 8 4 0 8 4 -8 -4 8 -8 4 2 -4 -4 0 0 -8 -8 4 -4 -4 0 -4 0 -2 -16 -8 2 -4 0 4 -4 -1 16 4 0 8 6 8 -8 -8 -6 0 -1 12 16 0 8 4 0 4 -4 0 -4 8 2 0 0 -8 -8 4 -8 0 -4 4 0 -16 2 -4 8 -4 -8 4 8 4 -6 0 0 12 4 -4 8 0 0 -2 -4 -1 -2 -1 1 3 0 10 -4 -8 8 -4 12 -4 -4 -4 -2 -4 -8 -4 4 -4 0 -2 1 16 -8 -4 0 4 -4 -16 8 0 2 -8 4 4 -4 -8 2 0 8 0 0 0 4 4 -8 4 4 16 8 -8 0 4 2 -8 2 -16 8 1 0 2 -8 4 12 0 -8 8 -12 6 4 4 -4 -8 4 0 -8 8 0 8 0 0 4 -8 0 0 0 -8 0 -8 0 0 0 0 0 -8 2 0 0 0 0 4 0 4 0 4 0 -8 0 -8 12 8 -4 8 0 8 8 4 4 0 8 4 0 4 8 2 -8 4 -8 -12 -8 -8 4 8 0 0 0 0 0 0 8 0 8 0 0 -4 0 -8 4 8 0 12 -8 0 0 0 0 8 0 0 0 0 8 -4 -8 8 0 8 -4 0 0 -4 0 0 -8 -8 -4 0 -4 0 -2 -8 -4 0 -12 -4 -4 -8 -2 8 0 8 0 8 8 8 -4 16 -8 4 8 12 -8 8 -4 -2 -4 -4 0 0 0 0 -4 -4 -4 -8 -4 0 -2 0 -8 -2 -4 -16 -12 -4 -1 0 -4 0 -8 -2 8 8 8 2 -16 -1 4 0 0 8 4 8 4 -4 16 -4 8 -2 0 0 0 0 -4 -8 -8 -4 4 0 0 -2 -4 8 0 -8 4 8 4 2 4 -8 4 4 -4 8 4 -8 -2 0 -1 -2 -1 1 3 4 4 -2 -8 16 -8 0 -8 2 16 4 -8 -16 -12 -8 8 8 -4 3 16 16 8 -16 -4 8 -16 0 8 -2 -8 12 -8 8 -24 -2 16 8 -8 -8 -16 -8 8 -16 8 4 -16 16 16 -8 8 2 8 2 16 16 -3 8 4 -16 8 8 16 -16 -8 -8 -8 24 8 -24 16 -8 -16 24 -16 -8 -16 16 8 8 -16 -16 -4 4 8 8 -8 12 16 -4 8 -16 16 -4 16 -16 16 4 -8 -16 -8 -16 -8 16 16 -16 16 -8 16 24 8 -4 16 4 8 8 12 -8 -8 16 -8 -16 -4 16 -24 -16 8 4 -16 -8 -16 16 -16 16 -16 -16 4 -16 -8 -16 16 16 -8 -16 -16 -24 16 16 -8 -16 -16 16 -16 16 16 -16 16 -16 16 8 8 8 -8 4 -4 8 -12 -8 -8 -16 16 -8 -4 8 -4 8 -4 4 16 8 -12 8 24 8 16 4 -16 4 -16 -16 -8 16 16 8 -16 16 24 -16 8 16 -16 -8 -2 -8 8 -8 -8 8 8 -4 -8 -8 8 12 -16 -4 16 -16 -2 -8 16 -8 -24 3 -16 -8 16 -16 -4 -24 16 16 4 -16 -3 -8 16 -16 24 -8 8 -8 8 16 8 -16 2 8 8 -8 -8 4 16 -8 -12 -8 16 -16 2 -8 16 4 -16 8 -8 8 -4 -2 8 8 8 -8 8 2 -8 4 -4 1 -4 -1 1 3 8 -6 4 -8 8 -4 -12 -12 4 -20 -2 4 8 12 -4 -12 0 -2 1 -16 8 4 0 4 -4 -16 8 0 2 8 4 -12 4 8 2 0 8 0 0 0 -4 4 8 4 4 -16 8 -8 0 4 2 8 2 -16 8 1 0 2 8 4 -4 0 8 8 -4 6 -4 4 -4 -8 -4 0 8 -8 0 -8 0 0 4 8 0 0 0 8 0 -8 0 0 0 0 0 8 2 0 0 0 0 4 0 4 0 4 0 8 0 8 -4 -8 -4 -8 0 -8 0 -4 -4 0 8 4 0 4 8 2 8 -4 -8 -4 0 -8 4 8 0 0 0 0 0 0 -8 0 -8 0 0 4 0 8 4 8 0 4 8 0 0 0 0 8 0 0 0 0 8 -4 -8 -8 0 0 -4 0 0 4 0 0 8 0 -4 0 -4 0 -2 -8 -4 0 4 4 -4 -8 -2 -8 0 -8 0 -8 -8 -8 4 16 8 4 8 4 8 8 -4 -2 -4 4 0 0 0 0 -4 -4 -4 -8 -4 0 -2 0 -8 -2 -4 16 4 4 -1 0 -4 0 -8 -2 -8 -8 -8 2 16 -1 -4 0 0 -8 4 -8 12 12 16 4 -8 -2 0 0 0 0 -4 -8 -8 -4 -4 0 0 -2 4 -8 -8 -8 -4 8 4 2 -4 8 -4 12 12 8 -4 8 -2 -8 -1 -2 -1 1 3 4 -2 0 -4 -16 0 -4 0 0 -4 6 4 -8 8 0 0 4 6 1 0 -8 4 0 -4 0 0 -16 4 2 0 -4 0 4 0 2 0 -8 4 4 0 4 4 0 -4 -4 0 8 0 4 -4 2 0 2 0 8 1 4 2 0 4 0 0 0 -8 0 -2 0 4 0 0 4 0 0 -8 4 0 0 4 -4 0 0 0 0 -4 0 4 0 0 0 0 8 0 2 0 0 0 0 4 0 4 -8 -4 -8 0 -8 0 0 0 0 4 0 -8 4 4 4 0 -4 -4 8 4 8 2 0 0 0 0 -4 0 -4 8 -8 0 8 0 8 0 0 0 0 0 0 -4 8 0 0 0 8 0 8 0 0 0 0 0 -8 -8 -8 -8 -4 4 4 4 0 4 4 0 0 -4 8 8 -4 -4 -4 0 -4 0 -2 -8 4 0 0 0 -4 -8 -2 0 0 0 0 0 0 0 -4 0 0 0 0 0 8 0 4 -2 4 -4 -4 -4 -4 -4 4 -4 -4 8 4 0 -2 0 -8 -2 4 0 0 0 -1 0 -4 0 -8 -2 0 0 0 -6 0 -1 -4 0 0 0 0 0 0 0 0 0 8 -2 -4 -4 -4 -4 4 16 8 4 -4 0 0 -2 0 8 -4 16 -4 4 0 -6 0 4 -4 0 0 4 0 4 -2 -4 -1 -2 -1 1 3 0 -2 4 -4 -8 0 -4 0 4 -4 6 -4 0 -4 0 0 -4 6 1 0 0 -4 8 4 0 0 0 -4 -2 -8 -4 0 -4 0 -2 8 0 -4 -4 8 -4 -4 0 4 4 0 0 0 -4 -4 -2 -8 -2 0 0 1 -4 2 8 -4 0 8 8 0 0 -2 0 4 0 -8 -4 8 0 16 -4 0 8 -4 4 0 8 0 0 -4 0 4 0 0 0 0 0 8 2 0 0 0 0 -4 0 -4 0 4 0 0 0 0 0 0 0 4 0 16 0 -4 -4 0 -4 4 0 4 0 2 8 0 0 0 0 -8 -4 0 0 0 0 0 0 0 -8 0 -8 0 0 4 0 0 0 0 0 0 -16 0 0 0 0 8 0 0 0 0 -4 4 4 4 0 0 -4 0 0 4 0 0 -4 0 4 0 4 0 -2 0 -4 0 0 0 -4 0 -2 0 0 0 0 8 -8 -8 4 0 0 0 0 0 -16 8 4 2 -4 4 4 4 4 4 -4 4 4 0 4 -8 -2 -8 0 2 -4 0 0 0 -1 -8 -4 -8 0 -2 0 0 0 -6 0 -1 4 -8 -8 0 0 8 0 0 0 0 0 2 4 4 4 4 -4 8 0 4 4 -8 -8 2 0 0 0 8 4 4 0 -6 -4 4 4 0 0 4 -4 4 -2 0 -1 -2 -1 1 3 0 6 0 -8 0 -4 4 0 0 -12 -2 -4 0 4 0 0 4 -2 -3 -8 0 -4 -8 0 -4 16 0 -4 -2 0 0 -4 4 0 2 0 0 8 -8 8 -4 -4 8 12 0 -8 0 8 4 -4 -2 0 2 16 0 -3 8 6 0 4 4 -8 0 0 0 6 0 -12 12 0 4 0 0 0 -4 0 8 -8 -12 -8 0 4 4 -4 0 -8 0 0 -4 0 8 0 6 -8 -16 8 -4 4 16 -4 8 12 0 -8 -8 8 4 0 12 4 0 0 0 -4 4 0 8 -12 0 -12 0 6 0 0 8 0 0 0 -4 0 0 0 0 0 -8 -4 0 0 0 0 0 4 0 0 -12 -8 -8 0 0 -8 -16 8 16 0 0 8 0 -8 8 4 -8 4 0 0 12 0 0 -4 0 8 -4 0 -4 -4 4 4 -6 0 -12 0 -4 0 12 0 -6 -8 4 8 0 0 0 0 4 -16 0 -12 -8 0 0 0 4 2 12 -4 -8 8 -4 4 0 -4 4 0 0 -8 -6 0 0 -2 -12 8 -4 0 3 8 12 0 0 -6 0 -8 8 2 8 3 -4 8 0 0 4 0 0 4 -16 0 0 2 -8 8 -4 4 0 0 0 0 4 -8 0 -2 0 0 0 0 4 8 4 2 0 -4 -4 0 4 8 0 -4 -2 0 -1 -2 -1 1 3 0 2 0 -4 0 0 -4 -4 0 -4 -2 -4 0 4 -4 -4 0 -2 -3 0 0 -4 0 0 0 8 -8 0 2 0 0 0 4 0 -2 8 0 -4 4 0 -4 4 -8 4 0 0 0 0 0 -4 2 0 -2 8 0 -3 -4 -2 0 -4 0 0 0 0 4 -2 12 4 0 0 4 8 0 0 0 8 0 4 -4 8 -8 4 -4 0 0 -4 0 0 -4 0 0 0 -2 0 8 0 4 -4 -8 4 0 4 -8 8 0 -8 0 8 0 0 0 0 0 -4 4 0 4 -4 8 4 0 -2 0 12 0 4 0 0 -4 0 8 0 -8 0 0 -4 0 0 0 0 0 4 -8 -8 0 0 0 -4 0 0 8 0 -8 0 8 0 -8 0 4 4 -4 0 0 0 4 0 0 -4 8 0 0 0 4 4 -4 -4 2 0 -4 0 0 -12 -4 0 2 8 4 -8 0 0 0 0 4 -8 -8 0 0 -4 0 0 4 -2 4 -4 4 -4 0 0 0 4 -4 0 0 0 2 -8 0 2 -4 0 0 -12 3 0 -4 8 0 2 0 8 -8 2 0 3 -4 0 8 0 0 0 4 0 -8 4 0 -2 4 -4 0 0 0 0 0 0 4 0 -8 2 4 0 0 0 4 4 0 2 0 0 -4 4 0 4 0 0 -2 0 -1 -2 -1 1 3 0 2 0 -4 0 0 4 -12 0 -4 -2 4 0 -4 4 -12 0 -2 -3 0 0 4 0 0 0 8 8 0 -6 0 0 0 -4 0 6 -8 0 -4 4 0 4 4 8 4 0 0 0 0 0 -4 -6 0 6 8 0 -3 -4 -2 0 -4 0 0 0 0 12 -2 -12 4 0 0 -4 -8 0 0 0 24 0 4 -4 -8 8 -12 -4 0 0 -4 0 0 12 0 0 0 -2 0 8 0 4 -4 -8 4 0 4 8 -8 0 8 0 24 0 0 0 0 0 4 -4 0 4 -4 -8 4 0 -2 0 -12 0 12 0 0 -4 0 -8 0 8 0 0 12 0 0 0 0 0 -4 8 -24 0 0 0 -12 0 0 8 0 -8 0 -8 0 8 0 4 4 -4 0 0 0 4 0 0 4 -8 0 0 0 4 4 -4 -4 2 0 -4 0 0 12 -4 0 2 -8 -12 8 0 0 0 0 -4 -8 -24 0 0 -12 0 0 4 6 4 4 4 -4 0 0 0 4 -4 0 0 0 2 8 0 -6 -4 0 0 12 3 0 -4 -8 0 2 0 -8 8 2 0 3 4 0 -8 0 0 0 12 0 -8 -4 0 6 4 -4 0 0 0 0 0 0 -4 0 8 -6 -4 0 0 0 -4 4 0 2 0 0 4 12 0 4 0 0 -2 0 -1 -2 -1 1 3 0 -2 0 0 0 -4 -4 0 0 -4 -2 4 0 -4 0 0 -4 -2 -3 8 0 4 8 0 -4 0 0 4 -2 0 0 -4 -4 0 2 0 0 0 0 -8 4 -4 -8 -4 0 8 0 8 -4 -4 -2 0 2 0 0 -3 0 -2 0 4 4 8 0 0 0 -2 0 4 12 0 -4 0 0 0 4 0 -8 0 4 8 0 4 4 4 0 0 0 0 -4 0 -8 0 -2 8 0 -8 -4 4 0 -4 -8 -4 0 8 8 -8 4 0 12 -4 0 0 0 4 -4 0 0 4 0 4 0 -2 0 0 8 0 0 0 -4 0 0 0 0 0 8 -4 0 0 0 0 0 -4 0 0 -12 -8 8 0 0 8 0 -8 0 0 0 -8 0 8 0 4 0 -4 0 0 -4 0 0 4 0 -8 4 0 -4 -4 4 4 2 0 4 0 -4 0 -4 0 2 8 4 -8 0 0 0 0 -4 0 0 -12 -8 0 0 0 4 2 -4 4 0 0 4 -4 0 -4 4 0 0 8 2 0 0 -2 4 -8 -4 0 3 -8 -4 0 0 2 0 8 -8 2 -8 3 4 -8 0 0 4 0 0 4 0 0 0 2 0 0 4 -4 0 0 0 0 -4 8 0 -2 0 0 0 0 -4 0 4 2 0 4 4 0 4 0 0 4 -2 0 -1 -2 -1 1 3 4 -4 2 -4 0 -4 0 -8 -2 0 4 0 0 -4 0 8 0 -4 -1 0 0 0 -8 0 4 8 0 0 -2 0 0 4 0 0 2 0 0 -4 -4 -8 0 0 0 8 0 0 0 8 0 -8 2 0 -2 -8 0 1 4 0 0 0 -4 8 0 0 8 0 0 0 4 0 0 0 0 0 0 0 8 4 -8 0 0 0 0 0 -8 -4 4 0 0 8 8 0 0 0 8 0 0 0 8 0 8 -8 0 0 8 0 4 0 -4 0 -4 0 -4 0 0 -4 -4 8 0 0 0 0 0 0 -8 -8 -4 0 8 0 0 0 0 0 8 0 0 -8 0 0 0 0 0 0 4 8 -8 8 0 0 -8 0 -8 0 0 -8 0 -8 4 -8 4 0 4 4 -8 4 8 0 0 -8 0 4 0 0 0 0 0 0 8 -4 -4 0 0 0 0 0 0 0 0 0 0 0 0 8 0 -4 -8 -8 0 0 8 -2 8 0 -4 -4 0 0 0 0 0 0 0 -8 0 0 0 2 -8 0 4 0 -1 -8 0 0 0 0 0 0 0 4 0 1 0 8 0 0 -4 0 -8 -4 -8 0 0 2 4 4 0 0 0 0 0 0 0 8 0 -2 0 0 4 0 0 -4 4 -4 2 0 0 8 4 4 -2 0 4 -4 1 -4 -1 1 3 4 -6 0 0 8 4 -12 4 0 -4 6 -12 -8 0 -4 4 0 6 1 0 -8 -12 16 -4 4 0 8 0 -2 0 4 -4 -4 -8 -2 -16 0 8 8 0 4 4 8 4 -4 0 8 -8 0 -4 -2 0 -2 0 -8 1 8 -6 8 4 4 16 -8 0 -4 6 -4 -4 4 8 -4 -16 -8 -8 0 8 0 8 4 8 0 0 0 -8 0 0 0 0 0 0 0 -8 -6 0 0 0 0 4 0 4 16 4 0 8 0 8 4 8 4 8 0 -8 -4 4 -4 0 0 4 0 -4 8 2 8 -4 -8 -4 4 8 -4 -8 16 0 -16 0 -16 0 8 0 -8 0 0 -4 -16 -8 -4 8 -16 4 8 0 0 0 0 -8 16 16 0 0 0 4 0 8 0 -4 -4 0 0 4 0 0 -8 4 -4 0 -4 0 6 8 -4 0 -4 4 4 -8 -2 -8 0 -8 0 0 8 -8 -4 0 -8 -4 8 4 8 -8 4 2 -4 4 -8 -8 0 0 4 -4 -4 0 -4 0 6 16 8 2 -4 0 -4 4 -1 -16 4 0 -8 -2 8 -8 -8 -6 0 -1 4 -16 0 8 -4 0 -4 4 0 4 8 2 -8 -8 0 0 4 -8 0 -4 12 0 16 2 4 8 -4 -8 12 0 -4 -6 0 8 4 -4 4 0 0 8 -2 -4 -1 -2 -1 1 3 0 6 -4 -4 0 0 4 0 -4 -4 -2 -4 -8 4 0 0 -4 -2 1 0 -8 -4 0 4 0 0 0 -4 -2 8 -4 0 4 0 -2 0 0 4 4 0 4 4 0 -4 4 0 -8 0 -4 4 -2 8 -2 0 8 1 4 -6 0 4 0 0 16 0 0 -2 0 -4 0 0 -4 0 0 8 -4 0 0 4 -4 0 0 0 0 4 0 4 0 0 0 0 8 16 -6 0 0 0 0 4 0 4 -8 -4 8 0 -8 0 0 0 0 -4 0 8 0 4 -4 0 -4 -4 -8 -4 -8 2 0 0 0 0 0 0 4 8 8 0 -8 0 8 0 -16 0 0 0 0 -4 -8 0 0 0 8 0 -8 0 0 0 0 0 8 -8 8 -8 -4 -4 4 -4 0 0 4 0 0 4 -8 8 4 0 -4 0 -4 0 6 -8 4 0 0 0 4 8 -2 0 0 0 0 -8 -16 0 -4 0 0 0 0 0 -8 0 -4 2 4 4 -4 -4 4 4 -4 -4 -4 0 4 0 6 0 -8 2 4 0 0 0 -1 0 4 0 8 -2 0 0 0 2 0 -1 -4 0 0 0 0 -8 0 0 0 0 8 2 -4 -4 4 4 -4 0 0 4 4 0 0 2 0 8 0 0 4 4 0 2 4 -4 -4 0 0 4 4 -4 -2 0 -1 -2 -1 1 3 0 -2 -4 4 0 0 -4 0 -4 4 -2 4 -8 -4 0 0 4 -2 1 0 -8 4 0 4 0 0 0 4 -2 8 -4 0 -4 0 -2 0 0 -4 -4 0 -4 4 0 -4 4 0 8 0 4 4 -2 8 -2 0 -8 1 -4 2 16 4 0 0 0 0 0 -10 0 -4 0 0 4 0 0 8 4 0 0 -4 -4 0 0 0 0 -4 0 -4 0 0 0 0 -8 0 2 0 0 0 0 4 0 4 8 -4 -8 0 8 0 0 0 0 4 0 8 0 -4 4 0 4 -4 8 -4 8 -6 16 0 0 0 0 0 4 -8 -8 0 8 0 -8 0 0 0 -16 0 0 4 8 0 0 0 -8 0 -8 0 0 0 0 0 -8 8 -8 8 4 -4 -4 4 0 0 4 0 0 -4 8 -8 -4 0 -4 0 -4 0 -2 8 4 0 0 0 4 -8 6 0 0 0 0 -8 0 -16 4 0 0 0 0 0 -8 0 -4 2 4 -4 4 4 -4 -4 -4 -4 -4 0 4 0 -2 0 8 2 4 0 0 0 -1 0 4 0 -8 6 0 0 0 2 0 -1 4 0 0 0 0 -8 0 0 0 0 8 2 4 4 -4 -4 -4 0 0 4 -4 0 0 2 0 8 0 0 -4 -4 0 2 4 4 4 0 0 -4 4 4 -2 0 -1 -2 -1 1 3 4 -4 -2 0 0 0 0 0 2 0 4 0 -16 -4 0 0 0 -4 3 0 16 0 0 -4 0 0 0 0 -2 8 -4 0 0 -8 -2 0 -8 0 0 0 0 8 0 -8 4 0 0 0 0 8 2 -8 2 0 0 -3 0 -4 16 8 0 0 16 8 0 0 0 -8 0 0 0 0 8 -16 0 0 0 0 -8 0 0 -4 4 0 -8 0 -4 16 -4 -8 0 -16 4 0 0 0 4 -8 0 -8 0 8 0 0 0 0 0 0 0 0 -4 16 4 0 0 -4 0 8 0 8 0 4 -16 0 0 0 4 0 -8 0 0 16 0 16 0 4 16 8 16 -16 -16 0 0 0 0 0 0 0 -16 0 0 0 0 0 0 0 0 0 0 8 0 0 4 -4 -8 4 8 0 0 0 0 -4 8 -4 8 -4 -4 0 -8 4 0 0 -8 0 -4 0 4 0 -16 8 -16 -16 0 0 0 0 0 0 16 0 -8 -2 8 0 0 0 0 0 -4 -8 -8 -8 -4 0 4 0 0 -2 8 0 0 0 3 0 8 0 0 4 -8 0 0 4 0 -3 0 0 0 8 0 -8 0 0 0 0 -16 2 0 0 0 0 4 0 8 4 0 0 0 2 0 16 4 0 0 0 0 -4 -2 0 0 0 0 0 2 0 4 -4 1 -4 -1 1 3 -4 2 0 0 0 -4 -4 4 0 4 -2 -4 0 -8 -4 4 0 -2 1 0 0 -4 8 -4 -4 0 -8 0 -2 0 4 4 -4 8 -2 8 0 0 0 -8 4 -4 8 -4 -4 0 0 8 0 4 -2 0 -2 0 0 1 0 2 0 -4 -4 8 0 0 -4 6 -4 4 -4 0 4 8 8 0 0 8 -8 0 -4 8 -8 0 0 0 0 0 0 0 0 0 8 0 2 0 0 0 0 -4 0 -4 8 -4 8 8 -8 8 -4 8 -4 0 0 0 4 4 4 0 0 -4 -8 4 0 2 0 -4 8 -4 -4 0 4 0 -8 0 8 0 -8 0 0 0 0 0 0 -4 8 -8 4 -8 -8 4 0 0 0 0 0 0 -8 8 8 -8 0 -4 0 0 0 4 4 0 0 -4 -8 8 0 -4 4 0 4 0 -2 0 4 0 4 4 -4 0 -2 -8 0 -8 0 0 0 0 -4 0 -8 4 -8 4 0 0 -4 2 4 -4 0 0 0 0 4 4 4 0 -4 8 -2 -8 0 2 4 0 4 4 -1 -8 -4 8 0 -2 -8 -8 -8 2 0 -1 4 -8 8 -8 4 0 -4 -4 0 4 0 2 0 0 0 0 4 0 0 -4 4 8 -8 2 4 0 4 0 4 0 4 2 0 0 4 -4 -4 0 0 0 -2 4 -1 -2 -1 1 3 -4 2 0 0 0 4 4 -4 0 -4 -2 -4 0 -8 4 -4 0 -2 1 0 0 -4 -8 -4 4 0 8 0 -2 0 4 -4 -4 8 -2 -8 0 0 0 8 4 -4 8 -4 -4 0 0 -8 0 4 -2 0 -2 0 0 1 0 2 0 -4 4 -8 0 0 4 6 4 4 4 0 4 -8 8 0 0 -8 8 0 -4 8 8 0 0 0 0 0 0 0 0 0 -8 0 2 0 0 0 0 -4 0 -4 -8 -4 -8 8 8 8 4 -8 4 0 0 0 4 4 4 0 0 -4 8 4 0 2 0 4 -8 4 -4 0 4 0 8 0 -8 0 8 0 0 0 0 0 0 -4 -8 8 -4 8 8 -4 0 0 0 0 0 0 8 -8 -8 8 0 -4 0 0 0 4 4 0 0 -4 8 -8 0 -4 4 0 4 0 -2 0 4 0 -4 -4 -4 0 -2 -8 0 -8 0 0 0 0 -4 0 8 -4 8 -4 0 0 -4 2 4 -4 0 0 0 0 4 4 4 0 -4 -8 -2 8 0 2 4 0 -4 -4 -1 8 -4 -8 0 -2 -8 -8 -8 2 0 -1 4 8 -8 -8 -4 0 4 4 0 -4 0 2 0 0 0 0 4 0 0 -4 4 -8 8 2 -4 0 4 0 4 0 -4 2 0 0 4 4 4 0 0 0 -2 4 -1 -2 -1 1 3 0 -4 2 0 0 0 0 0 -2 0 4 -8 0 -8 0 0 0 -4 3 0 0 8 0 -4 0 0 0 0 -6 -8 4 0 8 0 -6 0 0 0 0 0 -8 -8 16 -8 4 0 0 0 0 8 6 8 6 0 0 -3 0 4 0 -8 0 0 0 0 0 0 0 8 0 0 -8 0 0 0 0 0 0 0 -8 16 0 12 -4 0 0 0 -4 0 12 0 0 0 -4 0 0 0 -4 8 0 8 0 8 0 -16 0 -16 0 0 0 0 4 0 0 8 8 -4 0 8 0 -8 0 -4 0 0 0 0 0 0 -8 0 0 0 0 16 0 -12 0 0 0 -16 0 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 -4 0 -8 4 0 -8 0 0 0 0 -8 4 -8 4 4 0 -8 4 0 0 8 0 4 16 -12 16 0 -8 0 0 8 0 0 0 0 0 0 0 -8 -6 8 8 0 0 0 0 -4 8 8 0 4 0 -4 0 0 -6 8 0 0 0 3 0 -8 0 0 -4 0 -16 -16 4 0 -3 -8 0 0 0 0 8 0 0 0 0 0 6 0 0 0 0 4 0 0 -4 -8 0 0 6 0 0 0 0 8 0 0 -4 2 0 8 0 0 0 -2 0 4 0 1 -4 -1 1 3 0 10 -4 -8 -8 -4 4 4 -4 -4 -2 -4 -8 12 -4 4 0 -2 1 0 -8 -4 0 4 -4 0 -8 -16 2 -8 4 4 12 8 2 0 -8 16 0 0 4 4 8 4 4 0 -24 -8 0 4 2 -8 2 0 8 1 16 10 8 4 12 0 -24 -8 12 -2 -4 4 -4 8 -12 0 8 8 -16 -8 0 0 4 8 0 0 0 8 0 8 0 0 0 0 -16 -24 10 16 16 -16 0 4 -16 4 16 4 -16 8 16 8 12 -8 -4 -8 0 8 -8 4 -12 0 -8 4 16 4 -24 -6 8 -4 -8 12 8 8 4 8 -16 0 16 0 -16 0 24 0 -8 0 0 -4 16 8 4 8 -16 -12 -8 16 16 -16 -16 -8 -16 16 -16 16 -8 -4 8 -8 0 -8 -4 0 0 12 16 -16 8 8 -4 0 -4 0 -10 -8 -4 0 -12 4 -4 24 6 -8 0 -8 0 8 24 -8 -4 0 8 4 8 -12 -8 -8 -4 -2 -4 12 -16 0 0 16 -4 -4 -4 8 -4 0 -10 0 -8 -2 -4 0 -12 4 -1 0 -4 0 24 6 -8 -8 -8 2 0 -1 -12 0 0 -8 4 8 -4 -4 0 4 8 -2 -16 0 0 16 -4 8 8 -4 4 0 0 -2 4 8 0 8 4 8 4 2 4 -8 -12 -4 -4 8 4 -8 -2 0 -1 -2 -1 1 3 -4 6 0 -4 -8 0 4 0 0 -4 -2 -4 0 0 0 0 4 -2 1 0 0 -4 8 -4 0 0 -16 4 2 0 -4 0 4 0 2 -8 8 -4 -4 8 4 -4 0 4 -4 0 16 0 4 4 2 0 2 0 0 1 -4 2 -8 -4 0 8 8 8 0 -10 0 -4 0 8 -4 -8 0 0 4 0 8 -4 4 0 -8 0 0 4 0 4 0 0 0 0 0 8 2 0 0 0 0 -4 0 -4 0 4 0 0 0 0 0 0 0 -4 0 0 -4 4 -4 0 -4 4 0 -4 16 -6 -8 0 0 0 4 8 4 0 0 0 0 0 0 0 -8 0 8 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 -8 0 0 0 0 -4 -4 4 -4 0 -4 -4 0 0 4 0 0 4 4 4 0 4 0 -2 0 -4 0 0 0 4 -16 6 0 0 0 0 0 -8 8 -4 0 0 0 0 0 0 -8 -4 -2 -4 4 4 4 -4 -4 4 4 4 -8 4 -8 -2 8 0 -2 -4 0 0 0 -1 -8 4 8 -16 6 0 0 0 2 0 -1 -4 -8 8 0 0 0 0 0 0 0 0 -2 4 4 -4 -4 4 8 -8 4 4 -8 8 -2 0 0 4 8 4 4 0 2 0 -4 -4 0 0 4 0 -4 -2 4 -1 -2 -1 1 3 0 4 -2 -4 0 -4 -8 0 2 8 -4 -8 -8 8 0 0 0 4 -1 -8 8 8 8 0 4 0 0 -8 2 0 0 -4 -8 0 -2 0 0 4 -4 -8 0 0 8 0 0 8 -8 -8 0 0 -2 0 2 0 8 1 -4 0 0 0 4 -8 0 0 0 0 0 0 4 0 0 0 0 8 8 0 8 4 0 -8 0 0 0 0 0 4 4 0 0 0 0 0 0 8 0 8 0 0 0 0 0 0 -8 8 0 -8 -4 0 -4 0 4 -8 0 0 0 -4 4 0 -8 0 8 0 0 0 8 0 0 0 0 -8 8 0 8 0 0 0 0 0 0 0 0 0 -8 0 4 -8 0 0 8 -8 0 -8 0 0 -8 0 8 0 -4 0 -4 0 -4 0 0 4 0 0 8 0 0 0 0 0 0 0 0 8 0 -4 4 0 0 -8 0 8 0 -8 0 0 0 0 0 0 0 -4 8 0 -8 0 0 2 0 0 4 -4 0 -8 0 0 0 0 0 -8 0 0 -8 -2 0 -8 -4 0 -1 8 0 0 8 0 0 -8 8 -4 8 1 8 -8 0 0 -4 0 0 4 0 0 -8 -2 -4 4 0 8 0 0 0 0 -8 8 0 2 0 8 0 0 8 -4 4 4 -2 8 -8 0 -4 4 2 -8 4 0 1 -4 -1 1 3 0 2 -4 0 -8 4 4 -4 -4 -4 -2 4 -8 4 4 -4 -8 -2 1 0 -8 4 0 4 4 0 -8 8 2 -8 4 -4 4 8 2 0 -8 -8 8 0 -4 4 8 4 4 0 -8 8 -8 4 2 -8 2 0 -8 1 -8 2 -8 4 -12 0 -8 -8 -12 6 4 4 4 8 -4 0 8 8 8 8 0 8 4 8 0 0 0 0 0 0 0 0 0 0 0 -8 2 -16 -16 16 0 4 16 4 0 4 0 8 0 8 -12 8 4 0 0 8 -8 -4 -4 0 0 4 0 4 -8 2 -8 4 8 -12 8 8 4 -8 0 0 0 0 0 0 8 0 8 0 0 4 0 -8 -4 -8 0 12 -8 -16 -16 16 16 -8 0 0 0 0 0 -4 0 0 0 -8 -4 0 0 4 0 0 0 8 -4 0 -4 0 -2 8 -4 0 12 -4 -4 8 -2 -8 0 -8 0 8 8 8 4 0 -8 -4 -8 12 -8 -8 -4 -2 -4 4 8 -8 8 -8 -4 -4 -4 8 -4 0 -2 0 8 -2 -4 0 12 -4 -1 0 -4 0 8 -2 -8 -8 -8 2 0 -1 -4 0 0 -8 -4 8 4 4 0 -4 8 -2 8 -8 8 -8 -4 8 8 -4 -4 0 0 -2 -4 8 0 8 -4 0 -4 2 4 0 -4 4 4 0 4 0 -2 0 -1 -2 -1 1 3 0 0 -2 0 0 0 0 -4 2 0 -4 0 -8 0 -4 4 -4 4 -1 0 8 0 0 0 0 -8 8 4 -2 0 0 0 0 0 2 -8 0 -8 0 0 8 0 -8 0 0 0 8 0 4 0 2 0 -2 8 -8 1 8 0 0 0 0 0 0 0 -4 0 -4 0 0 0 -8 8 0 8 -4 8 0 0 0 8 -8 0 0 -4 0 8 -4 0 0 0 -8 0 0 0 8 0 0 0 8 0 8 0 0 -8 -8 8 0 -8 0 -4 4 -8 0 -8 8 4 8 0 0 0 -8 0 0 4 0 4 0 0 0 8 0 0 0 0 8 0 0 0 0 0 0 8 0 8 0 0 -8 -4 8 0 -8 0 -8 0 0 -8 0 8 -8 0 -8 4 -4 0 0 -4 0 -8 0 8 4 0 0 0 0 0 0 -8 0 4 0 -4 0 8 0 -8 0 8 0 0 0 0 -8 -8 -8 0 0 4 -8 0 0 -2 0 8 -8 0 -4 4 0 0 0 0 0 0 0 -8 8 2 0 0 0 4 -1 0 0 8 -8 0 0 8 -8 -4 0 1 0 0 -8 0 0 0 -4 0 8 4 -8 2 8 0 4 -4 0 0 0 0 0 0 8 -2 -4 8 0 0 0 0 0 4 -2 4 0 4 0 0 2 -4 4 0 1 -4 -1 1 3 12 -12 6 -8 16 -8 0 -24 -6 -16 4 8 16 -4 8 24 -8 -4 3 -16 -16 -8 -16 12 8 -16 -32 -8 6 24 12 24 -8 24 6 -16 24 -8 -8 -16 8 8 16 8 -12 16 16 -48 8 8 -6 -24 -6 16 16 -3 8 4 16 8 -24 16 16 -24 -24 -8 -24 8 -24 16 8 16 -24 16 8 -48 16 8 8 16 16 12 4 -8 24 -8 12 48 12 24 -16 -16 -4 -16 -16 -16 4 -8 -16 -8 -16 -8 -16 -16 -16 -16 24 48 24 -8 12 -16 12 -8 -8 12 -8 -8 -16 -8 -16 -4 -16 24 48 24 12 -16 -8 -16 -16 16 -16 48 -16 -12 16 -24 16 -48 -16 8 16 -48 -24 -48 16 -24 16 16 16 16 16 16 16 16 16 16 8 8 8 8 -12 -12 8 -12 -24 8 16 16 8 -12 8 -4 8 -4 4 16 8 -12 -24 -24 8 16 4 16 -12 16 -48 24 -16 -16 -8 -16 48 24 48 24 -16 -16 -8 6 -8 -8 -8 -8 -8 -8 12 -8 -8 24 12 -16 -4 -16 -16 6 -8 -16 24 24 3 -16 -8 -16 -16 -4 24 -16 -16 4 16 -3 8 16 16 -24 -8 -24 -24 -24 16 -8 16 -6 8 8 8 8 -12 16 -24 -12 8 16 16 -6 8 -16 12 -16 -8 -8 8 -4 6 -8 -8 24 24 8 -6 8 4 -12 1 -4 -1 1 3 0 -2 0 0 0 4 -4 0 0 -12 -2 -4 0 4 0 0 -4 -2 -3 8 0 -4 -8 0 4 0 0 4 6 0 0 -12 4 0 -6 0 0 0 0 8 -4 -4 8 -4 0 8 0 24 -4 -4 6 0 -6 0 0 -3 0 -2 0 4 12 -8 0 0 0 -2 0 4 -12 0 4 0 0 0 4 0 8 0 4 -8 0 -12 4 4 0 0 0 0 12 0 8 0 -2 8 0 -8 -4 4 0 -4 8 -4 0 -8 -8 8 12 0 -12 -4 0 0 0 -4 4 0 0 4 0 4 0 -2 0 0 24 0 0 0 -4 0 0 0 0 0 -8 12 0 0 0 0 0 4 0 0 12 -24 -8 0 0 8 0 -8 0 0 0 8 0 -8 0 4 0 -4 0 0 -4 0 0 -4 0 8 4 0 -4 -4 4 4 2 0 4 0 -12 0 -4 0 2 -8 -12 8 0 0 0 0 4 0 0 12 -24 0 0 0 4 -6 -4 -4 0 0 4 -4 0 -4 4 0 0 -8 2 0 0 6 4 -8 -12 0 3 8 -4 0 0 2 0 -8 8 2 -8 3 -4 8 0 0 -4 0 0 12 0 0 0 -6 0 0 4 -4 0 0 0 0 4 -8 0 6 0 0 0 0 4 0 -4 2 0 4 -4 0 12 0 0 4 -2 0 -1 -2 -1 1 3 0 -6 0 4 0 0 -12 -4 0 4 -2 4 0 -4 -4 -4 8 -2 -3 16 0 4 0 0 0 -8 8 -8 2 0 0 0 -4 0 -2 -8 0 4 -4 0 4 4 8 -12 0 16 0 0 8 -4 2 0 -2 -8 0 -3 4 6 0 -4 0 0 0 0 4 6 12 -12 0 0 -4 -8 0 0 -8 8 0 -4 12 -8 8 4 -4 8 0 4 0 0 -4 0 0 0 6 -16 -8 16 4 -4 8 4 0 -12 8 -8 0 8 0 8 0 -8 0 0 0 4 -4 0 -4 12 -8 -12 0 6 0 12 0 4 0 0 -4 0 -8 0 8 0 0 -4 0 0 0 0 0 -4 8 -8 0 0 0 -4 0 -16 -8 16 8 0 -8 0 8 0 -4 4 4 -8 0 0 -12 0 0 4 -8 0 8 0 4 4 -4 -4 -6 0 12 0 0 -12 12 0 -6 -8 4 8 0 0 0 0 -4 8 -8 0 0 -4 0 0 4 -2 -12 4 -4 4 -8 8 0 4 -4 0 0 0 -6 8 0 2 12 -16 0 -12 3 0 12 -8 0 -6 0 -8 8 2 -16 3 4 0 -8 0 0 0 4 0 8 4 0 -2 -4 4 -8 8 0 0 0 0 -4 0 8 2 4 0 0 0 -4 -4 0 2 0 8 4 4 0 -4 0 8 -2 0 -1 -2 -1 1 3 4 -8 2 0 0 0 0 -4 -2 -8 4 0 0 -4 4 4 -4 -4 -1 8 0 0 0 0 0 0 -8 -4 2 0 0 8 0 0 -2 -8 0 0 0 0 0 0 0 -8 0 -8 0 0 4 -8 -2 0 2 0 0 1 0 0 0 0 8 0 0 0 -4 0 4 0 0 0 0 8 0 0 4 8 0 0 8 0 8 0 0 -4 8 0 -4 0 0 -8 0 0 0 8 0 8 0 0 0 0 0 8 8 0 0 0 -8 -8 0 -4 -4 0 -4 0 0 4 0 -8 8 0 0 0 0 -4 0 4 -4 0 8 0 8 0 8 0 0 0 0 8 0 0 0 0 -8 8 0 0 0 -4 0 -8 0 -8 0 0 -8 0 -8 0 0 -8 0 4 4 4 8 -4 -8 0 -8 0 4 4 0 0 0 0 0 0 -8 4 8 4 0 0 0 0 0 0 0 0 0 0 0 0 -8 0 0 4 0 0 8 2 -8 0 0 0 -4 -4 0 0 0 0 0 0 0 -8 0 -2 8 8 -8 -4 -1 0 0 -8 0 0 0 0 0 4 -8 1 0 0 8 0 0 0 -4 -8 0 -4 0 -2 0 0 4 4 0 0 0 0 0 0 8 2 4 0 4 0 0 0 0 -4 2 -4 0 4 8 0 -2 4 4 -4 1 -4 -1 1 3 0 -6 -4 8 8 4 -12 4 -4 4 -2 -4 -8 -4 -4 4 0 -2 1 -16 -8 -4 0 4 4 16 8 0 2 -8 4 -4 -4 -8 2 0 8 0 0 0 4 4 -8 4 4 -16 8 8 0 4 2 -8 2 16 8 1 0 2 -8 4 -12 0 -8 8 12 6 -4 4 4 -8 4 0 -8 8 0 -8 0 0 4 -8 0 0 0 8 0 8 0 0 0 0 0 -8 2 0 0 0 0 4 0 4 0 4 0 -8 0 -8 -12 -8 4 -8 0 8 8 4 4 0 -8 4 0 4 8 2 -8 -4 8 12 -8 -8 4 8 0 0 0 0 0 0 8 0 8 0 0 -4 0 8 -4 -8 0 -12 -8 0 0 0 0 8 0 0 0 0 -8 -4 8 -8 0 8 -4 0 0 -4 0 0 8 -8 -4 0 -4 0 -2 -8 -4 0 12 4 -4 -8 -2 8 0 8 0 8 8 8 -4 -16 8 -4 -8 -12 -8 8 -4 -2 -4 -4 0 0 0 0 -4 -4 -4 -8 -4 0 -2 0 -8 -2 -4 16 12 4 -1 0 -4 0 -8 -2 8 8 8 2 16 -1 4 0 0 8 -4 8 -4 4 -16 4 8 -2 0 0 0 0 -4 -8 -8 -4 4 0 0 -2 4 8 0 -8 4 -8 -4 2 4 8 4 -4 4 -8 4 8 -2 0 -1 -2 -1 1 3 4 -12 -2 8 16 8 0 8 2 -16 4 -8 -16 -12 8 -8 -8 -4 3 -16 16 8 16 -4 -8 16 -32 -8 -2 -8 12 8 8 -24 -2 -16 8 8 8 16 -8 8 -16 8 4 16 16 -16 8 8 2 8 2 -16 16 -3 -8 4 -16 8 -8 -16 -16 -8 8 -8 -24 8 24 16 -8 16 24 -16 8 16 -16 -8 8 -16 16 -4 4 -8 8 8 12 16 -4 8 16 16 -4 -16 16 -16 4 -8 16 -8 16 -8 -16 16 16 16 8 -16 -24 -8 -4 16 4 8 8 12 8 -8 -16 -8 -16 -4 16 24 16 -8 4 -16 -8 -16 -16 -16 -16 -16 16 4 -16 -8 -16 16 16 -8 16 16 24 -16 -16 8 -16 16 -16 16 -16 16 16 -16 16 -16 -8 8 -8 8 4 -4 8 -12 -8 -8 16 -16 8 -4 8 -4 8 -4 4 16 8 -12 -8 -24 8 16 4 -16 4 -16 -16 -8 16 16 8 16 -16 -24 16 -8 16 -16 -8 -2 -8 8 8 8 -8 -8 -4 -8 -8 8 12 16 -4 -16 -16 -2 -8 -16 8 24 3 16 -8 -16 -16 -4 -24 16 16 4 16 -3 -8 -16 16 24 8 8 8 -8 -16 -8 -16 2 -8 -8 8 8 4 16 -8 -12 -8 -16 16 2 8 16 4 -16 8 8 -8 -4 -2 -8 8 -8 8 -8 2 8 4 -4 1 -4 -1 1 3 -4 -2 0 4 -8 0 -4 0 0 4 -2 4 0 -8 0 0 -4 -2 1 0 0 4 -8 -4 0 0 0 -4 2 0 -4 0 -4 0 2 8 8 4 4 -8 -4 -4 0 4 -4 0 0 0 -4 4 2 0 2 0 16 1 4 -6 8 -4 0 -8 -8 8 0 -2 0 -4 0 8 4 8 0 0 -4 0 -8 4 4 0 8 0 0 -4 0 -4 0 0 0 0 0 -8 -6 0 0 0 0 -4 0 -4 0 4 0 0 0 0 0 0 0 4 0 0 -4 -4 4 0 4 4 0 -4 0 2 8 0 0 0 4 8 4 16 0 0 0 0 0 0 8 0 -8 0 0 4 0 0 0 0 0 0 0 0 0 0 0 -8 0 0 0 0 4 -4 -4 4 0 -4 -4 0 0 -4 0 0 -4 4 4 0 4 0 6 -16 -4 0 0 0 4 0 -2 0 0 0 0 0 8 -8 4 0 0 0 0 0 0 -8 -4 -2 -4 -4 -4 -4 4 4 4 4 4 -8 4 8 6 -8 -16 -2 -4 0 0 0 -1 8 4 -8 0 -2 0 0 0 2 0 -1 4 8 -8 0 0 0 0 0 0 0 0 -2 -4 -4 4 4 4 8 -8 4 -4 8 -8 -2 0 0 4 8 -4 -4 0 2 0 4 4 0 0 -4 0 4 -2 4 -1 -2 -1 1 3 0 -4 -2 4 0 4 0 0 2 -8 -4 0 -8 0 0 0 -8 4 -1 -8 8 0 -8 0 -4 0 0 0 2 0 0 4 0 0 -2 0 0 -4 4 8 -8 0 -8 0 0 8 -8 8 8 0 -2 0 2 0 8 1 4 0 0 0 -4 8 0 0 0 0 0 0 -4 0 8 0 0 8 0 0 -8 -4 0 8 0 0 0 8 0 -4 4 0 0 0 0 0 0 8 0 8 0 0 0 0 0 0 8 -8 0 8 4 0 4 8 4 -8 0 8 -8 -4 -4 0 8 0 8 0 0 0 -8 0 0 0 0 -8 -8 0 -8 0 0 0 0 0 0 0 0 -8 8 0 -4 8 0 0 8 -8 0 -8 0 0 8 0 -8 0 4 0 4 -8 -4 0 0 4 0 8 -8 0 -8 0 0 0 0 0 0 8 0 -4 -4 0 0 -8 0 -8 0 8 0 0 0 0 8 0 0 4 -8 0 -8 0 0 2 0 -8 -4 4 -8 0 0 0 0 0 0 8 0 0 -8 -2 0 -8 4 0 -1 -8 0 0 8 0 0 8 -8 -4 8 1 0 8 0 0 4 0 0 -4 0 0 -8 -2 4 -4 8 0 0 0 0 0 0 -8 0 2 0 8 0 0 0 4 -4 4 -2 0 0 0 4 -4 2 0 4 0 1 -4 -1 1 3 0 -6 -4 8 -8 -4 -12 4 -4 12 -2 12 -8 -4 -4 4 16 -2 1 0 -8 12 0 4 -4 0 -8 0 2 -8 4 4 -4 8 2 0 -8 0 -16 0 -12 4 8 4 4 0 8 -8 16 4 2 -8 2 0 -24 1 0 -6 -24 4 12 0 8 -8 12 14 -4 4 -4 8 4 0 8 8 0 -8 0 -16 4 8 0 0 0 -8 0 -8 0 0 0 0 16 8 -6 16 16 -16 0 4 -16 4 -16 4 16 8 -16 8 12 -8 -4 8 0 8 -8 -12 4 0 8 4 -16 4 8 10 -24 -4 -8 12 8 8 4 -24 16 0 -16 0 16 0 -8 0 24 0 0 12 -16 8 4 8 16 -12 -8 16 16 -16 -16 -8 16 -16 16 -16 8 -4 -8 8 0 -8 -4 0 0 -4 -16 16 -8 8 -4 0 -4 0 6 24 -4 0 -12 4 -4 -8 -10 -8 0 -8 0 8 -8 24 12 0 8 4 8 -12 -8 -8 -4 -2 -4 -4 0 16 -16 0 -4 -4 -4 8 -4 0 6 0 24 -2 -4 0 -12 4 -1 0 -4 0 -8 -10 -8 -8 -8 2 0 -1 4 0 0 -8 4 8 -4 -4 0 4 8 -2 0 16 -16 0 -4 8 8 -4 -12 0 0 -2 4 8 0 8 -12 -8 4 2 4 8 4 -4 -4 -8 4 8 -2 0 -1 -2 -1 1 3 0 -8 -2 8 0 0 0 4 2 -8 -4 8 -8 -8 4 -4 4 4 -1 0 8 -8 0 0 0 -8 -8 -4 -2 0 0 0 8 0 2 8 0 0 -8 0 0 0 8 0 0 0 8 0 -4 0 2 0 -2 8 -8 1 0 0 0 0 0 0 0 0 4 0 4 0 0 0 0 -8 0 8 4 -8 0 8 0 -8 8 0 0 4 0 0 -4 0 0 0 8 0 0 0 8 0 0 0 8 0 -8 0 0 8 8 -8 0 8 0 4 4 -8 0 0 0 4 0 0 0 0 -8 0 0 -4 0 -4 0 0 0 8 0 0 0 0 -8 0 0 0 0 0 0 0 0 -8 0 0 8 4 8 0 -8 0 -8 0 0 8 0 -8 0 0 0 -4 -4 0 0 -4 0 0 0 -8 -4 0 0 0 0 0 0 -8 0 4 0 4 0 8 0 8 0 -8 0 0 0 0 0 -8 8 0 0 -4 -8 0 0 -2 0 0 0 -8 4 -4 0 0 0 0 0 0 0 8 8 2 0 0 0 -4 -1 0 0 -8 -8 0 0 -8 8 -4 0 1 -8 0 8 0 0 0 4 0 8 -4 -8 2 0 8 -4 4 0 0 0 0 8 0 -8 -2 4 8 0 0 -8 8 0 4 -2 -4 8 -4 0 -8 2 4 4 0 1 -4 -1 1 3 4 -4 -2 0 -16 0 0 0 2 0 4 8 -16 4 0 0 0 -4 3 0 16 -8 0 -4 0 0 16 0 6 -8 -4 0 -8 8 6 0 -24 0 0 0 8 8 16 8 4 0 -16 0 0 8 -6 8 -6 0 -16 -3 0 4 -16 8 0 0 -16 24 0 8 0 8 0 -16 8 0 -8 -16 0 0 0 0 8 16 0 12 4 0 8 0 -4 16 12 8 0 16 -4 0 0 0 4 -8 0 -8 0 -8 0 -16 0 -16 0 0 0 0 -4 16 4 -8 -8 -4 0 -8 0 -8 16 -4 16 0 0 0 4 16 -8 16 0 -16 0 -16 0 -12 -16 -8 -16 16 16 8 0 0 0 0 0 0 -16 0 0 0 0 -16 0 0 0 0 0 8 0 0 4 -4 8 4 -8 8 0 0 0 -4 8 -4 8 -4 4 -16 8 4 0 0 8 -16 4 16 -12 16 -16 -8 16 16 -8 0 0 0 0 0 16 16 -8 6 -8 -8 0 0 0 0 -4 -8 -8 -24 -4 0 -4 0 16 6 -8 0 0 0 3 0 -8 0 16 -4 8 -16 -16 4 0 -3 8 0 0 -8 0 8 0 0 0 0 -16 -6 0 0 0 0 4 -16 24 4 8 0 0 -6 0 16 4 16 -8 0 0 -4 -2 0 -8 0 0 0 2 0 4 -4 1 -4 -1 1 3 0 -4 2 0 -16 0 0 0 -2 0 4 0 0 0 0 0 0 -4 3 0 0 0 0 -4 0 0 16 0 2 -8 -12 0 0 0 2 0 0 0 0 0 0 -8 0 8 4 0 16 0 0 8 -2 8 -2 0 16 -3 0 -4 0 -8 0 0 0 0 0 8 0 -8 0 -16 0 0 0 0 0 0 0 0 8 0 0 -4 -4 0 0 0 12 0 -4 0 0 0 4 0 0 0 -4 8 0 8 0 -8 0 0 0 0 0 0 0 0 4 0 0 0 0 12 0 -8 0 8 -16 4 0 0 0 0 0 16 -8 -16 0 0 0 16 0 4 0 0 0 -16 0 0 0 0 0 0 0 0 0 0 0 0 0 -16 0 0 0 0 0 8 0 0 -4 0 8 -12 0 0 0 0 0 0 -8 4 -8 4 -4 16 8 -12 0 0 -8 16 -4 0 4 0 0 -8 0 0 0 0 0 0 0 0 0 16 -8 2 -8 0 0 0 0 0 -4 8 8 0 -12 0 4 0 -16 2 -8 0 0 0 3 0 8 0 -16 4 0 0 0 4 0 -3 0 0 0 0 0 8 0 0 0 0 0 -2 0 0 0 0 4 -16 0 12 0 0 0 -2 0 0 0 16 0 0 0 -4 2 0 0 0 0 0 -2 0 4 0 1 -4 -1 1 3 -8 2 4 0 -8 4 -4 -12 4 12 -2 -4 8 -12 -4 -12 8 -2 1 0 8 -4 0 4 4 0 -8 -8 2 8 4 12 -4 -8 2 0 -8 -8 8 0 4 4 -8 4 4 0 -8 8 8 4 2 8 2 0 -8 1 -8 2 8 4 4 0 8 -8 -4 6 -4 4 4 8 4 0 -8 -8 -8 -8 0 8 4 -8 0 0 0 0 0 0 0 0 0 0 0 8 2 16 -16 -16 0 4 16 4 0 4 0 -8 0 -8 4 -8 4 0 0 -8 0 4 4 0 0 4 0 4 -8 2 8 -4 8 -4 0 8 4 -8 0 0 0 0 0 0 -8 0 -8 0 0 -4 0 8 -4 -8 0 4 8 16 -16 -16 16 -8 0 0 0 0 0 -4 0 0 0 0 -4 0 0 -4 0 0 0 0 -4 0 -4 0 -2 8 -4 0 -4 4 -4 8 -2 8 0 8 0 -8 -8 -8 -4 0 8 -4 -8 4 8 -8 -4 -2 -4 -4 8 -8 -8 8 -4 -4 -4 8 -4 0 -2 0 8 -2 -4 0 -4 4 -1 0 -4 0 8 -2 8 8 8 2 0 -1 4 0 0 8 -4 -8 12 -12 0 4 -8 -2 8 -8 -8 8 -4 8 8 -4 4 0 0 -2 4 -8 8 8 4 0 -4 2 -4 0 4 12 -12 0 -4 0 -2 8 -1 -2 -1 1 3 -8 2 4 0 -8 -4 4 12 4 -12 -2 -4 8 -12 4 12 -8 -2 1 0 8 -4 0 4 -4 0 -8 8 2 8 4 -12 -4 -8 2 0 -8 8 -8 0 4 4 -8 4 4 0 -8 -8 -8 4 2 8 2 0 -8 1 8 2 8 4 -4 0 8 -8 4 6 4 4 -4 8 4 0 -8 -8 8 8 0 -8 4 -8 0 0 0 0 0 0 0 0 0 0 0 8 2 -16 16 16 0 4 -16 4 0 4 0 -8 0 -8 -4 8 -4 0 0 -8 0 4 4 0 0 4 0 4 -8 2 8 4 -8 4 0 8 4 -8 0 0 0 0 0 0 -8 0 -8 0 0 -4 0 -8 4 8 0 -4 8 -16 16 16 -16 -8 0 0 0 0 0 -4 0 0 0 0 -4 0 0 -4 0 0 0 0 -4 0 -4 0 -2 8 -4 0 4 -4 -4 8 -2 8 0 8 0 -8 -8 -8 -4 0 -8 4 8 -4 8 -8 -4 -2 -4 -4 -8 8 8 -8 -4 -4 -4 8 -4 0 -2 0 8 -2 -4 0 4 -4 -1 0 -4 0 8 -2 8 8 8 2 0 -1 4 0 0 8 4 -8 -12 12 0 -4 -8 -2 -8 8 8 -8 -4 8 8 -4 4 0 0 -2 -4 -8 8 8 4 0 4 2 -4 0 4 -12 12 0 -4 0 -2 8 -1 -2 -1 1 3 -4 -4 6 0 -16 0 0 0 -6 0 4 -8 16 -4 0 0 0 -4 3 0 -16 8 0 12 0 0 16 0 -2 -8 -4 0 8 -8 -2 0 -8 0 0 0 -8 8 -16 8 -12 0 -16 0 0 8 2 8 2 0 -16 -3 0 4 16 8 0 0 16 8 0 8 0 8 0 -16 -8 0 8 16 0 0 0 0 8 -16 0 -4 4 0 24 0 -4 -16 -4 24 0 -16 -4 0 0 0 4 -8 0 -8 0 -8 0 16 0 16 0 0 0 0 12 -16 -4 8 8 -4 0 -8 0 -8 16 -4 -16 0 0 0 -4 16 -8 16 0 16 0 -16 0 4 16 -24 16 16 -16 -8 0 0 0 0 0 0 16 0 0 0 0 -16 0 0 0 0 0 8 0 0 -12 4 8 4 -24 -8 0 0 0 4 8 -4 8 -4 4 -16 8 4 0 0 8 -16 4 -16 4 -16 16 -8 -16 -16 8 0 0 0 0 0 -16 16 -8 -2 -8 8 0 0 0 0 12 -8 -8 -8 -4 0 -4 0 16 -2 -8 0 0 0 3 0 -8 0 16 -4 -8 16 16 4 0 -3 -8 0 0 8 0 8 0 0 0 0 16 2 0 0 0 0 -12 -16 8 4 -8 0 0 2 0 -16 -4 16 8 0 0 -4 6 0 8 0 0 0 -6 0 4 4 1 -4 -1 1 3 -4 0 2 0 -8 0 -8 -4 -2 8 -4 -8 8 4 4 4 12 4 -1 -8 -8 8 8 0 0 0 -8 -4 2 0 0 -8 0 0 -2 0 0 -8 8 -8 0 -8 0 0 0 8 8 0 -12 0 -2 0 2 0 -8 1 8 0 -8 8 -8 -8 8 0 -4 -8 4 8 0 8 8 0 0 -8 4 8 8 -8 0 0 16 0 0 4 -8 0 -4 0 0 8 -8 -8 0 -8 0 -8 0 -8 0 8 8 0 16 0 -8 0 8 -8 0 4 -4 8 4 0 -8 4 0 0 16 -8 -8 8 8 -4 0 4 4 -8 0 8 0 0 0 0 8 0 8 -8 -8 0 0 0 0 8 0 0 -8 -4 -8 8 0 8 0 8 0 -8 -16 8 0 0 0 -4 4 -4 0 -4 8 8 -16 8 -4 -4 8 0 -8 0 0 -8 0 4 -8 4 8 8 -8 0 0 0 0 0 -8 8 0 0 -8 0 0 4 8 -8 0 2 0 -8 -8 8 12 -4 0 -8 8 0 0 -8 0 0 8 -2 0 -8 8 -4 -1 8 -8 -16 -8 8 0 0 0 -4 8 1 0 -8 16 0 0 0 -4 8 0 -4 8 -2 8 -8 -12 4 0 -8 0 0 -8 8 0 2 4 -8 -4 8 8 0 0 4 2 4 0 4 -8 0 -2 -4 4 4 1 -4 -1 1 3 -4 0 2 0 -8 0 0 4 -2 -8 -4 -8 8 4 -4 -4 -4 4 -1 -8 -8 8 -8 0 0 0 8 12 2 0 0 8 0 0 -2 -16 0 8 -8 8 0 8 0 0 0 8 8 0 4 0 -2 0 2 0 -8 1 -8 8 -8 -8 8 8 8 0 4 0 -4 -8 0 8 8 16 0 -8 -12 -8 -8 8 0 0 0 0 0 4 -8 0 -4 0 0 8 8 -8 -8 -8 0 -8 0 8 0 -8 -8 0 0 0 8 0 -8 8 0 4 -4 8 4 0 -8 4 0 0 0 8 -8 0 8 4 0 -4 4 -8 0 8 16 0 16 0 -8 0 8 -8 -8 0 0 0 -16 -8 0 0 8 4 -8 8 0 8 0 8 -16 8 0 -8 0 0 0 -4 4 -4 0 -4 8 8 0 -8 -4 -4 -8 0 8 0 8 -8 0 4 8 -4 -8 8 0 0 0 0 0 0 -8 8 0 0 8 0 0 -4 8 -8 0 2 0 -8 8 -8 -4 12 0 8 -8 0 0 8 -8 -16 8 -2 0 -8 -8 4 -1 -8 8 0 -8 0 0 0 0 -4 8 1 0 8 0 0 0 0 4 -8 0 4 8 -2 -8 8 4 -12 0 -8 0 0 -8 -8 16 2 -4 -8 -4 8 8 0 0 4 2 4 0 -4 8 0 -2 -4 4 4 1 -4 -1 1 3 -4 -4 2 4 -8 -4 0 8 -2 -8 -4 0 8 -4 0 -8 -8 4 -1 0 -8 0 0 0 4 -8 0 8 -2 0 0 4 8 0 2 8 0 12 -4 -16 8 8 0 0 0 0 -8 8 8 0 2 0 -2 8 8 1 -12 -8 8 -8 -4 0 -8 0 -8 0 0 8 4 8 0 -8 0 -8 -8 0 16 4 0 0 8 0 0 0 8 4 4 0 0 -8 0 8 8 0 -8 0 0 8 -8 -8 16 0 8 0 0 0 4 0 -4 0 -4 8 4 -8 0 -4 4 0 8 -8 8 0 -8 0 -8 8 4 -8 0 -8 -8 0 -8 0 16 0 -8 8 8 0 0 8 8 0 4 8 -16 -8 -8 0 8 0 8 8 8 -16 -8 0 -4 0 -4 0 4 -4 0 4 -8 0 -8 0 0 -4 -8 0 8 0 -8 8 0 -4 -4 0 8 -8 0 0 0 0 0 0 8 -8 -8 -8 0 -4 -8 8 8 -8 0 -2 0 0 12 -4 -8 8 0 8 -8 0 0 -16 8 8 -8 2 0 0 4 0 -1 0 -8 -8 8 0 0 0 0 -4 0 1 -8 0 8 0 -4 0 8 -4 8 0 8 2 -12 4 8 -8 0 -8 0 0 0 16 -8 -2 0 -8 -4 8 0 4 4 4 2 0 8 -8 4 -4 -2 0 4 4 1 -4 -1 1 3 -4 -4 2 4 -8 4 0 -8 -2 0 -4 0 8 -4 0 8 8 4 -1 0 -8 0 -16 0 -4 -8 16 -8 -2 0 0 -4 8 0 2 -8 0 -4 12 0 8 -8 0 0 0 0 -8 -8 -8 0 2 0 -2 8 8 1 4 0 8 8 4 16 -8 0 8 8 0 -8 -4 8 0 8 0 -8 8 0 0 -12 0 0 -8 0 0 0 8 4 4 0 0 -8 16 8 0 0 -8 0 0 -8 -8 8 0 0 -8 0 16 0 -4 0 4 0 -4 8 4 -8 0 -4 4 0 -8 8 8 -8 -8 0 8 -8 4 -8 0 -8 8 0 8 0 0 0 -8 8 8 0 0 8 -8 0 -4 -8 0 8 -8 0 8 0 8 8 -8 0 8 -16 -4 0 -4 0 4 -4 0 4 -8 0 8 -16 0 -4 8 0 -8 0 0 8 0 -4 4 0 -8 -8 8 0 0 0 0 0 8 -8 -8 -8 0 4 8 -8 8 -8 0 -2 0 0 -4 12 8 -8 0 -8 8 0 0 0 0 -8 -8 2 0 0 -4 0 -1 -16 8 8 8 -8 0 0 0 -4 0 1 -8 16 -8 0 4 0 -8 4 8 0 8 2 4 -12 -8 8 0 -8 0 0 0 0 8 -2 0 -8 -4 8 0 4 -4 4 2 0 8 8 -4 -4 -2 0 4 4 1 -4 -1 1 1 8 -8 2 -8 16 0 -8 0 2 -8 0 -8 0 0 0 0 8 0 3 -16 0 -8 0 -4 0 -16 16 8 2 8 4 0 -8 0 2 0 0 8 8 0 -8 0 16 16 -4 -16 -16 0 8 0 2 8 2 -16 -16 3 8 -8 0 0 0 0 0 0 0 -4 0 -16 0 16 -8 0 0 0 8 0 0 8 16 16 0 -4 -4 -8 0 -8 -4 -32 -4 0 0 0 -8 16 16 16 -4 0 16 0 0 16 0 16 0 16 0 0 0 -8 4 0 8 -8 -8 -4 -8 16 0 -16 -16 -8 0 0 0 0 8 16 0 -16 0 0 0 -16 0 -4 0 0 0 -16 0 -8 0 0 0 0 0 0 0 16 16 16 16 16 0 0 0 0 -8 0 -8 -8 4 8 16 -4 0 -8 0 0 -8 8 0 -4 0 -4 -8 -16 16 -4 0 0 -16 -16 -8 16 -4 16 -32 8 0 0 -8 -16 0 0 0 0 0 16 0 2 16 -8 8 8 8 8 -4 0 0 0 4 0 -8 0 -16 2 16 -16 0 0 3 0 -16 0 -16 -8 0 16 16 0 -16 3 -8 0 0 0 0 8 0 0 -16 0 0 2 8 8 8 8 -4 16 0 4 -8 0 0 2 0 0 8 16 -8 -8 0 0 2 -8 -8 0 0 -8 2 -8 0 8 1 0 1 1 1 4 -4 2 -8 -8 0 0 4 2 0 8 0 -8 -4 4 4 4 8 -1 -8 -8 0 -8 0 0 0 -8 4 2 0 0 8 -8 0 -2 16 0 0 0 8 8 0 0 -8 0 -8 -8 0 4 -8 2 0 -2 0 8 -1 0 4 -8 0 -8 -8 8 0 4 -4 -4 0 0 8 0 16 0 8 4 -8 8 0 8 0 0 0 0 12 8 8 -4 0 0 -8 -8 8 4 -8 0 -8 0 0 0 0 8 -8 -16 0 -8 0 -8 -8 0 12 -4 8 -4 8 0 4 8 8 -16 0 -8 -4 -8 -4 0 4 -4 8 -8 8 0 0 0 0 8 0 8 -8 -8 0 0 8 0 -8 0 0 8 4 8 -8 0 -8 0 8 0 8 -16 -8 8 -8 8 12 -4 -4 8 4 8 0 -16 -8 12 -4 0 0 0 0 4 8 -8 -4 -8 -4 0 -8 -4 0 0 0 0 0 8 -8 8 0 -8 0 0 4 8 8 -8 2 8 0 0 0 4 4 0 0 0 0 0 8 4 16 8 -2 -8 -8 -8 -4 -1 -8 0 0 -8 -4 0 0 0 8 -8 -1 -8 -8 0 0 0 0 4 8 0 4 -8 2 0 0 4 4 0 -8 0 0 0 8 16 -2 4 -8 4 -8 0 -8 0 8 2 -4 -8 4 8 -8 2 -4 0 4 1 0 1 1 1 0 4 -2 -8 8 0 8 -4 -2 -8 0 0 0 -8 4 -4 4 0 -1 0 0 0 -8 0 0 8 8 -4 -2 0 0 0 -8 0 2 0 0 8 0 8 0 0 8 0 0 0 0 0 4 0 -2 0 2 8 0 -1 8 -4 -8 0 0 -8 8 0 -4 4 -4 0 0 -8 8 0 0 0 -4 8 8 0 0 -8 0 0 0 -4 0 0 -4 0 0 0 0 8 -4 0 -8 0 0 0 -8 0 0 0 8 -8 0 8 0 8 0 -4 4 0 0 0 8 4 0 0 8 0 0 4 -8 -4 0 -4 0 -8 0 0 -8 0 -8 0 0 0 8 0 -8 0 0 0 -8 8 0 0 0 -4 0 0 -8 0 -8 -8 -8 0 8 0 0 0 0 -4 4 0 0 4 0 8 8 0 -4 0 0 0 0 0 -4 0 0 -4 0 -4 0 0 4 8 0 -8 0 0 8 -8 0 8 8 0 0 -4 0 -8 0 -2 0 8 8 0 4 -4 0 0 0 0 0 8 -4 0 0 2 0 0 0 -4 -1 -8 0 0 0 4 0 8 -8 0 0 -1 -8 -8 0 0 0 0 -4 0 8 4 0 -2 8 0 4 -4 0 8 0 0 0 8 0 2 4 0 0 8 0 -8 0 0 -2 4 -8 -4 0 -8 -2 4 0 0 1 0 1 1 1 0 0 -2 -4 8 -4 0 0 -2 0 0 0 0 -8 0 0 0 0 -1 8 0 0 0 0 -4 0 0 8 2 0 0 4 -8 0 -2 8 0 -4 4 0 0 0 -8 0 0 8 0 -8 0 0 2 0 -2 0 0 -1 -4 4 8 0 4 0 -8 0 0 -4 0 0 4 -8 8 8 0 0 8 0 0 4 0 8 -8 0 0 -8 0 4 4 0 0 0 8 -8 4 -8 0 -8 0 0 0 0 -8 0 0 8 8 -8 4 0 4 -8 4 0 0 0 8 -4 4 0 0 0 0 -4 8 0 -8 0 0 -8 0 0 0 0 0 0 -8 0 -8 0 8 0 0 0 0 0 4 -8 -8 0 0 -8 0 -8 0 -8 0 -8 0 8 4 0 4 -8 4 0 0 -4 0 8 0 8 -8 0 0 0 0 0 4 0 0 4 4 0 0 0 -4 -8 0 8 0 0 -8 8 0 0 0 4 -8 0 0 -8 0 2 0 8 -4 4 0 8 0 0 0 0 0 0 4 8 0 -2 0 8 4 0 -1 0 0 -8 0 -4 0 -8 8 0 8 -1 -8 0 -8 0 -4 0 0 4 0 0 0 2 -4 4 0 8 0 8 0 0 0 0 8 -2 0 0 0 8 0 -4 -4 0 -2 0 -8 0 4 -4 -2 0 0 0 1 0 1 1 1 4 -2 0 -8 8 -4 4 -4 0 12 6 -4 -8 -16 -4 4 8 -6 1 0 8 4 -16 -4 4 0 -8 8 -2 0 4 -4 12 -8 -2 16 0 0 0 0 -4 4 8 4 4 0 -8 8 -8 -4 2 0 2 0 8 -1 0 2 -8 4 -4 16 8 0 4 -10 4 -4 -4 8 4 -16 8 -8 -8 -8 0 0 4 8 0 0 0 0 0 8 0 0 0 0 -16 -8 -2 0 0 0 0 -4 0 -4 0 -4 16 -8 16 -8 4 8 4 0 0 8 -4 4 -4 0 -8 -4 -16 4 8 6 8 -4 -8 -4 4 -8 4 -8 0 0 0 0 0 0 -8 0 8 0 0 4 0 8 4 -8 0 -4 8 0 0 0 0 -8 0 0 -16 -16 8 4 -8 0 0 4 -4 0 0 -4 16 16 0 -4 -4 0 -4 0 -2 -8 -4 0 4 -4 4 8 6 -8 0 -8 0 0 8 -8 -4 0 -8 -4 8 4 -8 8 -4 2 4 4 0 0 -8 -8 4 4 4 0 -4 0 2 -16 8 2 4 0 -4 4 -1 16 -4 0 -8 -6 8 8 8 -6 0 1 12 -16 0 -8 4 0 4 -4 0 -4 8 -2 0 0 8 8 -4 -8 0 4 4 0 16 -2 4 -8 -4 8 -4 8 -4 6 0 0 -12 -4 4 -8 0 0 -2 4 -1 2 1 1 1 0 8 -6 -8 0 0 8 0 -6 -8 0 0 0 0 0 0 -8 0 3 16 0 0 0 12 0 -16 0 -8 2 -8 4 0 0 0 2 0 0 8 8 0 0 0 0 0 12 16 0 0 -8 0 2 -8 2 -16 0 3 8 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 -8 0 0 8 0 0 0 -4 -4 8 0 -8 -4 0 -4 0 0 0 0 -16 16 -16 -4 0 16 0 0 0 0 0 0 0 0 0 0 8 -12 0 0 0 0 -4 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 -4 0 0 0 16 0 0 0 0 0 0 0 0 0 -16 16 -16 16 0 0 0 0 0 -8 0 -8 8 -12 0 0 -4 0 0 0 0 8 0 0 -4 0 -4 0 0 0 -4 0 0 0 0 0 0 -4 0 0 -8 0 0 0 -16 0 0 0 0 0 0 0 2 0 0 8 8 -8 -8 12 0 0 0 4 0 0 0 0 2 0 16 0 0 3 0 0 0 0 0 0 0 0 0 16 3 0 0 0 0 0 -8 0 0 -16 0 0 2 8 8 -8 -8 12 0 0 4 0 0 0 2 0 0 0 0 0 -8 0 0 -6 8 0 0 0 -8 -6 8 0 0 1 0 1 1 1 -4 8 -2 -8 0 0 8 0 -2 -8 0 0 0 -4 0 0 8 0 3 16 0 0 16 -4 0 -16 -16 8 6 -8 -4 0 0 -8 6 -16 24 -8 -8 16 0 0 0 0 -4 16 0 0 8 0 6 -8 6 -16 0 3 -8 0 0 0 0 16 0 24 0 -4 0 0 0 0 0 -16 -8 0 8 0 16 -8 0 0 -16 12 4 8 -8 -8 -4 -16 12 -8 16 0 0 16 -16 16 4 0 -16 0 16 0 -16 0 16 0 0 0 0 8 -4 0 -4 0 0 -4 -8 0 -16 0 0 0 0 0 0 0 -4 0 0 0 -16 16 -16 -16 16 12 0 -8 0 -16 16 0 -16 0 0 0 16 0 0 16 -16 16 -16 0 -16 16 -16 16 -8 0 -8 8 -4 -4 0 -4 -8 0 -16 16 8 -4 0 4 0 4 0 0 0 -4 0 0 0 0 0 0 12 0 -16 -8 0 0 0 -16 0 0 0 0 0 0 0 6 0 0 -8 -8 8 8 -4 0 0 24 -4 16 0 -16 0 6 0 16 0 0 3 16 0 -16 0 0 -8 0 0 0 16 3 0 16 -16 -8 0 -8 0 0 -16 0 0 6 -8 -8 8 8 -4 0 24 -4 0 16 -16 6 0 0 -4 0 0 -8 0 0 -2 8 0 0 0 -8 -2 8 0 -4 1 0 1 1 1 0 6 -4 -8 8 -4 -4 -4 4 12 -2 -4 -8 -4 -4 4 0 2 1 16 8 4 0 4 4 -16 -8 0 2 -8 4 -4 4 -8 2 0 8 0 0 0 4 4 -8 4 -4 -16 8 -8 0 4 -2 8 -2 16 8 -1 0 2 -8 4 12 0 -8 -8 -12 -2 4 4 -4 -8 4 0 8 8 0 8 0 0 4 -8 0 0 0 -8 0 -8 0 0 0 0 0 8 -2 0 0 0 0 -4 0 -4 0 -4 0 8 0 8 -12 -8 4 8 0 -8 8 -4 -4 0 8 -4 0 -4 -8 -2 8 -4 8 12 -8 8 -4 -8 0 0 0 0 0 0 8 0 8 0 0 -4 0 -8 4 8 0 12 -8 0 0 0 0 8 0 0 0 0 -8 -4 8 -8 0 -8 -4 0 0 -4 0 0 8 8 -4 0 -4 0 -2 -8 -4 0 -12 -4 -4 -8 -2 8 0 8 0 8 -8 -8 4 16 8 -4 -8 -12 8 -8 4 -2 4 4 0 0 0 0 -4 4 4 -8 -4 0 2 0 8 -2 4 -16 12 4 -1 0 4 0 8 2 8 -8 -8 2 16 1 4 0 0 -8 4 -8 4 -4 -16 -4 8 2 0 0 0 0 4 -8 8 4 4 0 0 2 4 -8 0 8 -4 8 -4 -2 4 -8 -4 -4 4 -8 -4 8 -2 0 -1 2 1 1 1 8 -8 2 -8 -16 0 -8 0 2 -8 0 8 0 16 0 0 8 0 3 -16 0 8 0 -4 0 -16 -16 8 2 8 4 0 8 0 2 0 0 8 8 0 8 0 -16 -16 -4 -16 16 0 8 0 2 8 2 -16 16 3 8 8 0 0 0 0 0 0 0 12 0 16 0 -16 8 0 0 0 8 0 0 8 -16 -16 0 -4 -4 -8 0 -8 -4 -32 -4 0 0 0 8 16 16 16 -4 0 16 0 0 -16 0 -16 0 -16 0 0 0 -8 4 0 8 8 8 -4 -8 -16 0 16 16 8 0 0 0 0 8 -16 0 16 0 0 0 -16 0 -4 0 0 0 -16 0 8 0 0 0 0 0 0 0 16 16 16 16 -16 0 0 0 0 -8 0 -8 -8 4 8 -16 -4 0 8 0 0 -8 8 0 -4 0 -4 8 16 -16 -4 0 0 16 16 8 -16 -4 -16 -32 8 0 0 8 -16 0 0 0 0 0 -16 0 2 -16 8 8 8 8 8 -4 0 0 0 4 0 8 0 16 2 -16 -16 0 0 3 0 16 0 16 8 0 -16 -16 0 -16 3 8 0 0 0 0 8 0 0 -16 0 0 2 8 8 8 8 -4 -16 0 4 8 0 0 2 0 0 8 -16 8 -8 0 0 2 -8 8 0 0 -8 2 -8 0 8 1 0 1 1 1 4 -8 6 -8 0 0 -8 0 6 -8 0 0 0 4 0 0 -8 0 3 -16 0 0 16 12 0 -16 16 -8 -2 -8 -4 0 0 8 -2 16 8 -8 -8 16 0 0 0 0 12 -16 0 0 -8 0 -2 -8 -2 -16 0 3 -8 0 0 0 0 16 0 8 0 -4 0 0 0 0 0 16 8 0 -8 0 16 -8 0 0 16 -4 4 -8 -24 -8 -4 16 -4 -24 16 0 0 -16 -16 -16 4 0 -16 0 16 0 16 0 16 0 0 0 0 -8 12 0 4 0 0 -4 -8 0 16 0 0 0 0 0 0 0 4 0 0 0 16 -16 16 -16 16 -4 0 -24 0 -16 -16 0 16 0 0 0 16 0 0 -16 -16 -16 -16 0 16 16 16 16 -8 0 -8 -8 12 4 0 -4 -24 0 16 16 -8 4 0 4 0 4 0 0 0 -4 0 0 0 0 0 0 -4 0 16 -8 0 0 0 -16 0 0 0 0 0 0 0 -2 0 0 -8 -8 -8 -8 12 0 0 8 -4 16 0 16 0 -2 0 -16 0 0 3 16 0 16 0 0 8 0 0 0 -16 3 0 16 16 8 0 -8 0 0 -16 0 0 -2 -8 -8 -8 -8 12 0 8 -4 0 16 16 -2 0 0 4 0 0 -8 0 0 6 -8 0 0 0 -8 6 -8 0 4 1 0 1 1 1 4 -4 2 -8 8 0 -8 -4 2 -16 -8 0 8 12 -4 -4 4 -8 -1 -8 8 0 -8 0 0 0 8 4 2 0 0 -8 8 0 -2 16 0 0 0 8 -8 0 0 8 0 -8 8 0 4 8 2 0 -2 0 -8 -1 0 -4 8 0 8 -8 -8 0 -4 4 4 0 0 -8 0 16 0 -8 4 8 8 0 -8 0 0 0 0 12 8 8 -4 0 0 -8 -8 -8 -4 -8 0 -8 0 0 0 0 8 8 -16 0 -8 0 8 8 0 12 -4 -8 -4 -8 0 4 8 -8 -16 0 8 4 8 4 0 -4 -4 -8 8 -8 0 0 0 0 8 0 -8 -8 8 0 0 -8 0 8 0 0 8 -4 -8 -8 0 -8 0 -8 0 8 -16 -8 8 8 8 12 -4 -4 -8 4 8 0 -16 -8 12 -4 0 0 0 0 -4 -8 8 -4 8 4 0 8 4 0 0 0 0 0 -8 8 -8 0 8 0 0 -4 -8 -8 8 2 -8 0 0 0 4 4 0 0 0 0 0 8 -4 16 -8 -2 8 -8 8 4 -1 -8 0 0 8 4 0 0 0 -8 -8 -1 8 -8 0 0 0 0 -4 -8 0 -4 8 2 0 0 4 4 0 8 0 0 0 8 16 -2 -4 8 4 8 0 -8 0 -8 2 -4 8 -4 -8 -8 2 -4 0 4 1 0 1 1 1 4 -8 2 -4 8 -4 -8 -8 2 -8 -8 8 8 4 0 -8 0 -8 -1 0 8 8 16 0 -4 -8 16 0 -2 0 0 -4 0 0 2 -8 0 4 4 0 0 0 0 -8 0 0 -8 8 0 8 -2 0 2 -8 8 -1 4 4 -8 0 -4 16 8 0 8 -4 0 0 4 -8 -8 -8 0 -8 0 0 0 4 8 0 8 0 0 8 -8 12 4 0 0 8 0 8 4 0 -8 0 0 0 -8 0 -16 -8 8 0 0 0 -4 0 4 8 -4 -8 -4 0 -8 -4 12 8 8 0 -8 -4 -8 0 8 8 -4 -8 8 8 -8 0 -8 0 -16 0 8 8 -8 0 0 0 -8 0 4 8 -16 8 -8 0 -8 0 -8 -8 -8 -16 8 0 12 8 12 8 -4 -4 8 -4 -8 -8 8 0 8 -4 0 0 0 0 4 8 -8 4 -4 0 0 -8 -4 0 0 0 0 0 8 -8 0 -8 0 4 8 8 -8 -8 8 -2 8 -8 4 4 0 0 0 0 0 0 0 0 4 -8 8 2 -8 0 -4 0 -1 16 0 8 -8 -4 0 0 0 -8 0 -1 0 16 8 0 -4 0 -8 -4 -8 0 8 -2 4 4 0 0 0 8 0 0 8 0 -8 2 0 8 4 8 8 -4 -4 -8 2 -8 0 -8 -4 -4 2 -8 0 4 1 0 1 1 1 8 -10 4 -8 8 -4 4 -12 -4 -4 -2 4 8 -4 4 12 0 2 1 -16 -8 -4 0 4 4 -16 -8 0 2 8 4 12 -4 8 2 0 8 0 0 0 -4 4 8 4 -4 16 8 -8 0 4 -2 -8 -2 16 8 -1 0 2 8 4 -4 0 8 -8 -4 -2 -4 4 -4 -8 -4 0 -8 -8 0 -8 0 0 4 8 0 0 0 8 0 -8 0 0 0 0 0 -8 -2 0 0 0 0 -4 0 -4 0 -4 0 -8 0 -8 4 8 4 -8 0 8 0 4 4 0 8 -4 0 -4 -8 -2 -8 4 8 4 0 8 -4 -8 0 0 0 0 0 0 -8 0 -8 0 0 4 0 8 4 8 0 4 8 0 0 0 0 8 0 0 0 0 -8 -4 8 8 0 0 -4 0 0 4 0 0 -8 0 -4 0 -4 0 -2 -8 -4 0 4 4 -4 -8 -2 -8 0 -8 0 -8 8 8 -4 16 -8 -4 -8 -4 -8 -8 4 -2 4 -4 0 0 0 0 -4 4 4 -8 -4 0 2 0 8 -2 4 16 -4 -4 -1 0 4 0 8 2 -8 8 8 2 -16 1 -4 0 0 8 4 8 12 12 -16 4 -8 2 0 0 0 0 4 -8 8 4 -4 0 0 2 -4 8 -8 8 4 8 -4 -2 -4 8 4 -12 -12 -8 4 -8 -2 8 -1 2 1 1 1 4 -8 2 -4 -8 4 -8 8 2 0 8 -8 -8 4 0 8 0 8 -1 0 -8 -8 16 0 4 -8 0 0 -2 0 0 4 0 0 2 -8 0 4 4 0 0 0 0 8 0 0 8 -8 0 -8 -2 0 2 -8 -8 -1 4 -4 8 0 4 16 -8 0 -8 4 0 0 -4 8 8 -8 0 8 0 0 0 4 -8 0 8 0 0 8 -8 12 4 0 0 8 0 -8 -4 0 -8 0 0 0 -8 0 -16 8 8 0 0 0 4 0 -4 8 -4 8 -4 0 8 -4 12 -8 8 0 8 4 8 0 -8 -8 -4 8 -8 -8 -8 0 -8 0 -16 0 -8 8 8 0 0 0 -8 0 -4 -8 -16 -8 8 0 -8 0 -8 8 -8 -16 8 0 12 -8 12 8 -4 -4 -8 -4 -8 8 8 0 8 -4 0 0 0 0 -4 -8 8 4 4 0 0 8 4 0 0 0 0 0 -8 8 0 -8 0 -4 -8 -8 8 8 -8 -2 -8 8 4 4 0 0 0 0 0 0 0 0 -4 -8 -8 2 8 0 4 0 -1 16 0 8 8 4 0 0 0 8 0 -1 0 16 8 0 4 0 8 4 -8 0 -8 -2 4 4 0 0 0 -8 0 0 -8 0 -8 2 0 -8 4 -8 -8 -4 4 8 2 -8 0 8 4 -4 2 -8 0 4 1 0 1 1 1 0 4 -2 -8 -8 0 0 4 -2 -8 0 0 0 8 -4 4 4 0 -1 0 0 0 -8 0 0 8 -8 -4 -2 0 0 0 8 0 2 0 0 8 0 8 0 0 -8 0 0 0 0 0 4 0 -2 0 2 8 0 -1 8 4 8 0 0 -8 -8 0 4 -4 4 0 0 8 -8 0 0 0 -4 -8 8 0 0 8 0 0 0 -4 0 0 -4 0 0 0 0 -8 4 0 -8 0 0 0 -8 0 0 0 8 8 0 -8 0 -8 0 -4 4 0 0 0 -8 4 0 0 8 0 0 -4 8 4 0 4 0 8 0 0 -8 0 -8 0 0 0 -8 0 8 0 0 0 -8 -8 0 0 0 4 0 0 -8 0 -8 8 -8 0 8 0 0 0 0 -4 4 0 0 4 0 -8 8 0 -4 0 0 0 0 0 4 0 0 -4 0 4 0 0 -4 -8 0 8 0 0 -8 8 0 8 -8 0 0 4 0 8 0 -2 0 -8 8 0 4 -4 0 0 0 0 0 8 4 0 0 2 0 0 0 4 -1 -8 0 0 0 -4 0 -8 8 0 0 -1 8 -8 0 0 0 0 4 0 8 -4 0 -2 8 0 4 -4 0 -8 0 0 0 8 0 2 -4 0 0 -8 0 -8 0 0 -2 4 8 4 0 -8 -2 4 0 0 1 0 1 1 1 0 0 -2 -4 -8 4 0 0 -2 -8 0 0 0 8 0 0 0 0 -1 8 0 0 0 0 4 0 -16 8 2 0 0 -4 8 0 -2 8 0 -4 4 0 0 0 8 0 0 8 0 8 0 0 2 0 -2 0 0 -1 -4 -4 -8 0 -4 0 8 0 0 4 0 0 -4 8 -8 8 0 0 8 0 0 4 0 -8 -8 0 0 -8 0 4 4 0 0 0 8 8 -4 -8 0 -8 0 0 0 0 -8 0 0 -8 8 8 -4 0 -4 -8 4 0 0 0 -8 -4 4 0 0 0 0 4 -8 0 8 0 0 8 0 0 0 0 0 0 -8 0 8 0 -8 0 0 0 0 0 -4 8 -8 0 0 -8 0 -8 0 8 0 -8 0 8 4 0 4 -8 4 0 0 -4 0 -8 0 8 -8 0 0 0 0 0 -4 0 0 4 -4 0 0 0 4 8 0 -8 0 0 8 -8 0 0 0 -4 8 0 0 8 0 2 0 -8 -4 4 0 8 0 0 0 0 0 0 -4 8 0 -2 0 8 -4 0 -1 0 0 -8 0 4 0 8 -8 0 8 -1 8 0 -8 0 4 0 0 -4 0 0 0 2 -4 4 0 8 0 -8 0 0 0 0 8 -2 0 0 0 -8 0 -4 4 0 -2 0 8 0 -4 -4 -2 0 0 0 1 0 1 1 1 0 -4 -2 0 -8 0 0 -4 -2 0 0 8 0 0 4 -4 -4 0 -1 0 0 8 8 0 0 8 -8 4 -2 0 0 0 0 0 2 0 0 0 8 -8 -8 0 8 0 0 0 0 0 -4 0 -2 0 2 8 0 -1 0 4 8 0 0 8 -8 0 -4 -4 -4 0 0 8 0 0 0 0 4 8 -8 8 0 -8 0 0 0 4 0 -8 -4 0 0 0 0 -8 4 0 -8 0 0 0 -8 0 0 0 -8 -8 0 8 0 8 0 4 4 0 0 -8 0 4 -8 0 -8 0 0 -4 8 -4 0 -4 0 8 0 0 8 0 8 0 0 0 -8 0 8 0 0 -8 8 8 0 0 0 -4 0 0 -8 0 -8 8 8 0 -8 0 -8 0 -8 4 4 0 0 4 0 0 -8 0 4 0 0 0 0 0 4 0 0 -4 0 -4 0 0 -4 8 0 -8 0 0 -8 8 -8 8 8 0 0 -4 0 8 0 -2 0 0 0 8 -4 4 0 0 0 0 0 -8 4 0 0 2 0 0 0 -4 -1 8 0 0 0 -4 0 8 -8 0 0 -1 0 8 0 0 0 0 -4 0 8 4 0 -2 0 8 -4 4 0 -8 0 0 8 -8 0 2 4 0 0 -8 8 0 0 0 -2 -4 0 -4 0 0 -2 -4 0 0 1 0 1 1 1 0 -8 -2 4 -8 -4 -8 0 -2 8 0 8 0 0 0 0 8 0 -1 8 0 8 0 0 -4 0 0 0 2 0 0 4 0 0 -2 -8 0 4 -4 0 -8 0 -8 0 0 8 0 -8 8 0 2 0 -2 0 0 -1 4 -4 -8 0 4 0 8 0 0 4 0 0 4 8 0 -8 0 0 0 0 0 -4 0 8 8 0 0 0 0 -4 4 0 0 0 -8 8 -4 -8 0 -8 0 0 0 0 8 0 0 8 -8 -8 4 0 4 0 4 0 0 -8 0 -4 -4 0 0 0 0 4 -8 0 -8 0 0 8 0 0 0 0 0 0 8 0 8 0 -8 0 0 -8 0 0 4 -8 8 0 0 -8 0 -8 0 8 0 8 0 -8 -4 0 -4 0 4 0 0 -4 0 0 0 -8 0 0 0 0 0 0 -4 0 0 4 4 0 0 0 4 -8 0 8 0 0 8 -8 -8 0 0 4 -8 0 0 8 0 2 0 0 4 -4 8 0 0 0 0 0 0 0 -4 -8 0 -2 0 8 4 0 -1 0 0 8 0 4 0 -8 8 0 8 -1 0 0 8 0 -4 0 0 4 0 0 0 2 4 -4 8 0 0 -8 0 0 8 0 -8 -2 0 0 0 -8 8 4 -4 0 -2 -8 0 0 4 4 -2 -8 0 0 1 0 1 1 1 4 -6 0 -4 -16 0 4 0 0 4 6 4 -8 0 0 0 4 -6 1 0 8 -4 0 -4 0 0 16 4 2 0 -4 0 -4 0 2 0 -8 4 4 0 4 4 0 -4 4 0 8 0 -4 -4 -2 0 -2 0 8 -1 -4 2 0 4 0 0 0 8 0 6 0 4 0 0 4 0 0 -8 -4 0 0 -4 -4 0 0 0 0 -4 0 4 0 0 0 0 8 0 -2 0 0 0 0 -4 0 -4 -8 4 -8 0 -8 0 0 0 0 4 0 8 4 -4 -4 0 -4 4 8 -4 -8 -2 0 0 0 0 -4 0 4 -8 -8 0 8 0 8 0 0 0 0 0 0 -4 -8 0 0 0 -8 0 8 0 0 0 0 0 8 8 8 8 4 4 -4 -4 0 -4 4 0 0 -4 -8 -8 4 4 -4 0 -4 0 -2 -8 4 0 0 0 -4 -8 -2 0 0 0 0 0 0 0 4 0 0 0 0 0 -8 0 -4 -2 -4 4 -4 -4 -4 -4 4 4 4 8 4 0 2 0 8 -2 -4 0 0 0 -1 0 4 0 8 2 0 0 0 -6 0 1 -4 0 0 0 0 0 0 0 0 0 8 2 4 4 4 4 -4 16 -8 -4 -4 0 0 2 0 -8 -4 -16 4 4 0 6 0 4 4 0 0 -4 0 -4 -2 4 -1 2 1 1 1 -4 0 2 -4 0 -4 0 8 2 -8 0 0 0 -4 0 8 0 0 -1 0 0 0 8 0 -4 8 0 0 -2 0 0 -4 0 0 2 0 0 -4 -4 8 0 -8 0 0 0 0 0 8 0 0 -2 0 2 8 0 -1 -4 4 0 8 -4 8 0 0 -8 4 0 -8 4 0 0 0 0 0 0 0 8 -4 0 0 0 0 0 0 8 -4 4 0 0 -8 -8 0 4 0 8 0 0 8 8 -8 -8 0 0 0 -8 0 -4 0 4 0 -4 0 4 0 0 -4 -4 0 0 -8 0 4 0 0 8 -8 4 0 0 0 0 0 0 0 -8 0 0 -8 0 0 0 0 0 0 4 8 -8 -8 0 0 8 0 8 0 0 -8 0 -8 -4 0 -4 0 -4 4 0 -4 8 0 0 -8 0 4 8 0 -8 0 4 0 0 4 -4 0 -8 0 4 0 0 0 0 0 0 0 0 8 0 4 8 -8 0 0 0 -2 0 0 -4 -4 0 0 0 8 -8 0 0 8 4 0 0 2 0 0 -4 0 -1 8 -8 0 0 4 0 0 0 0 0 -1 0 8 0 0 -4 0 8 -4 8 0 0 -2 -4 -4 0 0 0 0 0 0 0 8 0 2 0 0 -4 0 0 -4 -4 0 2 0 0 8 -4 -4 2 0 0 -4 1 0 1 1 1 -4 -4 2 0 0 0 -8 -4 2 8 0 0 0 -4 -4 -4 -4 0 -1 8 0 0 0 0 0 0 8 -4 2 0 0 8 0 0 -2 8 0 0 0 0 0 8 0 0 0 8 0 0 -4 0 2 0 -2 0 0 -1 0 4 0 -8 -8 0 0 0 -4 4 4 -8 0 0 0 8 0 0 -4 8 0 0 0 0 8 0 0 -4 -8 0 -4 0 0 8 0 0 4 8 0 8 0 -8 0 8 0 0 -8 0 0 0 -8 8 0 -4 -4 0 4 0 0 4 0 0 -8 -8 0 4 0 4 0 -4 4 0 0 0 -8 0 -8 0 0 0 0 8 0 0 0 0 -8 8 0 0 0 -4 0 8 0 8 0 0 -8 0 -8 0 0 0 0 -4 -4 4 0 4 -8 0 -8 0 -4 4 -8 0 8 0 4 0 0 -4 -8 4 -8 0 4 0 0 0 0 0 0 0 0 0 8 0 0 -4 0 0 0 2 0 0 0 0 -4 -4 0 -8 8 0 0 0 4 8 0 -2 0 8 -8 4 -1 0 -8 8 0 4 0 0 0 0 8 -1 0 0 8 0 0 0 -4 8 0 -4 0 2 0 0 -4 -4 0 0 0 0 0 0 8 -2 -4 0 -4 0 0 0 0 0 2 -4 0 -4 8 0 2 -4 0 -4 1 0 1 1 1 -4 0 2 -4 0 4 0 -8 2 0 0 0 0 -4 0 -8 0 0 -1 0 0 0 8 0 4 8 0 0 -2 0 0 4 0 0 2 0 0 -4 -4 8 0 8 0 0 0 0 0 -8 0 0 -2 0 2 8 0 -1 -4 -4 0 -8 4 8 0 0 8 -4 0 8 -4 0 0 0 0 0 0 0 8 -4 0 0 0 0 0 0 8 -4 4 0 0 -8 -8 0 -4 0 8 0 0 -8 8 8 -8 0 0 0 -8 0 4 0 -4 0 -4 0 4 0 0 -4 -4 0 0 8 0 -4 0 0 -8 8 4 0 0 0 0 0 0 0 -8 0 0 -8 0 0 0 0 0 0 -4 -8 -8 8 0 0 8 0 8 0 0 -8 0 -8 -4 0 -4 0 -4 4 0 -4 8 0 0 -8 0 4 -8 0 8 0 -4 0 0 4 4 0 8 0 -4 0 0 0 0 0 0 0 0 8 0 -4 -8 8 0 0 0 -2 0 0 -4 -4 0 0 0 -8 8 0 0 8 -4 0 0 2 0 0 4 0 -1 8 8 0 0 -4 0 0 0 0 0 -1 0 8 0 0 4 0 -8 4 8 0 0 -2 -4 -4 0 0 0 0 0 0 0 8 0 2 0 0 -4 0 0 -4 4 0 2 0 0 -8 4 -4 2 0 0 -4 1 0 1 1 1 -4 -4 2 0 0 0 0 4 2 -8 0 0 0 -4 4 4 -4 0 -1 8 0 0 0 0 0 0 8 -4 2 0 0 -8 0 0 -2 8 0 0 0 0 0 -8 0 0 0 8 0 0 -4 0 2 0 -2 0 0 -1 0 -4 0 8 8 0 0 0 4 -4 -4 8 0 0 0 8 0 0 -4 -8 0 0 0 0 8 0 0 -4 -8 0 -4 0 0 8 0 0 -4 8 0 8 0 8 0 -8 0 0 -8 0 0 0 8 -8 0 -4 -4 0 4 0 0 4 0 0 -8 8 0 -4 0 -4 0 4 4 0 0 0 -8 0 -8 0 0 0 0 8 0 0 0 0 -8 -8 0 0 0 4 0 8 0 8 0 0 -8 0 -8 0 0 0 0 -4 -4 4 0 4 -8 0 -8 0 -4 4 8 0 -8 0 -4 0 0 -4 8 -4 8 0 -4 0 0 0 0 0 0 0 0 0 -8 0 0 4 0 0 0 2 0 0 0 0 -4 -4 0 8 -8 0 0 0 -4 8 0 -2 0 8 8 -4 -1 0 8 8 0 -4 0 0 0 0 8 -1 0 0 8 0 0 0 4 -8 0 4 0 2 0 0 -4 -4 0 0 0 0 0 0 8 -2 4 0 -4 0 0 0 0 0 2 -4 0 4 -8 0 2 -4 0 -4 1 0 1 1 1 0 -6 4 -4 -8 0 4 0 -4 4 6 -4 0 -4 0 0 -4 -6 1 0 0 4 8 4 0 0 16 -4 -2 -8 -4 0 4 0 -2 8 0 -4 -4 8 -4 -4 0 4 -4 0 0 0 4 -4 2 8 2 0 0 -1 4 2 8 -4 0 -8 8 0 0 6 0 4 0 -8 -4 -8 0 16 4 0 -8 4 4 0 -8 0 0 -4 0 4 0 0 0 0 0 -8 -2 0 0 0 0 4 0 4 0 -4 0 0 0 0 0 0 0 4 0 -16 0 4 4 0 -4 -4 0 -4 0 -2 -8 0 0 0 0 8 4 0 0 0 0 0 0 0 -8 0 -8 0 0 4 0 0 0 0 0 0 -16 0 0 0 0 8 0 0 0 0 4 4 -4 -4 0 0 -4 0 0 4 0 0 4 0 4 0 4 0 -2 0 -4 0 0 0 -4 0 -2 0 0 0 0 8 8 8 -4 0 0 0 0 0 16 -8 -4 2 4 -4 4 4 4 4 -4 -4 -4 0 4 -8 2 -8 0 2 4 0 0 0 -1 -8 4 -8 0 2 0 0 0 -6 0 1 4 8 8 0 0 -8 0 0 0 0 0 -2 -4 -4 -4 -4 4 8 0 -4 4 8 8 -2 0 0 0 -8 -4 4 0 6 -4 4 -4 0 0 -4 4 -4 -2 0 -1 2 1 1 1 0 2 0 -8 0 -4 -4 0 0 4 -2 -4 0 4 0 0 4 2 -3 -8 0 4 -8 0 4 16 0 -4 -2 0 0 4 -4 0 2 0 0 8 -8 8 -4 -4 8 12 0 8 0 8 -4 -4 2 0 -2 -16 0 3 -8 6 0 4 4 8 0 0 0 6 0 -12 12 0 4 0 0 0 4 0 -8 8 -12 -8 0 4 4 -4 0 -8 0 0 -4 0 8 0 -6 -8 -16 8 -4 -4 16 4 8 -12 0 8 -8 -8 -4 0 -12 4 0 0 0 4 -4 0 8 12 0 12 0 -6 0 0 -8 0 0 0 4 0 0 0 0 0 -8 4 0 0 0 0 0 4 0 0 -12 -8 8 0 0 8 16 -8 -16 0 0 -8 0 8 -8 4 8 -4 0 0 12 0 0 -4 0 -8 4 0 -4 4 4 -4 -6 0 -12 0 -4 0 12 0 -6 -8 -4 8 0 0 0 0 -4 -16 0 12 8 0 0 0 -4 2 -12 4 -8 8 -4 4 0 4 -4 0 0 -8 6 0 0 -2 12 8 4 0 3 8 -12 0 0 6 0 8 -8 2 -8 -3 -4 -8 0 0 4 0 0 4 16 0 0 -2 8 -8 4 -4 0 0 0 0 4 8 0 2 0 0 0 0 -4 8 -4 -2 0 -4 4 0 -4 -8 0 4 -2 0 -1 2 1 1 1 0 -4 -2 0 8 0 -8 4 -2 0 0 -8 0 0 -4 4 -4 0 -1 0 0 -8 8 0 0 8 8 4 -2 0 0 0 0 0 2 0 0 0 8 -8 8 0 -8 0 0 0 0 0 -4 0 -2 0 2 8 0 -1 0 -4 -8 0 0 8 8 0 4 4 4 0 0 -8 0 0 0 0 4 -8 -8 8 0 8 0 0 0 4 0 -8 -4 0 0 0 0 8 -4 0 -8 0 0 0 -8 0 0 0 -8 8 0 -8 0 -8 0 4 4 0 0 8 0 4 -8 0 -8 0 0 4 -8 4 0 4 0 -8 0 0 8 0 8 0 0 0 8 0 -8 0 0 8 8 -8 0 0 0 4 0 0 -8 0 -8 -8 8 0 -8 0 -8 0 -8 4 4 0 0 4 0 0 -8 0 4 0 0 0 0 0 -4 0 0 -4 0 4 0 0 4 -8 0 8 0 0 8 -8 8 8 -8 0 0 4 0 -8 0 -2 0 0 0 8 -4 4 0 0 0 0 0 -8 -4 0 0 2 0 0 0 4 -1 8 0 0 0 4 0 -8 8 0 0 -1 0 8 0 0 0 0 4 0 8 -4 0 -2 0 8 -4 4 0 8 0 0 -8 -8 0 2 -4 0 0 8 -8 0 0 0 -2 -4 0 4 0 0 -2 -4 0 0 1 0 1 1 1 0 -2 0 -4 0 0 -4 -4 0 4 -2 -4 0 4 4 4 0 2 -3 0 0 4 0 0 0 8 -8 0 2 0 0 0 -4 0 -2 8 0 -4 4 0 -4 4 -8 4 0 0 0 0 0 -4 -2 0 2 -8 0 3 4 -2 0 -4 0 0 0 0 4 -2 12 4 0 0 4 -8 0 0 0 8 0 -4 -4 8 8 4 -4 0 0 -4 0 0 -4 0 0 0 2 0 8 0 4 4 -8 -4 0 -4 -8 -8 0 8 0 -8 0 0 0 0 0 4 -4 0 4 4 8 -4 0 2 0 -12 0 -4 0 0 4 0 8 0 -8 0 0 4 0 0 0 0 0 4 8 -8 0 0 0 -4 0 0 -8 0 8 0 -8 0 8 0 -4 4 4 0 0 0 4 0 0 -4 -8 0 0 0 4 -4 -4 4 2 0 -4 0 0 -12 -4 0 2 8 -4 -8 0 0 0 0 -4 -8 8 0 0 4 0 0 -4 -2 -4 4 4 -4 0 0 0 -4 4 0 0 0 -2 -8 0 2 4 0 0 12 3 0 4 8 0 -2 0 -8 8 2 0 -3 -4 0 -8 0 0 0 4 0 8 4 0 2 -4 4 0 0 0 0 0 0 4 0 8 -2 -4 0 0 0 -4 4 0 -2 0 0 4 -4 0 -4 0 0 -2 0 -1 2 1 1 1 0 -2 0 -4 0 0 4 -12 0 4 -2 4 0 -4 -4 12 0 2 -3 0 0 -4 0 0 0 8 8 0 -6 0 0 0 4 0 6 -8 0 -4 4 0 4 4 8 4 0 0 0 0 0 -4 6 0 -6 -8 0 3 4 -2 0 -4 0 0 0 0 12 -2 -12 4 0 0 -4 8 0 0 0 24 0 -4 -4 -8 -8 -12 -4 0 0 -4 0 0 12 0 0 0 2 0 8 0 4 4 -8 -4 0 -4 8 8 0 -8 0 -24 0 0 0 0 0 -4 4 0 4 4 -8 -4 0 2 0 12 0 -12 0 0 4 0 -8 0 8 0 0 -12 0 0 0 0 0 -4 -8 -24 0 0 0 -12 0 0 -8 0 8 0 8 0 -8 0 -4 4 4 0 0 0 4 0 0 4 8 0 0 0 4 -4 -4 4 2 0 -4 0 0 12 -4 0 2 -8 12 8 0 0 0 0 4 -8 24 0 0 12 0 0 -4 6 -4 -4 4 -4 0 0 0 -4 4 0 0 0 -2 8 0 -6 4 0 0 -12 3 0 4 -8 0 -2 0 8 -8 2 0 -3 4 0 8 0 0 0 12 0 8 -4 0 -6 -4 4 0 0 0 0 0 0 -4 0 -8 6 4 0 0 0 4 4 0 -2 0 0 -4 -12 0 -4 0 0 -2 0 -1 2 1 1 1 0 -6 0 0 0 -4 4 0 0 -4 -2 4 0 -4 0 0 -4 2 -3 8 0 -4 8 0 4 0 0 4 -2 0 0 4 4 0 2 0 0 0 0 -8 4 -4 -8 -4 0 -8 0 8 4 -4 2 0 -2 0 0 3 0 -2 0 4 4 -8 0 0 0 -2 0 4 12 0 -4 0 0 0 -4 0 8 0 4 8 0 4 4 4 0 0 0 0 -4 0 -8 0 2 8 0 -8 -4 -4 0 4 -8 4 0 -8 8 8 -4 0 -12 -4 0 0 0 -4 4 0 0 -4 0 -4 0 2 0 0 -8 0 0 0 4 0 0 0 0 0 8 4 0 0 0 0 0 -4 0 0 -12 -8 -8 0 0 -8 0 8 0 0 0 8 0 -8 0 4 0 4 0 0 -4 0 0 4 0 8 -4 0 -4 4 4 -4 2 0 4 0 -4 0 -4 0 2 8 -4 -8 0 0 0 0 4 0 0 12 8 0 0 0 -4 2 4 -4 0 0 4 -4 0 4 -4 0 0 8 -2 0 0 -2 -4 -8 4 0 3 -8 4 0 0 -2 0 -8 8 2 8 -3 4 8 0 0 4 0 0 4 0 0 0 -2 0 0 -4 4 0 0 0 0 -4 -8 0 2 0 0 0 0 4 0 -4 -2 0 4 -4 0 -4 0 0 -4 -2 0 -1 2 1 1 1 0 -8 -2 4 8 4 -8 0 -2 0 0 -8 0 0 0 0 8 0 -1 8 0 -8 0 0 4 0 16 0 2 0 0 -4 0 0 -2 -8 0 4 -4 0 8 0 8 0 0 8 0 8 8 0 2 0 -2 0 0 -1 4 4 8 0 -4 0 -8 0 0 -4 0 0 -4 -8 0 -8 0 0 0 0 0 -4 0 -8 8 0 0 0 0 -4 4 0 0 0 -8 -8 4 -8 0 -8 0 0 0 0 8 0 0 -8 -8 8 -4 0 -4 0 4 0 0 8 0 -4 -4 0 0 0 0 -4 8 0 8 0 0 -8 0 0 0 0 0 0 8 0 -8 0 8 0 0 8 0 0 -4 8 8 0 0 -8 0 -8 0 -8 0 8 0 -8 -4 0 -4 0 4 0 0 -4 0 0 0 -8 0 0 0 0 0 0 4 0 0 4 -4 0 0 0 -4 8 0 -8 0 0 -8 8 8 0 0 -4 8 0 0 -8 0 2 0 0 4 -4 8 0 0 0 0 0 0 0 4 -8 0 -2 0 8 -4 0 -1 0 0 8 0 -4 0 8 -8 0 8 -1 0 0 8 0 4 0 0 -4 0 0 0 2 4 -4 8 0 0 8 0 0 -8 0 -8 -2 0 0 0 8 -8 4 4 0 -2 -8 0 0 -4 4 -2 -8 0 0 1 0 1 1 1 4 -10 0 0 8 4 4 4 0 -4 6 -12 -8 -8 4 -4 0 -6 1 0 8 12 16 -4 -4 0 -8 0 -2 0 4 4 4 -8 -2 -16 0 8 8 0 4 4 8 4 4 0 8 -8 0 -4 2 0 2 0 -8 -1 -8 -6 8 4 4 -16 -8 0 -4 -2 -4 -4 4 8 -4 16 8 -8 0 8 0 -8 4 8 0 0 0 -8 0 0 0 0 0 0 0 8 6 0 0 0 0 -4 0 -4 16 -4 0 -8 0 -8 -4 -8 -4 8 0 8 -4 -4 4 0 0 -4 0 4 -8 -2 -8 4 8 4 4 -8 4 8 16 0 -16 0 -16 0 8 0 -8 0 0 -4 16 -8 -4 8 16 4 8 0 0 0 0 -8 -16 -16 0 0 0 4 0 -8 0 4 -4 0 0 4 0 0 8 -4 -4 0 -4 0 6 8 -4 0 -4 4 4 -8 -2 -8 0 -8 0 0 -8 8 4 0 8 4 -8 -4 -8 8 -4 2 4 -4 -8 -8 0 0 4 4 4 0 -4 0 -6 16 -8 2 4 0 4 -4 -1 -16 -4 0 8 2 8 8 8 -6 0 1 4 16 0 -8 -4 0 -4 4 0 4 8 -2 8 8 0 0 -4 -8 0 4 12 0 -16 -2 -4 -8 -4 8 -12 0 4 6 0 8 -4 4 -4 0 0 -8 -2 4 -1 2 1 1 1 0 0 -6 0 0 0 0 0 -6 0 0 0 0 0 0 0 0 0 3 0 0 0 0 12 0 0 0 0 -6 24 -12 0 0 0 -6 0 0 0 0 0 0 0 0 0 12 0 0 0 0 0 -6 24 -6 0 0 3 0 0 0 0 0 0 0 0 0 -12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 -4 0 0 0 12 0 12 0 0 0 0 0 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 -12 0 0 0 0 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -48 0 12 0 0 0 -48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -12 0 0 12 0 0 0 0 0 0 0 -4 0 -4 0 0 0 12 0 0 0 0 0 0 12 0 0 24 0 0 0 0 0 0 0 0 0 0 0 -6 0 0 0 0 0 0 12 0 0 0 -12 0 0 0 0 -6 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 24 0 0 0 0 0 -6 0 0 0 0 12 0 0 -12 0 0 0 -6 0 0 0 0 0 0 0 0 -6 0 0 0 0 0 -6 0 0 0 1 0 1 1 1 -4 0 -2 0 0 0 0 0 -2 0 0 0 0 -4 0 0 0 0 3 0 0 0 0 -4 0 0 0 0 -2 8 -4 0 0 8 -2 0 8 0 0 0 0 0 0 0 -4 0 0 0 0 0 -2 8 -2 0 0 3 0 0 0 0 0 0 0 8 0 -4 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 -4 4 0 8 0 -4 -16 -4 8 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 0 -4 0 0 -4 0 0 0 0 0 0 0 0 0 0 -4 0 0 0 0 -16 0 16 0 -4 0 8 0 16 -16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 -4 0 -4 8 0 0 0 0 -4 0 4 0 4 0 0 0 -4 0 0 0 0 0 0 -4 0 -16 8 0 0 0 0 0 0 0 0 0 0 0 -2 0 0 0 0 0 0 -4 0 0 8 -4 0 0 0 0 -2 0 0 0 0 3 0 0 0 0 0 8 0 0 0 0 3 0 0 0 8 0 8 0 0 0 0 0 -2 0 0 0 0 -4 0 8 -4 0 0 0 -2 0 0 -4 0 0 0 0 0 -2 0 0 0 0 0 -2 0 0 -4 1 0 1 1 1 0 2 -4 -4 0 0 -4 0 4 4 -2 -4 -8 4 0 0 -4 2 1 0 8 4 0 4 0 0 0 -4 -2 8 -4 0 -4 0 -2 0 0 4 4 0 4 4 0 -4 -4 0 -8 0 4 4 2 -8 2 0 8 -1 -4 -6 0 4 0 0 16 0 0 6 0 -4 0 0 -4 0 0 8 4 0 0 -4 -4 0 0 0 0 4 0 4 0 0 0 0 8 -16 6 0 0 0 0 -4 0 -4 -8 4 8 0 -8 0 0 0 0 -4 0 -8 0 -4 4 0 -4 4 -8 4 8 -2 0 0 0 0 0 0 -4 -8 8 0 -8 0 8 0 -16 0 0 0 0 -4 8 0 0 0 -8 0 -8 0 0 0 0 0 -8 8 -8 8 4 -4 -4 4 0 0 4 0 0 4 8 -8 -4 0 -4 0 -4 0 6 -8 4 0 0 0 4 8 -2 0 0 0 0 -8 16 0 4 0 0 0 0 0 8 0 4 2 -4 -4 -4 -4 4 4 -4 4 4 0 4 0 -6 0 8 2 -4 0 0 0 -1 0 -4 0 -8 2 0 0 0 2 0 1 -4 0 0 0 0 8 0 0 0 0 8 -2 4 4 -4 -4 4 0 0 -4 4 0 0 -2 0 -8 0 0 -4 4 0 -2 4 -4 4 0 0 -4 -4 4 -2 0 -1 2 1 1 1 0 -8 -6 8 0 0 -8 0 -6 8 0 0 0 0 0 0 8 0 3 -16 0 0 0 12 0 16 0 8 2 -8 4 0 0 0 2 0 0 -8 -8 0 0 0 0 0 12 -16 0 0 8 0 2 -8 2 16 0 3 -8 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 8 0 0 -8 0 0 0 -4 -4 -8 0 8 -4 0 -4 0 0 0 0 16 -16 16 -4 0 -16 0 0 0 0 0 0 0 0 0 0 -8 -12 0 0 0 0 -4 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 -4 0 0 0 16 0 0 0 0 0 0 0 0 0 16 -16 16 -16 0 0 0 0 0 8 0 8 -8 -12 0 0 -4 0 0 0 0 -8 0 0 -4 0 -4 0 0 0 -4 0 0 0 0 0 0 -4 0 0 -8 0 0 0 16 0 0 0 0 0 0 0 2 0 0 -8 -8 8 8 12 0 0 0 4 0 0 0 0 2 0 -16 0 0 3 0 0 0 0 0 0 0 0 0 -16 3 0 0 0 0 0 -8 0 0 16 0 0 2 -8 -8 8 8 12 0 0 4 0 0 0 2 0 0 0 0 0 8 0 0 -6 -8 0 0 0 8 -6 -8 0 0 1 0 1 1 1 0 -6 -4 4 0 0 4 0 4 -4 -2 4 -8 -4 0 0 4 2 1 0 8 -4 0 4 0 0 0 4 -2 8 -4 0 4 0 -2 0 0 -4 -4 0 -4 4 0 -4 -4 0 8 0 -4 4 2 -8 2 0 -8 -1 4 2 16 4 0 0 0 0 0 -2 0 -4 0 0 4 0 0 8 -4 0 0 4 -4 0 0 0 0 -4 0 -4 0 0 0 0 -8 0 -2 0 0 0 0 -4 0 -4 8 4 -8 0 8 0 0 0 0 4 0 -8 0 4 -4 0 4 4 8 4 -8 6 -16 0 0 0 0 0 -4 8 -8 0 8 0 -8 0 0 0 -16 0 0 4 -8 0 0 0 8 0 -8 0 0 0 0 0 8 -8 8 -8 -4 -4 4 -4 0 0 4 0 0 -4 -8 8 4 0 -4 0 -4 0 -2 8 4 0 0 0 4 -8 6 0 0 0 0 -8 0 16 -4 0 0 0 0 0 8 0 4 2 -4 4 4 4 -4 -4 -4 4 4 0 4 0 2 0 -8 2 -4 0 0 0 -1 0 -4 0 8 -6 0 0 0 2 0 1 4 0 0 0 0 8 0 0 0 0 8 -2 -4 -4 4 4 4 0 0 -4 -4 0 0 -2 0 -8 0 0 4 -4 0 -2 4 4 -4 0 0 4 -4 -4 -2 0 -1 2 1 1 1 -4 0 -2 0 0 -8 -8 8 -2 8 0 0 0 -4 -8 8 0 0 3 0 0 0 0 -4 -8 0 0 0 -2 -8 12 8 0 24 -2 0 -8 0 0 0 0 0 0 0 -4 0 0 16 0 0 -2 -8 -2 0 0 3 0 0 0 0 8 0 0 -8 8 12 -24 0 -24 0 0 0 24 0 0 16 0 0 0 0 0 -4 4 0 -8 0 12 -16 -4 -8 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 8 16 -24 0 -4 0 -4 0 0 12 0 0 0 0 0 0 0 -24 16 8 -4 0 0 0 0 16 0 -16 0 -4 0 -8 0 -16 16 0 0 16 -24 16 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 -4 0 12 -8 0 0 0 0 -4 0 4 0 4 0 0 0 12 8 -24 0 0 0 0 -4 0 -16 -8 0 0 0 0 16 -24 16 8 0 0 0 -2 0 0 0 0 0 0 -4 0 0 -8 12 0 0 0 0 -2 0 0 8 -24 3 0 0 0 0 0 24 0 0 0 0 3 0 0 0 24 -8 -8 8 8 0 -8 0 -2 0 0 0 0 -4 0 -8 12 0 0 0 -2 -8 0 -4 0 0 0 -8 0 -2 0 0 8 8 0 -2 0 0 -4 1 0 1 1 1 -8 0 2 0 0 0 0 0 2 0 0 0 0 -8 0 0 0 0 3 0 0 0 0 -4 0 0 0 0 2 8 4 0 0 0 2 0 0 0 0 0 0 0 0 0 -4 0 0 0 0 0 2 8 2 0 0 3 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 -4 0 0 0 -4 32 -4 0 0 0 0 0 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 -8 0 0 -4 0 0 0 0 0 0 0 0 0 0 -8 0 0 0 0 0 0 -16 0 -4 0 0 0 -16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 -8 0 -4 0 0 0 0 0 -8 0 -4 0 -4 0 0 0 -4 0 0 0 0 0 0 -4 0 32 8 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 -4 0 0 0 4 0 0 0 0 2 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 8 0 0 0 0 0 2 0 0 0 0 -4 0 0 4 0 0 0 2 0 0 -8 0 0 0 0 0 2 0 0 0 0 0 2 0 0 -8 1 0 1 1 1 -4 -2 0 0 0 -4 -4 4 0 4 -2 -4 0 0 4 -4 0 2 1 0 0 4 8 -4 4 0 -8 0 -2 0 4 -4 4 8 -2 8 0 0 0 -8 4 -4 8 -4 4 0 0 8 0 4 2 0 2 0 0 -1 0 2 0 -4 -4 -8 0 0 -4 -2 -4 4 -4 0 4 -8 -8 0 0 8 8 0 -4 8 8 0 0 0 0 0 0 0 0 0 8 0 -2 0 0 0 0 4 0 4 8 4 8 -8 -8 -8 4 -8 4 0 0 0 4 -4 -4 0 0 4 -8 -4 0 -2 0 4 -8 4 -4 0 -4 0 -8 0 8 0 -8 0 0 0 0 0 0 -4 -8 -8 4 -8 8 4 0 0 0 0 0 0 8 -8 -8 8 0 -4 0 0 0 -4 4 0 0 -4 8 -8 0 4 4 0 4 0 -2 0 4 0 4 4 -4 0 -2 -8 0 -8 0 0 0 0 4 0 8 -4 8 -4 0 0 4 2 -4 4 0 0 0 0 4 -4 -4 0 -4 8 2 -8 0 2 -4 0 -4 -4 -1 -8 4 8 0 2 -8 8 8 2 0 1 4 8 -8 8 4 0 -4 -4 0 4 0 -2 0 0 0 0 -4 0 0 4 4 -8 8 -2 -4 0 4 0 -4 0 -4 -2 0 0 -4 4 4 0 0 0 -2 -4 -1 2 1 1 1 -4 0 -2 0 0 8 8 -8 -2 -8 0 0 0 -4 8 -8 0 0 3 0 0 0 0 -4 8 0 0 0 -2 -8 12 -8 0 24 -2 0 -8 0 0 0 0 0 0 0 -4 0 0 -16 0 0 -2 -8 -2 0 0 3 0 0 0 0 -8 0 0 -8 -8 12 24 0 24 0 0 0 24 0 0 -16 0 0 0 0 0 -4 4 0 -8 0 12 -16 -4 -8 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 -8 -16 24 0 -4 0 -4 0 0 12 0 0 0 0 0 0 0 24 -16 -8 -4 0 0 0 0 16 0 -16 0 -4 0 -8 0 -16 16 0 0 -16 24 -16 0 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 -4 0 12 -8 0 0 0 0 -4 0 4 0 4 0 0 0 12 -8 24 0 0 0 0 -4 0 -16 -8 0 0 0 0 -16 24 -16 -8 0 0 0 -2 0 0 0 0 0 0 -4 0 0 -8 12 0 0 0 0 -2 0 0 -8 24 3 0 0 0 0 0 24 0 0 0 0 3 0 0 0 24 8 -8 -8 -8 0 8 0 -2 0 0 0 0 -4 0 -8 12 0 0 0 -2 8 0 -4 0 0 0 8 0 -2 0 0 -8 -8 0 -2 0 0 -4 1 0 1 1 1 -4 -2 0 0 0 4 4 -4 0 -4 -2 -4 0 0 -4 4 0 2 1 0 0 4 -8 -4 -4 0 8 0 -2 0 4 4 4 8 -2 -8 0 0 0 8 4 -4 8 -4 4 0 0 -8 0 4 2 0 2 0 0 -1 0 2 0 -4 4 8 0 0 4 -2 4 4 4 0 4 8 -8 0 0 -8 -8 0 -4 8 -8 0 0 0 0 0 0 0 0 0 -8 0 -2 0 0 0 0 4 0 4 -8 4 -8 -8 8 -8 -4 8 -4 0 0 0 4 -4 -4 0 0 4 8 -4 0 -2 0 -4 8 -4 -4 0 -4 0 8 0 -8 0 8 0 0 0 0 0 0 -4 8 8 -4 8 -8 -4 0 0 0 0 0 0 -8 8 8 -8 0 -4 0 0 0 -4 4 0 0 -4 -8 8 0 4 4 0 4 0 -2 0 4 0 -4 -4 -4 0 -2 -8 0 -8 0 0 0 0 4 0 -8 4 -8 4 0 0 4 2 -4 4 0 0 0 0 4 -4 -4 0 -4 -8 2 8 0 2 -4 0 4 4 -1 8 4 -8 0 2 -8 8 8 2 0 1 4 -8 8 8 -4 0 4 4 0 -4 0 -2 0 0 0 0 -4 0 0 4 4 8 -8 -2 4 0 4 0 -4 0 4 -2 0 0 -4 -4 -4 0 0 0 -2 -4 -1 2 1 1 1 0 6 -4 -8 -8 -4 -12 4 4 12 -2 -4 -8 12 4 -4 0 2 1 0 8 4 0 4 4 0 8 -16 2 -8 4 -4 -12 8 2 0 -8 16 0 0 4 4 8 4 -4 0 -24 -8 0 4 -2 8 -2 0 8 -1 -16 10 8 4 12 0 -24 8 12 -10 -4 4 -4 8 -12 0 -8 8 16 -8 0 0 4 8 0 0 0 8 0 8 0 0 0 0 -16 24 -10 16 16 -16 0 -4 -16 -4 16 -4 -16 -8 16 -8 -12 8 4 -8 0 -8 -8 -4 12 0 -8 -4 16 -4 24 6 -8 4 8 -12 8 -8 -4 -8 -16 0 16 0 -16 0 24 0 -8 0 0 -4 -16 8 4 8 16 -12 -8 -16 -16 16 16 -8 16 -16 16 -16 8 -4 -8 8 0 8 -4 0 0 12 -16 16 -8 -8 -4 0 -4 0 -10 -8 -4 0 -12 4 -4 24 6 -8 0 -8 0 8 -24 8 4 0 -8 -4 -8 12 8 8 4 -2 4 -12 -16 0 0 16 -4 4 4 8 -4 0 10 0 8 -2 4 0 12 -4 -1 0 4 0 -24 -6 -8 8 8 2 0 1 -12 0 0 8 4 -8 -4 -4 0 4 8 2 16 0 0 -16 4 8 -8 4 4 0 0 2 -4 -8 0 -8 -4 8 -4 -2 4 -8 12 4 4 -8 -4 8 -2 0 -1 2 1 1 1 -4 2 0 -4 -8 0 -4 0 0 4 -2 -4 0 8 0 0 4 2 1 0 0 4 8 -4 0 0 0 4 2 0 -4 0 -4 0 2 -8 8 -4 -4 8 4 -4 0 4 4 0 16 0 -4 4 -2 0 -2 0 0 -1 4 2 -8 -4 0 -8 8 -8 0 -2 0 -4 0 8 -4 8 0 0 -4 0 -8 4 4 0 8 0 0 4 0 4 0 0 0 0 0 -8 -2 0 0 0 0 4 0 4 0 -4 0 0 0 0 0 0 0 -4 0 0 -4 -4 4 0 -4 -4 0 4 -16 6 8 0 0 0 4 -8 -4 0 0 0 0 0 0 0 -8 0 8 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 -8 0 0 0 0 4 -4 -4 4 0 4 -4 0 0 4 0 0 -4 -4 4 0 4 0 -2 0 -4 0 0 0 4 -16 6 0 0 0 0 0 8 -8 4 0 0 0 0 0 0 8 4 -2 4 -4 4 4 -4 -4 4 -4 -4 -8 4 -8 2 8 0 -2 4 0 0 0 -1 -8 -4 8 16 -6 0 0 0 2 0 1 -4 8 -8 0 0 0 0 0 0 0 0 2 -4 -4 4 4 -4 8 8 -4 4 8 -8 2 0 0 4 -8 -4 4 0 -2 0 -4 4 0 0 -4 0 4 -2 -4 -1 2 1 1 1 0 -2 -4 0 -8 4 4 -4 4 -4 -2 4 -8 4 -4 4 -8 2 1 0 8 -4 0 4 -4 0 8 8 2 -8 4 4 -4 8 2 0 -8 -8 8 0 -4 4 8 4 -4 0 -8 8 8 4 -2 8 -2 0 -8 -1 8 2 -8 4 -12 0 -8 8 -12 -2 4 4 4 8 -4 0 -8 8 -8 8 0 -8 4 8 0 0 0 0 0 0 0 0 0 0 0 8 -2 -16 -16 16 0 -4 16 -4 0 -4 0 -8 0 -8 12 -8 -4 0 0 -8 -8 4 4 0 0 -4 0 -4 8 -2 8 -4 -8 12 8 -8 -4 8 0 0 0 0 0 0 8 0 8 0 0 4 0 -8 -4 -8 0 12 -8 16 16 -16 -16 -8 0 0 0 0 0 -4 0 0 0 8 -4 0 0 4 0 0 0 -8 -4 0 -4 0 -2 8 -4 0 12 -4 -4 8 -2 -8 0 -8 0 8 -8 -8 -4 0 8 4 8 -12 8 8 4 -2 4 -4 8 -8 8 -8 -4 4 4 8 -4 0 2 0 -8 -2 4 0 -12 4 -1 0 4 0 -8 2 -8 8 8 2 0 1 -4 0 0 8 -4 -8 4 4 0 -4 8 2 -8 8 -8 8 4 8 -8 4 -4 0 0 2 4 -8 0 -8 4 0 4 -2 4 0 4 -4 -4 0 -4 0 -2 0 -1 2 1 1 1 0 -6 0 0 0 4 4 0 0 -12 -2 -4 0 4 0 0 -4 2 -3 8 0 4 -8 0 -4 0 0 4 6 0 0 12 -4 0 -6 0 0 0 0 8 -4 -4 8 -4 0 -8 0 24 4 -4 -6 0 6 0 0 3 0 -2 0 4 12 8 0 0 0 -2 0 4 -12 0 4 0 0 0 -4 0 -8 0 4 -8 0 -12 4 4 0 0 0 0 12 0 8 0 2 8 0 -8 -4 -4 0 4 8 4 0 8 -8 -8 -12 0 12 -4 0 0 0 4 -4 0 0 -4 0 -4 0 2 0 0 -24 0 0 0 4 0 0 0 0 0 -8 -12 0 0 0 0 0 4 0 0 12 -24 8 0 0 -8 0 8 0 0 0 -8 0 8 0 4 0 4 0 0 -4 0 0 -4 0 -8 -4 0 -4 4 4 -4 2 0 4 0 -12 0 -4 0 2 -8 12 8 0 0 0 0 -4 0 0 -12 24 0 0 0 -4 -6 4 4 0 0 4 -4 0 4 -4 0 0 -8 -2 0 0 6 -4 -8 12 0 3 8 4 0 0 -2 0 8 -8 2 8 -3 -4 -8 0 0 -4 0 0 12 0 0 0 6 0 0 -4 4 0 0 0 0 4 8 0 -6 0 0 0 0 -4 0 4 -2 0 4 4 0 -12 0 0 -4 -2 0 -1 2 1 1 1 0 -10 0 4 0 0 4 -4 0 -4 -2 4 0 -4 4 4 8 2 -3 16 0 -4 0 0 0 -8 8 -8 2 0 0 0 4 0 -2 -8 0 4 -4 0 4 4 8 -12 0 -16 0 0 -8 -4 -2 0 2 8 0 3 -4 6 0 -4 0 0 0 0 4 6 12 -12 0 0 -4 8 0 0 8 8 0 4 12 -8 -8 4 -4 8 0 4 0 0 -4 0 0 0 -6 -16 -8 16 4 4 8 -4 0 12 8 8 0 -8 0 -8 0 -8 0 0 0 -4 4 0 -4 -12 -8 12 0 -6 0 -12 0 -4 0 0 4 0 -8 0 8 0 0 4 0 0 0 0 0 -4 -8 -8 0 0 0 -4 0 16 8 -16 -8 0 8 0 -8 0 4 4 -4 8 0 0 -12 0 0 4 8 0 -8 0 4 -4 -4 4 -6 0 12 0 0 -12 12 0 -6 -8 -4 8 0 0 0 0 4 8 8 0 0 4 0 0 -4 -2 12 -4 -4 4 -8 8 0 -4 4 0 0 0 6 8 0 2 -12 -16 0 12 3 0 -12 -8 0 6 0 8 -8 2 16 -3 4 0 8 0 0 0 4 0 -8 4 0 2 4 -4 8 -8 0 0 0 0 -4 0 -8 -2 -4 0 0 0 4 -4 0 -2 0 8 -4 -4 0 4 0 -8 -2 0 -1 2 1 1 1 -4 -8 -2 8 0 0 -8 0 -2 8 0 0 0 -4 0 0 -8 0 3 -16 0 0 -16 -4 0 16 16 -8 6 -8 -4 0 0 -8 6 16 24 8 8 -16 0 0 0 0 -4 -16 0 0 -8 0 6 -8 6 16 0 3 8 0 0 0 0 -16 0 24 0 -4 0 0 0 0 0 16 -8 0 -8 0 -16 8 0 0 16 12 4 -8 -8 8 -4 -16 12 -8 -16 0 0 -16 16 -16 4 0 16 0 -16 0 16 0 -16 0 0 0 0 -8 -4 0 -4 0 0 -4 8 0 16 0 0 0 0 0 0 0 -4 0 0 0 16 16 16 -16 -16 12 0 -8 0 -16 16 0 16 0 0 0 -16 0 0 -16 16 -16 16 0 16 -16 16 -16 8 0 8 -8 -4 -4 0 -4 -8 0 16 -16 -8 -4 0 4 0 4 0 0 0 -4 0 0 0 0 0 0 12 0 -16 -8 0 0 0 16 0 0 0 0 0 0 0 6 0 0 8 8 -8 -8 -4 0 0 24 -4 -16 0 16 0 6 0 -16 0 0 3 -16 0 16 0 0 -8 0 0 0 -16 3 0 -16 16 -8 0 -8 0 0 16 0 0 6 8 8 -8 -8 -4 0 24 -4 0 -16 16 6 0 0 -4 0 0 8 0 0 -2 -8 0 0 0 8 -2 -8 0 -4 1 0 1 1 1 0 -10 -4 8 8 4 4 4 4 -12 -2 -4 -8 -4 4 -4 0 2 1 -16 8 4 0 4 -4 16 -8 0 2 -8 4 4 4 -8 2 0 8 0 0 0 4 4 -8 4 -4 16 8 8 0 4 -2 8 -2 -16 8 -1 0 2 -8 4 -12 0 -8 -8 12 -2 -4 4 4 -8 4 0 8 8 0 -8 0 0 4 -8 0 0 0 8 0 8 0 0 0 0 0 8 -2 0 0 0 0 -4 0 -4 0 -4 0 8 0 8 12 8 -4 -8 0 -8 8 -4 -4 0 -8 -4 0 -4 -8 -2 8 4 -8 -12 -8 8 -4 -8 0 0 0 0 0 0 8 0 8 0 0 -4 0 8 -4 -8 0 -12 -8 0 0 0 0 8 0 0 0 0 8 -4 -8 8 0 -8 -4 0 0 -4 0 0 -8 8 -4 0 -4 0 -2 -8 -4 0 12 4 -4 -8 -2 8 0 8 0 8 -8 -8 4 -16 -8 4 8 12 8 -8 4 -2 4 4 0 0 0 0 -4 4 4 -8 -4 0 2 0 8 -2 4 16 -12 -4 -1 0 4 0 8 2 8 -8 -8 2 -16 1 4 0 0 -8 -4 -8 -4 4 16 4 8 2 0 0 0 0 4 -8 8 4 4 0 0 2 -4 -8 0 8 -4 -8 4 -2 4 8 -4 4 -4 8 -4 -8 -2 0 -1 2 1 1 1 -4 -6 0 4 -8 0 4 0 0 -4 -2 4 0 0 0 0 -4 2 1 0 0 -4 -8 -4 0 0 16 -4 2 0 -4 0 4 0 2 8 8 4 4 -8 -4 -4 0 4 4 0 0 0 4 4 -2 0 -2 0 16 -1 -4 -6 8 -4 0 8 -8 -8 0 6 0 -4 0 8 4 -8 0 0 4 0 8 -4 4 0 -8 0 0 -4 0 -4 0 0 0 0 0 8 6 0 0 0 0 4 0 4 0 -4 0 0 0 0 0 0 0 4 0 0 -4 4 -4 0 4 -4 0 4 0 -2 -8 0 0 0 4 -8 -4 -16 0 0 0 0 0 0 8 0 -8 0 0 4 0 0 0 0 0 0 0 0 0 0 0 -8 0 0 0 0 -4 -4 4 -4 0 4 -4 0 0 -4 0 0 4 -4 4 0 4 0 6 -16 -4 0 0 0 4 0 -2 0 0 0 0 0 -8 8 -4 0 0 0 0 0 0 8 4 -2 4 4 -4 -4 4 4 4 -4 -4 -8 4 8 -6 -8 16 -2 4 0 0 0 -1 8 -4 -8 0 2 0 0 0 2 0 1 4 -8 8 0 0 0 0 0 0 0 0 2 4 4 -4 -4 -4 8 8 -4 -4 -8 8 2 0 0 4 -8 4 -4 0 -2 0 4 -4 0 0 4 0 -4 -2 -4 -1 2 1 1 1 0 -10 -4 8 -8 -4 4 4 4 -4 -2 12 -8 -4 4 -4 16 2 1 0 8 -12 0 4 4 0 8 0 2 -8 4 -4 4 8 2 0 -8 0 -16 0 -12 4 8 4 -4 0 8 -8 -16 4 -2 8 -2 0 -24 -1 0 -6 -24 4 12 0 8 8 12 6 -4 4 -4 8 4 0 -8 8 0 -8 0 16 4 8 0 0 0 -8 0 -8 0 0 0 0 16 -8 6 16 16 -16 0 -4 -16 -4 -16 -4 16 -8 -16 -8 -12 8 4 8 0 -8 -8 12 -4 0 8 -4 -16 -4 -8 -10 24 4 8 -12 8 -8 -4 24 16 0 -16 0 16 0 -8 0 24 0 0 12 16 8 4 8 -16 -12 -8 -16 -16 16 16 -8 -16 16 -16 16 -8 -4 8 -8 0 8 -4 0 0 -4 16 -16 8 -8 -4 0 -4 0 6 24 -4 0 -12 4 -4 -8 -10 -8 0 -8 0 8 8 -24 -12 0 -8 -4 -8 12 8 8 4 -2 4 4 0 16 -16 0 -4 4 4 8 -4 0 -6 0 -24 -2 4 0 12 -4 -1 0 4 0 8 10 -8 8 8 2 0 1 4 0 0 8 4 -8 -4 -4 0 4 8 2 0 -16 16 0 4 8 -8 4 -12 0 0 2 -4 -8 0 -8 12 -8 -4 -2 4 8 -4 4 4 8 -4 -8 -2 0 -1 2 1 1 1 -12 0 6 0 0 8 -8 -24 6 24 0 0 0 -12 -8 -24 0 0 3 0 0 0 0 12 8 0 0 0 6 24 12 24 0 -24 6 0 -24 0 0 0 0 0 0 0 12 0 0 48 0 0 6 24 6 0 0 3 0 0 0 0 24 0 0 -24 -24 12 -24 0 24 0 0 0 -24 0 0 -48 0 0 0 0 0 12 4 0 -24 0 12 -48 12 -24 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 24 -48 24 0 12 0 -12 0 0 12 0 0 0 0 0 0 0 -24 48 -24 -12 0 0 0 0 -16 0 48 0 12 0 -24 0 48 -16 0 0 -48 24 48 0 -24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 -12 0 12 -24 0 0 0 0 -12 0 4 0 4 0 0 0 12 24 -24 0 0 0 0 12 0 -48 24 0 0 0 0 -48 24 48 -24 0 0 0 6 0 0 0 0 0 0 12 0 0 -24 12 0 0 0 0 6 0 0 24 -24 3 0 0 0 0 0 -24 0 0 0 0 3 0 0 0 -24 8 24 -24 24 0 -8 0 6 0 0 0 0 12 0 -24 12 0 0 0 6 -8 0 -12 0 0 0 8 0 6 0 0 -24 24 0 6 0 0 -12 1 0 1 1 1 -8 -2 4 0 -8 4 -4 -12 -4 12 -2 -4 8 4 4 12 8 2 1 0 -8 4 0 4 -4 0 8 -8 2 8 4 -12 4 -8 2 0 -8 -8 8 0 4 4 -8 4 -4 0 -8 8 -8 4 -2 -8 -2 0 -8 -1 8 2 8 4 4 0 8 8 -4 -2 -4 4 4 8 4 0 8 -8 8 -8 0 -8 4 -8 0 0 0 0 0 0 0 0 0 0 0 -8 -2 16 -16 -16 0 -4 16 -4 0 -4 0 8 0 8 -4 8 -4 0 0 8 0 -4 -4 0 0 -4 0 -4 8 -2 -8 4 -8 4 0 -8 -4 8 0 0 0 0 0 0 -8 0 -8 0 0 -4 0 8 -4 -8 0 4 8 -16 16 16 -16 -8 0 0 0 0 0 -4 0 0 0 0 -4 0 0 -4 0 0 0 0 -4 0 -4 0 -2 8 -4 0 -4 4 -4 8 -2 8 0 8 0 -8 8 8 4 0 -8 4 8 -4 -8 8 4 -2 4 4 8 -8 -8 8 -4 4 4 8 -4 0 2 0 -8 -2 4 0 4 -4 -1 0 4 0 -8 2 8 -8 -8 2 0 1 4 0 0 -8 -4 8 12 -12 0 4 -8 2 -8 8 8 -8 4 8 -8 4 4 0 0 2 -4 8 8 -8 -4 0 4 -2 -4 0 -4 -12 12 0 4 0 -2 -8 -1 2 1 1 1 -12 0 6 0 0 -8 8 24 6 -24 0 0 0 -12 8 24 0 0 3 0 0 0 0 12 -8 0 0 0 6 24 12 -24 0 -24 6 0 -24 0 0 0 0 0 0 0 12 0 0 -48 0 0 6 24 6 0 0 3 0 0 0 0 -24 0 0 -24 24 12 24 0 -24 0 0 0 -24 0 0 48 0 0 0 0 0 12 4 0 -24 0 12 -48 12 -24 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 -24 48 -24 0 12 0 -12 0 0 12 0 0 0 0 0 0 0 24 -48 24 -12 0 0 0 0 -16 0 48 0 12 0 -24 0 48 -16 0 0 48 -24 -48 0 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 -12 0 12 -24 0 0 0 0 -12 0 4 0 4 0 0 0 12 -24 24 0 0 0 0 12 0 -48 24 0 0 0 0 48 -24 -48 24 0 0 0 6 0 0 0 0 0 0 12 0 0 -24 12 0 0 0 0 6 0 0 -24 24 3 0 0 0 0 0 -24 0 0 0 0 3 0 0 0 -24 -8 24 24 -24 0 8 0 6 0 0 0 0 12 0 -24 12 0 0 0 6 8 0 -12 0 0 0 -8 0 6 0 0 24 -24 0 6 0 0 -12 1 0 1 1 1 -8 -2 4 0 -8 -4 4 12 -4 -12 -2 -4 8 4 -4 -12 -8 2 1 0 -8 4 0 4 4 0 8 8 2 8 4 12 4 -8 2 0 -8 8 -8 0 4 4 -8 4 -4 0 -8 -8 8 4 -2 -8 -2 0 -8 -1 -8 2 8 4 -4 0 8 8 4 -2 4 4 -4 8 4 0 8 -8 -8 8 0 8 4 -8 0 0 0 0 0 0 0 0 0 0 0 -8 -2 -16 16 16 0 -4 -16 -4 0 -4 0 8 0 8 4 -8 4 0 0 8 0 -4 -4 0 0 -4 0 -4 8 -2 -8 -4 8 -4 0 -8 -4 8 0 0 0 0 0 0 -8 0 -8 0 0 -4 0 -8 4 8 0 -4 8 16 -16 -16 16 -8 0 0 0 0 0 -4 0 0 0 0 -4 0 0 -4 0 0 0 0 -4 0 -4 0 -2 8 -4 0 4 -4 -4 8 -2 8 0 8 0 -8 8 8 4 0 8 -4 -8 4 -8 8 4 -2 4 4 -8 8 8 -8 -4 4 4 8 -4 0 2 0 -8 -2 4 0 -4 4 -1 0 4 0 -8 2 8 -8 -8 2 0 1 4 0 0 -8 4 8 -12 12 0 -4 -8 2 8 -8 -8 8 4 8 -8 4 4 0 0 2 4 8 8 -8 -4 0 -4 -2 -4 0 -4 12 -12 0 4 0 -2 -8 -1 2 1 1 -1 8 -10 4 -8 -8 4 -4 12 4 4 2 -4 -8 4 4 12 0 2 1 -16 -8 -4 0 4 4 -16 -8 0 2 8 4 12 -4 8 2 0 8 0 0 0 4 -4 -8 -4 4 -16 -8 8 0 -4 2 8 2 -16 -8 1 0 -2 -8 -4 4 0 -8 8 4 2 4 -4 4 8 4 0 8 8 0 8 0 0 -4 -8 0 0 0 8 0 -8 0 0 0 0 0 -8 -2 0 0 0 0 -4 0 -4 0 -4 0 -8 0 -8 4 8 4 -8 0 8 0 4 4 0 8 -4 0 -4 -8 -2 -8 4 8 4 0 8 -4 -8 0 0 0 0 0 0 8 0 8 0 0 -4 0 -8 -4 -8 0 -4 -8 0 0 0 0 -8 0 0 0 0 8 4 -8 -8 0 0 4 0 0 -4 0 0 8 0 4 0 4 0 2 8 4 0 -4 -4 4 8 2 8 0 8 0 -8 8 8 -4 16 -8 -4 -8 -4 -8 -8 4 -2 4 -4 0 0 0 0 -4 4 4 -8 -4 0 2 0 8 -2 4 16 -4 -4 -1 0 4 0 8 2 -8 8 8 -2 16 -1 4 0 0 -8 -4 -8 -12 -12 16 -4 8 -2 0 0 0 0 -4 8 -8 -4 4 0 0 -2 -4 8 -8 8 4 8 -4 -2 -4 8 4 -12 -12 8 -4 8 2 -8 -1 2 -1 1 -1 4 -6 0 -4 16 0 -4 0 0 -4 -6 -4 8 0 0 0 4 -6 1 0 8 -4 0 -4 0 0 16 4 2 0 -4 0 -4 0 2 0 -8 4 4 0 -4 -4 0 4 -4 0 -8 0 4 4 2 0 2 0 -8 1 4 -2 0 -4 0 0 0 -8 0 -6 0 -4 0 0 -4 0 0 8 4 0 0 4 4 0 0 0 0 -4 0 4 0 0 0 0 8 0 -2 0 0 0 0 -4 0 -4 -8 4 -8 0 -8 0 0 0 0 4 0 8 4 -4 -4 0 -4 4 8 -4 -8 -2 0 0 0 0 -4 0 4 -8 -8 0 8 0 8 0 0 0 0 0 0 4 8 0 0 0 8 0 -8 0 0 0 0 0 -8 -8 -8 -8 -4 -4 4 4 0 4 -4 0 0 4 8 8 -4 -4 4 0 4 0 2 8 -4 0 0 0 4 8 2 0 0 0 0 0 0 0 4 0 0 0 0 0 -8 0 -4 -2 -4 4 -4 -4 -4 -4 4 4 4 8 4 0 2 0 8 -2 -4 0 0 0 -1 0 4 0 8 2 0 0 0 6 0 -1 4 0 0 0 0 0 0 0 0 0 -8 -2 -4 -4 -4 -4 4 -16 8 4 4 0 0 -2 0 -8 -4 -16 4 4 0 6 0 4 4 0 0 4 0 4 2 -4 -1 2 -1 1 -1 8 -8 2 -8 16 0 8 0 -2 8 0 -8 0 -16 0 0 8 0 3 -16 0 8 0 -4 0 -16 -16 8 2 8 4 0 8 0 2 0 0 8 8 0 -8 0 16 16 4 16 -16 0 -8 0 -2 -8 -2 16 -16 -3 -8 -8 0 0 0 0 0 0 0 -12 0 -16 0 16 -8 0 0 0 -8 0 0 -8 16 16 0 -4 -4 -8 0 -8 -4 -32 -4 0 0 0 8 16 16 16 -4 0 16 0 0 -16 0 -16 0 -16 0 0 0 -8 4 0 8 8 8 -4 -8 -16 0 16 16 8 0 0 0 0 8 -16 0 16 0 0 0 -16 0 4 0 0 0 16 0 -8 0 0 0 0 0 0 0 -16 -16 -16 -16 16 0 0 0 0 8 0 8 8 -4 -8 16 4 0 -8 0 0 8 -8 0 4 0 4 -8 -16 16 4 0 0 -16 -16 -8 16 4 16 32 8 0 0 8 -16 0 0 0 0 0 -16 0 2 -16 8 8 8 8 8 -4 0 0 0 4 0 8 0 16 2 -16 -16 0 0 3 0 16 0 16 8 0 -16 -16 0 16 -3 -8 0 0 0 0 -8 0 0 16 0 0 -2 -8 -8 -8 -8 4 16 0 -4 -8 0 0 -2 0 0 8 -16 8 -8 0 0 2 -8 8 0 0 8 -2 8 0 -8 1 0 -1 1 -1 0 2 0 -8 0 4 4 0 0 -4 2 4 0 -4 0 0 4 2 -3 -8 0 4 -8 0 4 16 0 -4 -2 0 0 4 -4 0 2 0 0 8 -8 8 4 4 -8 -12 0 -8 0 -8 4 4 -2 0 2 16 0 -3 8 -6 0 -4 -4 -8 0 0 0 -6 0 12 -12 0 -4 0 0 0 -4 0 8 -8 12 8 0 4 4 -4 0 -8 0 0 -4 0 8 0 -6 -8 -16 8 -4 -4 16 4 8 -12 0 8 -8 -8 -4 0 -12 4 0 0 0 4 -4 0 8 12 0 12 0 -6 0 0 -8 0 0 0 4 0 0 0 0 0 -8 -4 0 0 0 0 0 -4 0 0 12 8 -8 0 0 -8 -16 8 16 0 0 8 0 -8 8 -4 -8 4 0 0 -12 0 0 4 0 8 -4 0 4 -4 -4 4 6 0 12 0 4 0 -12 0 6 8 4 -8 0 0 0 0 -4 -16 0 12 8 0 0 0 -4 2 -12 4 -8 8 -4 4 0 4 -4 0 0 -8 6 0 0 -2 12 8 4 0 3 8 -12 0 0 6 0 8 -8 -2 8 3 4 8 0 0 -4 0 0 -4 -16 0 0 2 -8 8 -4 4 0 0 0 0 -4 -8 0 -2 0 0 0 0 -4 8 -4 -2 0 -4 4 0 -4 8 0 -4 2 0 -1 2 -1 1 -1 0 -2 0 -4 0 0 4 4 0 -4 2 4 0 -4 4 4 0 2 -3 0 0 4 0 0 0 8 -8 0 2 0 0 0 -4 0 -2 8 0 -4 4 0 4 -4 8 -4 0 0 0 0 0 4 2 0 -2 8 0 -3 -4 2 0 4 0 0 0 0 -4 2 -12 -4 0 0 -4 8 0 0 0 -8 0 4 4 -8 -8 4 -4 0 0 -4 0 0 -4 0 0 0 2 0 8 0 4 4 -8 -4 0 -4 -8 -8 0 8 0 -8 0 0 0 0 0 4 -4 0 4 4 8 -4 0 2 0 -12 0 -4 0 0 4 0 8 0 -8 0 0 -4 0 0 0 0 0 -4 -8 8 0 0 0 4 0 0 8 0 -8 0 8 0 -8 0 4 -4 -4 0 0 0 -4 0 0 4 8 0 0 0 -4 4 4 -4 -2 0 4 0 0 12 4 0 -2 -8 4 8 0 0 0 0 -4 -8 8 0 0 4 0 0 -4 -2 -4 4 4 -4 0 0 0 -4 4 0 0 0 -2 -8 0 2 4 0 0 12 3 0 4 8 0 -2 0 -8 8 -2 0 3 4 0 8 0 0 0 -4 0 -8 -4 0 -2 4 -4 0 0 0 0 0 0 -4 0 -8 2 -4 0 0 0 -4 4 0 -2 0 0 4 -4 0 4 0 0 2 0 -1 2 -1 1 -1 0 -6 0 0 0 -4 -4 0 0 12 2 4 0 -4 0 0 -4 2 -3 8 0 4 -8 0 -4 0 0 4 6 0 0 12 -4 0 -6 0 0 0 0 8 4 4 -8 4 0 8 0 -24 -4 4 6 0 -6 0 0 -3 0 2 0 -4 -12 -8 0 0 0 2 0 -4 12 0 -4 0 0 0 4 0 8 0 -4 8 0 -12 4 4 0 0 0 0 12 0 8 0 2 8 0 -8 -4 -4 0 4 8 4 0 8 -8 -8 -12 0 12 -4 0 0 0 4 -4 0 0 -4 0 -4 0 2 0 0 -24 0 0 0 4 0 0 0 0 0 -8 12 0 0 0 0 0 -4 0 0 -12 24 -8 0 0 8 0 -8 0 0 0 8 0 -8 0 -4 0 -4 0 0 4 0 0 4 0 8 4 0 4 -4 -4 4 -2 0 -4 0 12 0 4 0 -2 8 -12 -8 0 0 0 0 -4 0 0 -12 24 0 0 0 -4 -6 4 4 0 0 4 -4 0 4 -4 0 0 -8 -2 0 0 6 -4 -8 12 0 3 8 4 0 0 -2 0 8 -8 -2 -8 3 4 8 0 0 4 0 0 -12 0 0 0 -6 0 0 4 -4 0 0 0 0 -4 -8 0 6 0 0 0 0 -4 0 4 -2 0 4 4 0 -12 0 0 4 2 0 -1 2 -1 1 -1 4 -4 2 -8 -8 0 8 4 -2 16 8 0 -8 -12 -4 -4 4 -8 -1 -8 8 0 -8 0 0 0 8 4 2 0 0 -8 8 0 -2 16 0 0 0 8 8 0 0 -8 0 8 -8 0 -4 -8 -2 0 2 0 8 1 0 4 -8 0 -8 8 8 0 4 -4 -4 0 0 8 0 -16 0 8 -4 -8 -8 0 8 0 0 0 0 12 8 8 -4 0 0 -8 -8 -8 -4 -8 0 -8 0 0 0 0 8 8 -16 0 -8 0 8 8 0 12 -4 -8 -4 -8 0 4 8 -8 -16 0 8 4 8 4 0 -4 -4 -8 8 -8 0 0 0 0 8 0 8 8 -8 0 0 8 0 -8 0 0 -8 4 8 8 0 8 0 8 0 -8 16 8 -8 -8 -8 -12 4 4 8 -4 -8 0 16 8 -12 4 0 0 0 0 4 8 -8 4 -8 -4 0 -8 -4 0 0 0 0 0 -8 8 -8 0 8 0 0 -4 -8 -8 8 2 -8 0 0 0 4 4 0 0 0 0 0 8 -4 16 -8 -2 8 -8 8 4 -1 -8 0 0 8 4 0 0 0 8 8 1 -8 8 0 0 0 0 4 8 0 4 -8 -2 0 0 -4 -4 0 -8 0 0 0 -8 -16 2 -4 8 4 8 0 -8 0 -8 2 -4 8 -4 -8 8 -2 4 0 -4 1 0 -1 1 -1 0 2 -4 -4 0 0 4 0 -4 -4 2 4 8 -4 0 0 -4 2 1 0 8 4 0 4 0 0 0 -4 -2 8 -4 0 -4 0 -2 0 0 4 4 0 -4 -4 0 4 4 0 8 0 -4 -4 -2 8 -2 0 -8 1 4 6 0 -4 0 0 -16 0 0 -6 0 4 0 0 4 0 0 -8 -4 0 0 4 4 0 0 0 0 4 0 4 0 0 0 0 8 -16 6 0 0 0 0 -4 0 -4 -8 4 8 0 -8 0 0 0 0 -4 0 -8 0 -4 4 0 -4 4 -8 4 8 -2 0 0 0 0 0 0 -4 -8 8 0 -8 0 8 0 16 0 0 0 0 4 -8 0 0 0 8 0 8 0 0 0 0 0 8 -8 8 -8 -4 4 4 -4 0 0 -4 0 0 -4 -8 8 4 0 4 0 4 0 -6 8 -4 0 0 0 -4 -8 2 0 0 0 0 -8 16 0 4 0 0 0 0 0 8 0 4 2 -4 -4 -4 -4 4 4 -4 4 4 0 4 0 -6 0 8 2 -4 0 0 0 -1 0 -4 0 -8 2 0 0 0 -2 0 -1 4 0 0 0 0 -8 0 0 0 0 -8 2 -4 -4 4 4 -4 0 0 4 -4 0 0 2 0 -8 0 0 -4 4 0 -2 4 -4 4 0 0 4 4 -4 2 0 -1 2 -1 1 -1 0 6 -4 -8 8 4 12 -4 -4 -12 2 4 8 -12 4 -4 0 2 1 0 8 4 0 4 4 0 8 -16 2 -8 4 -4 -12 8 2 0 -8 16 0 0 -4 -4 -8 -4 4 0 24 8 0 -4 2 -8 2 0 -8 1 16 -10 -8 -4 -12 0 24 -8 -12 10 4 -4 4 -8 12 0 8 -8 -16 8 0 0 -4 -8 0 0 0 8 0 8 0 0 0 0 -16 24 -10 16 16 -16 0 -4 -16 -4 16 -4 -16 -8 16 -8 -12 8 4 -8 0 -8 -8 -4 12 0 -8 -4 16 -4 24 6 -8 4 8 -12 8 -8 -4 -8 -16 0 16 0 -16 0 -24 0 8 0 0 4 16 -8 -4 -8 -16 12 8 16 16 -16 -16 8 -16 16 -16 16 -8 4 8 -8 0 -8 4 0 0 -12 16 -16 8 8 4 0 4 0 10 8 4 0 12 -4 4 -24 -6 8 0 8 0 8 -24 8 4 0 -8 -4 -8 12 8 8 4 -2 4 -12 -16 0 0 16 -4 4 4 8 -4 0 10 0 8 -2 4 0 12 -4 -1 0 4 0 -24 -6 -8 8 8 -2 0 -1 12 0 0 -8 -4 8 4 4 0 -4 -8 -2 -16 0 0 16 -4 -8 8 -4 -4 0 0 -2 -4 -8 0 -8 -4 8 -4 -2 4 -8 12 4 4 8 4 -8 2 0 -1 2 -1 1 -1 -4 2 0 -4 8 0 4 0 0 -4 2 4 0 -8 0 0 4 2 1 0 0 4 8 -4 0 0 0 4 2 0 -4 0 -4 0 2 -8 8 -4 -4 8 -4 4 0 -4 -4 0 -16 0 4 -4 2 0 2 0 0 1 -4 -2 8 4 0 8 -8 8 0 2 0 4 0 -8 4 -8 0 0 4 0 8 -4 -4 0 -8 0 0 4 0 4 0 0 0 0 0 -8 -2 0 0 0 0 4 0 4 0 -4 0 0 0 0 0 0 0 -4 0 0 -4 -4 4 0 -4 -4 0 4 -16 6 8 0 0 0 4 -8 -4 0 0 0 0 0 0 0 8 0 -8 0 0 4 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 -4 4 4 -4 0 -4 4 0 0 -4 0 0 4 4 -4 0 -4 0 2 0 4 0 0 0 -4 16 -6 0 0 0 0 0 8 -8 4 0 0 0 0 0 0 8 4 -2 4 -4 4 4 -4 -4 4 -4 -4 -8 4 -8 2 8 0 -2 4 0 0 0 -1 -8 -4 8 16 -6 0 0 0 -2 0 -1 4 -8 8 0 0 0 0 0 0 0 0 -2 4 4 -4 -4 4 -8 -8 4 -4 -8 8 -2 0 0 4 -8 -4 4 0 -2 0 -4 4 0 0 4 0 -4 2 4 -1 2 -1 1 -1 0 4 -2 -8 8 0 0 -4 2 8 0 0 0 -8 -4 4 4 0 -1 0 0 0 -8 0 0 8 -8 -4 -2 0 0 0 8 0 2 0 0 8 0 8 0 0 8 0 0 0 0 0 -4 0 2 0 -2 -8 0 1 -8 -4 -8 0 0 8 8 0 -4 4 -4 0 0 -8 8 0 0 0 4 8 -8 0 0 -8 0 0 0 -4 0 0 -4 0 0 0 0 -8 4 0 -8 0 0 0 -8 0 0 0 8 8 0 -8 0 -8 0 -4 4 0 0 0 -8 4 0 0 8 0 0 -4 8 4 0 4 0 8 0 0 -8 0 -8 0 0 0 8 0 -8 0 0 0 8 8 0 0 0 -4 0 0 8 0 8 -8 8 0 -8 0 0 0 0 4 -4 0 0 -4 0 8 -8 0 4 0 0 0 0 0 -4 0 0 4 0 -4 0 0 4 8 0 -8 0 0 -8 8 0 8 -8 0 0 4 0 8 0 -2 0 -8 8 0 4 -4 0 0 0 0 0 8 4 0 0 2 0 0 0 4 -1 -8 0 0 0 -4 0 -8 8 0 0 1 -8 8 0 0 0 0 -4 0 -8 4 0 2 -8 0 -4 4 0 8 0 0 0 -8 0 -2 -4 0 0 -8 0 -8 0 0 -2 4 8 4 0 8 2 -4 0 0 1 0 -1 1 -1 0 -2 -4 0 8 -4 -4 4 -4 4 2 -4 8 -4 -4 4 -8 2 1 0 8 -4 0 4 -4 0 8 8 2 -8 4 4 -4 8 2 0 -8 -8 8 0 4 -4 -8 -4 4 0 8 -8 -8 -4 2 -8 2 0 8 1 -8 -2 8 -4 12 0 8 -8 12 2 -4 -4 -4 -8 4 0 8 -8 8 -8 0 8 -4 -8 0 0 0 0 0 0 0 0 0 0 0 8 -2 -16 -16 16 0 -4 16 -4 0 -4 0 -8 0 -8 12 -8 -4 0 0 -8 -8 4 4 0 0 -4 0 -4 8 -2 8 -4 -8 12 8 -8 -4 8 0 0 0 0 0 0 -8 0 -8 0 0 -4 0 8 4 8 0 -12 8 -16 -16 16 16 8 0 0 0 0 0 4 0 0 0 -8 4 0 0 -4 0 0 0 8 4 0 4 0 2 -8 4 0 -12 4 4 -8 2 8 0 8 0 8 -8 -8 -4 0 8 4 8 -12 8 8 4 -2 4 -4 8 -8 8 -8 -4 4 4 8 -4 0 2 0 -8 -2 4 0 -12 4 -1 0 4 0 -8 2 -8 8 8 -2 0 -1 4 0 0 -8 4 8 -4 -4 0 4 -8 -2 8 -8 8 -8 -4 -8 8 -4 4 0 0 -2 4 -8 0 -8 4 0 4 -2 4 0 4 -4 -4 0 4 0 2 0 -1 2 -1 1 -1 0 0 -2 -4 8 -4 0 0 2 8 0 0 0 -8 0 0 0 0 -1 8 0 0 0 0 4 0 -16 8 2 0 0 -4 8 0 -2 8 0 -4 4 0 0 0 -8 0 0 -8 0 -8 0 0 -2 0 2 0 0 1 4 4 8 0 4 0 -8 0 0 -4 0 0 4 -8 8 -8 0 0 -8 0 0 -4 0 8 8 0 0 -8 0 4 4 0 0 0 8 8 -4 -8 0 -8 0 0 0 0 -8 0 0 -8 8 8 -4 0 -4 -8 4 0 0 0 -8 -4 4 0 0 0 0 4 -8 0 8 0 0 8 0 0 0 0 0 0 -8 0 -8 0 8 0 0 0 0 0 4 -8 8 0 0 8 0 8 0 -8 0 8 0 -8 -4 0 -4 8 -4 0 0 4 0 8 0 -8 8 0 0 0 0 0 4 0 0 -4 4 0 0 0 -4 -8 0 8 0 0 8 -8 0 0 0 -4 8 0 0 8 0 2 0 -8 -4 4 0 8 0 0 0 0 0 0 -4 8 0 -2 0 8 -4 0 -1 0 0 -8 0 4 0 8 -8 0 -8 1 -8 0 8 0 -4 0 0 4 0 0 0 -2 4 -4 0 -8 0 8 0 0 0 0 -8 2 0 0 0 -8 0 -4 4 0 -2 0 8 0 -4 4 2 0 0 0 1 0 -1 1 -1 0 6 -4 -8 -8 4 4 4 -4 -12 2 4 8 4 -4 4 0 2 1 16 8 4 0 4 4 -16 -8 0 2 -8 4 -4 4 -8 2 0 8 0 0 0 -4 -4 8 -4 4 16 -8 8 0 -4 2 -8 2 -16 -8 1 0 -2 8 -4 -12 0 8 8 12 2 -4 -4 4 8 -4 0 -8 -8 0 -8 0 0 -4 8 0 0 0 -8 0 -8 0 0 0 0 0 8 -2 0 0 0 0 -4 0 -4 0 -4 0 8 0 8 -12 -8 4 8 0 -8 8 -4 -4 0 8 -4 0 -4 -8 -2 8 -4 8 12 -8 8 -4 -8 0 0 0 0 0 0 -8 0 -8 0 0 4 0 8 -4 -8 0 -12 8 0 0 0 0 -8 0 0 0 0 8 4 -8 8 0 8 4 0 0 4 0 0 -8 -8 4 0 4 0 2 8 4 0 12 4 4 8 2 -8 0 -8 0 8 -8 -8 4 16 8 -4 -8 -12 8 -8 4 -2 4 4 0 0 0 0 -4 4 4 -8 -4 0 2 0 8 -2 4 -16 12 4 -1 0 4 0 8 2 8 -8 -8 -2 -16 -1 -4 0 0 8 -4 8 -4 4 16 4 -8 -2 0 0 0 0 -4 8 -8 -4 -4 0 0 -2 4 -8 0 8 -4 8 -4 -2 4 -8 -4 -4 4 8 4 -8 2 0 -1 2 -1 1 -1 0 8 -6 -8 0 0 -8 0 6 8 0 0 0 0 0 0 -8 0 3 16 0 0 0 12 0 -16 0 -8 2 -8 4 0 0 0 2 0 0 8 8 0 0 0 0 0 -12 -16 0 0 8 0 -2 8 -2 16 0 -3 -8 0 0 0 0 0 0 0 0 -4 0 0 0 0 0 0 0 0 8 0 0 -8 0 0 0 -4 -4 8 0 -8 -4 0 -4 0 0 0 0 -16 16 -16 -4 0 16 0 0 0 0 0 0 0 0 0 0 8 -12 0 0 0 0 -4 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 4 0 0 0 -16 0 0 0 0 0 0 0 0 0 16 -16 16 -16 0 0 0 0 0 8 0 8 -8 12 0 0 4 0 0 0 0 -8 0 0 4 0 4 0 0 0 4 0 0 0 0 0 0 4 0 0 -8 0 0 0 -16 0 0 0 0 0 0 0 2 0 0 8 8 -8 -8 12 0 0 0 4 0 0 0 0 2 0 16 0 0 3 0 0 0 0 0 0 0 0 0 -16 -3 0 0 0 0 0 8 0 0 16 0 0 -2 -8 -8 8 8 -12 0 0 -4 0 0 0 -2 0 0 0 0 0 -8 0 0 -6 8 0 0 0 8 6 -8 0 0 1 0 -1 1 -1 -4 8 -2 -8 0 0 -8 0 2 8 0 0 0 4 0 0 8 0 3 16 0 0 16 -4 0 -16 -16 8 6 -8 -4 0 0 -8 6 -16 24 -8 -8 16 0 0 0 0 4 -16 0 0 -8 0 -6 8 -6 16 0 -3 8 0 0 0 0 -16 0 -24 0 4 0 0 0 0 0 16 8 0 -8 0 -16 8 0 0 16 12 4 8 -8 -8 -4 -16 12 -8 16 0 0 16 -16 16 4 0 -16 0 16 0 -16 0 16 0 0 0 0 8 -4 0 -4 0 0 -4 -8 0 -16 0 0 0 0 0 0 0 -4 0 0 0 -16 16 -16 -16 16 -12 0 8 0 16 -16 0 16 0 0 0 -16 0 0 -16 16 -16 16 0 16 -16 16 -16 8 0 8 -8 4 4 0 4 8 0 16 -16 -8 4 0 -4 0 -4 0 0 0 4 0 0 0 0 0 0 -12 0 16 -8 0 0 0 -16 0 0 0 0 0 0 0 6 0 0 -8 -8 8 8 -4 0 0 24 -4 16 0 -16 0 6 0 16 0 0 3 16 0 -16 0 0 -8 0 0 0 -16 -3 0 -16 16 8 0 8 0 0 16 0 0 -6 8 8 -8 -8 4 0 -24 4 0 -16 16 -6 0 0 -4 0 0 -8 0 0 -2 8 0 0 0 8 2 -8 0 4 1 0 -1 1 -1 4 -2 0 -8 -8 4 -4 4 0 -12 -6 4 8 16 -4 4 8 -6 1 0 8 4 -16 -4 4 0 -8 8 -2 0 4 -4 12 -8 -2 16 0 0 0 0 4 -4 -8 -4 -4 0 8 -8 8 4 -2 0 -2 0 -8 1 0 -2 8 -4 4 -16 -8 0 -4 10 -4 4 4 -8 -4 16 -8 8 8 8 0 0 -4 -8 0 0 0 0 0 8 0 0 0 0 -16 -8 -2 0 0 0 0 -4 0 -4 0 -4 16 -8 16 -8 4 8 4 0 0 8 -4 4 -4 0 -8 -4 -16 4 8 6 8 -4 -8 -4 4 -8 4 -8 0 0 0 0 0 0 8 0 -8 0 0 -4 0 -8 -4 8 0 4 -8 0 0 0 0 8 0 0 16 16 -8 -4 8 0 0 -4 4 0 0 4 -16 -16 0 4 4 0 4 0 2 8 4 0 -4 4 -4 -8 -6 8 0 8 0 0 8 -8 -4 0 -8 -4 8 4 -8 8 -4 2 4 4 0 0 -8 -8 4 4 4 0 -4 0 2 -16 8 2 4 0 -4 4 -1 16 -4 0 -8 -6 8 8 8 6 0 -1 -12 16 0 8 -4 0 -4 4 0 4 -8 2 0 0 -8 -8 4 8 0 -4 -4 0 -16 2 4 -8 -4 8 -4 8 -4 6 0 0 -12 -4 4 8 0 0 2 -4 -1 2 -1 1 -1 4 -10 0 0 -8 -4 -4 -4 0 4 -6 12 8 8 4 -4 0 -6 1 0 8 12 16 -4 -4 0 -8 0 -2 0 4 4 4 -8 -2 -16 0 8 8 0 -4 -4 -8 -4 -4 0 -8 8 0 4 -2 0 -2 0 8 1 8 6 -8 -4 -4 16 8 0 4 2 4 4 -4 -8 4 -16 -8 8 0 -8 0 8 -4 -8 0 0 0 -8 0 0 0 0 0 0 0 8 6 0 0 0 0 -4 0 -4 16 -4 0 -8 0 -8 -4 -8 -4 8 0 8 -4 -4 4 0 0 -4 0 4 -8 -2 -8 4 8 4 4 -8 4 8 16 0 -16 0 -16 0 -8 0 8 0 0 4 -16 8 4 -8 -16 -4 -8 0 0 0 0 8 16 16 0 0 0 -4 0 8 0 -4 4 0 0 -4 0 0 -8 4 4 0 4 0 -6 -8 4 0 4 -4 -4 8 2 8 0 8 0 0 -8 8 4 0 8 4 -8 -4 -8 8 -4 2 4 -4 -8 -8 0 0 4 4 4 0 -4 0 -6 16 -8 2 4 0 4 -4 -1 -16 -4 0 8 2 8 8 8 6 0 -1 -4 -16 0 8 4 0 4 -4 0 -4 -8 2 -8 -8 0 0 4 8 0 -4 -12 0 16 2 -4 -8 -4 8 -12 0 4 6 0 8 -4 4 -4 0 0 8 2 -4 -1 2 -1 1 -1 8 -8 2 -8 -16 0 8 0 -2 8 0 8 0 0 0 0 8 0 3 -16 0 -8 0 -4 0 -16 16 8 2 8 4 0 -8 0 2 0 0 8 8 0 8 0 -16 -16 4 16 16 0 -8 0 -2 -8 -2 16 16 -3 -8 8 0 0 0 0 0 0 0 4 0 16 0 -16 8 0 0 0 -8 0 0 -8 -16 -16 0 -4 -4 -8 0 -8 -4 -32 -4 0 0 0 -8 16 16 16 -4 0 16 0 0 16 0 16 0 16 0 0 0 -8 4 0 8 -8 -8 -4 -8 16 0 -16 -16 -8 0 0 0 0 8 16 0 -16 0 0 0 -16 0 4 0 0 0 16 0 8 0 0 0 0 0 0 0 -16 -16 -16 -16 -16 0 0 0 0 8 0 8 8 -4 -8 -16 4 0 8 0 0 8 -8 0 4 0 4 8 16 -16 4 0 0 16 16 8 -16 4 -16 32 8 0 0 -8 -16 0 0 0 0 0 16 0 2 16 -8 8 8 8 8 -4 0 0 0 4 0 -8 0 -16 2 16 -16 0 0 3 0 -16 0 -16 -8 0 16 16 0 16 -3 8 0 0 0 0 -8 0 0 16 0 0 -2 -8 -8 -8 -8 4 -16 0 -4 8 0 0 -2 0 0 8 16 -8 -8 0 0 2 -8 -8 0 0 8 -2 8 0 -8 1 0 -1 1 -1 0 -6 4 -4 8 0 -4 0 4 -4 -6 4 0 4 0 0 -4 -6 1 0 0 4 8 4 0 0 16 -4 -2 -8 -4 0 4 0 -2 8 0 -4 -4 8 4 4 0 -4 4 0 0 0 -4 4 -2 -8 -2 0 0 1 -4 -2 -8 4 0 8 -8 0 0 -6 0 -4 0 8 4 8 0 -16 -4 0 8 -4 -4 0 8 0 0 -4 0 4 0 0 0 0 0 -8 -2 0 0 0 0 4 0 4 0 -4 0 0 0 0 0 0 0 4 0 -16 0 4 4 0 -4 -4 0 -4 0 -2 -8 0 0 0 0 8 4 0 0 0 0 0 0 0 8 0 8 0 0 -4 0 0 0 0 0 0 16 0 0 0 0 -8 0 0 0 0 -4 -4 4 4 0 0 4 0 0 -4 0 0 -4 0 -4 0 -4 0 2 0 4 0 0 0 4 0 2 0 0 0 0 8 8 8 -4 0 0 0 0 0 16 -8 -4 2 4 -4 4 4 4 4 -4 -4 -4 0 4 -8 2 -8 0 2 4 0 0 0 -1 -8 4 -8 0 2 0 0 0 6 0 -1 -4 -8 -8 0 0 8 0 0 0 0 0 2 4 4 4 4 -4 -8 0 4 -4 -8 -8 2 0 0 0 -8 -4 4 0 6 -4 4 -4 0 0 4 -4 4 2 0 -1 2 -1 1 -1 4 -8 6 -8 0 0 8 0 -6 8 0 0 0 -4 0 0 -8 0 3 -16 0 0 16 12 0 -16 16 -8 -2 -8 -4 0 0 8 -2 16 8 -8 -8 16 0 0 0 0 -12 16 0 0 8 0 2 8 2 16 0 -3 8 0 0 0 0 -16 0 -8 0 4 0 0 0 0 0 -16 -8 0 8 0 -16 8 0 0 -16 -4 4 -8 -24 -8 -4 16 -4 -24 16 0 0 -16 -16 -16 4 0 -16 0 16 0 16 0 16 0 0 0 0 -8 12 0 4 0 0 -4 -8 0 16 0 0 0 0 0 0 0 4 0 0 0 16 -16 16 -16 16 4 0 24 0 16 16 0 -16 0 0 0 -16 0 0 16 16 16 16 0 -16 -16 -16 -16 8 0 8 8 -12 -4 0 4 24 0 -16 -16 8 -4 0 -4 0 -4 0 0 0 4 0 0 0 0 0 0 4 0 -16 -8 0 0 0 -16 0 0 0 0 0 0 0 -2 0 0 -8 -8 -8 -8 12 0 0 8 -4 16 0 16 0 -2 0 -16 0 0 3 16 0 16 0 0 8 0 0 0 16 -3 0 -16 -16 -8 0 8 0 0 16 0 0 2 8 8 8 8 -12 0 -8 4 0 -16 -16 2 0 0 4 0 0 -8 0 0 6 -8 0 0 0 8 -6 8 0 -4 1 0 -1 1 -1 4 -4 2 -8 8 0 0 -4 -2 0 -8 0 8 4 4 4 4 8 -1 -8 -8 0 -8 0 0 0 -8 4 2 0 0 8 -8 0 -2 16 0 0 0 8 -8 0 0 8 0 8 8 0 -4 8 -2 0 2 0 -8 1 0 -4 8 0 8 8 -8 0 -4 4 4 0 0 -8 0 -16 0 -8 -4 8 -8 0 -8 0 0 0 0 12 8 8 -4 0 0 -8 -8 8 4 -8 0 -8 0 0 0 0 8 -8 -16 0 -8 0 -8 -8 0 12 -4 8 -4 8 0 4 8 8 -16 0 -8 -4 -8 -4 0 4 -4 8 -8 8 0 0 0 0 8 0 -8 8 8 0 0 -8 0 8 0 0 -8 -4 -8 8 0 8 0 -8 0 -8 16 8 -8 8 -8 -12 4 4 -8 -4 -8 0 16 8 -12 4 0 0 0 0 -4 -8 8 4 8 4 0 8 4 0 0 0 0 0 8 -8 8 0 -8 0 0 4 8 8 -8 2 8 0 0 0 4 4 0 0 0 0 0 8 4 16 8 -2 -8 -8 -8 -4 -1 -8 0 0 -8 -4 0 0 0 -8 8 1 8 8 0 0 0 0 -4 -8 0 -4 8 -2 0 0 -4 -4 0 8 0 0 0 -8 -16 2 4 -8 4 -8 0 -8 0 8 2 -4 -8 4 8 8 -2 4 0 -4 1 0 -1 1 -1 4 -8 2 -4 8 -4 8 -8 -2 0 -8 8 8 -4 0 8 0 8 -1 0 -8 -8 16 0 4 -8 0 0 -2 0 0 4 0 0 2 -8 0 4 4 0 0 0 0 -8 0 0 -8 8 0 8 2 0 -2 8 8 1 -4 4 -8 0 -4 -16 8 0 8 -4 0 0 4 -8 -8 8 0 -8 0 0 0 -4 8 0 -8 0 0 8 -8 12 4 0 0 8 0 -8 -4 0 -8 0 0 0 -8 0 -16 8 8 0 0 0 4 0 -4 8 -4 8 -4 0 8 -4 12 -8 8 0 8 4 8 0 -8 -8 -4 8 -8 -8 -8 0 -8 0 -16 0 8 -8 -8 0 0 0 8 0 4 8 16 8 -8 0 8 0 8 -8 8 16 -8 0 -12 8 -12 -8 4 4 8 4 8 -8 -8 0 -8 4 0 0 0 0 4 8 -8 -4 -4 0 0 -8 -4 0 0 0 0 0 -8 8 0 -8 0 -4 -8 -8 8 8 -8 -2 -8 8 4 4 0 0 0 0 0 0 0 0 -4 -8 -8 2 8 0 4 0 -1 16 0 8 8 4 0 0 0 -8 0 1 0 -16 -8 0 -4 0 -8 -4 8 0 8 2 -4 -4 0 0 0 8 0 0 8 0 8 -2 0 -8 4 -8 -8 -4 4 8 2 -8 0 8 4 4 -2 8 0 -4 1 0 -1 1 -1 0 -2 0 -4 0 0 -4 12 0 -4 2 -4 0 4 -4 12 0 2 -3 0 0 -4 0 0 0 8 8 0 -6 0 0 0 4 0 6 -8 0 -4 4 0 -4 -4 -8 -4 0 0 0 0 0 4 -6 0 6 8 0 -3 -4 2 0 4 0 0 0 0 -12 2 12 -4 0 0 4 -8 0 0 0 -24 0 4 4 8 8 -12 -4 0 0 -4 0 0 12 0 0 0 2 0 8 0 4 4 -8 -4 0 -4 8 8 0 -8 0 -24 0 0 0 0 0 -4 4 0 4 4 -8 -4 0 2 0 12 0 -12 0 0 4 0 -8 0 8 0 0 12 0 0 0 0 0 4 8 24 0 0 0 12 0 0 8 0 -8 0 -8 0 8 0 4 -4 -4 0 0 0 -4 0 0 -4 -8 0 0 0 -4 4 4 -4 -2 0 4 0 0 -12 4 0 -2 8 -12 -8 0 0 0 0 4 -8 24 0 0 12 0 0 -4 6 -4 -4 4 -4 0 0 0 -4 4 0 0 0 -2 8 0 -6 4 0 0 -12 3 0 4 -8 0 -2 0 8 -8 -2 0 3 -4 0 -8 0 0 0 -12 0 -8 4 0 6 4 -4 0 0 0 0 0 0 4 0 8 -6 4 0 0 0 4 4 0 -2 0 0 -4 -12 0 4 0 0 2 0 -1 2 -1 1 -1 0 -6 0 0 0 4 -4 0 0 4 2 -4 0 4 0 0 -4 2 -3 8 0 -4 8 0 4 0 0 4 -2 0 0 4 4 0 2 0 0 0 0 -8 -4 4 8 4 0 8 0 -8 -4 4 -2 0 2 0 0 -3 0 2 0 -4 -4 8 0 0 0 2 0 -4 -12 0 4 0 0 0 4 0 -8 0 -4 -8 0 4 4 4 0 0 0 0 -4 0 -8 0 2 8 0 -8 -4 -4 0 4 -8 4 0 -8 8 8 -4 0 -12 -4 0 0 0 -4 4 0 0 -4 0 -4 0 2 0 0 -8 0 0 0 4 0 0 0 0 0 8 -4 0 0 0 0 0 4 0 0 12 8 8 0 0 8 0 -8 0 0 0 -8 0 8 0 -4 0 -4 0 0 4 0 0 -4 0 -8 4 0 4 -4 -4 4 -2 0 -4 0 4 0 4 0 -2 -8 4 8 0 0 0 0 4 0 0 12 8 0 0 0 -4 2 4 -4 0 0 4 -4 0 4 -4 0 0 8 -2 0 0 -2 -4 -8 4 0 3 -8 4 0 0 -2 0 -8 8 -2 -8 3 -4 -8 0 0 -4 0 0 -4 0 0 0 2 0 0 4 -4 0 0 0 0 4 8 0 -2 0 0 0 0 4 0 -4 -2 0 4 -4 0 -4 0 0 4 2 0 -1 2 -1 1 -1 0 -10 0 4 0 0 -4 4 0 4 2 -4 0 4 4 4 8 2 -3 16 0 -4 0 0 0 -8 8 -8 2 0 0 0 4 0 -2 -8 0 4 -4 0 -4 -4 -8 12 0 16 0 0 8 4 2 0 -2 -8 0 -3 4 -6 0 4 0 0 0 0 -4 -6 -12 12 0 0 4 -8 0 0 -8 -8 0 -4 -12 8 8 4 -4 8 0 4 0 0 -4 0 0 0 -6 -16 -8 16 4 4 8 -4 0 12 8 8 0 -8 0 -8 0 -8 0 0 0 -4 4 0 -4 -12 -8 12 0 -6 0 -12 0 -4 0 0 4 0 -8 0 8 0 0 -4 0 0 0 0 0 4 8 8 0 0 0 4 0 -16 -8 16 8 0 -8 0 8 0 -4 -4 4 -8 0 0 12 0 0 -4 -8 0 8 0 -4 4 4 -4 6 0 -12 0 0 12 -12 0 6 8 4 -8 0 0 0 0 4 8 8 0 0 4 0 0 -4 -2 12 -4 -4 4 -8 8 0 -4 4 0 0 0 6 8 0 2 -12 -16 0 12 3 0 -12 -8 0 6 0 8 -8 -2 -16 3 -4 0 -8 0 0 0 -4 0 8 -4 0 -2 -4 4 -8 8 0 0 0 0 4 0 8 2 -4 0 0 0 4 -4 0 -2 0 8 -4 -4 0 -4 0 8 2 0 -1 2 -1 1 -1 4 -8 2 -4 -8 4 8 8 -2 8 8 -8 -8 -4 0 -8 0 -8 -1 0 8 8 16 0 -4 -8 16 0 -2 0 0 -4 0 0 2 -8 0 4 4 0 0 0 0 8 0 0 8 -8 0 -8 2 0 -2 8 -8 1 -4 -4 8 0 4 -16 -8 0 -8 4 0 0 -4 8 8 8 0 8 0 0 0 -4 -8 0 -8 0 0 8 -8 12 4 0 0 8 0 8 4 0 -8 0 0 0 -8 0 -16 -8 8 0 0 0 -4 0 4 8 -4 -8 -4 0 -8 -4 12 8 8 0 -8 -4 -8 0 8 8 -4 -8 8 8 -8 0 -8 0 -16 0 -8 -8 8 0 0 0 8 0 -4 -8 16 -8 8 0 8 0 8 8 8 16 -8 0 -12 -8 -12 -8 4 4 -8 4 8 8 -8 0 -8 4 0 0 0 0 -4 -8 8 -4 4 0 0 8 4 0 0 0 0 0 8 -8 0 -8 0 4 8 8 -8 -8 8 -2 8 -8 4 4 0 0 0 0 0 0 0 0 4 -8 8 2 -8 0 -4 0 -1 16 0 8 -8 -4 0 0 0 8 0 1 0 -16 -8 0 4 0 8 4 8 0 -8 2 -4 -4 0 0 0 -8 0 0 -8 0 8 -2 0 8 4 8 8 -4 -4 -8 2 -8 0 -8 -4 4 -2 8 0 -4 1 0 -1 1 -1 -4 -2 0 0 0 -4 -4 4 0 4 2 4 0 0 -4 4 0 2 1 0 0 4 -8 -4 -4 0 8 0 -2 0 4 4 4 8 -2 -8 0 0 0 8 -4 4 -8 4 -4 0 0 8 0 -4 -2 0 -2 0 0 1 0 -2 0 4 -4 -8 0 0 -4 2 -4 -4 -4 0 -4 -8 8 0 0 8 8 0 4 -8 8 0 0 0 0 0 0 0 0 0 -8 0 -2 0 0 0 0 4 0 4 -8 4 -8 -8 8 -8 -4 8 -4 0 0 0 4 -4 -4 0 0 4 8 -4 0 -2 0 -4 8 -4 -4 0 -4 0 8 0 -8 0 8 0 0 0 0 0 0 4 -8 -8 4 -8 8 4 0 0 0 0 0 0 8 -8 -8 8 0 4 0 0 0 4 -4 0 0 4 8 -8 0 -4 -4 0 -4 0 2 0 -4 0 4 4 4 0 2 8 0 8 0 0 0 0 4 0 -8 4 -8 4 0 0 4 2 -4 4 0 0 0 0 4 -4 -4 0 -4 -8 2 8 0 2 -4 0 4 4 -1 8 4 -8 0 2 -8 8 8 -2 0 -1 -4 8 -8 -8 4 0 -4 -4 0 4 0 2 0 0 0 0 4 0 0 -4 -4 -8 8 2 4 0 4 0 -4 0 4 -2 0 0 -4 -4 -4 0 0 0 2 4 -1 2 -1 1 -1 0 4 -2 -8 -8 0 -8 4 2 8 0 0 0 8 4 -4 4 0 -1 0 0 0 -8 0 0 8 8 -4 -2 0 0 0 -8 0 2 0 0 8 0 8 0 0 -8 0 0 0 0 0 -4 0 2 0 -2 -8 0 1 -8 4 8 0 0 8 -8 0 4 -4 4 0 0 8 -8 0 0 0 4 -8 -8 0 0 8 0 0 0 -4 0 0 -4 0 0 0 0 8 -4 0 -8 0 0 0 -8 0 0 0 8 -8 0 8 0 8 0 -4 4 0 0 0 8 4 0 0 8 0 0 4 -8 -4 0 -4 0 -8 0 0 -8 0 -8 0 0 0 -8 0 8 0 0 0 8 -8 0 0 0 4 0 0 8 0 8 8 8 0 -8 0 0 0 0 4 -4 0 0 -4 0 -8 -8 0 4 0 0 0 0 0 4 0 0 4 0 4 0 0 -4 -8 0 8 0 0 8 -8 0 8 8 0 0 -4 0 -8 0 -2 0 8 8 0 4 -4 0 0 0 0 0 8 -4 0 0 2 0 0 0 -4 -1 -8 0 0 0 4 0 8 -8 0 0 1 8 8 0 0 0 0 4 0 -8 -4 0 2 -8 0 -4 4 0 -8 0 0 0 -8 0 -2 4 0 0 8 0 -8 0 0 -2 4 -8 -4 0 8 2 -4 0 0 1 0 -1 1 -1 -4 -2 0 0 0 4 4 -4 0 -4 2 4 0 0 4 -4 0 2 1 0 0 4 8 -4 4 0 -8 0 -2 0 4 -4 4 8 -2 8 0 0 0 -8 -4 4 -8 4 -4 0 0 -8 0 -4 -2 0 -2 0 0 1 0 -2 0 4 4 8 0 0 4 2 4 -4 4 0 -4 8 8 0 0 -8 -8 0 4 -8 -8 0 0 0 0 0 0 0 0 0 8 0 -2 0 0 0 0 4 0 4 8 4 8 -8 -8 -8 4 -8 4 0 0 0 4 -4 -4 0 0 4 -8 -4 0 -2 0 4 -8 4 -4 0 -4 0 -8 0 8 0 -8 0 0 0 0 0 0 4 8 8 -4 8 -8 -4 0 0 0 0 0 0 -8 8 8 -8 0 4 0 0 0 4 -4 0 0 4 -8 8 0 -4 -4 0 -4 0 2 0 -4 0 -4 -4 4 0 2 8 0 8 0 0 0 0 4 0 8 -4 8 -4 0 0 4 2 -4 4 0 0 0 0 4 -4 -4 0 -4 8 2 -8 0 2 -4 0 -4 -4 -1 -8 4 8 0 2 -8 8 8 -2 0 -1 -4 -8 8 -8 -4 0 4 4 0 -4 0 2 0 0 0 0 4 0 0 -4 -4 8 -8 2 -4 0 4 0 -4 0 -4 -2 0 0 -4 4 4 0 0 0 2 4 -1 2 -1 1 -1 0 -6 -4 4 0 0 -4 0 -4 4 2 -4 8 4 0 0 4 2 1 0 8 -4 0 4 0 0 0 4 -2 8 -4 0 4 0 -2 0 0 -4 -4 0 4 -4 0 4 4 0 -8 0 4 -4 -2 8 -2 0 8 1 -4 -2 -16 -4 0 0 0 0 0 2 0 4 0 0 -4 0 0 -8 4 0 0 -4 4 0 0 0 0 -4 0 -4 0 0 0 0 -8 0 -2 0 0 0 0 -4 0 -4 8 4 -8 0 8 0 0 0 0 4 0 -8 0 4 -4 0 4 4 8 4 -8 6 -16 0 0 0 0 0 -4 8 -8 0 8 0 -8 0 0 0 16 0 0 -4 8 0 0 0 -8 0 8 0 0 0 0 0 -8 8 -8 8 4 4 -4 4 0 0 -4 0 0 4 8 -8 -4 0 4 0 4 0 2 -8 -4 0 0 0 -4 8 -6 0 0 0 0 -8 0 16 -4 0 0 0 0 0 8 0 4 2 -4 4 4 4 -4 -4 -4 4 4 0 4 0 2 0 -8 2 -4 0 0 0 -1 0 -4 0 8 -6 0 0 0 -2 0 -1 -4 0 0 0 0 -8 0 0 0 0 -8 2 4 4 -4 -4 -4 0 0 4 4 0 0 2 0 -8 0 0 4 -4 0 -2 4 4 -4 0 0 -4 4 4 2 0 -1 2 -1 1 -1 0 0 -2 -4 -8 4 0 0 2 0 0 0 0 8 0 0 0 0 -1 8 0 0 0 0 -4 0 0 8 2 0 0 4 -8 0 -2 8 0 -4 4 0 0 0 8 0 0 -8 0 8 0 0 -2 0 2 0 0 1 4 -4 -8 0 -4 0 8 0 0 4 0 0 -4 8 -8 -8 0 0 -8 0 0 -4 0 -8 8 0 0 -8 0 4 4 0 0 0 8 -8 4 -8 0 -8 0 0 0 0 -8 0 0 8 8 -8 4 0 4 -8 4 0 0 0 8 -4 4 0 0 0 0 -4 8 0 -8 0 0 -8 0 0 0 0 0 0 -8 0 8 0 -8 0 0 0 0 0 -4 8 8 0 0 8 0 8 0 8 0 8 0 -8 -4 0 -4 8 -4 0 0 4 0 -8 0 -8 8 0 0 0 0 0 -4 0 0 -4 -4 0 0 0 4 8 0 -8 0 0 -8 8 0 0 0 4 -8 0 0 -8 0 2 0 8 -4 4 0 8 0 0 0 0 0 0 4 8 0 -2 0 8 4 0 -1 0 0 -8 0 -4 0 -8 8 0 -8 1 8 0 8 0 4 0 0 -4 0 0 0 -2 4 -4 0 -8 0 -8 0 0 0 0 -8 2 0 0 0 8 0 -4 -4 0 -2 0 -8 0 4 4 2 0 0 0 1 0 -1 1 -1 0 -10 -4 8 -8 -4 -4 -4 -4 12 2 4 8 4 4 -4 0 2 1 -16 8 4 0 4 -4 16 -8 0 2 -8 4 4 4 -8 2 0 8 0 0 0 -4 -4 8 -4 4 -16 -8 -8 0 -4 2 -8 2 16 -8 1 0 -2 8 -4 12 0 8 8 -12 2 4 -4 -4 8 -4 0 -8 -8 0 8 0 0 -4 8 0 0 0 8 0 8 0 0 0 0 0 8 -2 0 0 0 0 -4 0 -4 0 -4 0 8 0 8 12 8 -4 -8 0 -8 8 -4 -4 0 -8 -4 0 -4 -8 -2 8 4 -8 -12 -8 8 -4 -8 0 0 0 0 0 0 -8 0 -8 0 0 4 0 -8 4 8 0 12 8 0 0 0 0 -8 0 0 0 0 -8 4 8 -8 0 8 4 0 0 4 0 0 8 -8 4 0 4 0 2 8 4 0 -12 -4 4 8 2 -8 0 -8 0 8 -8 -8 4 -16 -8 4 8 12 8 -8 4 -2 4 4 0 0 0 0 -4 4 4 -8 -4 0 2 0 8 -2 4 16 -12 -4 -1 0 4 0 8 2 8 -8 -8 -2 16 -1 -4 0 0 8 4 8 4 -4 -16 -4 -8 -2 0 0 0 0 -4 8 -8 -4 -4 0 0 -2 -4 -8 0 8 -4 -8 4 -2 4 8 -4 4 -4 -8 4 8 2 0 -1 2 -1 1 -1 0 -4 -2 0 -8 0 8 -4 2 0 0 8 0 0 -4 4 -4 0 -1 0 0 -8 8 0 0 8 8 4 -2 0 0 0 0 0 2 0 0 0 8 -8 -8 0 8 0 0 0 0 0 4 0 2 0 -2 -8 0 1 0 4 8 0 0 -8 -8 0 -4 -4 -4 0 0 8 0 0 0 0 -4 8 8 -8 0 -8 0 0 0 4 0 -8 -4 0 0 0 0 8 -4 0 -8 0 0 0 -8 0 0 0 -8 8 0 -8 0 -8 0 4 4 0 0 8 0 4 -8 0 -8 0 0 4 -8 4 0 4 0 -8 0 0 8 0 8 0 0 0 -8 0 8 0 0 -8 -8 8 0 0 0 -4 0 0 8 0 8 8 -8 0 8 0 8 0 8 -4 -4 0 0 -4 0 0 8 0 -4 0 0 0 0 0 4 0 0 4 0 -4 0 0 -4 8 0 -8 0 0 8 -8 8 8 -8 0 0 4 0 -8 0 -2 0 0 0 8 -4 4 0 0 0 0 0 -8 -4 0 0 2 0 0 0 4 -1 8 0 0 0 4 0 -8 8 0 0 1 0 -8 0 0 0 0 -4 0 -8 4 0 2 0 -8 4 -4 0 -8 0 0 8 8 0 -2 -4 0 0 8 -8 0 0 0 -2 -4 0 4 0 0 2 4 0 0 1 0 -1 1 -1 0 -8 -2 4 -8 -4 8 0 2 0 0 8 0 0 0 0 8 0 -1 8 0 -8 0 0 4 0 16 0 2 0 0 -4 0 0 -2 -8 0 4 -4 0 -8 0 -8 0 0 -8 0 -8 -8 0 -2 0 2 0 0 1 -4 -4 -8 0 4 0 8 0 0 4 0 0 4 8 0 8 0 0 0 0 0 4 0 8 -8 0 0 0 0 -4 4 0 0 0 -8 -8 4 -8 0 -8 0 0 0 0 8 0 0 -8 -8 8 -4 0 -4 0 4 0 0 8 0 -4 -4 0 0 0 0 -4 8 0 8 0 0 -8 0 0 0 0 0 0 8 0 8 0 -8 0 0 -8 0 0 4 -8 -8 0 0 8 0 8 0 8 0 -8 0 8 4 0 4 0 -4 0 0 4 0 0 0 8 0 0 0 0 0 0 -4 0 0 -4 4 0 0 0 4 -8 0 8 0 0 -8 8 8 0 0 -4 8 0 0 -8 0 2 0 0 4 -4 8 0 0 0 0 0 0 0 4 -8 0 -2 0 8 -4 0 -1 0 0 8 0 -4 0 8 -8 0 -8 1 0 0 -8 0 -4 0 0 4 0 0 0 -2 -4 4 -8 0 0 -8 0 0 8 0 8 2 0 0 0 8 -8 4 4 0 -2 -8 0 0 -4 -4 2 8 0 0 1 0 -1 1 -1 -8 -2 4 0 8 -4 4 12 4 -12 2 4 -8 -4 4 12 8 2 1 0 -8 4 0 4 -4 0 8 -8 2 8 4 -12 4 -8 2 0 -8 -8 8 0 -4 -4 8 -4 4 0 8 -8 8 -4 2 8 2 0 8 1 -8 -2 -8 -4 -4 0 -8 -8 4 2 4 -4 -4 -8 -4 0 -8 8 -8 8 0 8 -4 8 0 0 0 0 0 0 0 0 0 0 0 -8 -2 16 -16 -16 0 -4 16 -4 0 -4 0 8 0 8 -4 8 -4 0 0 8 0 -4 -4 0 0 -4 0 -4 8 -2 -8 4 -8 4 0 -8 -4 8 0 0 0 0 0 0 8 0 8 0 0 4 0 -8 4 8 0 -4 -8 16 -16 -16 16 8 0 0 0 0 0 4 0 0 0 0 4 0 0 4 0 0 0 0 4 0 4 0 2 -8 4 0 4 -4 4 -8 2 -8 0 -8 0 -8 8 8 4 0 -8 4 8 -4 -8 8 4 -2 4 4 8 -8 -8 8 -4 4 4 8 -4 0 2 0 -8 -2 4 0 4 -4 -1 0 4 0 -8 2 8 -8 -8 -2 0 -1 -4 0 0 8 4 -8 -12 12 0 -4 8 -2 8 -8 -8 8 -4 -8 8 -4 -4 0 0 -2 -4 8 8 -8 -4 0 4 -2 -4 0 -4 -12 12 0 -4 0 2 8 -1 2 -1 1 -1 -4 0 2 -4 0 -4 0 8 -2 0 0 0 0 4 0 -8 0 0 -1 0 0 0 8 0 4 8 0 0 -2 0 0 4 0 0 2 0 0 -4 -4 8 0 -8 0 0 0 0 0 8 0 0 2 0 -2 -8 0 1 4 4 0 8 -4 -8 0 0 -8 4 0 -8 4 0 0 0 0 0 0 0 -8 4 0 0 0 0 0 0 8 -4 4 0 0 -8 -8 0 -4 0 8 0 0 -8 8 8 -8 0 0 0 -8 0 4 0 -4 0 -4 0 4 0 0 -4 -4 0 0 8 0 -4 0 0 -8 8 4 0 0 0 0 0 0 0 -8 0 0 8 0 0 0 0 0 0 4 8 8 -8 0 0 -8 0 -8 0 0 8 0 8 4 0 4 0 4 -4 0 4 -8 0 0 8 0 -4 8 0 -8 0 4 0 0 -4 -4 0 -8 0 4 0 0 0 0 0 0 0 0 8 0 -4 -8 8 0 0 0 -2 0 0 -4 -4 0 0 0 -8 8 0 0 8 -4 0 0 2 0 0 4 0 -1 8 8 0 0 -4 0 0 0 0 0 1 0 -8 0 0 -4 0 8 -4 -8 0 0 2 4 4 0 0 0 0 0 0 0 -8 0 -2 0 0 -4 0 0 -4 4 0 2 0 0 -8 4 4 -2 0 0 4 1 0 -1 1 -1 -8 -2 4 0 8 4 -4 -12 4 12 2 4 -8 -4 -4 -12 -8 2 1 0 -8 4 0 4 4 0 8 8 2 8 4 12 4 -8 2 0 -8 8 -8 0 -4 -4 8 -4 4 0 8 8 -8 -4 2 8 2 0 8 1 8 -2 -8 -4 4 0 -8 -8 -4 2 -4 -4 4 -8 -4 0 -8 8 8 -8 0 -8 -4 8 0 0 0 0 0 0 0 0 0 0 0 -8 -2 -16 16 16 0 -4 -16 -4 0 -4 0 8 0 8 4 -8 4 0 0 8 0 -4 -4 0 0 -4 0 -4 8 -2 -8 -4 8 -4 0 -8 -4 8 0 0 0 0 0 0 8 0 8 0 0 4 0 8 -4 -8 0 4 -8 -16 16 16 -16 8 0 0 0 0 0 4 0 0 0 0 4 0 0 4 0 0 0 0 4 0 4 0 2 -8 4 0 -4 4 4 -8 2 -8 0 -8 0 -8 8 8 4 0 8 -4 -8 4 -8 8 4 -2 4 4 -8 8 8 -8 -4 4 4 8 -4 0 2 0 -8 -2 4 0 -4 4 -1 0 4 0 -8 2 8 -8 -8 -2 0 -1 -4 0 0 8 -4 -8 12 -12 0 4 8 -2 -8 8 8 -8 -4 -8 8 -4 -4 0 0 -2 4 8 8 -8 -4 0 -4 -2 -4 0 -4 12 -12 0 -4 0 2 8 -1 2 -1 1 -1 -4 -6 0 4 8 0 -4 0 0 4 2 -4 0 0 0 0 -4 2 1 0 0 -4 -8 -4 0 0 16 -4 2 0 -4 0 4 0 2 8 8 4 4 -8 4 4 0 -4 -4 0 0 0 -4 -4 2 0 2 0 -16 1 4 6 -8 4 0 -8 8 8 0 -6 0 4 0 -8 -4 8 0 0 -4 0 -8 4 -4 0 8 0 0 -4 0 -4 0 0 0 0 0 8 6 0 0 0 0 4 0 4 0 -4 0 0 0 0 0 0 0 4 0 0 -4 4 -4 0 4 -4 0 4 0 -2 -8 0 0 0 4 -8 -4 -16 0 0 0 0 0 0 -8 0 8 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 4 4 -4 4 0 -4 4 0 0 4 0 0 -4 4 -4 0 -4 0 -6 16 4 0 0 0 -4 0 2 0 0 0 0 0 -8 8 -4 0 0 0 0 0 0 8 4 -2 4 4 -4 -4 4 4 4 -4 -4 -8 4 8 -6 -8 16 -2 4 0 0 0 -1 8 -4 -8 0 2 0 0 0 -2 0 -1 -4 8 -8 0 0 0 0 0 0 0 0 -2 -4 -4 4 4 4 -8 -8 4 4 8 -8 -2 0 0 4 -8 4 -4 0 -2 0 4 -4 0 0 -4 0 4 2 4 -1 2 -1 1 -1 -4 -4 2 0 0 0 0 -4 -2 8 0 0 0 4 4 4 -4 0 -1 8 0 0 0 0 0 0 8 -4 2 0 0 -8 0 0 -2 8 0 0 0 0 0 8 0 0 0 -8 0 0 4 0 -2 0 2 0 0 1 0 4 0 -8 -8 0 0 0 -4 4 4 -8 0 0 0 -8 0 0 4 8 0 0 0 0 -8 0 0 -4 -8 0 -4 0 0 8 0 0 -4 8 0 8 0 8 0 -8 0 0 -8 0 0 0 8 -8 0 -4 -4 0 4 0 0 4 0 0 -8 8 0 -4 0 -4 0 4 4 0 0 0 -8 0 -8 0 0 0 0 -8 0 0 0 0 8 8 0 0 0 -4 0 -8 0 -8 0 0 8 0 8 0 0 0 0 4 4 -4 0 -4 8 0 8 0 4 -4 -8 0 8 0 4 0 0 4 -8 4 -8 0 4 0 0 0 0 0 0 0 0 0 -8 0 0 4 0 0 0 2 0 0 0 0 -4 -4 0 8 -8 0 0 0 -4 8 0 -2 0 8 8 -4 -1 0 8 8 0 -4 0 0 0 0 -8 1 0 0 -8 0 0 0 -4 8 0 -4 0 -2 0 0 4 4 0 0 0 0 0 0 -8 2 4 0 -4 0 0 0 0 0 2 -4 0 4 -8 0 -2 4 0 4 1 0 -1 1 -1 -4 0 2 -4 0 4 0 -8 -2 8 0 0 0 4 0 8 0 0 -1 0 0 0 8 0 -4 8 0 0 -2 0 0 -4 0 0 2 0 0 -4 -4 8 0 8 0 0 0 0 0 -8 0 0 2 0 -2 -8 0 1 4 -4 0 -8 4 -8 0 0 8 -4 0 8 -4 0 0 0 0 0 0 0 -8 4 0 0 0 0 0 0 8 -4 4 0 0 -8 -8 0 4 0 8 0 0 8 8 -8 -8 0 0 0 -8 0 -4 0 4 0 -4 0 4 0 0 -4 -4 0 0 -8 0 4 0 0 8 -8 4 0 0 0 0 0 0 0 -8 0 0 8 0 0 0 0 0 0 -4 -8 8 8 0 0 -8 0 -8 0 0 8 0 8 4 0 4 0 4 -4 0 4 -8 0 0 8 0 -4 -8 0 8 0 -4 0 0 -4 4 0 8 0 -4 0 0 0 0 0 0 0 0 8 0 4 8 -8 0 0 0 -2 0 0 -4 -4 0 0 0 8 -8 0 0 8 4 0 0 2 0 0 -4 0 -1 8 -8 0 0 4 0 0 0 0 0 1 0 -8 0 0 4 0 -8 4 -8 0 0 2 4 4 0 0 0 0 0 0 0 -8 0 -2 0 0 -4 0 0 -4 -4 0 2 0 0 8 -4 4 -2 0 0 4 1 0 -1 1 -1 -4 -4 2 0 0 0 8 4 -2 -8 0 0 0 4 -4 -4 -4 0 -1 8 0 0 0 0 0 0 8 -4 2 0 0 8 0 0 -2 8 0 0 0 0 0 -8 0 0 0 -8 0 0 4 0 -2 0 2 0 0 1 0 -4 0 8 8 0 0 0 4 -4 -4 8 0 0 0 -8 0 0 4 -8 0 0 0 0 -8 0 0 -4 -8 0 -4 0 0 8 0 0 4 8 0 8 0 -8 0 8 0 0 -8 0 0 0 -8 8 0 -4 -4 0 4 0 0 4 0 0 -8 -8 0 4 0 4 0 -4 4 0 0 0 -8 0 -8 0 0 0 0 -8 0 0 0 0 8 -8 0 0 0 4 0 -8 0 -8 0 0 8 0 8 0 0 0 0 4 4 -4 0 -4 8 0 8 0 4 -4 8 0 -8 0 -4 0 0 4 8 -4 8 0 -4 0 0 0 0 0 0 0 0 0 8 0 0 -4 0 0 0 2 0 0 0 0 -4 -4 0 -8 8 0 0 0 4 8 0 -2 0 8 -8 4 -1 0 -8 8 0 4 0 0 0 0 -8 1 0 0 -8 0 0 0 4 -8 0 4 0 -2 0 0 4 4 0 0 0 0 0 0 -8 2 -4 0 -4 0 0 0 0 0 2 -4 0 -4 8 0 -2 4 0 4 1 0 -1 1 -1 0 -4 -2 0 8 0 0 4 2 0 0 -8 0 0 4 -4 -4 0 -1 0 0 8 8 0 0 8 -8 4 -2 0 0 0 0 0 2 0 0 0 8 -8 8 0 -8 0 0 0 0 0 4 0 2 0 -2 -8 0 1 0 -4 -8 0 0 -8 8 0 4 4 4 0 0 -8 0 0 0 0 -4 -8 8 -8 0 8 0 0 0 4 0 -8 -4 0 0 0 0 -8 4 0 -8 0 0 0 -8 0 0 0 -8 -8 0 8 0 8 0 4 4 0 0 -8 0 4 -8 0 -8 0 0 -4 8 -4 0 -4 0 8 0 0 8 0 8 0 0 0 8 0 -8 0 0 8 -8 -8 0 0 0 4 0 0 8 0 8 -8 -8 0 8 0 8 0 8 -4 -4 0 0 -4 0 0 8 0 -4 0 0 0 0 0 -4 0 0 4 0 4 0 0 4 -8 0 8 0 0 -8 8 -8 8 8 0 0 -4 0 8 0 -2 0 0 0 8 -4 4 0 0 0 0 0 -8 4 0 0 2 0 0 0 -4 -1 8 0 0 0 -4 0 8 -8 0 0 1 0 -8 0 0 0 0 4 0 -8 -4 0 2 0 -8 4 -4 0 8 0 0 -8 8 0 -2 4 0 0 -8 8 0 0 0 -2 -4 0 -4 0 0 2 4 0 0 1 0 -1 1 -1 0 -10 -4 8 8 4 -4 -4 -4 4 2 -12 8 4 4 -4 16 2 1 0 8 -12 0 4 4 0 8 0 2 -8 4 -4 4 8 2 0 -8 0 -16 0 12 -4 -8 -4 4 0 -8 8 16 -4 2 -8 2 0 24 1 0 6 24 -4 -12 0 -8 -8 -12 -6 4 -4 4 -8 -4 0 8 -8 0 8 0 -16 -4 -8 0 0 0 -8 0 -8 0 0 0 0 16 -8 6 16 16 -16 0 -4 -16 -4 -16 -4 16 -8 -16 -8 -12 8 4 8 0 -8 -8 12 -4 0 8 -4 -16 -4 -8 -10 24 4 8 -12 8 -8 -4 24 16 0 -16 0 16 0 8 0 -24 0 0 -12 -16 -8 -4 -8 16 12 8 16 16 -16 -16 8 16 -16 16 -16 8 4 -8 8 0 -8 4 0 0 4 -16 16 -8 8 4 0 4 0 -6 -24 4 0 12 -4 4 8 10 8 0 8 0 8 8 -24 -12 0 -8 -4 -8 12 8 8 4 -2 4 4 0 16 -16 0 -4 4 4 8 -4 0 -6 0 -24 -2 4 0 12 -4 -1 0 4 0 8 10 -8 8 8 -2 0 -1 -4 0 0 -8 -4 8 4 4 0 -4 -8 -2 0 16 -16 0 -4 -8 8 -4 12 0 0 -2 -4 -8 0 -8 12 -8 -4 -2 4 8 -4 4 4 -8 4 8 2 0 -1 2 -1 1 -1 0 -8 -2 4 8 4 8 0 2 -8 0 -8 0 0 0 0 8 0 -1 8 0 8 0 0 -4 0 0 0 2 0 0 4 0 0 -2 -8 0 4 -4 0 8 0 8 0 0 -8 0 8 -8 0 -2 0 2 0 0 1 -4 4 8 0 -4 0 -8 0 0 -4 0 0 -4 -8 0 8 0 0 0 0 0 4 0 -8 -8 0 0 0 0 -4 4 0 0 0 -8 8 -4 -8 0 -8 0 0 0 0 8 0 0 8 -8 -8 4 0 4 0 4 0 0 -8 0 -4 -4 0 0 0 0 4 -8 0 -8 0 0 8 0 0 0 0 0 0 8 0 -8 0 8 0 0 8 0 0 -4 8 -8 0 0 8 0 8 0 -8 0 -8 0 8 4 0 4 0 -4 0 0 4 0 0 0 8 0 0 0 0 0 0 4 0 0 -4 -4 0 0 0 -4 8 0 -8 0 0 8 -8 -8 0 0 4 -8 0 0 8 0 2 0 0 4 -4 8 0 0 0 0 0 0 0 -4 -8 0 -2 0 8 4 0 -1 0 0 8 0 4 0 -8 8 0 -8 1 0 0 -8 0 4 0 0 -4 0 0 0 -2 -4 4 -8 0 0 8 0 0 -8 0 8 2 0 0 0 -8 8 4 -4 0 -2 -8 0 0 4 -4 2 8 0 0 1 0 -1 1 -1 0 0 -6 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 3 0 0 0 0 12 0 0 0 0 -6 24 -12 0 0 0 -6 0 0 0 0 0 0 0 0 0 -12 0 0 0 0 0 6 -24 6 0 0 -3 0 0 0 0 0 0 0 0 0 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 -4 0 0 0 12 0 12 0 0 0 0 0 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 -12 0 0 0 0 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -48 0 -12 0 0 0 48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 0 0 -12 0 0 0 0 0 0 0 4 0 4 0 0 0 -12 0 0 0 0 0 0 -12 0 0 24 0 0 0 0 0 0 0 0 0 0 0 -6 0 0 0 0 0 0 12 0 0 0 -12 0 0 0 0 -6 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 -3 0 0 0 0 0 -24 0 0 0 0 0 6 0 0 0 0 -12 0 0 12 0 0 0 6 0 0 0 0 0 0 0 0 -6 0 0 0 0 0 6 0 0 0 1 0 -1 1 -1 -4 0 -2 0 0 0 0 0 2 0 0 0 0 4 0 0 0 0 3 0 0 0 0 -4 0 0 0 0 -2 8 -4 0 0 8 -2 0 8 0 0 0 0 0 0 0 4 0 0 0 0 0 2 -8 2 0 0 -3 0 0 0 0 0 0 0 -8 0 4 0 0 0 0 0 0 -8 0 0 0 0 0 0 0 0 -4 4 0 8 0 -4 -16 -4 8 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 0 -4 0 0 -4 0 0 0 0 0 0 0 0 0 0 -4 0 0 0 0 -16 0 16 0 4 0 -8 0 -16 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 0 4 -8 0 0 0 0 4 0 -4 0 -4 0 0 0 4 0 0 0 0 0 0 4 0 16 8 0 0 0 0 0 0 0 0 0 0 0 -2 0 0 0 0 0 0 -4 0 0 8 -4 0 0 0 0 -2 0 0 0 0 3 0 0 0 0 0 8 0 0 0 0 -3 0 0 0 -8 0 -8 0 0 0 0 0 2 0 0 0 0 4 0 -8 4 0 0 0 2 0 0 -4 0 0 0 0 0 -2 0 0 0 0 0 2 0 0 4 1 0 -1 1 -1 0 -8 -6 8 0 0 8 0 6 -8 0 0 0 0 0 0 8 0 3 -16 0 0 0 12 0 16 0 8 2 -8 4 0 0 0 2 0 0 -8 -8 0 0 0 0 0 -12 16 0 0 -8 0 -2 8 -2 -16 0 -3 8 0 0 0 0 0 0 0 0 -4 0 0 0 0 0 0 0 0 -8 0 0 8 0 0 0 -4 -4 -8 0 8 -4 0 -4 0 0 0 0 16 -16 16 -4 0 -16 0 0 0 0 0 0 0 0 0 0 -8 -12 0 0 0 0 -4 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 4 0 0 0 -16 0 0 0 0 0 0 0 0 0 -16 16 -16 16 0 0 0 0 0 -8 0 -8 8 12 0 0 4 0 0 0 0 8 0 0 4 0 4 0 0 0 4 0 0 0 0 0 0 4 0 0 -8 0 0 0 16 0 0 0 0 0 0 0 2 0 0 -8 -8 8 8 12 0 0 0 4 0 0 0 0 2 0 -16 0 0 3 0 0 0 0 0 0 0 0 0 16 -3 0 0 0 0 0 8 0 0 -16 0 0 -2 8 8 -8 -8 -12 0 0 -4 0 0 0 -2 0 0 0 0 0 8 0 0 -6 -8 0 0 0 -8 6 8 0 0 1 0 -1 1 -1 -4 0 -2 0 0 -8 -8 8 2 8 0 0 0 4 8 -8 0 0 3 0 0 0 0 -4 8 0 0 0 -2 -8 12 -8 0 24 -2 0 -8 0 0 0 0 0 0 0 4 0 0 16 0 0 2 8 2 0 0 -3 0 0 0 0 8 0 0 8 8 -12 -24 0 -24 0 0 0 -24 0 0 16 0 0 0 0 0 -4 4 0 -8 0 12 -16 -4 -8 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 -8 -16 24 0 -4 0 -4 0 0 12 0 0 0 0 0 0 0 24 -16 -8 -4 0 0 0 0 16 0 -16 0 4 0 8 0 16 -16 0 0 16 -24 16 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 0 -12 8 0 0 0 0 4 0 -4 0 -4 0 0 0 -12 8 -24 0 0 0 0 4 0 16 -8 0 0 0 0 -16 24 -16 -8 0 0 0 -2 0 0 0 0 0 0 -4 0 0 -8 12 0 0 0 0 -2 0 0 -8 24 3 0 0 0 0 0 24 0 0 0 0 -3 0 0 0 -24 -8 8 8 8 0 -8 0 2 0 0 0 0 4 0 8 -12 0 0 0 2 8 0 -4 0 0 0 8 0 -2 0 0 -8 -8 0 2 0 0 4 1 0 -1 1 -1 -8 0 2 0 0 0 0 0 -2 0 0 0 0 8 0 0 0 0 3 0 0 0 0 -4 0 0 0 0 2 8 4 0 0 0 2 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 -2 -8 -2 0 0 -3 0 0 0 0 0 0 0 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 -4 0 0 0 -4 32 -4 0 0 0 0 0 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 -8 0 0 -4 0 0 0 0 0 0 0 0 0 0 -8 0 0 0 0 0 0 -16 0 4 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 8 0 4 0 0 0 0 0 8 0 4 0 4 0 0 0 4 0 0 0 0 0 0 4 0 -32 8 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 -4 0 0 0 4 0 0 0 0 2 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 -3 0 0 0 0 0 -8 0 0 0 0 0 -2 0 0 0 0 4 0 0 -4 0 0 0 -2 0 0 -8 0 0 0 0 0 2 0 0 0 0 0 -2 0 0 8 1 0 -1 1 -1 -4 0 -2 0 0 8 8 -8 2 -8 0 0 0 4 -8 8 0 0 3 0 0 0 0 -4 -8 0 0 0 -2 -8 12 8 0 24 -2 0 -8 0 0 0 0 0 0 0 4 0 0 -16 0 0 2 8 2 0 0 -3 0 0 0 0 -8 0 0 8 -8 -12 24 0 24 0 0 0 -24 0 0 -16 0 0 0 0 0 -4 4 0 -8 0 12 -16 -4 -8 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 8 16 -24 0 -4 0 -4 0 0 12 0 0 0 0 0 0 0 -24 16 8 -4 0 0 0 0 16 0 -16 0 4 0 8 0 16 -16 0 0 -16 24 -16 0 -8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 0 -12 8 0 0 0 0 4 0 -4 0 -4 0 0 0 -12 -8 24 0 0 0 0 4 0 16 -8 0 0 0 0 16 -24 16 8 0 0 0 -2 0 0 0 0 0 0 -4 0 0 -8 12 0 0 0 0 -2 0 0 8 -24 3 0 0 0 0 0 24 0 0 0 0 -3 0 0 0 -24 8 8 -8 -8 0 8 0 2 0 0 0 0 4 0 8 -12 0 0 0 2 -8 0 -4 0 0 0 -8 0 -2 0 0 8 8 0 2 0 0 4 1 0 -1 1 -1 -4 -8 -2 8 0 0 8 0 2 -8 0 0 0 4 0 0 -8 0 3 -16 0 0 -16 -4 0 16 16 -8 6 -8 -4 0 0 -8 6 16 24 8 8 -16 0 0 0 0 4 16 0 0 8 0 -6 8 -6 -16 0 -3 -8 0 0 0 0 16 0 -24 0 4 0 0 0 0 0 -16 8 0 8 0 16 -8 0 0 -16 12 4 -8 -8 8 -4 -16 12 -8 -16 0 0 -16 16 -16 4 0 16 0 -16 0 16 0 -16 0 0 0 0 -8 -4 0 -4 0 0 -4 8 0 16 0 0 0 0 0 0 0 -4 0 0 0 16 16 16 -16 -16 -12 0 8 0 16 -16 0 -16 0 0 0 16 0 0 16 -16 16 -16 0 -16 16 -16 16 -8 0 -8 8 4 4 0 4 8 0 -16 16 8 4 0 -4 0 -4 0 0 0 4 0 0 0 0 0 0 -12 0 16 -8 0 0 0 16 0 0 0 0 0 0 0 6 0 0 8 8 -8 -8 -4 0 0 24 -4 -16 0 16 0 6 0 -16 0 0 3 -16 0 16 0 0 -8 0 0 0 16 -3 0 16 -16 8 0 8 0 0 -16 0 0 -6 -8 -8 8 8 4 0 -24 4 0 16 -16 -6 0 0 -4 0 0 8 0 0 -2 -8 0 0 0 -8 2 8 0 4 1 0 -1 1 -1 -12 0 6 0 0 8 -8 -24 -6 24 0 0 0 12 8 24 0 0 3 0 0 0 0 12 -8 0 0 0 6 24 12 -24 0 -24 6 0 -24 0 0 0 0 0 0 0 -12 0 0 48 0 0 -6 -24 -6 0 0 -3 0 0 0 0 24 0 0 24 -24 -12 -24 0 24 0 0 0 24 0 0 -48 0 0 0 0 0 12 4 0 -24 0 12 -48 12 -24 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 -24 48 -24 0 12 0 -12 0 0 12 0 0 0 0 0 0 0 24 -48 24 -12 0 0 0 0 -16 0 48 0 -12 0 24 0 -48 16 0 0 -48 24 48 0 -24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -12 12 0 -12 24 0 0 0 0 12 0 -4 0 -4 0 0 0 -12 24 -24 0 0 0 0 -12 0 48 24 0 0 0 0 48 -24 -48 24 0 0 0 6 0 0 0 0 0 0 12 0 0 -24 12 0 0 0 0 6 0 0 -24 24 3 0 0 0 0 0 -24 0 0 0 0 -3 0 0 0 24 8 -24 -24 24 0 -8 0 -6 0 0 0 0 -12 0 24 -12 0 0 0 -6 8 0 -12 0 0 0 -8 0 6 0 0 24 -24 0 -6 0 0 12 1 0 -1 1 -1 -12 0 6 0 0 -8 8 24 -6 -24 0 0 0 12 -8 -24 0 0 3 0 0 0 0 12 8 0 0 0 6 24 12 24 0 -24 6 0 -24 0 0 0 0 0 0 0 -12 0 0 -48 0 0 -6 -24 -6 0 0 -3 0 0 0 0 -24 0 0 24 24 -12 24 0 -24 0 0 0 24 0 0 48 0 0 0 0 0 12 4 0 -24 0 12 -48 12 -24 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 24 -48 24 0 12 0 -12 0 0 12 0 0 0 0 0 0 0 -24 48 -24 -12 0 0 0 0 -16 0 48 0 -12 0 24 0 -48 16 0 0 48 -24 -48 0 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -12 12 0 -12 24 0 0 0 0 12 0 -4 0 -4 0 0 0 -12 -24 24 0 0 0 0 -12 0 48 24 0 0 0 0 -48 24 48 -24 0 0 0 6 0 0 0 0 0 0 12 0 0 -24 12 0 0 0 0 6 0 0 24 -24 3 0 0 0 0 0 -24 0 0 0 0 -3 0 0 0 24 -8 -24 24 -24 0 8 0 -6 0 0 0 0 -12 0 24 -12 0 0 0 -6 -8 0 -12 0 0 0 8 0 6 0 0 -24 24 0 -6 0 0 12 1 0 -1 1 -3 12 -12 6 -8 -16 8 0 24 6 16 -4 -8 -16 4 8 24 -8 -4 3 -16 -16 -8 -16 12 8 -16 -32 -8 6 24 12 24 -8 24 6 -16 24 -8 -8 -16 -8 -8 -16 -8 12 -16 -16 48 -8 -8 6 24 6 -16 -16 3 -8 -4 -16 -8 24 -16 -16 24 24 8 24 -8 24 -16 -8 -16 24 -16 -8 48 -16 -8 -8 -16 -16 12 4 -8 24 -8 12 48 12 24 -16 -16 -4 -16 -16 -16 4 -8 -16 -8 -16 -8 -16 -16 -16 -16 24 48 24 -8 12 -16 12 -8 -8 12 -8 -8 -16 -8 -16 -4 -16 24 48 24 12 -16 -8 -16 -16 16 -16 48 -16 12 -16 24 -16 48 16 -8 -16 48 24 48 -16 24 -16 -16 -16 -16 -16 -16 -16 -16 -16 -16 -8 -8 -8 -8 12 12 -8 12 24 -8 -16 -16 -8 12 -8 4 -8 4 -4 -16 -8 12 24 24 -8 -16 -4 -16 12 -16 48 24 -16 -16 -8 -16 48 24 48 24 -16 -16 -8 6 -8 -8 -8 -8 -8 -8 12 -8 -8 24 12 -16 -4 -16 -16 6 -8 -16 24 24 3 -16 -8 -16 -16 -4 24 -16 -16 -4 -16 3 -8 -16 -16 24 8 24 24 24 -16 8 -16 6 -8 -8 -8 -8 12 -16 24 12 -8 -16 -16 6 8 -16 12 -16 -8 -8 8 -4 6 -8 -8 24 24 -8 6 -8 -4 12 1 -4 1 1 -3 4 -4 2 -4 0 4 0 8 2 0 -4 0 0 4 0 8 0 -4 -1 0 0 0 -8 0 4 8 0 0 -2 0 0 4 0 0 2 0 0 -4 -4 -8 0 0 0 -8 0 0 0 -8 0 8 -2 0 2 8 0 -1 -4 0 0 0 4 -8 0 0 -8 0 0 0 -4 0 0 0 0 0 0 0 -8 -4 8 0 0 0 0 0 -8 -4 4 0 0 8 8 0 0 0 8 0 0 0 8 0 8 -8 0 0 8 0 4 0 -4 0 -4 0 -4 0 0 -4 -4 8 0 0 0 0 0 0 -8 -8 -4 0 8 0 0 0 0 0 8 0 0 8 0 0 0 0 0 0 -4 -8 8 -8 0 0 8 0 8 0 0 8 0 8 -4 8 -4 0 -4 -4 8 -4 -8 0 0 8 0 -4 0 0 0 0 0 0 -8 4 4 0 0 0 0 0 0 0 0 0 0 0 0 8 0 -4 -8 -8 0 0 8 -2 8 0 -4 -4 0 0 0 0 0 0 0 -8 0 0 0 2 -8 0 4 0 -1 -8 0 0 0 0 0 0 0 -4 0 -1 0 -8 0 0 4 0 8 4 8 0 0 -2 -4 -4 0 0 0 0 0 0 0 -8 0 2 0 0 4 0 0 -4 4 -4 2 0 0 8 4 -4 2 0 -4 4 1 -4 1 1 -3 4 -8 2 0 0 0 0 4 2 8 -4 0 0 4 4 4 -4 -4 -1 8 0 0 0 0 0 0 -8 -4 2 0 0 8 0 0 -2 -8 0 0 0 0 0 0 0 8 0 8 0 0 -4 8 2 0 -2 0 0 -1 0 0 0 0 -8 0 0 0 4 0 -4 0 0 0 0 -8 0 0 -4 -8 0 0 -8 0 -8 0 0 -4 8 0 -4 0 0 -8 0 0 0 8 0 8 0 0 0 0 0 8 8 0 0 0 -8 -8 0 -4 -4 0 -4 0 0 4 0 -8 8 0 0 0 0 -4 0 4 -4 0 8 0 8 0 8 0 0 0 0 -8 0 0 0 0 8 -8 0 0 0 4 0 8 0 8 0 0 8 0 8 0 0 8 0 -4 -4 -4 -8 4 8 0 8 0 -4 -4 0 0 0 0 0 0 8 -4 -8 -4 0 0 0 0 0 0 0 0 0 0 0 0 -8 0 0 4 0 0 8 2 -8 0 0 0 -4 -4 0 0 0 0 0 0 0 -8 0 -2 8 8 -8 -4 -1 0 0 -8 0 0 0 0 0 -4 8 -1 0 0 -8 0 0 0 4 8 0 4 0 2 0 0 -4 -4 0 0 0 0 0 0 -8 -2 4 0 4 0 0 0 0 -4 2 -4 0 4 8 0 2 -4 -4 4 1 -4 1 1 -3 8 -6 4 -8 -8 4 12 12 -4 20 2 -4 -8 -12 -4 -12 0 -2 1 -16 8 4 0 4 -4 -16 8 0 2 8 4 -12 4 8 2 0 8 0 0 0 4 -4 -8 -4 -4 16 -8 8 0 -4 -2 -8 -2 16 -8 -1 0 -2 -8 -4 4 0 -8 -8 4 -6 4 -4 4 8 4 0 -8 8 0 8 0 0 -4 -8 0 0 0 8 0 -8 0 0 0 0 0 8 2 0 0 0 0 4 0 4 0 4 0 8 0 8 -4 -8 -4 -8 0 -8 0 -4 -4 0 8 4 0 4 8 2 8 -4 -8 -4 0 -8 4 8 0 0 0 0 0 0 8 0 8 0 0 -4 0 -8 -4 -8 0 -4 -8 0 0 0 0 -8 0 0 0 0 -8 4 8 8 0 0 4 0 0 -4 0 0 -8 0 4 0 4 0 2 8 4 0 -4 -4 4 8 2 8 0 8 0 -8 -8 -8 4 16 8 4 8 4 8 8 -4 -2 -4 4 0 0 0 0 -4 -4 -4 -8 -4 0 -2 0 -8 -2 -4 16 4 4 -1 0 -4 0 -8 -2 -8 -8 -8 -2 -16 1 4 0 0 8 -4 8 -12 -12 -16 -4 8 2 0 0 0 0 4 8 8 4 4 0 0 2 4 -8 -8 -8 -4 8 4 2 -4 8 -4 12 12 -8 4 -8 2 8 -1 -2 1 1 -3 4 -4 -2 0 0 0 0 0 -2 0 -4 0 16 4 0 0 0 -4 3 0 16 0 0 -4 0 0 0 0 -2 8 -4 0 0 -8 -2 0 -8 0 0 0 0 -8 0 8 -4 0 0 0 0 -8 -2 8 -2 0 0 3 0 4 -16 -8 0 0 -16 -8 0 0 0 8 0 0 0 0 -8 16 0 0 0 0 8 0 0 -4 4 0 -8 0 -4 16 -4 -8 0 -16 4 0 0 0 4 -8 0 -8 0 8 0 0 0 0 0 0 0 0 -4 16 4 0 0 -4 0 8 0 8 0 4 -16 0 0 0 4 0 -8 0 0 16 0 16 0 -4 -16 -8 -16 16 16 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 -8 0 0 -4 4 8 -4 -8 0 0 0 0 4 -8 4 -8 4 4 0 8 -4 0 0 8 0 4 0 -4 0 16 8 -16 -16 0 0 0 0 0 0 16 0 -8 -2 8 0 0 0 0 0 -4 -8 -8 -8 -4 0 4 0 0 -2 8 0 0 0 3 0 8 0 0 4 -8 0 0 -4 0 3 0 0 0 -8 0 8 0 0 0 0 16 -2 0 0 0 0 -4 0 -8 -4 0 0 0 -2 0 16 4 0 0 0 0 -4 -2 0 0 0 0 0 -2 0 -4 4 1 -4 1 1 -3 4 -4 -2 0 16 0 0 0 -2 0 -4 -8 16 -4 0 0 0 -4 3 0 16 -8 0 -4 0 0 16 0 6 -8 -4 0 -8 8 6 0 -24 0 0 0 -8 -8 -16 -8 -4 0 16 0 0 -8 6 -8 6 0 16 3 0 -4 16 -8 0 0 16 -24 0 -8 0 -8 0 16 -8 0 8 16 0 0 0 0 -8 -16 0 12 4 0 8 0 -4 16 12 8 0 16 -4 0 0 0 4 -8 0 -8 0 -8 0 -16 0 -16 0 0 0 0 -4 16 4 -8 -8 -4 0 -8 0 -8 16 -4 16 0 0 0 4 16 -8 16 0 -16 0 -16 0 12 16 8 16 -16 -16 -8 0 0 0 0 0 0 16 0 0 0 0 16 0 0 0 0 0 -8 0 0 -4 4 -8 -4 8 -8 0 0 0 4 -8 4 -8 4 -4 16 -8 -4 0 0 -8 16 -4 -16 12 -16 16 -8 16 16 -8 0 0 0 0 0 16 16 -8 6 -8 -8 0 0 0 0 -4 -8 -8 -24 -4 0 -4 0 16 6 -8 0 0 0 3 0 -8 0 16 -4 8 -16 -16 -4 0 3 -8 0 0 8 0 -8 0 0 0 0 16 6 0 0 0 0 -4 16 -24 -4 -8 0 0 6 0 16 4 16 -8 0 0 -4 -2 0 -8 0 0 0 -2 0 -4 4 1 -4 1 1 -3 0 -4 2 0 16 0 0 0 2 0 -4 0 0 0 0 0 0 -4 3 0 0 0 0 -4 0 0 16 0 2 -8 -12 0 0 0 2 0 0 0 0 0 0 8 0 -8 -4 0 -16 0 0 -8 2 -8 2 0 -16 3 0 4 0 8 0 0 0 0 0 -8 0 8 0 16 0 0 0 0 0 0 0 0 -8 0 0 -4 -4 0 0 0 12 0 -4 0 0 0 4 0 0 0 -4 8 0 8 0 -8 0 0 0 0 0 0 0 0 4 0 0 0 0 12 0 -8 0 8 -16 4 0 0 0 0 0 16 -8 -16 0 0 0 16 0 -4 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 -8 0 0 4 0 -8 12 0 0 0 0 0 0 8 -4 8 -4 4 -16 -8 12 0 0 8 -16 4 0 -4 0 0 -8 0 0 0 0 0 0 0 0 0 16 -8 2 -8 0 0 0 0 0 -4 8 8 0 -12 0 4 0 -16 2 -8 0 0 0 3 0 8 0 -16 4 0 0 0 -4 0 3 0 0 0 0 0 -8 0 0 0 0 0 2 0 0 0 0 -4 16 0 -12 0 0 0 2 0 0 0 16 0 0 0 -4 2 0 0 0 0 0 2 0 -4 0 1 -4 1 1 -3 4 -2 0 -4 16 0 4 0 0 4 -6 -4 8 -8 0 0 4 6 1 0 -8 4 0 -4 0 0 -16 4 2 0 -4 0 4 0 2 0 -8 4 4 0 -4 -4 0 4 4 0 -8 0 -4 4 -2 0 -2 0 -8 -1 -4 -2 0 -4 0 0 0 8 0 2 0 -4 0 0 -4 0 0 8 -4 0 0 -4 4 0 0 0 0 -4 0 4 0 0 0 0 8 0 2 0 0 0 0 4 0 4 -8 -4 -8 0 -8 0 0 0 0 4 0 -8 4 4 4 0 -4 -4 8 4 8 2 0 0 0 0 -4 0 -4 8 -8 0 8 0 8 0 0 0 0 0 0 4 -8 0 0 0 -8 0 -8 0 0 0 0 0 8 8 8 8 4 -4 -4 -4 0 -4 -4 0 0 4 -8 -8 4 4 4 0 4 0 2 8 -4 0 0 0 4 8 2 0 0 0 0 0 0 0 -4 0 0 0 0 0 8 0 4 -2 4 -4 -4 -4 -4 -4 4 -4 -4 8 4 0 -2 0 -8 -2 4 0 0 0 -1 0 -4 0 -8 -2 0 0 0 6 0 1 4 0 0 0 0 0 0 0 0 0 -8 2 4 4 4 4 -4 -16 -8 -4 4 0 0 2 0 8 -4 16 -4 4 0 -6 0 4 -4 0 0 -4 0 -4 2 4 -1 -2 1 1 -3 0 4 -2 -4 0 4 8 0 -2 -8 4 8 8 -8 0 0 0 4 -1 -8 8 8 8 0 4 0 0 -8 2 0 0 -4 -8 0 -2 0 0 4 -4 -8 0 0 -8 0 0 -8 8 8 0 0 2 0 -2 0 -8 -1 4 0 0 0 -4 8 0 0 0 0 0 0 -4 0 0 0 0 -8 -8 0 -8 -4 0 8 0 0 0 0 0 4 4 0 0 0 0 0 0 8 0 8 0 0 0 0 0 0 -8 8 0 -8 -4 0 -4 0 4 -8 0 0 0 -4 4 0 -8 0 8 0 0 0 8 0 0 0 0 -8 8 0 8 0 0 0 0 0 0 0 0 0 8 0 -4 8 0 0 -8 8 0 8 0 0 8 0 -8 0 4 0 4 0 4 0 0 -4 0 0 -8 0 0 0 0 0 0 0 0 -8 0 4 -4 0 0 8 0 -8 0 8 0 0 0 0 0 0 0 -4 8 0 -8 0 0 2 0 0 4 -4 0 -8 0 0 0 0 0 -8 0 0 -8 -2 0 -8 -4 0 -1 8 0 0 8 0 0 -8 8 4 -8 -1 -8 8 0 0 4 0 0 -4 0 0 8 2 4 -4 0 -8 0 0 0 0 8 -8 0 -2 0 8 0 0 8 -4 4 4 -2 8 -8 0 -4 -4 -2 8 -4 0 1 -4 1 1 -3 -4 0 2 0 8 0 0 -4 2 8 4 8 -8 -4 -4 -4 -4 4 -1 -8 -8 8 -8 0 0 0 8 12 2 0 0 8 0 0 -2 -16 0 8 -8 8 0 -8 0 0 0 -8 -8 0 -4 0 2 0 -2 0 8 -1 8 -8 8 8 -8 -8 -8 0 -4 0 4 8 0 -8 -8 -16 0 8 12 8 8 -8 0 0 0 0 0 4 -8 0 -4 0 0 8 8 -8 -8 -8 0 -8 0 8 0 -8 -8 0 0 0 8 0 -8 8 0 4 -4 8 4 0 -8 4 0 0 0 8 -8 0 8 4 0 -4 4 -8 0 8 16 0 16 0 -8 0 -8 8 8 0 0 0 16 8 0 0 -8 -4 8 -8 0 -8 0 -8 16 -8 0 8 0 0 0 4 -4 4 0 4 -8 -8 0 8 4 4 8 0 -8 0 -8 8 0 -4 -8 4 8 -8 0 0 0 0 0 0 -8 8 0 0 8 0 0 -4 8 -8 0 2 0 -8 8 -8 -4 12 0 8 -8 0 0 8 -8 -16 8 -2 0 -8 -8 4 -1 -8 8 0 -8 0 0 0 0 4 -8 -1 0 -8 0 0 0 0 -4 8 0 -4 -8 2 8 -8 -4 12 0 8 0 0 8 8 -16 -2 -4 -8 -4 8 8 0 0 4 2 4 0 -4 8 0 2 4 -4 -4 1 -4 1 1 -3 0 6 0 -8 0 4 -4 0 0 12 2 4 0 -4 0 0 4 -2 -3 -8 0 -4 -8 0 -4 16 0 -4 -2 0 0 -4 4 0 2 0 0 8 -8 8 4 4 -8 -12 0 8 0 -8 -4 4 2 0 -2 -16 0 3 -8 -6 0 -4 -4 8 0 0 0 -6 0 12 -12 0 -4 0 0 0 4 0 -8 8 12 8 0 4 4 -4 0 -8 0 0 -4 0 8 0 6 -8 -16 8 -4 4 16 -4 8 12 0 -8 -8 8 4 0 12 4 0 0 0 -4 4 0 8 -12 0 -12 0 6 0 0 8 0 0 0 -4 0 0 0 0 0 -8 4 0 0 0 0 0 -4 0 0 12 8 8 0 0 8 16 -8 -16 0 0 -8 0 8 -8 -4 8 -4 0 0 -12 0 0 4 0 -8 4 0 4 4 -4 -4 6 0 12 0 4 0 -12 0 6 8 -4 -8 0 0 0 0 4 -16 0 -12 -8 0 0 0 4 2 12 -4 -8 8 -4 4 0 -4 4 0 0 -8 -6 0 0 -2 -12 8 -4 0 3 8 12 0 0 -6 0 -8 8 -2 -8 -3 4 -8 0 0 -4 0 0 -4 16 0 0 -2 8 -8 4 -4 0 0 0 0 -4 8 0 2 0 0 0 0 4 8 4 2 0 -4 -4 0 4 -8 0 4 2 0 -1 -2 1 1 -3 -4 0 2 0 8 0 8 4 2 -8 4 8 -8 -4 4 4 12 4 -1 -8 -8 8 8 0 0 0 -8 -4 2 0 0 -8 0 0 -2 0 0 -8 8 -8 0 8 0 0 0 -8 -8 0 12 0 2 0 -2 0 8 -1 -8 0 8 -8 8 8 -8 0 4 8 -4 -8 0 -8 -8 0 0 8 -4 -8 -8 8 0 0 -16 0 0 4 -8 0 -4 0 0 8 -8 -8 0 -8 0 -8 0 -8 0 8 8 0 16 0 -8 0 8 -8 0 4 -4 8 4 0 -8 4 0 0 16 -8 -8 8 8 -4 0 4 4 -8 0 8 0 0 0 0 8 0 -8 8 8 0 0 0 0 -8 0 0 8 4 8 -8 0 -8 0 -8 0 8 16 -8 0 0 0 4 -4 4 0 4 -8 -8 16 -8 4 4 -8 0 8 0 0 8 0 -4 8 -4 -8 -8 8 0 0 0 0 0 -8 8 0 0 -8 0 0 4 8 -8 0 2 0 -8 -8 8 12 -4 0 -8 8 0 0 -8 0 0 8 -2 0 -8 8 -4 -1 8 -8 -16 -8 8 0 0 0 4 -8 -1 0 8 -16 0 0 0 4 -8 0 4 -8 2 -8 8 12 -4 0 8 0 0 8 -8 0 -2 4 -8 -4 8 8 0 0 4 2 4 0 4 -8 0 2 4 -4 -4 1 -4 1 1 -3 0 -4 -2 4 0 -4 0 0 -2 8 4 0 8 0 0 0 -8 4 -1 -8 8 0 -8 0 -4 0 0 0 2 0 0 4 0 0 -2 0 0 -4 4 8 8 0 8 0 0 -8 8 -8 -8 0 2 0 -2 0 -8 -1 -4 0 0 0 4 -8 0 0 0 0 0 0 4 0 -8 0 0 -8 0 0 8 4 0 -8 0 0 0 8 0 -4 4 0 0 0 0 0 0 8 0 8 0 0 0 0 0 0 8 -8 0 8 4 0 4 8 4 -8 0 8 -8 -4 -4 0 8 0 8 0 0 0 -8 0 0 0 0 -8 -8 0 -8 0 0 0 0 0 0 0 0 8 -8 0 4 -8 0 0 -8 8 0 8 0 0 -8 0 8 0 -4 0 -4 8 4 0 0 -4 0 -8 8 0 8 0 0 0 0 0 0 -8 0 4 4 0 0 8 0 8 0 -8 0 0 0 0 8 0 0 4 -8 0 -8 0 0 2 0 -8 -4 4 -8 0 0 0 0 0 0 8 0 0 -8 -2 0 -8 4 0 -1 -8 0 0 8 0 0 8 -8 4 -8 -1 0 -8 0 0 -4 0 0 4 0 0 8 2 -4 4 -8 0 0 0 0 0 0 8 0 -2 0 8 0 0 0 4 -4 4 -2 0 0 0 4 4 -2 0 -4 0 1 -4 1 1 -3 0 2 0 -4 0 0 4 4 0 4 2 4 0 -4 -4 -4 0 -2 -3 0 0 -4 0 0 0 8 -8 0 2 0 0 0 4 0 -2 8 0 -4 4 0 4 -4 8 -4 0 0 0 0 0 4 -2 0 2 -8 0 3 4 2 0 4 0 0 0 0 -4 2 -12 -4 0 0 -4 -8 0 0 0 -8 0 -4 4 -8 8 4 -4 0 0 -4 0 0 -4 0 0 0 -2 0 8 0 4 -4 -8 4 0 4 -8 8 0 -8 0 8 0 0 0 0 0 -4 4 0 4 -4 8 4 0 -2 0 12 0 4 0 0 -4 0 8 0 -8 0 0 4 0 0 0 0 0 -4 8 8 0 0 0 4 0 0 -8 0 8 0 -8 0 8 0 -4 -4 4 0 0 0 -4 0 0 4 -8 0 0 0 -4 -4 4 4 -2 0 4 0 0 12 4 0 -2 -8 -4 8 0 0 0 0 4 -8 -8 0 0 -4 0 0 4 -2 4 -4 4 -4 0 0 0 4 -4 0 0 0 2 -8 0 2 -4 0 0 -12 3 0 -4 8 0 2 0 8 -8 -2 0 -3 4 0 -8 0 0 0 -4 0 8 -4 0 2 -4 4 0 0 0 0 0 0 -4 0 8 -2 4 0 0 0 4 4 0 2 0 0 -4 4 0 -4 0 0 2 0 -1 -2 1 1 -3 0 -2 0 0 0 -4 4 0 0 12 2 4 0 -4 0 0 -4 -2 -3 8 0 -4 -8 0 4 0 0 4 6 0 0 -12 4 0 -6 0 0 0 0 8 4 4 -8 4 0 -8 0 -24 4 4 -6 0 6 0 0 3 0 2 0 -4 -12 8 0 0 0 2 0 -4 12 0 -4 0 0 0 -4 0 -8 0 -4 8 0 -12 4 4 0 0 0 0 12 0 8 0 -2 8 0 -8 -4 4 0 -4 8 -4 0 -8 -8 8 12 0 -12 -4 0 0 0 -4 4 0 0 4 0 4 0 -2 0 0 24 0 0 0 -4 0 0 0 0 0 -8 -12 0 0 0 0 0 -4 0 0 -12 24 8 0 0 -8 0 8 0 0 0 -8 0 8 0 -4 0 4 0 0 4 0 0 4 0 -8 -4 0 4 4 -4 -4 -2 0 -4 0 12 0 4 0 -2 8 12 -8 0 0 0 0 4 0 0 12 -24 0 0 0 4 -6 -4 -4 0 0 4 -4 0 -4 4 0 0 -8 2 0 0 6 4 -8 -12 0 3 8 -4 0 0 2 0 -8 8 -2 8 -3 4 -8 0 0 4 0 0 -12 0 0 0 6 0 0 -4 4 0 0 0 0 -4 8 0 -6 0 0 0 0 4 0 -4 2 0 4 -4 0 12 0 0 -4 2 0 -1 -2 1 1 -3 0 0 -2 0 0 0 0 4 -2 0 4 0 8 0 -4 4 -4 4 -1 0 8 0 0 0 0 -8 8 4 -2 0 0 0 0 0 2 -8 0 -8 0 0 -8 0 8 0 0 0 -8 0 -4 0 -2 0 2 -8 8 -1 -8 0 0 0 0 0 0 0 4 0 4 0 0 0 8 -8 0 -8 4 -8 0 0 0 -8 8 0 0 -4 0 8 -4 0 0 0 -8 0 0 0 8 0 0 0 8 0 8 0 0 -8 -8 8 0 -8 0 -4 4 -8 0 -8 8 4 8 0 0 0 -8 0 0 4 0 4 0 0 0 8 0 0 0 0 8 0 0 0 0 0 0 -8 0 -8 0 0 8 4 -8 0 8 0 8 0 0 8 0 -8 8 0 8 -4 4 0 0 4 0 8 0 -8 -4 0 0 0 0 0 0 8 0 -4 0 4 0 -8 0 8 0 -8 0 0 0 0 -8 -8 -8 0 0 4 -8 0 0 -2 0 8 -8 0 -4 4 0 0 0 0 0 0 0 -8 8 2 0 0 0 4 -1 0 0 8 -8 0 0 8 -8 4 0 -1 0 0 8 0 0 0 4 0 -8 -4 8 -2 -8 0 -4 4 0 0 0 0 0 0 -8 2 -4 8 0 0 0 0 0 4 -2 4 0 4 0 0 -2 4 -4 0 1 -4 1 1 -3 0 6 -4 -4 0 0 -4 0 4 4 2 4 8 -4 0 0 -4 -2 1 0 -8 -4 0 4 0 0 0 -4 -2 8 -4 0 4 0 -2 0 0 4 4 0 -4 -4 0 4 -4 0 8 0 4 -4 2 -8 2 0 -8 -1 -4 6 0 -4 0 0 -16 0 0 2 0 4 0 0 4 0 0 -8 4 0 0 -4 4 0 0 0 0 4 0 4 0 0 0 0 8 16 -6 0 0 0 0 4 0 4 -8 -4 8 0 -8 0 0 0 0 -4 0 8 0 4 -4 0 -4 -4 -8 -4 -8 2 0 0 0 0 0 0 4 8 8 0 -8 0 8 0 16 0 0 0 0 4 8 0 0 0 -8 0 8 0 0 0 0 0 -8 8 -8 8 4 4 -4 4 0 0 -4 0 0 -4 8 -8 -4 0 4 0 4 0 -6 8 -4 0 0 0 -4 -8 2 0 0 0 0 -8 -16 0 -4 0 0 0 0 0 -8 0 -4 2 4 4 -4 -4 4 4 -4 -4 -4 0 4 0 6 0 -8 2 4 0 0 0 -1 0 4 0 8 -2 0 0 0 -2 0 1 4 0 0 0 0 8 0 0 0 0 -8 -2 4 4 -4 -4 4 0 0 -4 -4 0 0 -2 0 8 0 0 4 4 0 2 4 -4 -4 0 0 -4 -4 4 2 0 -1 -2 1 1 -3 -4 6 0 -4 8 0 -4 0 0 4 2 4 0 0 0 0 4 -2 1 0 0 -4 8 -4 0 0 -16 4 2 0 -4 0 4 0 2 -8 8 -4 -4 8 -4 4 0 -4 4 0 -16 0 -4 -4 -2 0 -2 0 0 -1 4 -2 8 4 0 -8 -8 -8 0 10 0 4 0 -8 4 8 0 0 -4 0 -8 4 -4 0 8 0 0 4 0 4 0 0 0 0 0 8 2 0 0 0 0 -4 0 -4 0 4 0 0 0 0 0 0 0 -4 0 0 -4 4 -4 0 -4 4 0 -4 16 -6 -8 0 0 0 4 8 4 0 0 0 0 0 0 0 8 0 -8 0 0 4 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 4 4 -4 4 0 4 4 0 0 -4 0 0 -4 -4 -4 0 -4 0 2 0 4 0 0 0 -4 16 -6 0 0 0 0 0 -8 8 -4 0 0 0 0 0 0 -8 -4 -2 -4 4 4 4 -4 -4 4 4 4 -8 4 -8 -2 8 0 -2 -4 0 0 0 -1 -8 4 8 -16 6 0 0 0 -2 0 1 4 8 -8 0 0 0 0 0 0 0 0 2 -4 -4 4 4 -4 -8 8 -4 -4 8 -8 2 0 0 4 8 4 4 0 2 0 -4 -4 0 0 -4 0 4 2 -4 -1 -2 1 1 -3 0 2 -4 0 8 -4 -4 4 4 4 2 -4 8 -4 4 -4 -8 -2 1 0 -8 4 0 4 4 0 -8 8 2 -8 4 -4 4 8 2 0 -8 -8 8 0 4 -4 -8 -4 -4 0 8 -8 8 -4 -2 8 -2 0 8 -1 8 -2 8 -4 12 0 8 8 12 -6 -4 -4 -4 -8 4 0 -8 -8 -8 -8 0 -8 -4 -8 0 0 0 0 0 0 0 0 0 0 0 -8 2 -16 -16 16 0 4 16 4 0 4 0 8 0 8 -12 8 4 0 0 8 -8 -4 -4 0 0 4 0 4 -8 2 -8 4 8 -12 8 8 4 -8 0 0 0 0 0 0 -8 0 -8 0 0 -4 0 8 4 8 0 -12 8 16 16 -16 -16 8 0 0 0 0 0 4 0 0 0 8 4 0 0 -4 0 0 0 -8 4 0 4 0 2 -8 4 0 -12 4 4 -8 2 8 0 8 0 8 8 8 4 0 -8 -4 -8 12 -8 -8 -4 -2 -4 4 8 -8 8 -8 -4 -4 -4 8 -4 0 -2 0 8 -2 -4 0 12 -4 -1 0 -4 0 8 -2 -8 -8 -8 -2 0 1 4 0 0 8 4 -8 -4 -4 0 4 -8 2 -8 8 -8 8 4 -8 -8 4 4 0 0 2 -4 8 0 8 -4 0 -4 2 4 0 -4 4 4 0 -4 0 2 0 -1 -2 1 1 -3 4 4 -2 -8 -16 8 0 8 -2 -16 -4 8 16 12 -8 8 8 -4 3 16 16 8 -16 -4 8 -16 0 8 -2 -8 12 -8 8 -24 -2 16 8 -8 -8 -16 8 -8 16 -8 -4 16 -16 -16 8 -8 -2 -8 -2 -16 -16 3 -8 -4 16 -8 -8 -16 16 8 8 8 -24 -8 24 -16 8 16 -24 16 8 16 -16 -8 -8 16 16 -4 4 8 8 -8 12 16 -4 8 -16 16 -4 16 -16 16 4 -8 -16 -8 -16 -8 16 16 -16 16 -8 16 24 8 -4 16 4 8 8 12 -8 -8 16 -8 -16 -4 16 -24 -16 8 4 -16 -8 -16 16 -16 16 -16 -16 -4 16 8 16 -16 -16 8 16 16 24 -16 -16 8 16 16 -16 16 -16 -16 16 -16 16 -16 -8 -8 -8 8 -4 4 -8 12 8 8 16 -16 8 4 -8 4 -8 4 -4 -16 -8 12 -8 -24 -8 -16 -4 16 -4 16 16 -8 16 16 8 -16 16 24 -16 8 16 -16 -8 -2 -8 8 -8 -8 8 8 -4 -8 -8 8 12 -16 -4 16 -16 -2 -8 16 -8 -24 3 -16 -8 16 -16 -4 -24 16 16 -4 16 3 8 -16 16 -24 8 -8 8 -8 -16 -8 16 -2 -8 -8 8 8 -4 -16 8 12 8 -16 16 -2 -8 16 4 -16 8 -8 8 -4 -2 8 8 8 -8 -8 -2 8 -4 4 1 -4 1 1 -3 0 10 -4 -8 -8 4 -12 4 4 4 2 4 8 4 4 -4 0 -2 1 16 -8 -4 0 4 -4 -16 8 0 2 -8 4 4 -4 -8 2 0 8 0 0 0 -4 -4 8 -4 -4 -16 -8 8 0 -4 -2 8 -2 16 -8 -1 0 -2 8 -4 -12 0 8 -8 12 -6 -4 -4 4 8 -4 0 8 -8 0 -8 0 0 -4 8 0 0 0 -8 0 -8 0 0 0 0 0 -8 2 0 0 0 0 4 0 4 0 4 0 -8 0 -8 12 8 -4 8 0 8 8 4 4 0 8 4 0 4 8 2 -8 4 -8 -12 -8 -8 4 8 0 0 0 0 0 0 -8 0 -8 0 0 4 0 8 -4 -8 0 -12 8 0 0 0 0 -8 0 0 0 0 -8 4 8 -8 0 -8 4 0 0 4 0 0 8 8 4 0 4 0 2 8 4 0 12 4 4 8 2 -8 0 -8 0 8 8 8 -4 16 -8 4 8 12 -8 8 -4 -2 -4 -4 0 0 0 0 -4 -4 -4 -8 -4 0 -2 0 -8 -2 -4 -16 -12 -4 -1 0 -4 0 -8 -2 8 8 8 -2 16 1 -4 0 0 -8 -4 -8 -4 4 -16 4 -8 2 0 0 0 0 4 8 8 4 -4 0 0 2 -4 8 0 -8 4 8 4 2 4 -8 4 4 -4 -8 -4 8 2 0 -1 -2 1 1 -3 0 -4 2 0 0 0 0 0 2 0 -4 8 0 8 0 0 0 -4 3 0 0 8 0 -4 0 0 0 0 -6 -8 4 0 8 0 -6 0 0 0 0 0 8 8 -16 8 -4 0 0 0 0 -8 -6 -8 -6 0 0 3 0 -4 0 8 0 0 0 0 0 0 0 -8 0 0 8 0 0 0 0 0 0 0 8 -16 0 12 -4 0 0 0 -4 0 12 0 0 0 -4 0 0 0 -4 8 0 8 0 8 0 -16 0 -16 0 0 0 0 4 0 0 8 8 -4 0 8 0 -8 0 -4 0 0 0 0 0 0 -8 0 0 0 0 16 0 12 0 0 0 16 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8 0 0 4 0 8 -4 0 8 0 0 0 0 8 -4 8 -4 -4 0 8 -4 0 0 -8 0 -4 -16 12 -16 0 -8 0 0 8 0 0 0 0 0 0 0 -8 -6 8 8 0 0 0 0 -4 8 8 0 4 0 -4 0 0 -6 8 0 0 0 3 0 -8 0 0 -4 0 -16 -16 -4 0 3 8 0 0 0 0 -8 0 0 0 0 0 -6 0 0 0 0 -4 0 0 4 8 0 0 -6 0 0 0 0 8 0 0 -4 2 0 8 0 0 0 2 0 -4 0 1 -4 1 1 -3 4 2 0 -8 -8 4 -4 4 0 4 -6 4 8 8 4 -4 8 6 1 0 -8 -4 -16 -4 -4 0 8 8 -2 0 4 4 -12 -8 -2 16 0 0 0 0 4 -4 -8 -4 4 0 8 -8 -8 4 2 0 2 0 -8 -1 0 -2 8 -4 4 16 -8 0 -4 2 -4 4 4 -8 -4 -16 8 8 -8 8 0 0 -4 -8 0 0 0 0 0 8 0 0 0 0 -16 8 2 0 0 0 0 4 0 4 0 4 16 8 16 8 -4 -8 -4 0 0 -8 -4 -4 4 0 -8 4 -16 -4 -8 -6 -8 4 8 4 4 8 -4 8 0 0 0 0 0 0 8 0 -8 0 0 -4 0 -8 -4 8 0 4 -8 0 0 0 0 8 0 0 -16 -16 8 -4 -8 0 0 4 4 0 0 4 16 16 0 -4 4 0 4 0 2 8 4 0 -4 4 -4 -8 -6 8 0 8 0 0 -8 8 4 0 8 4 -8 -4 8 -8 4 2 -4 -4 0 0 -8 -8 4 -4 -4 0 -4 0 -2 -16 -8 2 -4 0 4 -4 -1 16 4 0 8 6 8 -8 -8 6 0 1 -12 -16 0 -8 -4 0 -4 4 0 4 -8 -2 0 0 8 8 -4 8 0 4 -4 0 16 -2 -4 8 -4 -8 4 8 4 -6 0 0 12 4 -4 -8 0 0 2 4 -1 -2 1 1 -3 4 -12 -2 8 -16 -8 0 -8 -2 16 -4 8 16 12 8 -8 -8 -4 3 -16 16 8 16 -4 -8 16 -32 -8 -2 -8 12 8 8 -24 -2 -16 8 8 8 16 8 -8 16 -8 -4 -16 -16 16 -8 -8 -2 -8 -2 16 -16 3 8 -4 16 -8 8 16 16 8 -8 8 24 -8 -24 -16 8 -16 -24 16 -8 -16 16 8 -8 16 -16 -4 4 -8 8 8 12 16 -4 8 16 16 -4 -16 16 -16 4 -8 16 -8 16 -8 -16 16 16 16 8 -16 -24 -8 -4 16 4 8 8 12 8 -8 -16 -8 -16 -4 16 24 16 -8 4 -16 -8 -16 -16 -16 -16 -16 16 -4 16 8 16 -16 -16 8 -16 -16 -24 16 16 -8 16 -16 16 -16 16 -16 -16 16 -16 16 8 -8 8 -8 -4 4 -8 12 8 8 -16 16 -8 4 -8 4 -8 4 -4 -16 -8 12 8 24 -8 -16 -4 16 -4 16 16 -8 16 16 8 16 -16 -24 16 -8 16 -16 -8 -2 -8 8 8 8 -8 -8 -4 -8 -8 8 12 16 -4 -16 -16 -2 -8 -16 8 24 3 16 -8 -16 -16 -4 -24 16 16 -4 -16 3 8 16 -16 -24 -8 -8 -8 8 16 8 16 -2 8 8 -8 -8 -4 -16 8 12 8 16 -16 -2 8 16 4 -16 8 8 -8 -4 -2 -8 8 -8 8 8 -2 -8 -4 4 1 -4 1 1 -3 4 -6 0 0 -8 -4 12 -4 0 4 -6 12 8 0 -4 4 0 6 1 0 -8 -12 16 -4 4 0 8 0 -2 0 4 -4 -4 -8 -2 -16 0 8 8 0 -4 -4 -8 -4 4 0 -8 8 0 4 2 0 2 0 8 -1 -8 6 -8 -4 -4 -16 8 0 4 -6 4 4 -4 -8 4 16 8 8 0 -8 0 -8 -4 -8 0 0 0 -8 0 0 0 0 0 0 0 -8 -6 0 0 0 0 4 0 4 16 4 0 8 0 8 4 8 4 8 0 -8 -4 4 -4 0 0 4 0 -4 8 2 8 -4 -8 -4 4 8 -4 -8 16 0 -16 0 -16 0 -8 0 8 0 0 4 16 8 4 -8 16 -4 -8 0 0 0 0 8 -16 -16 0 0 0 -4 0 -8 0 4 4 0 0 -4 0 0 8 -4 4 0 4 0 -6 -8 4 0 4 -4 -4 8 2 8 0 8 0 0 8 -8 -4 0 -8 -4 8 4 8 -8 4 2 -4 4 -8 -8 0 0 4 -4 -4 0 -4 0 6 16 8 2 -4 0 -4 4 -1 -16 4 0 -8 -2 8 -8 -8 6 0 1 -4 16 0 -8 4 0 4 -4 0 -4 -8 -2 8 8 0 0 -4 8 0 4 -12 0 -16 -2 4 8 -4 -8 12 0 -4 -6 0 8 4 -4 4 0 0 -8 2 4 -1 -2 1 1 -3 -4 -4 6 0 16 0 0 0 6 0 -4 8 -16 4 0 0 0 -4 3 0 -16 8 0 12 0 0 16 0 -2 -8 -4 0 8 -8 -2 0 -8 0 0 0 8 -8 16 -8 12 0 16 0 0 -8 -2 -8 -2 0 16 3 0 -4 -16 -8 0 0 -16 -8 0 -8 0 -8 0 16 8 0 -8 -16 0 0 0 0 -8 16 0 -4 4 0 24 0 -4 -16 -4 24 0 -16 -4 0 0 0 4 -8 0 -8 0 -8 0 16 0 16 0 0 0 0 12 -16 -4 8 8 -4 0 -8 0 -8 16 -4 -16 0 0 0 -4 16 -8 16 0 16 0 -16 0 -4 -16 24 -16 -16 16 8 0 0 0 0 0 0 -16 0 0 0 0 16 0 0 0 0 0 -8 0 0 12 -4 -8 -4 24 8 0 0 0 -4 -8 4 -8 4 -4 16 -8 -4 0 0 -8 16 -4 16 -4 16 -16 -8 -16 -16 8 0 0 0 0 0 -16 16 -8 -2 -8 8 0 0 0 0 12 -8 -8 -8 -4 0 -4 0 16 -2 -8 0 0 0 3 0 -8 0 16 -4 -8 16 16 -4 0 3 8 0 0 -8 0 -8 0 0 0 0 -16 -2 0 0 0 0 12 16 -8 -4 8 0 0 -2 0 -16 -4 16 8 0 0 -4 6 0 8 0 0 0 6 0 -4 -4 1 -4 1 1 -3 0 -2 4 -4 8 0 4 0 -4 4 -6 4 0 4 0 0 -4 6 1 0 0 -4 8 4 0 0 0 -4 -2 -8 -4 0 -4 0 -2 8 0 -4 -4 8 4 4 0 -4 -4 0 0 0 4 4 2 8 2 0 0 -1 4 -2 -8 4 0 -8 -8 0 0 2 0 -4 0 8 4 -8 0 -16 4 0 -8 4 -4 0 -8 0 0 -4 0 4 0 0 0 0 0 8 2 0 0 0 0 -4 0 -4 0 4 0 0 0 0 0 0 0 4 0 16 0 -4 -4 0 -4 4 0 4 0 2 8 0 0 0 0 -8 -4 0 0 0 0 0 0 0 8 0 8 0 0 -4 0 0 0 0 0 0 16 0 0 0 0 -8 0 0 0 0 4 -4 -4 -4 0 0 4 0 0 -4 0 0 4 0 -4 0 -4 0 2 0 4 0 0 0 4 0 2 0 0 0 0 8 -8 -8 4 0 0 0 0 0 -16 8 4 2 -4 4 4 4 4 4 -4 4 4 0 4 -8 -2 -8 0 2 -4 0 0 0 -1 -8 -4 -8 0 -2 0 0 0 6 0 1 -4 8 8 0 0 -8 0 0 0 0 0 -2 -4 -4 -4 -4 4 -8 0 -4 -4 8 8 -2 0 0 0 8 4 4 0 -6 -4 4 4 0 0 -4 4 -4 2 0 -1 -2 1 1 -3 -4 -4 2 4 8 -4 0 8 2 0 4 0 -8 4 0 8 8 4 -1 0 -8 0 -16 0 -4 -8 16 -8 -2 0 0 -4 8 0 2 -8 0 -4 12 0 -8 8 0 0 0 0 8 8 8 0 -2 0 2 -8 -8 -1 -4 0 -8 -8 -4 -16 8 0 -8 -8 0 8 4 -8 0 -8 0 8 -8 0 0 12 0 0 8 0 0 0 8 4 4 0 0 -8 16 8 0 0 -8 0 0 -8 -8 8 0 0 -8 0 16 0 -4 0 4 0 -4 8 4 -8 0 -4 4 0 -8 8 8 -8 -8 0 8 -8 4 -8 0 -8 8 0 8 0 0 0 8 -8 -8 0 0 -8 8 0 4 8 0 -8 8 0 -8 0 -8 -8 8 0 -8 16 4 0 4 0 -4 4 0 -4 8 0 -8 16 0 4 -8 0 8 0 0 -8 0 4 -4 0 8 8 -8 0 0 0 0 0 8 -8 -8 -8 0 4 8 -8 8 -8 0 -2 0 0 -4 12 8 -8 0 -8 8 0 0 0 0 -8 -8 2 0 0 -4 0 -1 -16 8 8 8 -8 0 0 0 4 0 -1 8 -16 8 0 -4 0 8 -4 -8 0 -8 -2 -4 12 8 -8 0 8 0 0 0 0 -8 2 0 -8 -4 8 0 4 -4 4 2 0 8 8 -4 4 2 0 -4 -4 1 -4 1 1 -3 0 2 0 -4 0 0 -4 12 0 4 2 -4 0 4 4 -12 0 -2 -3 0 0 4 0 0 0 8 8 0 -6 0 0 0 -4 0 6 -8 0 -4 4 0 -4 -4 -8 -4 0 0 0 0 0 4 6 0 -6 -8 0 3 4 2 0 4 0 0 0 0 -12 2 12 -4 0 0 4 8 0 0 0 -24 0 -4 4 8 -8 -12 -4 0 0 -4 0 0 12 0 0 0 -2 0 8 0 4 -4 -8 4 0 4 8 -8 0 8 0 24 0 0 0 0 0 4 -4 0 4 -4 -8 4 0 -2 0 -12 0 12 0 0 -4 0 -8 0 8 0 0 -12 0 0 0 0 0 4 -8 24 0 0 0 12 0 0 -8 0 8 0 8 0 -8 0 -4 -4 4 0 0 0 -4 0 0 -4 8 0 0 0 -4 -4 4 4 -2 0 4 0 0 -12 4 0 -2 8 12 -8 0 0 0 0 -4 -8 -24 0 0 -12 0 0 4 6 4 4 4 -4 0 0 0 4 -4 0 0 0 2 8 0 -6 -4 0 0 12 3 0 -4 -8 0 2 0 -8 8 -2 0 -3 -4 0 8 0 0 0 -12 0 8 4 0 -6 -4 4 0 0 0 0 0 0 4 0 -8 6 -4 0 0 0 -4 4 0 2 0 0 4 12 0 -4 0 0 2 0 -1 -2 1 1 -3 -4 -4 2 4 8 4 0 -8 2 8 4 0 -8 4 0 -8 -8 4 -1 0 -8 0 0 0 4 -8 0 8 -2 0 0 4 8 0 2 8 0 12 -4 -16 -8 -8 0 0 0 0 8 -8 -8 0 -2 0 2 -8 -8 -1 12 8 -8 8 4 0 8 0 8 0 0 -8 -4 -8 0 8 0 8 8 0 -16 -4 0 0 -8 0 0 0 8 4 4 0 0 -8 0 8 8 0 -8 0 0 8 -8 -8 16 0 8 0 0 0 4 0 -4 0 -4 8 4 -8 0 -4 4 0 8 -8 8 0 -8 0 -8 8 4 -8 0 -8 -8 0 -8 0 16 0 8 -8 -8 0 0 -8 -8 0 -4 -8 16 8 8 0 -8 0 -8 -8 -8 16 8 0 4 0 4 0 -4 4 0 -4 8 0 8 0 0 4 8 0 -8 0 8 -8 0 4 4 0 -8 8 0 0 0 0 0 0 8 -8 -8 -8 0 -4 -8 8 8 -8 0 -2 0 0 12 -4 -8 8 0 8 -8 0 0 -16 8 8 -8 2 0 0 4 0 -1 0 -8 -8 8 0 0 0 0 4 0 -1 8 0 -8 0 4 0 -8 4 -8 0 -8 -2 12 -4 -8 8 0 8 0 0 0 -16 8 2 0 -8 -4 8 0 4 4 4 2 0 8 -8 4 4 2 0 -4 -4 1 -4 1 1 -3 0 -8 -2 8 0 0 0 -4 -2 8 4 -8 8 8 4 -4 4 4 -1 0 8 -8 0 0 0 -8 -8 -4 -2 0 0 0 8 0 2 8 0 0 -8 0 0 0 -8 0 0 0 -8 0 4 0 -2 0 2 -8 8 -1 0 0 0 0 0 0 0 0 -4 0 -4 0 0 0 0 8 0 -8 -4 8 0 -8 0 8 -8 0 0 4 0 0 -4 0 0 0 8 0 0 0 8 0 0 0 8 0 -8 0 0 8 8 -8 0 8 0 4 4 -8 0 0 0 4 0 0 0 0 -8 0 0 -4 0 -4 0 0 0 8 0 0 0 0 -8 0 0 0 0 0 0 0 0 8 0 0 -8 -4 -8 0 8 0 8 0 0 -8 0 8 0 0 0 4 4 0 0 4 0 0 0 8 4 0 0 0 0 0 0 8 0 -4 0 -4 0 -8 0 -8 0 8 0 0 0 0 0 -8 8 0 0 -4 -8 0 0 -2 0 0 0 -8 4 -4 0 0 0 0 0 0 0 8 8 2 0 0 0 -4 -1 0 0 -8 -8 0 0 -8 8 4 0 -1 8 0 -8 0 0 0 -4 0 -8 4 8 -2 0 -8 4 -4 0 0 0 0 -8 0 8 2 4 8 0 0 -8 8 0 4 -2 -4 8 -4 0 8 -2 -4 -4 0 1 -4 1 1 -3 0 -2 0 0 0 4 4 0 0 4 2 -4 0 4 0 0 -4 -2 -3 8 0 4 8 0 -4 0 0 4 -2 0 0 -4 -4 0 2 0 0 0 0 -8 -4 4 8 4 0 -8 0 -8 4 4 2 0 -2 0 0 3 0 2 0 -4 -4 -8 0 0 0 2 0 -4 -12 0 4 0 0 0 -4 0 8 0 -4 -8 0 4 4 4 0 0 0 0 -4 0 -8 0 -2 8 0 -8 -4 4 0 -4 -8 -4 0 8 8 -8 4 0 12 -4 0 0 0 4 -4 0 0 4 0 4 0 -2 0 0 8 0 0 0 -4 0 0 0 0 0 8 4 0 0 0 0 0 4 0 0 12 8 -8 0 0 -8 0 8 0 0 0 8 0 -8 0 -4 0 4 0 0 4 0 0 -4 0 8 -4 0 4 4 -4 -4 -2 0 -4 0 4 0 4 0 -2 -8 -4 8 0 0 0 0 -4 0 0 -12 -8 0 0 0 4 2 -4 4 0 0 4 -4 0 -4 4 0 0 8 2 0 0 -2 4 -8 -4 0 3 -8 -4 0 0 2 0 8 -8 -2 8 -3 -4 8 0 0 -4 0 0 -4 0 0 0 -2 0 0 -4 4 0 0 0 0 4 -8 0 2 0 0 0 0 -4 0 4 2 0 4 4 0 4 0 0 -4 2 0 -1 -2 1 1 -3 0 -6 0 4 0 0 12 4 0 -4 2 -4 0 4 -4 -4 8 -2 -3 16 0 4 0 0 0 -8 8 -8 2 0 0 0 -4 0 -2 -8 0 4 -4 0 -4 -4 -8 12 0 -16 0 0 -8 4 -2 0 2 8 0 3 -4 -6 0 4 0 0 0 0 -4 -6 -12 12 0 0 4 8 0 0 8 -8 0 4 -12 8 -8 4 -4 8 0 4 0 0 -4 0 0 0 6 -16 -8 16 4 -4 8 4 0 -12 8 -8 0 8 0 8 0 -8 0 0 0 4 -4 0 -4 12 -8 -12 0 6 0 12 0 4 0 0 -4 0 -8 0 8 0 0 4 0 0 0 0 0 4 -8 8 0 0 0 4 0 16 8 -16 -8 0 8 0 -8 0 4 -4 -4 8 0 0 12 0 0 -4 8 0 -8 0 -4 -4 4 4 6 0 -12 0 0 12 -12 0 6 8 -4 -8 0 0 0 0 -4 8 -8 0 0 -4 0 0 4 -2 -12 4 -4 4 -8 8 0 4 -4 0 0 0 -6 8 0 2 12 -16 0 -12 3 0 12 -8 0 -6 0 -8 8 -2 16 -3 -4 0 8 0 0 0 -4 0 -8 -4 0 2 4 -4 8 -8 0 0 0 0 4 0 -8 -2 4 0 0 0 -4 -4 0 2 0 8 4 4 0 4 0 -8 2 0 -1 -2 1 1 -3 -4 2 0 0 0 -4 -4 4 0 4 2 4 0 8 4 -4 0 -2 1 0 0 -4 -8 -4 4 0 8 0 -2 0 4 -4 -4 8 -2 -8 0 0 0 8 -4 4 -8 4 4 0 0 8 0 -4 2 0 2 0 0 -1 0 -2 0 4 -4 8 0 0 -4 -6 -4 -4 -4 0 -4 8 -8 0 0 8 -8 0 4 -8 -8 0 0 0 0 0 0 0 0 0 -8 0 2 0 0 0 0 -4 0 -4 -8 -4 -8 8 8 8 4 -8 4 0 0 0 4 4 4 0 0 -4 8 4 0 2 0 4 -8 4 -4 0 4 0 8 0 -8 0 8 0 0 0 0 0 0 4 8 -8 4 -8 -8 4 0 0 0 0 0 0 -8 8 8 -8 0 4 0 0 0 -4 -4 0 0 4 -8 8 0 4 -4 0 -4 0 2 0 -4 0 4 4 4 0 2 8 0 8 0 0 0 0 -4 0 8 -4 8 -4 0 0 -4 2 4 -4 0 0 0 0 4 4 4 0 -4 -8 -2 8 0 2 4 0 -4 -4 -1 8 -4 -8 0 -2 -8 -8 -8 -2 0 1 -4 -8 8 8 4 0 -4 -4 0 4 0 -2 0 0 0 0 -4 0 0 4 -4 8 -8 -2 -4 0 4 0 4 0 -4 2 0 0 4 4 4 0 0 0 2 -4 -1 -2 1 1 -3 -4 2 0 0 0 4 4 -4 0 -4 2 4 0 8 -4 4 0 -2 1 0 0 -4 8 -4 -4 0 -8 0 -2 0 4 4 -4 8 -2 8 0 0 0 -8 -4 4 -8 4 4 0 0 -8 0 -4 2 0 2 0 0 -1 0 -2 0 4 4 -8 0 0 4 -6 4 -4 4 0 -4 -8 -8 0 0 -8 8 0 4 -8 8 0 0 0 0 0 0 0 0 0 8 0 2 0 0 0 0 -4 0 -4 8 -4 8 8 -8 8 -4 8 -4 0 0 0 4 4 4 0 0 -4 -8 4 0 2 0 -4 8 -4 -4 0 4 0 -8 0 8 0 -8 0 0 0 0 0 0 4 -8 8 -4 8 8 -4 0 0 0 0 0 0 8 -8 -8 8 0 4 0 0 0 -4 -4 0 0 4 8 -8 0 4 -4 0 -4 0 2 0 -4 0 -4 -4 4 0 2 8 0 8 0 0 0 0 -4 0 -8 4 -8 4 0 0 -4 2 4 -4 0 0 0 0 4 4 4 0 -4 8 -2 -8 0 2 4 0 4 4 -1 -8 -4 8 0 -2 -8 -8 -8 -2 0 1 -4 8 -8 8 -4 0 4 4 0 -4 0 -2 0 0 0 0 -4 0 0 4 -4 -8 8 -2 4 0 4 0 4 0 4 2 0 0 4 -4 -4 0 0 0 2 -4 -1 -2 1 1 -3 0 -2 -4 4 0 0 4 0 4 -4 2 -4 8 4 0 0 4 -2 1 0 -8 4 0 4 0 0 0 4 -2 8 -4 0 -4 0 -2 0 0 -4 -4 0 4 -4 0 4 -4 0 -8 0 -4 -4 2 -8 2 0 8 -1 4 -2 -16 -4 0 0 0 0 0 10 0 4 0 0 -4 0 0 -8 -4 0 0 4 4 0 0 0 0 -4 0 -4 0 0 0 0 -8 0 2 0 0 0 0 4 0 4 8 -4 -8 0 8 0 0 0 0 4 0 8 0 -4 4 0 4 -4 8 -4 8 -6 16 0 0 0 0 0 4 -8 -8 0 8 0 -8 0 0 0 16 0 0 -4 -8 0 0 0 8 0 8 0 0 0 0 0 8 -8 8 -8 -4 4 4 -4 0 0 -4 0 0 4 -8 8 4 0 4 0 4 0 2 -8 -4 0 0 0 -4 8 -6 0 0 0 0 -8 0 -16 4 0 0 0 0 0 -8 0 -4 2 4 -4 4 4 -4 -4 -4 -4 -4 0 4 0 -2 0 8 2 4 0 0 0 -1 0 4 0 -8 6 0 0 0 -2 0 1 -4 0 0 0 0 8 0 0 0 0 -8 -2 -4 -4 4 4 4 0 0 -4 4 0 0 -2 0 8 0 0 -4 -4 0 2 4 4 4 0 0 4 -4 -4 2 0 -1 -2 1 1 -3 0 -6 -4 8 -8 -4 12 -4 4 -4 2 4 8 4 -4 4 0 -2 1 -16 -8 -4 0 4 4 16 8 0 2 -8 4 -4 -4 -8 2 0 8 0 0 0 -4 -4 8 -4 -4 16 -8 -8 0 -4 -2 8 -2 -16 -8 -1 0 -2 8 -4 12 0 8 -8 -12 -6 4 -4 -4 8 -4 0 8 -8 0 8 0 0 -4 8 0 0 0 8 0 8 0 0 0 0 0 -8 2 0 0 0 0 4 0 4 0 4 0 -8 0 -8 -12 -8 4 -8 0 8 8 4 4 0 -8 4 0 4 8 2 -8 -4 8 12 -8 -8 4 8 0 0 0 0 0 0 -8 0 -8 0 0 4 0 -8 4 8 0 12 8 0 0 0 0 -8 0 0 0 0 8 4 -8 8 0 -8 4 0 0 4 0 0 -8 8 4 0 4 0 2 8 4 0 -12 -4 4 8 2 -8 0 -8 0 8 8 8 -4 -16 8 -4 -8 -12 -8 8 -4 -2 -4 -4 0 0 0 0 -4 -4 -4 -8 -4 0 -2 0 -8 -2 -4 16 12 4 -1 0 -4 0 -8 -2 8 8 8 -2 -16 1 -4 0 0 -8 4 -8 4 -4 16 -4 -8 2 0 0 0 0 4 8 8 4 -4 0 0 2 4 8 0 -8 4 -8 -4 2 4 8 4 -4 4 8 -4 -8 2 0 -1 -2 1 1 -3 -8 2 4 0 8 -4 4 12 -4 -12 2 4 -8 12 -4 -12 8 -2 1 0 8 -4 0 4 4 0 -8 -8 2 8 4 12 -4 -8 2 0 -8 -8 8 0 -4 -4 8 -4 -4 0 8 -8 -8 -4 -2 -8 -2 0 8 -1 8 -2 -8 -4 -4 0 -8 8 4 -6 4 -4 -4 -8 -4 0 8 8 8 8 0 -8 -4 8 0 0 0 0 0 0 0 0 0 0 0 8 2 16 -16 -16 0 4 16 4 0 4 0 -8 0 -8 4 -8 4 0 0 -8 0 4 4 0 0 4 0 4 -8 2 8 -4 8 -4 0 8 4 -8 0 0 0 0 0 0 8 0 8 0 0 4 0 -8 4 8 0 -4 -8 -16 16 16 -16 8 0 0 0 0 0 4 0 0 0 0 4 0 0 4 0 0 0 0 4 0 4 0 2 -8 4 0 4 -4 4 -8 2 -8 0 -8 0 -8 -8 -8 -4 0 8 -4 -8 4 8 -8 -4 -2 -4 -4 8 -8 -8 8 -4 -4 -4 8 -4 0 -2 0 8 -2 -4 0 -4 4 -1 0 -4 0 8 -2 8 8 8 -2 0 1 -4 0 0 -8 4 8 -12 12 0 -4 8 2 -8 8 8 -8 4 -8 -8 4 -4 0 0 2 4 -8 8 8 4 0 -4 2 -4 0 4 12 -12 0 4 0 2 -8 -1 -2 1 1 -3 -8 2 4 0 8 4 -4 -12 -4 12 2 4 -8 12 4 12 -8 -2 1 0 8 -4 0 4 -4 0 -8 8 2 8 4 -12 -4 -8 2 0 -8 8 -8 0 -4 -4 8 -4 -4 0 8 8 8 -4 -2 -8 -2 0 8 -1 -8 -2 -8 -4 4 0 -8 8 -4 -6 -4 -4 4 -8 -4 0 8 8 -8 -8 0 8 -4 8 0 0 0 0 0 0 0 0 0 0 0 8 2 -16 16 16 0 4 -16 4 0 4 0 -8 0 -8 -4 8 -4 0 0 -8 0 4 4 0 0 4 0 4 -8 2 8 4 -8 4 0 8 4 -8 0 0 0 0 0 0 8 0 8 0 0 4 0 8 -4 -8 0 4 -8 16 -16 -16 16 8 0 0 0 0 0 4 0 0 0 0 4 0 0 4 0 0 0 0 4 0 4 0 2 -8 4 0 -4 4 4 -8 2 -8 0 -8 0 -8 -8 -8 -4 0 -8 4 8 -4 8 -8 -4 -2 -4 -4 -8 8 8 -8 -4 -4 -4 8 -4 0 -2 0 8 -2 -4 0 4 -4 -1 0 -4 0 8 -2 8 8 8 -2 0 1 -4 0 0 -8 -4 8 12 -12 0 4 8 2 8 -8 -8 8 4 -8 -8 4 -4 0 0 2 -4 -8 8 8 4 0 4 2 -4 0 4 -12 12 0 4 0 2 -8 -1 -2 1 1 -3 -4 -2 0 4 8 0 4 0 0 -4 2 -4 0 8 0 0 -4 -2 1 0 0 4 -8 -4 0 0 0 -4 2 0 -4 0 -4 0 2 8 8 4 4 -8 4 4 0 -4 4 0 0 0 4 -4 -2 0 -2 0 -16 -1 -4 6 -8 4 0 8 8 -8 0 2 0 4 0 -8 -4 -8 0 0 4 0 8 -4 -4 0 -8 0 0 -4 0 -4 0 0 0 0 0 -8 -6 0 0 0 0 -4 0 -4 0 4 0 0 0 0 0 0 0 4 0 0 -4 -4 4 0 4 4 0 -4 0 2 8 0 0 0 4 8 4 16 0 0 0 0 0 0 -8 0 8 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 -4 4 4 -4 0 4 4 0 0 4 0 0 4 -4 -4 0 -4 0 -6 16 4 0 0 0 -4 0 2 0 0 0 0 0 8 -8 4 0 0 0 0 0 0 -8 -4 -2 -4 -4 -4 -4 4 4 4 4 4 -8 4 8 6 -8 -16 -2 -4 0 0 0 -1 8 4 -8 0 -2 0 0 0 -2 0 1 -4 -8 8 0 0 0 0 0 0 0 0 2 4 4 -4 -4 -4 -8 8 -4 4 -8 8 2 0 0 4 8 -4 -4 0 2 0 4 4 0 0 4 0 -4 2 -4 -1 -2 1 1 -3 0 -6 -4 8 8 4 12 -4 4 -12 2 -12 8 4 -4 4 16 -2 1 0 -8 12 0 4 -4 0 -8 0 2 -8 4 4 -4 8 2 0 -8 0 -16 0 12 -4 -8 -4 -4 0 -8 8 -16 -4 -2 8 -2 0 24 -1 0 6 24 -4 -12 0 -8 8 -12 -14 4 -4 4 -8 -4 0 -8 -8 0 8 0 16 -4 -8 0 0 0 -8 0 -8 0 0 0 0 16 8 -6 16 16 -16 0 4 -16 4 -16 4 16 8 -16 8 12 -8 -4 8 0 8 -8 -12 4 0 8 4 -16 4 8 10 -24 -4 -8 12 8 8 4 -24 16 0 -16 0 16 0 8 0 -24 0 0 -12 16 -8 -4 -8 -16 12 8 -16 -16 16 16 8 -16 16 -16 16 -8 4 8 -8 0 8 4 0 0 4 16 -16 8 -8 4 0 4 0 -6 -24 4 0 12 -4 4 8 10 8 0 8 0 8 -8 24 12 0 8 4 8 -12 -8 -8 -4 -2 -4 -4 0 16 -16 0 -4 -4 -4 8 -4 0 6 0 24 -2 -4 0 -12 4 -1 0 -4 0 -8 -10 -8 -8 -8 -2 0 1 -4 0 0 8 -4 -8 4 4 0 -4 -8 2 0 -16 16 0 4 -8 -8 4 12 0 0 2 4 8 0 8 -12 -8 4 2 4 8 4 -4 -4 8 -4 -8 2 0 -1 -2 1 1 -5 8 -6 4 0 -8 4 4 12 4 12 -10 -4 -8 4 4 12 -8 -10 1 16 -8 -4 -16 4 4 16 -24 -8 2 8 4 12 -4 8 2 -16 8 -8 -8 -16 -12 4 8 4 4 16 8 8 -8 4 2 8 2 16 8 1 -8 2 8 4 4 -16 8 8 4 6 4 4 4 -24 -12 -16 8 -24 -8 8 -16 -8 4 8 -16 0 0 -16 0 16 0 0 0 0 0 8 2 0 0 0 0 4 0 4 0 4 0 8 0 8 4 8 4 16 0 -24 0 -12 -12 0 -16 4 0 4 8 2 8 4 8 4 0 -24 4 8 0 0 0 0 0 0 -8 0 -8 0 0 12 0 -8 -4 -8 0 -4 24 0 0 0 0 24 0 0 0 0 -16 -4 16 16 0 0 -4 0 0 12 0 0 -16 0 -4 0 -4 0 -2 -8 -4 0 -4 -4 -4 -8 -2 -8 0 -8 0 -8 -8 -8 12 -16 -8 -4 -8 -4 24 24 -4 -2 -4 12 8 8 8 8 -4 -4 -4 -8 -4 16 -2 16 -8 -2 -4 -16 -4 -4 -1 16 -4 16 -8 -2 -8 -8 -8 10 -16 -1 4 16 16 -8 -4 -8 -12 -12 -16 -4 8 -2 8 8 8 8 -4 8 -8 -4 4 16 16 -2 -4 8 -8 8 4 0 -4 10 -4 0 4 -12 -12 0 -4 0 6 -8 -1 6 -1 1 -5 12 -4 6 -8 -16 8 16 24 -6 32 -4 -8 -16 -20 -8 -24 -8 4 3 -16 16 8 -16 12 -8 -16 0 -8 6 24 12 -24 8 24 6 -16 24 -8 -8 -16 -8 -8 -16 -8 -12 16 -16 48 8 -8 -6 -24 -6 16 -16 -3 8 -4 -16 -8 24 16 -16 -24 24 -16 24 -8 24 -16 -8 16 -24 -16 8 48 16 8 -8 -16 16 12 4 -8 24 -8 12 48 12 24 -16 16 4 -16 -16 -16 4 8 -16 8 -16 8 -16 16 -16 16 -24 -48 -24 -8 12 16 12 8 8 12 -8 8 -16 8 16 4 16 -24 -48 -24 12 16 8 16 -16 16 -16 48 -16 -12 -16 -24 -16 -48 -16 -8 16 48 24 48 16 24 -16 16 16 16 16 -16 16 16 16 16 8 -8 8 8 -12 -12 -8 -12 -24 -8 16 16 8 -12 -8 -4 -8 -4 -4 -16 -8 -12 24 24 -8 -16 -4 -16 -12 -16 -48 24 16 16 8 -16 -48 -24 -48 -24 16 16 8 6 8 8 -8 -8 -8 -8 12 8 8 24 12 -16 4 -16 16 6 8 -16 -24 -24 3 -16 8 -16 16 4 24 16 16 -4 16 -3 -8 16 16 -24 8 -24 24 24 16 8 -16 -6 8 8 8 8 -12 -16 -24 -12 -8 16 16 -6 -8 16 12 16 8 -8 -8 4 6 -8 8 -24 -24 8 -6 8 -4 -12 1 4 -1 1 -5 4 2 0 0 -8 4 4 4 0 -4 -2 4 8 0 -4 4 0 -2 1 0 8 4 0 -4 4 0 8 0 -2 0 4 -4 -4 -8 -2 0 0 -8 -8 -16 4 4 8 4 -4 0 -8 -8 0 -4 -2 0 -2 0 8 1 -8 2 -8 4 4 0 8 0 -4 -2 -4 -4 4 -8 12 0 -8 8 0 8 -16 -8 4 8 16 0 0 8 0 0 0 0 0 0 16 8 2 0 0 0 0 4 0 4 0 4 -16 8 -16 8 4 8 4 -8 0 8 -4 4 12 0 0 4 16 -4 -8 -6 -8 -4 -8 -4 4 -8 -4 8 0 0 0 0 0 0 -8 0 8 0 0 -4 0 -8 -4 8 0 4 -8 0 0 0 0 8 0 0 -16 -16 0 4 0 -8 0 -4 -4 0 0 -12 16 16 8 4 -4 0 -4 0 -2 -8 -4 0 -4 4 4 8 6 -8 0 -8 0 0 -8 8 -4 0 -8 -4 8 4 -8 8 4 2 -4 -12 8 8 0 0 4 -4 -4 0 -4 16 -2 0 -8 2 -4 0 -4 4 -1 0 4 -16 8 6 8 -8 -8 2 0 -1 4 0 -16 8 -4 0 -4 4 0 4 -8 2 8 8 0 0 4 8 0 -4 -4 16 0 2 4 -8 -4 8 -4 0 -4 2 0 -8 4 -4 4 0 0 -8 6 -4 -1 6 -1 1 -5 4 -2 0 4 0 0 4 0 0 4 -2 -4 8 0 0 0 -4 -2 1 0 8 -4 0 -4 0 0 0 -4 2 0 -4 0 -4 0 2 0 -8 -4 -4 0 -4 4 0 -4 -4 0 8 0 -4 -4 2 0 2 0 8 1 -4 2 0 4 0 0 0 -8 0 -2 0 4 0 16 -4 0 0 8 -4 0 0 -4 -4 0 0 0 0 4 0 -4 0 0 0 0 -8 0 2 0 0 0 0 4 0 4 8 -4 8 0 8 0 0 0 0 -4 0 8 4 -4 -4 0 4 -4 -8 4 8 2 0 0 0 0 -4 16 -4 8 8 0 -8 0 -8 0 0 0 0 0 0 4 -8 0 0 0 -8 0 -8 0 0 0 0 -16 8 8 8 8 4 4 -4 -4 0 4 4 0 0 4 -8 -8 4 -4 -4 0 -4 0 -2 -8 4 0 0 0 -4 -8 -2 0 0 0 0 0 0 0 4 0 0 0 0 0 -8 -16 4 -2 4 4 4 4 4 4 4 -4 -4 8 4 0 -2 0 -8 -2 4 0 0 0 -1 0 -4 0 -8 -2 0 0 0 2 0 -1 4 0 0 0 0 0 0 0 0 0 -8 -2 4 4 4 4 4 0 8 4 4 0 0 -2 0 -8 -4 0 4 -4 0 2 0 -4 4 0 0 -4 0 -4 6 -4 -1 6 -1 1 -5 0 -2 4 4 8 0 4 0 4 4 -2 4 -16 4 0 0 4 -2 1 0 -16 4 -8 4 0 0 0 4 -2 -8 -4 0 4 0 -2 -8 0 4 4 -8 4 -4 0 4 4 0 0 0 4 -4 -2 -8 -2 0 0 1 4 2 8 -4 0 -8 8 0 0 -2 0 4 0 8 4 -8 0 0 4 0 -8 4 4 0 -8 0 0 4 0 -4 0 0 0 0 0 8 2 0 0 0 0 -4 0 -4 0 4 0 0 0 0 0 0 0 -4 0 0 0 4 4 0 4 4 0 4 0 2 8 0 0 0 0 8 -4 0 0 0 0 0 0 0 -8 0 -8 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 -8 0 0 0 0 4 4 -4 -4 0 0 -4 0 0 -4 0 0 4 0 4 0 4 0 -2 0 -4 0 0 0 -4 0 -2 0 0 0 0 8 -8 -8 -4 0 0 0 0 0 0 -8 4 2 -4 -4 -4 -4 -4 -4 -4 4 4 0 4 8 -2 8 0 2 -4 0 0 0 -1 8 -4 8 0 -2 0 0 0 2 0 -1 -4 8 8 0 0 8 0 0 0 0 16 2 -4 -4 -4 -4 -4 -8 0 4 -4 8 8 2 0 16 0 -8 -4 -4 0 2 -4 -4 -4 0 0 -4 -4 -4 6 0 -1 6 -1 1 -5 4 4 2 -4 0 4 0 8 -2 8 -4 0 0 -4 0 -8 0 4 -1 0 0 0 -8 0 -4 8 0 0 -2 0 0 -4 0 0 2 0 0 -4 -4 -8 0 0 0 -8 0 0 0 -8 0 8 2 0 -2 -8 0 1 4 0 0 0 4 8 0 0 -8 0 0 0 -4 0 0 0 0 0 0 0 8 4 8 0 0 0 0 0 -8 -4 4 0 0 8 8 0 0 0 8 0 0 0 8 0 8 8 0 0 8 0 -4 0 4 0 -4 0 -4 0 0 -4 -4 -8 0 0 0 0 0 0 8 8 -4 0 -8 0 0 0 0 0 8 0 0 -8 0 0 0 0 0 0 -4 -8 -8 -8 0 0 -8 0 -8 0 0 -8 0 -8 4 8 4 0 4 4 8 4 8 0 0 -8 0 4 0 0 0 0 0 0 -8 -4 4 0 0 0 0 0 0 0 0 0 0 0 0 8 0 4 8 8 0 0 -8 -2 -8 0 -4 -4 0 0 0 0 0 0 0 -8 0 0 0 2 8 0 -4 0 -1 -8 0 0 0 0 0 0 0 -4 0 1 0 8 0 0 4 0 8 4 -8 0 0 2 4 4 0 0 0 0 0 0 0 8 0 -2 0 0 4 0 0 -4 -4 4 2 0 0 -8 -4 4 -2 0 -4 -4 1 4 -1 1 -5 4 -6 0 8 -8 -4 4 -4 0 12 -2 -4 8 8 4 -4 -8 -2 1 0 8 -4 0 -4 -4 0 -24 -8 -2 0 4 4 4 -8 -2 0 0 0 0 16 12 4 8 4 -4 0 8 8 -8 -4 -2 0 -2 0 -8 1 0 -6 8 4 -4 0 -8 0 4 6 4 -4 -4 -8 4 0 -8 8 -8 -8 16 0 4 8 -16 0 0 0 0 -8 0 0 0 0 0 -8 -6 0 0 0 0 4 0 4 -16 4 0 8 0 8 -4 -8 -4 0 0 8 -4 12 4 0 8 4 0 -4 8 2 8 4 8 4 4 -8 -4 -8 -16 0 16 0 16 0 8 0 -8 0 0 -12 16 8 4 -8 16 -4 -8 0 0 0 0 8 -16 -16 0 0 8 4 -8 0 0 -4 -4 0 0 -4 0 0 0 4 -4 0 -4 0 6 8 -4 0 4 -4 4 -8 -2 -8 0 -8 0 0 8 -8 -12 0 8 4 -8 -4 -8 8 4 2 -4 -4 0 0 8 8 4 -4 -4 0 -4 -16 6 0 8 2 -4 0 4 -4 -1 0 4 16 -8 -2 8 -8 -8 2 0 -1 -4 0 16 8 4 0 4 -4 0 -4 -8 2 0 0 8 8 4 8 0 -4 4 -16 0 2 -4 -8 -4 8 4 -8 4 2 0 0 -4 4 -4 -8 0 0 6 -4 -1 6 -1 1 -5 4 0 2 0 0 0 8 4 -2 8 -4 0 0 -4 -4 -4 -4 4 -1 8 0 0 0 0 0 0 -8 -4 2 0 0 -8 0 0 -2 -8 0 0 0 0 0 0 0 8 0 -8 0 0 4 8 -2 0 2 0 0 1 0 0 0 0 -8 0 0 0 4 0 -4 0 0 0 0 8 0 0 4 -8 0 0 -8 0 8 0 0 -4 8 0 -4 0 0 -8 0 0 0 8 0 8 0 0 0 0 0 -8 8 0 0 0 8 8 0 -4 -4 0 -4 0 0 4 0 8 8 0 0 0 0 4 0 -4 -4 0 -8 0 8 0 8 0 0 0 0 8 0 0 0 0 -8 -8 0 0 0 4 0 -8 0 -8 0 0 -8 0 -8 0 0 8 0 4 4 4 -8 -4 -8 0 -8 0 4 4 0 0 0 0 0 0 8 4 -8 -4 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 -4 0 0 -8 2 8 0 0 0 -4 -4 0 0 0 0 0 0 0 -8 0 -2 -8 8 8 4 -1 0 0 -8 0 0 0 0 0 -4 -8 1 0 0 8 0 0 0 4 8 0 4 0 -2 0 0 4 4 0 0 0 0 0 0 8 2 -4 0 4 0 0 0 0 4 2 -4 0 -4 -8 0 -2 4 -4 -4 1 4 -1 1 -5 4 4 -2 0 0 0 0 0 2 0 -4 0 16 -4 0 0 0 4 3 0 -16 0 0 -4 0 0 0 0 -2 8 -4 0 0 -8 -2 0 -8 0 0 0 0 -8 0 8 4 0 0 0 0 -8 2 -8 2 0 0 -3 0 4 -16 -8 0 0 -16 8 0 8 0 8 0 0 0 0 8 16 0 0 0 0 8 0 0 -4 4 0 -8 0 -4 16 -4 -8 0 16 -4 0 0 0 4 8 0 8 0 -8 0 0 0 0 0 0 0 0 -4 -16 4 0 0 -4 0 -8 0 -8 0 -4 16 0 0 0 4 0 8 0 0 16 0 16 0 4 -16 8 -16 -16 -16 0 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 -8 0 0 4 -4 8 4 8 0 0 0 0 -4 -8 -4 -8 -4 4 0 8 4 0 0 8 0 4 0 4 0 -16 8 16 16 0 0 0 0 0 0 -16 0 8 -2 -8 0 0 0 0 0 -4 8 8 -8 -4 0 -4 0 0 -2 -8 0 0 0 3 0 -8 0 0 -4 -8 0 0 -4 0 -3 0 0 0 8 0 -8 0 0 0 0 16 2 0 0 0 0 4 0 8 4 0 0 0 2 0 -16 4 0 0 0 0 4 -2 0 0 0 0 0 2 0 -4 -4 1 4 -1 1 -5 4 4 -2 0 16 0 0 0 2 0 -4 -8 16 -12 0 0 0 4 3 0 -16 8 0 -4 0 0 -16 0 6 -8 -4 0 8 8 6 0 -24 0 0 0 -8 -8 -16 -8 4 0 16 0 0 -8 -6 8 -6 0 16 -3 0 -4 16 -8 0 0 16 24 0 0 0 -8 0 16 -8 0 -8 16 0 0 0 0 -8 -16 0 12 4 0 8 0 -4 16 12 8 0 -16 4 0 0 0 4 8 0 8 0 8 0 16 0 16 0 0 0 0 -4 -16 4 8 8 -4 0 8 0 8 -16 4 -16 0 0 0 4 -16 8 -16 0 -16 0 -16 0 -12 16 -8 16 16 16 -8 0 0 0 0 0 0 16 0 0 0 0 16 0 0 0 0 0 -8 0 0 4 -4 -8 4 -8 -8 0 0 0 -4 -8 -4 -8 -4 -4 16 -8 4 0 0 -8 16 -4 -16 -12 -16 -16 -8 -16 -16 8 0 0 0 0 0 -16 -16 8 6 8 8 0 0 0 0 -4 8 8 -24 -4 0 4 0 -16 6 8 0 0 0 3 0 8 0 -16 4 8 16 16 -4 0 -3 -8 0 0 -8 0 8 0 0 0 0 16 -6 0 0 0 0 4 16 24 4 -8 0 0 -6 0 -16 4 -16 8 0 0 4 -2 0 8 0 0 0 2 0 -4 -4 1 4 -1 1 -5 0 4 2 0 16 0 0 0 -2 0 -4 0 0 0 0 0 0 4 3 0 0 0 0 -4 0 0 -16 0 2 -8 -12 0 0 0 2 0 0 0 0 0 0 8 0 -8 4 0 -16 0 0 -8 -2 8 -2 0 -16 -3 0 4 0 8 0 0 0 0 0 16 0 8 0 16 0 0 0 0 0 0 0 0 -8 0 0 -4 -4 0 0 0 12 0 -4 0 0 0 -4 0 0 0 -4 -8 0 -8 0 8 0 0 0 0 0 0 0 0 4 0 0 0 0 12 0 8 0 -8 16 -4 0 0 0 0 0 -16 8 16 0 0 0 16 0 4 0 0 0 -16 0 0 0 0 0 0 0 0 0 0 0 0 0 16 0 0 0 0 0 -8 0 0 -4 0 -8 -12 0 0 0 0 0 0 8 4 8 4 4 -16 -8 -12 0 0 8 -16 4 0 4 0 0 -8 0 0 0 0 0 0 0 0 0 -16 8 2 8 0 0 0 0 0 -4 -8 -8 0 -12 0 -4 0 16 2 8 0 0 0 3 0 -8 0 16 -4 0 0 0 -4 0 -3 0 0 0 0 0 8 0 0 0 0 0 -2 0 0 0 0 4 16 0 12 0 0 0 -2 0 0 0 -16 0 0 0 4 2 0 0 0 0 0 -2 0 -4 0 1 4 -1 1 -5 0 6 0 0 0 4 12 0 0 -12 6 12 0 -12 0 0 12 6 -3 -24 0 12 24 0 4 0 0 -12 6 0 0 -12 -12 0 -6 0 0 0 0 -24 12 12 -24 12 0 -24 0 24 12 12 6 0 -6 0 0 -3 0 6 0 -12 12 24 0 0 0 6 0 -12 -12 0 -12 0 0 0 -12 0 -24 0 -12 24 0 -12 4 -12 0 0 0 0 12 0 -24 0 6 -24 0 24 -4 -12 0 12 -24 12 0 24 24 -24 12 0 -12 12 0 0 0 12 -12 0 0 -12 0 -12 0 6 0 0 24 0 0 0 12 0 0 0 0 0 24 12 0 0 0 0 0 -12 0 0 12 -24 24 0 0 -24 0 24 0 0 0 -24 0 24 0 -12 0 12 0 0 12 0 0 12 0 -24 -12 0 12 -4 -12 4 -6 0 -12 0 -12 0 12 0 -6 24 -12 -24 0 0 0 0 -12 0 0 12 -24 0 0 0 -12 -6 12 12 0 0 -12 12 0 12 -12 0 0 24 -6 0 0 6 -12 24 -12 0 3 -24 12 0 0 -6 0 24 -24 -6 24 3 12 -24 0 0 -4 0 0 12 0 0 0 -6 0 0 -12 12 0 0 0 0 -12 24 0 6 0 0 0 0 -12 0 -4 -6 0 -12 12 0 12 0 0 -12 6 0 -1 6 -1 1 -5 0 2 0 4 0 0 4 -4 0 4 6 4 0 -4 -4 -4 -8 6 -3 -16 0 4 0 0 0 -8 8 8 2 0 0 0 -4 0 -2 -8 0 4 -4 0 4 -12 8 4 0 -16 0 0 -8 12 2 0 -2 -8 0 -3 4 -2 0 12 0 0 0 0 4 -2 12 4 0 0 -4 -8 0 0 8 8 0 -4 -4 -8 8 4 -4 -8 0 4 0 0 -4 0 0 0 -2 16 -8 -16 4 12 8 -12 0 4 8 -8 0 8 0 8 0 8 0 0 0 4 -4 0 -4 -4 -8 4 0 -2 0 12 0 4 0 0 12 0 -8 0 8 0 0 -4 0 0 0 0 0 -4 8 -8 0 0 0 -4 0 16 -8 -16 8 0 -8 0 8 0 -4 -12 4 8 0 0 4 0 0 4 -8 0 -8 0 -12 4 12 -4 2 0 -4 0 0 -12 -4 0 2 -8 4 8 0 0 0 0 -4 8 -8 0 0 -4 0 0 -12 -2 4 4 -4 4 8 -8 0 -12 12 0 0 0 2 8 0 2 -4 16 0 -12 3 0 -4 -8 0 2 0 -8 8 -6 16 3 4 0 -8 0 0 0 4 0 8 4 0 -2 -4 4 8 -8 0 0 0 0 -4 0 8 2 4 0 0 0 -4 -4 0 -6 0 -8 4 4 0 -4 0 -8 6 0 -1 6 -1 1 -5 -4 8 2 0 8 0 -8 -4 -2 8 4 8 -8 4 4 4 -4 -4 -1 -8 8 -8 -8 0 0 0 -8 12 2 0 0 -8 0 0 -2 -16 0 8 -8 8 0 -8 0 0 0 8 -8 0 4 0 -2 0 2 0 8 1 -8 -8 8 8 -8 8 -8 0 -4 0 4 8 0 -8 -8 16 0 8 -12 8 -8 8 0 0 0 0 0 4 -8 0 -4 0 0 8 8 8 8 -8 0 -8 0 -8 0 8 -8 0 0 0 8 0 8 -8 0 4 -4 -8 4 0 8 4 0 0 0 -8 8 0 -8 -4 0 4 4 8 0 -8 16 0 16 0 -8 0 -8 -8 8 0 0 0 -16 8 0 0 8 -4 8 8 0 8 0 -8 -16 8 0 -8 0 0 0 -4 4 -4 0 -4 8 -8 0 -8 -4 -4 8 0 -8 0 -8 8 0 4 -8 4 8 -8 0 0 0 0 0 0 8 -8 0 0 -8 0 0 4 -8 8 0 2 0 8 8 -8 -4 12 0 -8 8 0 0 8 8 -16 -8 -2 0 -8 8 -4 -1 -8 -8 0 8 0 0 0 0 4 8 1 0 8 0 0 0 0 -4 8 0 -4 -8 -2 -8 8 4 -12 0 8 0 0 8 -8 16 2 4 8 -4 -8 -8 0 0 -4 2 4 0 4 -8 0 -2 -4 -4 4 1 4 -1 1 -5 0 -2 0 8 0 -4 4 0 0 4 6 -4 0 4 0 0 4 6 -3 -8 0 -4 -8 0 -4 -16 0 -4 -2 0 0 -4 4 0 2 0 0 -8 8 8 -4 12 8 -4 0 -8 0 8 4 12 -2 0 2 -16 0 -3 -8 -2 0 -12 4 -8 0 0 0 -2 0 4 12 0 4 0 0 0 -4 0 8 8 4 -8 0 4 4 -4 0 8 0 0 -4 0 8 0 -2 -8 16 8 -4 -12 -16 12 8 -4 0 -8 -8 8 4 0 12 4 0 0 0 -4 4 0 -8 4 0 4 0 -2 0 0 8 0 0 0 12 0 0 0 0 0 -8 -4 0 0 0 0 0 4 0 0 -12 -8 -8 0 0 -8 16 8 -16 0 0 8 0 -8 -8 -12 8 4 0 0 -4 0 0 -4 0 8 -4 0 12 -4 -12 4 2 0 4 0 -4 0 -4 0 2 -8 4 8 0 0 0 0 4 16 0 -12 -8 0 0 0 -12 2 -4 -4 8 -8 -4 4 0 12 -12 0 0 -8 2 0 0 -2 4 8 -4 0 3 8 -4 0 0 2 0 -8 8 -6 8 3 -4 8 0 0 4 0 0 4 16 0 0 2 8 -8 -4 4 0 0 0 0 4 -8 0 -2 0 0 0 0 4 -8 4 -6 0 -4 -4 0 4 -8 0 -4 6 0 -1 6 -1 1 -5 -4 8 2 0 8 0 0 4 -2 -8 4 8 -8 4 -4 -4 12 -4 -1 -8 8 -8 8 0 0 0 -24 -4 2 0 0 8 0 0 -2 0 0 -8 8 -8 0 8 0 0 0 8 -8 0 -12 0 -2 0 2 0 8 1 8 0 8 -8 8 -8 -8 0 4 8 -4 -8 0 -8 -8 0 0 8 4 -8 8 -8 0 0 16 0 0 4 -8 0 -4 0 0 8 -8 8 0 -8 0 -8 0 8 0 -8 8 0 16 0 -8 0 -8 8 0 4 -4 -8 4 0 8 4 0 0 16 8 8 -8 -8 4 0 -4 4 8 0 -8 0 0 0 0 8 0 -8 -8 8 0 0 0 0 -8 0 0 -8 4 8 8 0 8 0 -8 0 -8 -16 8 0 0 0 -4 4 -4 0 -4 8 -8 -16 8 -4 -4 -8 0 8 0 0 8 0 4 8 -4 -8 -8 8 0 0 0 0 0 8 -8 0 0 8 0 0 -4 -8 8 0 2 0 8 -8 8 12 -4 0 8 -8 0 0 -8 0 0 -8 -2 0 -8 -8 4 -1 8 8 -16 8 -8 0 0 0 4 8 1 0 -8 16 0 0 0 4 -8 0 4 -8 -2 8 -8 -12 4 0 8 0 0 8 8 0 2 -4 8 -4 -8 -8 0 0 -4 2 4 0 -4 8 0 -2 -4 -4 4 1 4 -1 1 -5 0 4 -2 4 0 -4 0 0 2 0 4 0 8 0 0 0 -8 -4 -1 -8 -8 0 -8 0 4 0 0 0 2 0 0 -4 0 0 -2 0 0 -4 4 8 8 0 8 0 0 8 8 -8 8 0 -2 0 2 0 -8 1 4 0 0 0 4 8 0 0 0 0 0 0 4 0 -8 0 0 -8 0 0 -8 -4 0 -8 0 0 0 8 0 -4 4 0 0 0 0 0 0 8 0 8 0 0 0 0 0 0 8 8 0 -8 -4 0 -4 8 4 8 0 -8 8 -4 -4 0 8 0 -8 0 0 0 8 0 0 0 0 8 -8 0 -8 0 0 0 0 0 0 0 0 8 8 0 4 -8 0 0 -8 -8 0 -8 0 0 8 0 -8 0 4 0 4 -8 -4 0 0 4 0 -8 -8 0 -8 0 0 0 0 0 0 -8 0 -4 4 0 0 8 0 8 0 -8 0 0 0 0 -8 0 0 -4 8 0 8 0 0 2 0 8 -4 4 -8 0 0 0 0 0 0 8 0 0 8 -2 0 -8 -4 0 -1 -8 0 0 -8 0 0 -8 8 4 8 1 0 8 0 0 -4 0 0 4 0 0 8 -2 4 -4 8 0 0 0 0 0 0 -8 0 2 0 -8 0 0 0 4 4 -4 -2 0 0 0 -4 -4 2 0 -4 0 1 4 -1 1 -5 0 8 -2 0 0 0 -8 4 2 0 4 0 8 0 4 -4 -4 -4 -1 0 -8 0 0 0 0 -8 8 4 -2 0 0 0 0 0 2 -8 0 -8 0 0 -8 0 8 0 0 0 -8 0 4 0 2 0 -2 8 8 1 8 0 0 0 0 0 0 0 4 0 4 0 0 0 8 8 0 -8 -4 -8 0 0 0 -8 -8 0 0 -4 0 8 -4 0 0 0 -8 0 0 0 8 0 0 0 8 0 8 0 0 8 -8 -8 0 8 0 -4 4 8 0 8 -8 4 8 0 0 0 8 0 0 -4 0 -4 0 0 0 -8 0 0 0 0 8 0 0 0 0 0 0 -8 0 -8 0 0 -8 4 -8 0 -8 0 -8 0 0 -8 0 8 -8 0 -8 4 -4 0 0 -4 0 8 0 8 4 0 0 0 0 0 0 8 0 4 0 4 0 -8 0 8 0 -8 0 0 0 0 8 -8 8 0 0 -4 8 0 0 -2 0 -8 -8 0 -4 4 0 0 0 0 0 0 0 -8 -8 2 0 0 0 -4 -1 0 0 8 8 0 0 -8 8 4 0 1 0 0 -8 0 0 0 4 0 8 -4 8 2 8 0 4 -4 0 0 0 0 0 0 8 -2 4 -8 0 0 0 0 0 -4 -2 4 0 -4 0 0 2 -4 -4 0 1 4 -1 1 -5 4 12 -2 -8 -16 8 -16 8 2 0 -4 8 16 4 8 -8 8 4 3 16 -16 -8 -16 -4 -8 -16 32 8 -2 -8 12 8 -8 -24 -2 16 8 -8 -8 -16 8 -8 16 -8 4 -16 -16 -16 -8 -8 2 8 2 16 -16 -3 8 -4 16 -8 -8 16 16 -8 8 -16 -24 -8 24 -16 8 -16 24 16 -8 16 16 8 -8 16 -16 -4 4 8 8 -8 12 16 -4 8 -16 -16 4 16 -16 16 4 8 -16 8 -16 8 16 -16 -16 -16 8 -16 -24 8 -4 -16 4 -8 -8 12 -8 8 16 8 16 4 -16 24 16 -8 4 16 8 16 16 -16 16 -16 -16 4 16 -8 16 16 16 8 -16 16 24 -16 16 8 16 -16 16 -16 16 -16 -16 16 -16 16 8 -8 8 -8 4 -4 -8 -12 -8 8 -16 16 -8 -4 -8 -4 -8 -4 -4 -16 -8 -12 -8 -24 -8 -16 -4 16 4 16 -16 -8 -16 -16 -8 -16 -16 -24 16 -8 -16 16 8 -2 8 -8 -8 -8 8 8 -4 8 8 8 12 -16 4 16 16 -2 8 16 8 24 3 -16 8 16 16 4 -24 -16 -16 -4 -16 -3 8 16 -16 24 8 8 8 -8 16 -8 16 2 8 8 -8 -8 4 -16 -8 -12 8 16 -16 2 8 -16 4 16 -8 -8 -8 4 -2 8 -8 -8 8 8 2 -8 -4 -4 1 4 -1 1 -5 0 4 2 0 0 0 0 0 -2 0 -4 8 0 8 0 0 0 4 3 0 0 -8 0 -4 0 0 0 0 -6 -8 4 0 -8 0 -6 0 0 0 0 0 8 8 -16 8 4 0 0 0 0 -8 6 8 6 0 0 -3 0 -4 0 8 0 0 0 0 0 -8 0 -8 0 0 8 0 0 0 0 0 0 0 8 -16 0 12 -4 0 0 0 -4 0 12 0 0 0 4 0 0 0 -4 -8 0 -8 0 -8 0 16 0 16 0 0 0 0 4 0 0 -8 -8 -4 0 -8 0 8 0 4 0 0 0 0 0 0 8 0 0 0 0 16 0 -12 0 0 0 -16 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8 0 0 -4 0 8 4 0 8 0 0 0 0 8 4 8 4 -4 0 8 4 0 0 -8 0 -4 -16 -12 -16 0 -8 0 0 -8 0 0 0 0 0 0 0 8 -6 -8 -8 0 0 0 0 -4 -8 -8 0 4 0 4 0 0 -6 -8 0 0 0 3 0 8 0 0 4 0 16 16 -4 0 -3 8 0 0 0 0 8 0 0 0 0 0 6 0 0 0 0 4 0 0 -4 8 0 0 6 0 0 0 0 -8 0 0 4 2 0 -8 0 0 0 -2 0 -4 0 1 4 -1 1 -5 4 -4 -2 8 -16 -8 16 -8 2 0 -4 8 16 4 -8 8 -8 4 3 -16 -16 -8 16 -4 8 16 0 -8 -2 -8 12 -8 -8 -24 -2 -16 8 8 8 16 8 -8 16 -8 4 16 -16 16 8 -8 2 8 2 -16 -16 -3 -8 -4 16 -8 8 -16 16 -8 -8 -16 24 -8 -24 -16 8 16 24 16 8 -16 -16 -8 -8 16 16 -4 4 -8 8 8 12 16 -4 8 16 -16 4 -16 16 -16 4 8 16 8 16 8 -16 -16 16 -16 -8 16 24 -8 -4 -16 4 -8 -8 12 8 8 -16 8 16 4 -16 -24 -16 8 4 16 8 16 -16 -16 -16 -16 16 4 16 -8 16 16 16 8 16 -16 -24 16 -16 -8 16 16 -16 16 -16 -16 16 -16 16 -16 -8 -8 -8 8 4 -4 -8 -12 -8 8 16 -16 8 -4 -8 -4 -8 -4 -4 -16 -8 -12 8 24 -8 -16 -4 16 4 16 -16 -8 -16 -16 -8 16 16 24 -16 8 -16 16 8 -2 8 -8 8 8 -8 -8 -4 8 8 8 12 16 4 -16 16 -2 8 -16 -8 -24 3 16 8 -16 16 4 -24 -16 -16 -4 16 -3 8 -16 16 24 -8 8 -8 8 -16 8 16 2 -8 -8 8 8 4 -16 -8 -12 8 -16 16 2 -8 -16 4 16 -8 8 8 4 -2 -8 -8 8 -8 -8 2 8 -4 -4 1 4 -1 1 -5 -4 4 6 0 16 0 0 0 -6 0 -4 8 -16 12 0 0 0 4 3 0 16 -8 0 12 0 0 -16 0 -2 -8 -4 0 -8 -8 -2 0 -8 0 0 0 8 -8 16 -8 -12 0 16 0 0 -8 2 8 2 0 16 -3 0 -4 -16 -8 0 0 -16 8 0 0 0 -8 0 16 8 0 8 -16 0 0 0 0 -8 16 0 -4 4 0 24 0 -4 -16 -4 24 0 16 4 0 0 0 4 8 0 8 0 8 0 -16 0 -16 0 0 0 0 12 16 -4 -8 -8 -4 0 8 0 8 -16 4 16 0 0 0 -4 -16 8 -16 0 16 0 -16 0 4 -16 -24 -16 16 -16 8 0 0 0 0 0 0 -16 0 0 0 0 16 0 0 0 0 0 -8 0 0 -12 4 -8 4 -24 8 0 0 0 4 -8 -4 -8 -4 -4 16 -8 4 0 0 -8 16 -4 16 4 16 16 -8 16 16 -8 0 0 0 0 0 16 -16 8 -2 8 -8 0 0 0 0 12 8 8 -8 -4 0 4 0 -16 -2 8 0 0 0 3 0 8 0 -16 4 -8 -16 -16 -4 0 -3 8 0 0 8 0 8 0 0 0 0 -16 2 0 0 0 0 -12 16 8 4 8 0 0 2 0 16 -4 -16 -8 0 0 4 6 0 -8 0 0 0 -6 0 -4 4 1 4 -1 1 -5 -4 4 2 4 8 -4 0 8 -2 -8 4 0 -8 12 0 -8 8 -4 -1 0 8 0 -16 0 4 -8 0 -8 -2 0 0 4 -8 0 2 -8 0 -4 12 0 -8 8 0 0 0 0 8 8 -8 0 2 0 -2 8 -8 1 4 0 -8 -8 -4 16 8 0 -8 -8 0 8 4 -8 0 8 0 8 8 0 0 -12 0 0 -8 0 0 0 8 4 4 0 0 -8 16 -8 0 0 -8 0 0 8 -8 -8 0 0 -8 0 16 0 4 0 -4 0 -4 -8 4 8 0 -4 4 0 -8 -8 -8 8 8 0 -8 8 4 8 0 8 8 0 8 0 0 0 8 8 -8 0 0 -8 -8 0 4 8 0 -8 8 0 8 0 8 -8 -8 0 8 -16 -4 0 -4 0 4 -4 0 4 -8 0 8 -16 0 -4 -8 0 8 0 0 -8 0 -4 -4 0 8 8 -8 0 0 0 0 0 -8 8 8 -8 0 -4 -8 8 -8 8 0 -2 0 0 -4 12 8 -8 0 8 -8 0 0 0 0 -8 8 2 0 0 4 0 -1 -16 -8 8 -8 8 0 0 0 4 0 1 8 16 -8 0 -4 0 8 -4 8 0 -8 2 4 -12 -8 8 0 8 0 0 0 0 8 -2 0 8 -4 -8 0 4 4 -4 2 0 -8 -8 4 -4 -2 0 -4 4 1 4 -1 1 -5 0 -6 0 12 0 0 4 -12 0 12 6 -12 0 12 4 -12 0 6 -3 0 0 -12 0 0 0 -24 -24 0 -6 0 0 0 12 0 6 24 0 12 -12 0 -12 -12 -24 -12 0 0 0 0 0 12 -6 0 6 -24 0 -3 12 6 0 12 0 0 0 0 12 6 -12 -12 0 0 12 24 0 0 0 24 0 -12 12 24 -24 -12 -4 0 0 12 0 0 12 0 0 0 6 0 -24 0 4 12 24 -12 0 -12 -24 24 0 -24 0 24 0 0 0 0 0 -12 12 0 -12 12 24 -12 0 6 0 -12 0 12 0 0 12 0 24 0 -24 0 0 12 0 0 0 0 0 12 -24 -24 0 0 0 -12 0 0 -24 0 24 0 24 0 -24 0 -12 -12 12 0 0 0 -12 0 0 -12 24 0 0 0 -12 4 12 -4 -6 0 12 0 0 12 12 0 -6 24 -12 -24 0 0 0 0 12 24 -24 0 0 -12 0 0 -12 6 -12 -12 -12 12 0 0 0 -12 12 0 0 0 -6 -24 0 -6 12 0 0 12 3 0 12 24 0 -6 0 24 -24 -6 0 3 -12 0 24 0 0 0 12 0 24 -4 0 6 -12 12 0 0 0 0 0 0 12 0 -24 -6 -4 0 0 0 12 -12 0 -6 0 0 -12 12 0 -12 0 0 6 0 -1 6 -1 1 -5 -4 4 2 4 8 4 0 -8 -2 0 4 0 -8 12 0 8 -8 -4 -1 0 8 0 0 0 -4 -8 -16 8 -2 0 0 -4 -8 0 2 8 0 12 -4 -16 -8 -8 0 0 0 0 8 -8 8 0 2 0 -2 8 -8 1 -12 8 -8 8 4 0 8 0 8 0 0 -8 -4 -8 0 -8 0 8 -8 0 16 4 0 0 8 0 0 0 8 4 4 0 0 -8 0 -8 -8 0 -8 0 0 -8 -8 8 16 0 8 0 0 0 -4 0 4 0 -4 -8 4 8 0 -4 4 0 8 8 -8 0 8 0 8 -8 4 8 0 8 -8 0 -8 0 16 0 8 8 -8 0 0 -8 8 0 -4 -8 -16 8 8 0 8 0 8 -8 8 -16 -8 0 -4 0 -4 0 4 -4 0 4 -8 0 -8 0 0 -4 8 0 -8 0 8 -8 0 -4 4 0 -8 8 0 0 0 0 0 0 -8 8 8 -8 0 4 8 -8 -8 8 0 -2 0 0 12 -4 -8 8 0 -8 8 0 0 -16 -8 8 8 2 0 0 -4 0 -1 0 8 -8 -8 0 0 0 0 4 0 1 8 0 8 0 4 0 -8 4 8 0 -8 2 -12 4 8 -8 0 8 0 0 0 16 -8 -2 0 8 -4 -8 0 4 -4 -4 2 0 -8 8 -4 -4 -2 0 -4 4 1 4 -1 1 -5 0 0 -2 8 0 0 8 -4 2 -8 4 -8 8 8 -4 4 4 -4 -1 0 -8 8 0 0 0 -8 -8 -4 -2 0 0 0 -8 0 2 8 0 0 -8 0 0 0 -8 0 0 0 -8 0 -4 0 2 0 -2 8 8 1 0 0 0 0 0 0 0 0 -4 0 -4 0 0 0 0 -8 0 -8 4 8 0 8 0 8 8 0 0 4 0 0 -4 0 0 0 8 0 0 0 8 0 0 0 8 0 -8 0 0 -8 8 8 0 -8 0 4 4 8 0 0 0 4 0 0 0 0 8 0 0 4 0 4 0 0 0 -8 0 0 0 0 -8 0 0 0 0 0 0 0 0 8 0 0 8 -4 -8 0 -8 0 -8 0 0 8 0 -8 0 0 0 -4 -4 0 0 -4 0 0 0 -8 -4 0 0 0 0 0 0 8 0 4 0 -4 0 -8 0 -8 0 8 0 0 0 0 0 -8 -8 0 0 4 8 0 0 -2 0 0 0 -8 4 -4 0 0 0 0 0 0 0 8 -8 2 0 0 0 4 -1 0 0 -8 8 0 0 8 -8 4 0 1 8 0 8 0 0 0 -4 0 8 4 8 2 0 8 -4 4 0 0 0 0 -8 0 -8 -2 -4 -8 0 0 8 8 0 -4 -2 -4 -8 4 0 -8 2 4 -4 0 1 4 -1 1 -7 8 0 2 8 -16 0 8 0 2 8 -8 -8 0 0 0 0 -8 -8 3 16 0 -8 0 -4 0 16 -16 -8 2 8 4 0 -8 0 2 0 0 -8 -8 0 -8 16 16 0 -4 16 16 0 -8 -16 2 8 2 16 16 3 -8 0 0 16 0 0 0 0 0 4 0 0 0 -16 -8 0 0 0 -8 0 0 -8 0 16 0 -4 -4 8 0 8 -4 -32 -4 0 0 0 0 -16 -16 -16 -4 16 -16 16 0 0 0 16 0 16 0 0 0 8 4 0 8 -8 -8 -4 8 0 0 0 16 0 0 0 0 0 8 -16 -16 16 0 0 0 -16 0 -4 0 0 0 -16 0 -8 0 0 0 0 0 0 0 -16 -16 -16 -16 -16 0 0 0 0 8 -16 8 8 4 8 0 -4 0 -8 0 0 8 8 16 -4 16 -4 0 16 0 -4 0 0 0 16 0 16 -4 16 -32 8 0 0 -8 16 0 0 0 0 0 -16 -16 2 0 -8 -8 -8 -8 -8 -4 16 16 0 4 0 0 0 16 2 0 16 0 0 3 0 0 0 16 0 0 16 16 -8 16 3 -8 0 0 0 0 8 0 0 16 0 0 2 -8 -8 -8 -8 -4 -16 0 4 -8 0 0 2 0 0 8 -16 -8 8 0 -8 2 8 -8 0 0 8 2 8 -8 8 1 -8 1 1 -7 4 0 6 8 0 0 8 0 6 8 -8 0 -32 4 0 0 8 -8 3 16 -32 0 -16 12 0 16 -16 8 -2 -8 -4 0 0 8 -2 -16 8 8 8 -16 0 -16 0 16 12 16 0 0 8 -16 -2 -8 -2 16 0 3 8 8 32 -16 0 -16 32 8 0 4 0 16 0 0 0 -16 8 -32 8 0 -16 8 16 0 -16 -4 4 8 -24 8 -4 16 -4 -24 -16 32 8 16 16 16 4 -16 16 -16 -16 16 -16 0 -16 0 0 0 0 8 12 -32 4 0 0 -4 8 16 -16 16 0 8 32 0 0 0 4 0 -16 0 -16 -16 -16 -16 -16 -4 32 -24 32 -16 -16 0 -16 0 0 0 -16 0 -32 16 16 16 16 0 -16 -16 -16 -16 8 -16 8 8 12 4 16 -4 -24 0 -16 -16 8 4 -16 4 -16 4 8 0 16 -4 0 0 16 0 8 0 -4 0 16 -8 32 32 0 16 0 0 0 0 -32 0 -16 -2 16 0 8 8 8 8 12 -16 -16 8 -4 -16 8 -16 0 -2 16 16 0 0 3 -16 16 -16 0 8 8 0 0 -8 16 3 0 -16 -16 8 0 -8 0 0 16 0 -32 -2 8 8 8 8 12 0 8 -4 0 -16 -16 -2 0 -32 4 0 0 8 0 -8 6 8 0 0 0 8 6 8 -8 4 1 -8 1 1 -7 8 6 4 0 -8 4 4 12 -4 12 -10 -4 -8 -12 -4 -12 -8 10 1 16 8 4 -16 4 -4 16 -8 -8 2 8 4 -12 4 8 2 -16 8 -8 -8 -16 -12 4 8 4 -4 -16 8 8 8 4 -2 -8 -2 -16 8 -1 8 2 8 4 4 16 8 -8 4 -2 4 4 4 -24 -12 16 -8 -24 8 8 16 8 4 8 16 0 0 -16 0 16 0 0 0 0 0 -8 -2 0 0 0 0 -4 0 -4 0 -4 0 -8 0 -8 -4 -8 -4 16 0 24 0 12 12 0 -16 -4 0 -4 -8 -2 -8 -4 -8 -4 0 24 -4 -8 0 0 0 0 0 0 -8 0 -8 0 0 12 0 -8 -4 -8 0 -4 24 0 0 0 0 24 0 0 0 0 16 -4 -16 -16 0 0 -4 0 0 12 0 0 16 0 -4 0 -4 0 -2 -8 -4 0 -4 -4 -4 -8 -2 -8 0 -8 0 -8 8 8 -12 -16 8 4 8 4 -24 -24 4 -2 4 -12 8 8 8 8 -4 4 4 -8 -4 16 2 16 8 -2 4 -16 4 4 -1 16 4 16 8 2 -8 8 8 10 16 1 4 -16 -16 8 -4 8 -12 -12 16 -4 8 2 -8 -8 -8 -8 4 8 8 4 4 -16 -16 2 4 -8 -8 -8 -4 0 4 -10 -4 0 -4 12 12 0 4 0 6 8 -1 -6 1 1 -7 4 4 2 8 -8 0 8 -4 2 0 0 0 -8 -4 -4 -4 4 0 -1 -8 -8 0 8 0 0 0 8 4 2 0 0 -8 -8 0 -2 0 0 0 0 -8 8 0 0 8 0 -8 -8 0 4 8 2 0 -2 0 8 -1 0 4 -8 0 8 8 8 0 -4 -4 4 0 0 8 0 0 0 8 4 8 -8 0 -8 0 16 0 0 -4 8 -8 -4 0 0 -8 8 8 4 -8 0 -8 0 0 0 0 -8 8 0 0 8 0 8 8 0 -4 -4 8 -4 8 0 4 -8 -8 0 0 -8 -4 -8 4 0 -4 -4 8 8 8 -16 0 -16 0 -8 0 8 -8 -8 0 0 8 -16 8 0 0 -8 -4 8 -8 0 -8 0 8 -16 -8 0 8 -8 8 -8 -4 -4 -4 -8 4 8 0 0 8 -4 -4 0 0 0 0 4 8 8 -4 8 4 0 -8 -4 0 0 0 0 0 8 -8 8 0 8 0 0 -4 8 8 8 2 -8 0 0 0 4 4 0 0 0 0 0 -8 4 0 8 -2 8 -8 8 4 -1 8 0 16 -8 -4 0 0 0 0 -8 -1 -8 8 16 0 0 0 -4 -8 0 -4 -8 2 0 0 4 4 0 -8 0 0 0 -8 0 -2 -4 -8 4 -8 0 8 0 0 2 12 -8 -4 -8 8 2 12 -8 4 1 -8 1 1 -7 4 0 2 12 -8 -4 8 -8 2 8 0 -8 -8 4 0 -8 0 0 -1 0 -8 -8 0 0 -4 -8 -16 0 -2 0 0 -4 0 0 2 8 0 4 4 16 0 0 0 -8 0 0 8 8 0 8 -2 0 2 -8 -8 -1 4 -4 8 0 -4 0 -8 0 8 4 0 0 4 8 8 8 0 8 0 0 16 4 8 0 -8 0 0 -8 -8 -4 4 0 0 8 -16 -8 -4 0 -8 0 0 0 -8 0 0 -8 -8 0 -16 0 -4 0 4 -8 -4 8 -4 0 8 -4 -4 8 -8 0 8 4 8 0 8 8 -4 8 8 -8 8 0 8 0 0 0 -8 8 8 0 0 0 8 0 4 8 0 8 8 0 -8 0 -8 8 8 0 -8 -16 -4 8 -4 -8 -4 -4 8 -4 -8 8 -8 -16 -8 -4 0 0 0 0 -4 -8 -8 4 -4 0 0 8 4 0 0 0 0 0 -8 8 0 -8 0 4 8 8 8 8 8 -2 8 8 4 4 0 0 0 0 0 0 0 16 -4 8 -8 2 -8 0 -4 0 -1 0 0 -8 8 4 0 0 0 0 0 -1 0 0 -8 0 -4 0 -8 -4 -8 0 -8 -2 4 4 0 0 0 -8 0 0 -8 16 8 2 0 -8 4 -8 -8 12 -4 0 2 8 0 -8 -4 12 2 8 -8 4 1 -8 1 1 -7 4 10 0 4 0 0 -4 0 0 -4 -2 -4 8 -8 0 0 -4 2 1 0 -8 4 0 -4 0 0 0 -4 2 0 -4 0 4 0 2 0 -8 -4 -4 0 -4 4 0 -4 4 0 8 0 4 -4 -2 0 -2 0 8 -1 4 2 0 4 0 0 0 8 0 6 0 4 0 16 -4 0 0 8 4 0 0 4 -4 0 0 0 0 4 0 -4 0 0 0 0 -8 0 -2 0 0 0 0 -4 0 -4 8 4 8 0 8 0 0 0 0 -4 0 -8 4 4 4 0 4 4 -8 -4 -8 -2 0 0 0 0 -4 -16 4 -8 8 0 -8 0 -8 0 0 0 0 0 0 4 8 0 0 0 8 0 -8 0 0 0 0 -16 -8 -8 -8 -8 -4 4 4 4 0 -4 4 0 0 4 8 8 -4 4 -4 0 -4 0 -2 -8 4 0 0 0 -4 -8 -2 0 0 0 0 0 0 0 -4 0 0 0 0 0 8 16 -4 -2 -4 -4 4 4 4 4 4 4 4 8 4 0 2 0 8 -2 -4 0 0 0 -1 0 4 0 8 2 0 0 0 2 0 1 4 0 0 0 0 0 0 0 0 0 -8 2 -4 -4 -4 -4 -4 0 -8 -4 4 0 0 2 0 8 -4 0 -4 -4 0 -2 0 -4 -4 0 0 4 0 4 6 4 -1 -6 1 1 -7 0 10 4 4 8 0 -4 0 -4 -4 -2 4 -16 4 0 0 4 2 1 0 16 -4 -8 4 0 0 -16 4 -2 -8 -4 0 -4 0 -2 -8 0 4 4 -8 4 -4 0 4 -4 0 0 0 -4 -4 2 8 2 0 0 -1 -4 2 8 -4 0 8 8 0 0 6 0 4 0 8 4 8 0 0 -4 0 8 -4 4 0 8 0 0 4 0 -4 0 0 0 0 0 -8 -2 0 0 0 0 4 0 4 0 -4 0 0 0 0 0 0 0 -4 0 0 0 -4 -4 0 4 -4 0 -4 0 -2 -8 0 0 0 0 -8 4 0 0 0 0 0 0 0 -8 0 -8 0 0 -4 0 0 0 0 0 0 0 0 0 0 0 -8 0 0 0 0 -4 4 4 4 0 0 -4 0 0 -4 0 0 -4 0 4 0 4 0 -2 0 -4 0 0 0 -4 0 -2 0 0 0 0 8 8 8 4 0 0 0 0 0 0 8 -4 2 4 4 -4 -4 -4 -4 -4 -4 -4 0 4 8 2 8 0 2 4 0 0 0 -1 8 4 8 0 2 0 0 0 2 0 1 -4 -8 -8 0 0 -8 0 0 0 0 16 -2 4 4 4 4 4 -8 0 -4 -4 -8 -8 -2 0 -16 0 8 4 -4 0 -2 -4 -4 4 0 0 4 4 4 6 0 -1 -6 1 1 -7 4 6 0 8 -8 -4 4 -4 0 -4 -2 -4 8 0 -4 4 -8 2 1 0 -8 4 0 -4 4 0 -8 -8 -2 0 4 -4 -4 -8 -2 0 0 0 0 16 12 4 8 4 4 0 8 8 8 -4 2 0 2 0 -8 -1 0 -6 8 4 -4 0 -8 0 4 -2 4 -4 -4 -8 4 0 8 8 8 -8 -16 0 4 8 16 0 0 0 0 -8 0 0 0 0 0 8 6 0 0 0 0 -4 0 -4 -16 -4 0 -8 0 -8 4 8 4 0 0 -8 -4 -12 -4 0 8 -4 0 4 -8 -2 -8 -4 -8 -4 4 8 4 8 -16 0 16 0 16 0 8 0 -8 0 0 -12 -16 8 4 -8 -16 -4 -8 0 0 0 0 8 16 16 0 0 -8 4 8 0 0 4 -4 0 0 -4 0 0 0 -4 -4 0 -4 0 6 8 -4 0 4 -4 4 -8 -2 -8 0 -8 0 0 -8 8 12 0 -8 -4 8 4 8 -8 -4 2 4 4 0 0 8 8 4 4 4 0 -4 -16 -6 0 -8 2 4 0 -4 4 -1 0 -4 16 8 2 8 8 8 2 0 1 -4 0 -16 -8 4 0 4 -4 0 -4 -8 -2 0 0 -8 -8 -4 8 0 4 4 16 0 -2 4 8 -4 -8 -4 -8 -4 -2 0 0 4 -4 4 8 0 0 6 4 -1 -6 1 1 -7 0 10 0 8 0 -4 -4 0 0 -12 6 -4 0 4 0 0 4 -6 -3 -8 0 4 -8 0 4 -16 0 -4 -2 0 0 4 -4 0 2 0 0 -8 8 8 -4 12 8 -4 0 8 0 8 -4 12 2 0 -2 16 0 3 8 -2 0 -12 4 8 0 0 0 -2 0 4 12 0 4 0 0 0 4 0 -8 -8 4 -8 0 4 4 -4 0 8 0 0 -4 0 8 0 2 -8 16 8 -4 12 -16 -12 8 4 0 8 -8 -8 -4 0 -12 4 0 0 0 4 -4 0 -8 -4 0 -4 0 2 0 0 -8 0 0 0 -12 0 0 0 0 0 -8 4 0 0 0 0 0 4 0 0 -12 -8 8 0 0 8 -16 -8 16 0 0 -8 0 8 8 -12 -8 -4 0 0 -4 0 0 -4 0 -8 4 0 12 4 -12 -4 2 0 4 0 -4 0 -4 0 2 -8 -4 8 0 0 0 0 -4 16 0 12 8 0 0 0 12 2 4 4 8 -8 -4 4 0 -12 12 0 0 -8 -2 0 0 -2 -4 8 4 0 3 8 4 0 0 -2 0 8 -8 -6 -8 -3 -4 -8 0 0 4 0 0 4 -16 0 0 -2 -8 8 4 -4 0 0 0 0 4 8 0 2 0 0 0 0 -4 -8 -4 6 0 -4 4 0 -4 8 0 4 6 0 -1 -6 1 1 -7 0 6 0 12 0 0 4 -12 0 -12 6 -12 0 12 -4 12 0 -6 -3 0 0 12 0 0 0 -24 -24 0 -6 0 0 0 -12 0 6 24 0 12 -12 0 -12 -12 -24 -12 0 0 0 0 0 12 6 0 -6 24 0 3 -12 6 0 12 0 0 0 0 12 6 -12 -12 0 0 12 -24 0 0 0 24 0 12 12 24 24 -12 -4 0 0 12 0 0 12 0 0 0 -6 0 -24 0 4 -12 24 12 0 12 -24 -24 0 24 0 -24 0 0 0 0 0 12 -12 0 -12 -12 24 12 0 -6 0 12 0 -12 0 0 -12 0 24 0 -24 0 0 -12 0 0 0 0 0 12 24 -24 0 0 0 -12 0 0 24 0 -24 0 -24 0 24 0 12 -12 -12 0 0 0 -12 0 0 -12 -24 0 0 0 -12 -4 12 4 -6 0 12 0 0 12 12 0 -6 24 12 -24 0 0 0 0 -12 24 24 0 0 12 0 0 12 6 12 12 -12 12 0 0 0 12 -12 0 0 0 6 -24 0 -6 -12 0 0 -12 3 0 -12 24 0 6 0 -24 24 -6 0 -3 -12 0 -24 0 0 0 12 0 -24 -4 0 -6 12 -12 0 0 0 0 0 0 12 0 24 6 4 0 0 0 -12 -12 0 6 0 0 12 -12 0 12 0 0 6 0 -1 -6 1 1 -9 8 6 4 16 -24 -4 12 -12 4 4 -6 -12 -24 -4 -4 -12 8 -6 1 16 -24 -12 16 4 -4 16 -8 8 2 8 4 -12 -12 8 2 16 8 8 8 16 -4 -4 -8 -4 4 16 -8 -8 8 -4 2 8 2 16 -8 1 8 -2 -8 -4 -4 16 -8 8 -4 2 -4 -4 -4 -8 -4 16 8 -8 8 -8 16 8 -4 -8 16 0 0 0 0 0 0 0 0 0 0 -8 -2 0 0 0 0 -4 0 -4 0 -4 0 -8 0 -8 -4 -8 -4 0 0 -8 0 -4 -4 0 0 -4 0 -4 -8 -2 -8 -4 -8 -4 0 -8 -4 -8 0 0 0 0 0 0 8 0 8 0 0 4 0 8 4 8 0 4 8 0 0 0 0 8 0 0 0 0 0 4 0 0 0 0 4 0 0 4 0 0 0 0 4 0 4 0 2 8 4 0 4 4 4 8 2 8 0 8 0 -8 8 8 4 -16 8 4 8 4 8 8 4 -2 4 4 -8 -8 -8 -8 -4 4 4 -8 -4 -16 2 -16 8 -2 4 -16 4 4 -1 -16 4 -16 8 2 -8 8 8 6 -16 -1 12 -16 -16 -8 4 -8 12 12 -16 4 24 -2 -8 -8 -8 -8 -4 24 -8 -4 12 -16 -16 -2 4 24 -8 24 12 -16 4 6 -4 -16 12 12 12 -16 -4 -16 10 -8 -1 10 -1 1 -9 8 16 2 8 -16 0 -8 0 -2 -8 -8 -8 0 -16 0 0 -8 8 3 16 0 8 0 -4 0 16 16 -8 2 8 4 0 8 0 2 0 0 -8 -8 0 -8 16 16 0 4 -16 16 0 8 -16 -2 -8 -2 -16 16 -3 8 0 0 16 0 0 0 0 0 -4 0 0 0 -16 -8 0 0 0 8 0 0 8 0 16 0 -4 -4 8 0 8 -4 -32 -4 0 0 0 0 -16 -16 -16 -4 -16 -16 -16 0 0 0 -16 0 -16 0 0 0 8 4 0 8 8 8 -4 8 0 0 0 -16 0 0 0 0 0 8 16 16 -16 0 0 0 -16 0 4 0 0 0 16 0 -8 0 0 0 0 0 0 0 16 16 16 16 -16 0 0 0 0 -8 -16 -8 -8 -4 -8 0 4 0 -8 0 0 -8 -8 16 4 16 4 0 16 0 4 0 0 0 16 0 16 4 16 32 8 0 0 8 16 0 0 0 0 0 16 16 2 0 8 -8 -8 -8 -8 -4 -16 -16 0 4 0 0 0 -16 2 0 16 0 0 3 0 0 0 -16 0 0 -16 -16 -8 -16 -3 -8 0 0 0 0 -8 0 0 -16 0 0 -2 8 8 8 8 4 -16 0 -4 -8 0 0 -2 0 0 8 16 8 8 0 8 2 8 8 0 0 -8 -2 -8 -8 -8 1 8 -1 1 -9 4 16 6 8 0 0 -8 0 -6 -8 -8 0 -32 -4 0 0 8 8 3 16 32 0 -16 12 0 16 -16 8 -2 -8 -4 0 0 8 -2 -16 8 8 8 -16 0 -16 0 16 -12 -16 0 0 -8 -16 2 8 2 -16 0 -3 -8 8 32 -16 0 16 32 -8 0 12 0 16 0 0 0 16 -8 -32 -8 0 16 -8 16 0 16 -4 4 8 -24 8 -4 16 -4 -24 -16 -32 -8 16 16 16 4 16 16 16 -16 -16 -16 0 -16 0 0 0 0 8 12 32 4 0 0 -4 8 -16 -16 -16 0 -8 -32 0 0 0 4 0 16 0 -16 -16 -16 -16 -16 4 32 24 32 16 16 0 16 0 0 0 16 0 -32 -16 -16 -16 -16 0 16 16 16 16 -8 -16 -8 -8 -12 -4 16 4 24 0 16 16 -8 -4 -16 -4 -16 -4 8 0 16 4 0 0 16 0 8 0 4 0 -16 -8 -32 -32 0 16 0 0 0 0 32 0 16 -2 -16 0 8 8 8 8 12 16 16 8 -4 -16 -8 -16 0 -2 -16 16 0 0 3 -16 -16 -16 0 -8 8 0 0 -8 -16 -3 0 16 16 -8 0 8 0 0 -16 0 -32 2 -8 -8 -8 -8 -12 0 -8 4 0 16 16 2 0 32 4 0 0 8 0 8 6 8 0 0 0 -8 -6 -8 -8 -4 1 8 -1 1 -9 4 16 2 12 -8 -4 -8 -8 -2 -16 0 -8 -8 -4 0 8 0 0 -1 0 8 8 0 0 4 -8 0 0 -2 0 0 4 0 0 2 8 0 4 4 16 0 0 0 -8 0 0 8 8 0 8 2 0 -2 8 -8 1 -4 -4 8 0 -4 0 -8 0 8 4 0 0 4 8 8 -8 0 8 0 0 -16 -4 8 0 8 0 0 -8 -8 -4 4 0 0 8 -16 8 4 0 -8 0 0 0 -8 0 0 8 -8 0 -16 0 4 0 -4 -8 -4 -8 -4 0 -8 -4 -4 -8 -8 0 -8 -4 -8 0 -8 -8 -4 -8 -8 8 8 0 8 0 0 0 -8 -8 8 0 0 0 -8 0 4 8 0 8 8 0 8 0 8 8 -8 0 8 16 4 8 4 8 4 4 8 4 8 8 8 16 8 4 0 0 0 0 -4 -8 -8 -4 -4 0 0 8 4 0 0 0 0 0 8 -8 0 -8 0 -4 -8 -8 -8 -8 -8 -2 -8 -8 4 4 0 0 0 0 0 0 0 16 4 8 8 2 8 0 4 0 -1 0 0 -8 -8 -4 0 0 0 0 0 1 0 0 8 0 -4 0 -8 -4 8 0 -8 2 -4 -4 0 0 0 -8 0 0 -8 -16 -8 -2 0 8 4 8 8 12 4 0 2 8 0 8 4 -12 -2 -8 -8 -4 1 8 -1 1 -11 12 12 6 24 -48 -8 16 -24 6 0 -12 -24 -48 -12 -8 -24 24 -12 3 48 -48 -24 48 12 -8 48 0 24 6 24 12 -24 -24 24 6 48 24 24 24 48 -24 -24 -48 -24 12 48 -48 -48 24 -24 6 24 6 48 -48 3 24 -12 -48 -24 -24 48 -48 24 -24 0 -24 -24 -24 -48 -24 48 24 -48 24 -48 48 24 -24 -48 48 12 4 24 24 24 12 48 12 24 48 -48 -12 48 48 48 4 -24 48 -24 48 -24 48 -48 48 -48 -24 -48 -24 24 12 -48 12 -24 -24 12 24 -24 48 -24 -48 -12 -48 -24 -48 -24 12 -48 -24 -48 48 16 48 48 48 12 -48 24 -48 48 16 -24 48 -48 -24 -48 48 -24 -48 48 48 48 48 -48 48 48 48 48 24 -24 24 24 12 12 -24 12 24 -24 48 48 24 12 -24 4 -24 4 -12 -48 -24 12 -24 -24 -24 -48 -12 -48 12 -48 48 24 -48 -48 -24 48 -48 -24 -48 -24 -48 -48 -24 6 -24 -24 24 24 24 24 12 -24 -24 24 12 48 -12 48 -48 6 -24 48 -24 -24 3 48 -24 48 -48 -12 24 -48 -48 -12 48 3 -24 48 48 24 -8 24 -24 -24 48 -8 -48 6 24 24 24 24 12 -48 24 12 -24 48 48 6 -8 -48 12 -48 -24 24 -8 -12 6 24 -24 -24 -24 24 6 24 -12 12 1 -12 1 end lrslib-062/ine/metric/0000700001553200155320000000000012722006425012507 5ustar avislrslib-062/ine/metric/cp4.ine0000600001553200155320000000062112722006424013672 0ustar aviscp4.ine H-representation begin 16 7 rational 2 0 -1 -1 0 0 -1 2 -1 -1 0 -1 0 0 2 0 0 0 -1 -1 -1 2 -1 0 -1 0 -1 0 0 0 0 0 1 1 -1 0 -1 0 1 0 1 0 0 0 1 1 0 0 -1 0 -1 1 0 1 0 0 0 1 0 -1 0 1 0 0 0 0 0 -1 1 1 0 1 1 0 -1 0 0 0 0 1 -1 0 0 1 0 1 -1 0 1 0 0 0 0 -1 1 0 0 1 0 1 0 1 0 -1 0 0 0 0 0 1 -1 1 end lrslib-062/ine/metric/mp5.ine0000600001553200155320000000202112722006424013701 0ustar avismp5.ine *metric polytope on 5 points begin 40 11 integer 2 -1 -1 0 0 -1 0 0 0 0 0 0 1 1 0 0 -1 0 0 0 0 0 0 -1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 -1 0 0 0 0 0 -1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 -1 0 0 0 0 0 -1 1 0 0 0 0 1 0 0 0 0 1 -1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 -1 0 0 0 0 -1 0 1 0 0 0 0 1 0 0 0 1 0 -1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 -1 0 0 0 0 1 1 0 0 0 0 0 -1 0 0 0 1 -1 0 0 0 0 0 1 0 0 0 -1 1 0 0 0 0 0 1 2 0 0 0 0 -1 -1 0 -1 0 0 0 0 0 0 0 1 1 0 -1 0 0 0 0 0 0 0 -1 1 0 1 0 0 0 0 0 0 0 1 -1 0 1 0 0 2 0 0 0 0 -1 0 -1 0 -1 0 0 0 0 0 0 1 0 1 0 -1 0 0 0 0 0 0 -1 0 1 0 1 0 0 0 0 0 0 1 0 -1 0 1 0 2 0 0 0 0 0 -1 -1 0 0 -1 0 0 0 0 0 0 -1 1 0 0 1 0 0 0 0 0 0 1 -1 0 0 1 0 0 0 0 0 0 1 1 0 0 -1 2 0 0 0 0 0 0 0 -1 -1 -1 0 0 0 0 0 0 0 0 1 -1 1 0 0 0 0 0 0 0 0 -1 1 1 0 0 0 0 0 0 0 0 1 1 -1 0 -1 1 0 0 1 0 0 0 0 0 0 1 -1 0 0 1 0 0 0 0 0 2 -1 0 -1 0 0 -1 0 0 0 0 0 1 0 -1 0 0 1 0 0 0 0 2 -1 0 0 -1 0 0 -1 0 0 0 0 1 0 0 -1 0 0 1 0 0 0 2 0 -1 -1 0 0 0 0 -1 0 0 2 0 -1 0 -1 0 0 0 0 -1 0 2 0 0 -1 -1 0 0 0 0 0 -1 end lrslib-062/ine/metric/cp5.ine0000600001553200155320000000367112722006425013704 0ustar aviscp5.ine *6 point cut polytope H-representation begin 56 11 rational 2 0 0 0 0 0 0 0 -1 -1 -1 2 0 0 0 0 0 -1 -1 0 0 -1 2 0 0 0 0 -1 0 -1 0 -1 0 0 1 0 0 1 0 0 -1 0 0 0 0 0 1 0 1 0 0 0 0 -1 0 0 0 0 1 1 0 0 0 0 0 -1 2 1 1 1 1 -1 -1 -1 -1 -1 -1 0 0 1 1 0 0 0 0 -1 0 0 0 -1 1 0 0 1 0 0 0 0 0 0 -1 1 1 1 1 1 1 -1 -1 -1 0 0 0 0 0 1 1 0 -1 0 0 0 0 0 0 0 1 0 -1 0 1 0 0 0 1 0 -1 0 0 0 0 1 0 2 -1 1 -1 -1 1 -1 -1 1 1 -1 2 -1 0 0 -1 0 0 -1 0 0 0 0 -1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 1 0 -1 1 1 -1 1 1 -1 -1 1 1 0 0 0 1 -1 0 0 0 0 0 1 2 -1 -1 1 -1 -1 1 -1 1 -1 1 0 1 0 1 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 1 0 -1 0 0 0 0 0 0 1 -1 0 1 0 0 0 1 -1 0 0 1 0 0 0 0 0 0 1 -1 1 1 1 -1 -1 1 1 -1 0 1 0 0 -1 0 0 1 0 0 0 0 1 1 1 -1 -1 -1 1 -1 1 1 2 1 -1 -1 -1 1 1 1 -1 -1 -1 2 0 -1 0 -1 0 0 0 0 -1 0 0 0 -1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 -1 1 0 1 -1 1 -1 1 -1 1 1 -1 1 0 1 1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 -1 0 0 0 0 0 -1 1 0 1 0 0 0 1 0 -1 0 0 1 0 0 0 0 0 1 1 -1 1 -1 1 -1 1 -1 1 2 0 0 -1 -1 0 0 0 0 0 -1 0 0 1 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 -1 0 1 1 -1 -1 -1 1 1 1 1 -1 2 0 0 0 0 -1 -1 0 -1 0 0 2 -1 0 -1 0 0 -1 0 0 0 0 0 -1 0 0 1 0 0 1 0 0 0 0 0 0 -1 1 0 0 0 0 0 1 2 -1 -1 -1 1 -1 -1 1 -1 1 1 0 0 0 0 0 0 -1 1 0 0 1 0 -1 1 -1 1 1 -1 1 1 -1 1 2 0 -1 -1 0 0 0 0 -1 0 0 0 0 -1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 1 1 0 1 -1 -1 1 1 1 -1 -1 1 1 0 0 0 0 0 -1 0 1 0 1 0 0 -1 -1 1 1 -1 1 1 1 1 -1 2 -1 -1 0 0 -1 0 0 0 0 0 6 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 end lrslib-062/ine/metric/cp6.ine0000600001553200155320000004330512722006425013703 0ustar aviscp6.ine *6 point cut polytope H-representation begin 368 16 integer 2 0 1 1 1 1 0 0 0 0 -1 -1 -1 -1 -1 -1 2 1 0 1 1 1 0 -1 -1 -1 0 0 0 -1 -1 -1 2 1 1 0 1 1 -1 0 -1 -1 0 -1 -1 0 0 -1 0 1 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 -1 2 2 2 2 2 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 1 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -2 2 2 2 2 1 1 1 1 -1 -1 -1 -1 -1 -1 0 -2 1 1 1 1 2 2 2 2 -1 -1 -1 -1 -1 -1 0 1 -1 2 -1 -1 1 -2 1 1 2 -1 -1 2 2 -1 0 1 -1 -1 2 -1 1 1 -2 1 -1 2 -1 2 -1 2 2 -2 1 1 -1 -1 2 2 -2 -2 -1 1 1 1 1 -1 0 -1 2 1 -1 -1 2 1 -1 -1 -2 2 2 1 1 -1 2 -2 1 -1 -1 1 2 -2 -2 2 1 1 -1 -1 1 1 0 -1 2 -1 -1 1 2 -1 -1 1 2 2 -2 -1 1 1 2 -1 2 1 1 1 2 1 1 1 -2 -2 -2 -1 -1 -1 2 -2 1 -1 1 -1 2 -2 2 -2 1 -1 1 1 -1 1 0 -1 2 -1 1 -1 2 -1 1 -1 2 -2 2 1 -1 1 0 1 -1 -1 -1 2 1 1 1 -2 -1 -1 2 -1 2 2 0 0 0 0 0 0 1 0 0 -1 0 0 1 0 0 0 0 -1 1 1 1 0 1 1 1 0 -1 -1 0 -1 0 0 2 1 -2 -1 -1 1 2 1 1 -1 -2 -2 2 -1 1 1 0 2 -1 -1 -1 1 2 2 2 -2 -1 -1 1 -1 1 1 0 0 1 1 1 -1 0 0 0 0 -1 -1 1 -1 1 1 0 -1 2 1 1 -1 2 1 1 -1 -2 -2 2 -1 1 1 0 0 0 0 0 0 1 1 1 -1 -1 -1 1 -1 1 1 0 1 2 -1 -1 -1 -2 1 1 1 2 2 2 -1 -1 -1 2 -2 2 -2 2 -2 1 -1 1 -1 1 -1 1 1 -1 1 2 -1 1 -1 1 -2 1 -1 1 -2 1 -1 2 1 -2 2 0 0 1 0 0 -1 0 0 0 0 0 0 1 0 0 0 2 -1 2 -1 -1 -1 2 -1 -1 -1 2 2 2 -1 -1 -1 6 -1 1 -1 -1 -2 1 -1 -1 -2 1 1 2 -1 -2 -2 2 0 1 -1 -1 -1 0 0 0 0 1 1 1 -1 -1 -1 2 -1 1 -1 0 -1 1 -1 0 -1 1 0 1 0 -1 0 2 -1 1 0 -1 -1 1 0 -1 -1 0 1 1 0 0 -1 2 0 0 0 0 0 1 -1 -1 -1 1 1 1 -1 -1 -1 2 1 -1 1 1 2 1 -1 -1 -2 1 1 2 -1 -2 -2 0 -2 1 1 1 -1 2 2 2 -2 -1 -1 1 -1 1 1 0 -1 1 0 1 -1 1 0 1 -1 0 -1 1 0 0 1 0 -1 1 1 0 -1 1 1 0 -1 -1 0 1 0 1 0 2 -1 0 0 0 -1 0 0 0 -1 0 0 0 0 0 0 0 -1 0 1 1 -1 0 1 1 -1 0 0 0 -1 1 1 0 -2 2 2 2 -2 1 1 1 -1 -1 -1 1 -1 1 1 2 -2 -2 2 2 -2 -1 1 1 -1 1 1 -1 -1 1 1 2 -1 -1 1 1 -2 -1 1 1 -2 1 1 -2 -1 2 2 12 -1 -1 -1 -1 -2 -1 -1 -1 -2 -1 -1 -2 -1 -2 -2 0 0 0 0 0 0 1 0 -1 0 0 1 0 0 0 0 0 -1 1 1 0 1 1 1 0 1 -1 0 -1 0 -1 0 2 1 -2 -1 1 -1 2 1 -1 1 -2 2 -2 1 -1 1 0 2 -1 -1 1 -1 2 2 -2 2 -1 1 -1 1 -1 1 0 0 1 1 -1 1 0 0 0 0 -1 1 -1 1 -1 1 0 -1 2 1 -1 1 2 1 -1 1 -2 2 -2 1 -1 1 0 0 0 0 0 0 1 1 -1 1 -1 1 -1 1 -1 1 0 0 0 0 0 0 1 1 0 0 -1 0 0 0 0 0 0 1 -1 0 1 1 1 0 -1 -1 0 1 1 0 0 -1 2 1 -1 -2 1 -1 1 2 -1 1 -2 1 -1 2 -2 1 2 -2 -1 1 -1 1 -2 2 -2 2 1 -1 1 1 -1 1 0 -1 -1 2 -1 1 -1 2 -1 1 2 -1 1 2 -2 1 2 -1 1 2 1 1 1 2 1 1 -2 -1 -1 -2 -2 -1 2 1 -1 1 2 1 1 -1 -2 -1 1 2 1 -2 -1 -2 0 0 0 0 0 0 0 0 0 0 -1 1 0 1 0 0 0 1 -1 -1 1 0 1 1 -1 0 -1 1 0 1 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 1 0 0 0 1 0 -1 1 1 0 1 -1 -1 0 0 0 1 1 -1 0 2 -1 -1 1 1 2 2 -2 -2 -1 1 1 1 1 -1 2 1 1 -1 2 1 -1 1 -2 -1 1 -2 -1 2 1 -2 0 1 -1 -1 2 1 1 1 -2 -1 -1 2 1 2 1 -2 0 -1 1 2 -1 -1 1 2 -1 -1 -2 1 1 2 2 -1 0 -1 1 1 -1 0 1 1 -1 0 -1 1 0 1 0 0 0 -1 1 2 -1 1 1 2 -1 1 -2 1 -1 2 -2 1 0 0 0 0 0 0 1 1 -1 -1 -1 1 1 1 1 -1 2 -2 -1 1 1 -1 -2 2 2 -2 1 1 -1 -1 1 1 0 -1 -1 2 1 -1 -1 2 1 -1 2 1 -1 -2 2 1 0 0 1 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 -1 0 -2 1 1 -1 1 2 2 -2 2 -1 1 -1 1 -1 1 0 -1 1 0 -1 1 1 0 -1 1 0 1 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 1 0 0 1 -2 -1 1 1 2 1 -1 -1 -2 2 2 1 1 -1 0 1 -1 -1 0 1 1 1 0 -1 -1 0 1 0 1 0 2 -2 2 -2 -2 2 1 -1 -1 1 1 1 -1 -1 1 1 2 -1 1 -1 -2 1 1 -1 -2 1 1 2 -1 -2 1 2 2 1 -1 -2 -1 1 1 2 1 -1 -2 -1 1 -2 2 1 6 -1 1 -1 -2 -1 1 -1 -2 -1 1 2 1 -2 -1 -2 2 -1 1 -1 -1 0 1 -1 -1 0 1 1 0 -1 0 0 0 1 -1 -2 1 1 1 2 -1 -1 -2 1 1 2 2 -1 0 -1 1 2 1 -1 1 2 1 -1 -2 -1 1 -2 2 1 6 -1 -1 1 -2 -1 -1 1 -2 -1 1 -2 -1 2 1 -2 2 -1 -1 1 -1 0 -1 1 -1 0 1 -1 0 1 0 0 2 -1 0 0 -1 0 0 0 -1 0 0 0 0 0 0 0 0 -1 0 1 -1 1 0 1 -1 1 0 0 0 1 -1 1 0 -2 2 2 -2 2 1 1 -1 1 -1 1 -1 1 -1 1 2 -2 -2 2 -2 2 -1 1 -1 1 1 -1 1 1 -1 1 2 -1 -1 1 -2 1 -1 1 -2 1 1 -2 1 2 -1 2 12 -1 -1 -1 -2 -1 -1 -1 -2 -1 -1 -2 -1 -2 -1 -2 0 1 -1 -1 1 2 1 1 -1 -2 -1 1 2 1 2 -2 2 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 1 0 0 -1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 0 0 0 1 0 2 -1 -1 2 -1 -1 -1 2 -1 -1 2 -1 -1 2 2 -1 6 -1 -1 1 -1 -2 -1 1 -1 -2 1 -1 -2 1 2 -2 2 0 -1 1 -1 -1 0 0 0 0 1 -1 -1 1 1 -1 2 -1 -1 1 0 -1 -1 1 0 -1 1 0 -1 0 1 0 2 -1 0 1 -1 -1 0 1 -1 -1 0 0 0 1 1 -1 2 0 0 0 0 0 -1 1 -1 -1 1 -1 -1 1 1 -1 2 1 1 -1 1 2 -1 1 -1 -2 1 -1 -2 1 2 -2 0 0 0 1 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 -1 0 1 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 1 0 0 0 0 0 0 -1 1 0 1 1 1 0 1 1 0 -1 -1 0 0 -1 2 1 -2 1 -1 -1 2 -1 1 1 2 -2 -2 1 1 -1 0 2 -1 1 -1 -1 2 -2 2 2 1 -1 -1 1 1 -1 0 0 1 -1 1 1 0 0 0 0 1 -1 -1 1 1 -1 0 -1 2 -1 1 1 2 -1 1 1 2 -2 -2 1 1 -1 0 0 0 0 0 0 1 -1 1 1 1 -1 -1 1 1 -1 0 0 0 0 0 0 1 0 1 0 0 -1 0 0 0 0 0 1 -1 1 0 1 1 -1 0 -1 1 0 1 0 -1 0 2 1 -1 1 -2 -1 1 -1 2 1 1 -2 -1 2 1 -2 2 -2 -1 -1 1 1 -2 -2 2 2 -1 1 1 1 1 -1 0 -1 -1 -1 2 1 -1 -1 2 1 -1 2 1 2 1 -2 2 -2 2 2 -2 -2 1 1 -1 -1 -1 1 1 1 1 -1 2 1 -1 2 1 1 1 -2 -1 -1 2 1 1 -2 -2 -1 2 1 2 -1 1 1 -2 1 -1 -1 2 -2 -2 1 1 -1 2 -1 1 1 2 1 1 1 2 1 -1 -2 -1 -2 -1 -2 2 2 -2 -2 2 -2 1 1 -1 1 -1 1 -1 1 -1 1 2 -1 1 1 -1 -2 1 1 -1 -2 -1 1 2 1 2 -2 2 1 -1 -1 1 -2 1 1 -1 2 -1 1 -2 1 -2 2 0 0 0 0 0 0 0 -1 1 0 0 0 0 1 0 0 0 1 0 1 -1 1 0 -1 1 -1 0 0 0 1 -1 1 0 2 -1 1 -1 1 2 -2 2 -2 1 -1 1 1 -1 1 2 1 1 2 -1 1 -1 -2 1 -1 -2 1 -1 2 -2 1 0 1 -1 2 -1 1 1 -2 1 -1 2 -1 1 2 -2 1 0 -1 1 -1 2 -1 1 -1 2 -1 1 -2 1 2 -1 2 0 -1 1 -1 1 0 1 -1 1 0 1 -1 0 1 0 0 0 -1 1 -1 2 1 1 -1 2 1 1 -2 -1 2 1 -2 0 0 0 0 0 0 1 -1 1 -1 1 -1 1 1 -1 1 0 0 0 0 0 0 0 0 0 0 1 -1 0 1 0 0 0 1 -1 1 -1 0 1 -1 1 0 1 -1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 -1 0 0 0 0 1 -1 1 1 0 1 -1 -1 0 1 1 0 -1 0 0 0 1 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 -2 2 2 2 1 -1 -1 -1 1 1 1 -1 -1 -1 0 1 -2 1 1 1 2 -1 -1 -1 2 2 2 -1 -1 -1 2 2 -1 1 1 1 2 -2 -2 -2 1 1 1 -1 -1 -1 0 1 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 -2 -1 -1 -1 2 -1 -1 2 -1 2 2 0 2 2 2 2 -2 -1 -1 -1 1 -1 -1 1 -1 1 1 2 2 1 1 1 -1 -2 -2 -2 2 -1 -1 1 -1 1 1 2 2 2 -2 -2 -2 -1 1 1 1 1 1 1 -1 -1 -1 2 2 -1 -1 -1 -1 2 2 2 2 -1 -1 -1 -1 -1 -1 6 1 -1 -1 -1 -2 1 1 1 2 -1 -1 -2 -1 -2 -2 2 1 0 -1 -1 -1 0 1 1 1 0 0 0 -1 -1 -1 2 1 1 -1 -1 -2 -1 1 1 2 1 1 2 -1 -2 -2 2 1 -1 -1 0 -1 1 1 0 1 -1 0 -1 0 -1 0 6 1 -1 -1 -2 -1 1 1 2 1 -1 -2 -1 -2 -1 -2 2 1 -1 0 -1 -1 1 0 1 1 0 -1 -1 0 0 -1 2 2 -2 2 -2 -2 1 -1 1 1 1 -1 -1 1 1 -1 2 1 -1 1 -1 -2 1 -1 1 2 1 -1 -2 1 2 -2 2 -1 -2 1 1 -1 -2 1 1 -1 2 2 -2 -1 1 1 2 -1 1 1 -2 -1 1 1 -2 -1 -1 2 1 2 1 -2 2 -1 1 1 1 2 1 1 1 2 -1 -1 -2 -1 -2 -2 2 2 -2 -2 -2 2 1 1 1 -1 -1 -1 1 -1 1 1 2 -1 1 -2 1 -1 1 -2 1 -1 2 -1 1 2 -2 1 2 1 -1 -1 -1 0 1 1 1 0 -1 -1 0 -1 0 0 2 0 0 0 0 0 1 1 1 1 -1 -1 -1 -1 -1 -1 0 1 -2 1 1 -1 2 -1 -1 1 2 2 -2 -1 1 1 0 1 -1 0 1 -1 1 0 -1 1 0 1 -1 0 0 1 0 1 -1 1 0 -1 1 -1 0 1 1 0 -1 0 1 0 2 0 -1 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 -1 1 1 -1 0 0 0 0 1 1 -1 -1 1 1 0 2 -2 2 2 -2 1 -1 -1 1 1 1 -1 -1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 -1 0 1 1 1 -1 0 -1 -1 1 0 -1 1 0 1 0 0 0 1 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 2 2 1 1 -1 1 -2 -2 2 -2 -1 1 -1 1 -1 1 0 2 2 2 -2 2 -1 -1 1 -1 -1 1 -1 1 -1 1 0 1 1 1 -2 1 -1 -1 2 -1 -1 2 -1 2 -1 2 0 1 1 1 -2 -1 -1 -1 2 1 -1 2 1 2 1 -2 0 1 0 1 -1 -1 0 -1 1 1 0 0 0 1 1 -1 0 1 1 0 -1 -1 -1 0 1 1 0 1 1 0 0 -1 2 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 -1 0 0 1 1 -1 -1 0 0 0 0 -1 1 1 1 1 -1 0 2 2 2 -2 -2 -1 -1 1 1 -1 1 1 1 1 -1 2 1 1 -1 -2 -1 -1 1 2 1 1 2 1 -2 -1 -2 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 1 0 2 1 1 2 1 -1 -1 -2 -1 1 -2 -1 1 -2 2 1 0 1 0 1 1 -1 0 -1 -1 1 0 0 0 -1 1 1 0 2 -1 1 1 -1 2 -2 -2 2 1 1 -1 -1 1 1 0 1 -1 2 1 -1 1 -2 -1 1 2 1 -1 -2 2 1 0 -1 1 -1 -1 2 1 -1 -1 2 1 1 -2 -1 2 2 0 -2 1 -1 1 1 2 -2 2 2 1 -1 -1 1 1 -1 0 -1 1 -1 0 1 1 -1 0 1 1 0 -1 0 1 0 0 -1 1 -2 1 1 1 -2 1 1 2 -1 -1 2 2 -1 0 -1 1 -1 1 2 1 -1 1 2 1 -1 -2 1 2 -2 0 0 0 0 0 0 1 -1 -1 1 1 1 -1 -1 1 1 0 1 -2 1 -1 1 2 -1 1 -1 2 -2 2 1 -1 1 0 1 -1 0 -1 1 1 0 1 -1 0 -1 1 0 0 1 0 0 0 0 0 0 -1 -1 1 1 -1 1 1 1 1 -1 0 1 1 2 -1 -1 -1 -2 1 1 -2 1 1 2 2 -1 2 -1 -2 1 -1 1 -2 1 -1 1 2 -2 2 1 -1 1 0 -1 -1 -1 1 2 -1 -1 1 2 -1 1 2 1 2 -2 2 1 -1 -1 -2 1 1 1 2 -1 -1 -2 1 -2 1 2 2 -1 1 -2 -1 1 1 -2 -1 1 2 1 -1 -2 2 1 2 0 -1 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 1 -1 1 0 0 0 0 1 -1 1 1 -1 1 0 2 -2 2 -2 2 1 -1 1 -1 1 -1 1 1 -1 1 2 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 -1 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 1 0 0 0 -1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 1 0 0 0 0 0 0 -1 0 1 1 1 0 1 1 1 0 0 0 -1 -1 -1 2 1 1 -2 -1 -1 -1 2 1 1 2 1 1 -2 -2 -1 0 2 1 -1 -1 -1 -2 2 2 2 1 1 1 -1 -1 -1 0 0 -1 1 1 1 0 0 0 0 1 1 1 -1 -1 -1 0 -1 -1 2 1 1 -1 2 1 1 2 1 1 -2 -2 -1 0 0 0 0 0 0 -1 1 1 1 1 1 1 -1 -1 -1 0 0 0 0 0 0 0 1 1 0 0 0 0 -1 0 0 0 1 1 -1 0 1 -1 1 0 -1 1 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 -1 0 0 0 1 1 -1 -1 0 -1 1 1 0 1 1 0 -1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 -1 0 0 1 1 -1 1 0 -1 1 -1 0 1 -1 0 1 0 0 0 1 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 2 2 1 -1 1 1 -2 2 -2 -2 1 -1 -1 1 1 -1 0 2 2 -2 2 2 -1 1 -1 -1 1 -1 -1 1 1 -1 0 1 1 -2 1 1 -1 2 -1 -1 2 -1 -1 2 2 -1 0 1 1 -2 1 -1 -1 2 -1 1 2 -1 1 2 -2 1 0 1 0 -1 1 -1 0 1 -1 1 0 0 0 1 -1 1 0 1 1 -1 0 -1 -1 1 0 1 1 0 1 0 -1 0 2 0 0 -1 0 -1 0 0 0 0 0 0 0 0 -1 0 0 0 1 -1 1 -1 0 0 0 0 1 -1 1 1 -1 1 0 2 2 -2 2 -2 -1 1 -1 1 1 -1 1 1 -1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 0 0 1 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 -1 0 2 1 1 1 1 0 -1 -1 -1 0 -1 -1 0 -1 0 0 2 0 0 0 0 0 0 -1 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 1 0 -1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 1 2 -1 -1 -1 -1 2 -1 -1 -1 2 -1 -1 2 -1 2 2 6 -1 -1 -1 -2 1 -1 -1 -2 1 -1 -2 1 -2 1 2 2 0 -1 -1 -1 1 0 0 0 0 -1 -1 1 -1 1 1 2 -1 -1 0 -1 1 -1 0 -1 1 0 -1 1 0 0 1 2 -1 0 -1 -1 1 0 -1 -1 1 0 0 0 -1 1 1 2 0 0 0 0 0 -1 -1 -1 1 -1 -1 1 -1 1 1 2 1 1 1 2 -1 -1 -1 -2 1 -1 -2 1 -2 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 1 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 -1 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 1 0 0 -1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 1 0 0 0 2 1 2 1 1 -1 -2 -1 -1 1 -2 -2 2 -1 1 1 0 1 1 0 1 -1 -1 0 -1 1 0 -1 1 0 0 1 0 2 1 -1 1 -1 -2 2 -2 2 1 -1 1 1 -1 1 0 1 2 -1 1 -1 -2 1 -1 1 2 -2 2 1 -1 1 0 1 1 1 0 -1 -1 -1 0 1 -1 0 1 0 1 0 0 2 1 1 -1 -1 -2 -2 2 2 -1 1 1 1 1 -1 0 1 1 1 -1 -2 -1 -1 1 2 -1 1 2 1 2 -2 0 1 2 1 -1 -1 -2 -1 1 1 -2 2 2 1 1 -1 0 1 1 -1 1 -2 -1 1 -1 2 1 -1 2 1 -2 2 0 -2 -1 1 1 1 -2 2 2 2 1 1 1 -1 -1 -1 0 -1 -1 1 0 1 -1 1 0 1 1 0 1 0 -1 0 0 -1 -2 1 1 1 -2 1 1 1 2 2 2 -1 -1 -1 0 -1 -1 1 1 2 -1 1 1 2 1 1 2 -1 -2 -2 0 -1 -1 1 -1 2 -1 1 -1 2 1 -1 2 1 -2 2 0 1 1 -2 -1 1 -1 2 1 -1 2 1 -1 -2 2 1 0 1 0 -1 -1 1 0 1 1 -1 0 0 0 -1 1 1 2 0 0 -1 -1 0 0 0 0 0 0 0 0 -1 0 0 0 0 1 -1 -1 1 0 0 0 0 1 1 -1 -1 1 1 0 2 2 -2 -2 2 -1 1 1 -1 1 1 -1 -1 1 1 0 0 0 0 0 0 -1 1 -1 1 1 -1 1 1 -1 1 0 1 1 -1 2 -1 -1 1 -2 1 1 -2 1 2 -1 2 6 1 -1 -2 -1 -1 1 2 1 1 -2 -1 -1 -2 -2 -1 2 0 0 0 0 0 -1 0 -1 0 0 -1 0 0 0 0 6 1 1 1 2 1 -1 -1 -2 -1 -1 -2 -1 -2 -1 -2 2 1 1 1 0 1 -1 -1 0 -1 -1 0 -1 0 -1 0 2 0 0 0 0 0 0 -1 0 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 1 0 -1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 0 1 2 -1 -1 -1 2 -1 -1 -1 2 -1 -1 2 -1 2 -1 2 6 -1 -1 -1 1 -2 -1 -1 1 -2 -1 1 -2 1 -2 2 2 0 -1 -1 1 -1 0 0 0 0 -1 1 -1 1 -1 1 2 -1 -1 0 1 -1 -1 0 1 -1 0 1 -1 0 0 1 2 -1 0 -1 1 -1 0 -1 1 -1 0 0 0 1 -1 1 2 0 0 0 0 0 -1 -1 1 -1 -1 1 -1 1 -1 1 2 1 1 1 -1 2 -1 -1 1 -2 -1 1 -2 1 -2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 1 0 0 0 -1 1 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 -1 0 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 1 0 0 -1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 1 0 0 0 0 0 1 1 0 -1 1 -1 0 1 -1 0 1 -1 0 0 1 0 2 1 -1 -1 1 -2 2 2 -2 1 1 -1 -1 1 1 2 1 2 1 -1 1 -2 -1 1 -1 -2 2 -2 1 -1 1 0 1 2 -1 -1 1 -2 1 1 -1 2 2 -2 -1 1 1 0 -1 -1 1 1 0 -1 1 1 0 1 1 0 -1 0 0 0 -1 -1 1 2 1 -1 1 2 1 1 2 1 -2 -1 -2 0 -1 -1 1 2 -1 -1 1 2 -1 1 2 -1 -2 1 2 0 0 0 0 0 0 -1 1 1 -1 1 1 -1 -1 1 1 2 0 0 0 0 0 -1 -1 0 0 -1 0 0 0 0 0 6 1 1 2 1 1 -1 -2 -1 -1 -2 -1 -1 -2 -2 -1 0 1 -1 1 1 -2 1 -1 -1 2 1 1 -2 -1 2 2 0 -1 1 1 -2 1 1 1 -2 1 -1 2 -1 2 -1 2 6 -1 -1 -2 -1 1 -1 -2 -1 1 -2 -1 1 -2 2 1 2 -1 -1 -1 0 1 -1 -1 0 1 -1 0 1 0 1 0 0 -1 1 1 -1 2 1 1 -1 2 -1 1 -2 1 -2 2 0 1 -1 1 2 -1 1 -1 -2 1 1 2 -1 -2 1 2 0 1 -1 1 -2 1 1 -1 2 -1 1 -2 1 2 -1 2 0 -1 1 1 1 -2 1 1 1 -2 -1 -1 2 -1 2 2 0 -1 1 1 2 -1 1 1 2 -1 -1 -2 1 -2 1 2 6 -1 -1 -2 1 -1 -1 -2 1 -1 -2 1 -1 2 -2 1 2 -1 -1 -1 1 0 -1 -1 1 0 -1 1 0 1 0 0 2 -2 -2 -2 2 2 -1 -1 1 1 -1 1 1 1 1 -1 0 -2 2 -2 2 2 1 -1 1 1 1 -1 -1 1 1 -1 0 -1 0 -1 1 1 0 -1 1 1 0 0 0 1 1 -1 2 -1 -1 -2 1 1 -1 -2 1 1 -2 1 1 2 2 -1 2 -1 0 -1 0 0 0 -1 0 0 0 0 0 0 0 0 12 -2 -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 12 -1 -1 -2 -1 -1 -1 -2 -1 -1 -2 -1 -1 -2 -2 -1 6 -1 1 -2 -1 -1 1 -2 -1 -1 2 1 1 -2 -2 -1 6 -1 0 -1 -1 -1 0 -1 -1 -1 0 0 0 -1 -1 -1 6 -2 1 -1 -1 -1 2 -2 -2 -2 1 1 1 -1 -1 -1 0 1 -1 1 -1 2 1 -1 1 -2 1 -1 2 1 -2 2 0 2 -2 -2 2 2 1 1 -1 -1 -1 1 1 1 1 -1 0 0 -1 -1 1 1 0 0 0 0 -1 1 1 1 1 -1 2 0 -1 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 1 -1 -2 1 -1 1 2 -1 1 2 -1 -2 1 2 0 -2 -2 2 2 2 -1 1 1 1 1 1 1 -1 -1 -1 0 -1 -1 0 1 1 -1 0 1 1 0 1 1 0 0 -1 2 -1 -2 -1 1 1 -2 -1 1 1 -2 2 2 1 1 -1 0 1 1 -1 -1 2 -1 1 1 -2 1 1 -2 -1 2 2 6 1 2 1 1 1 -2 -1 -1 -1 -2 -2 -2 -1 -1 -1 6 2 -2 -2 -2 -2 1 1 1 1 -1 -1 -1 -1 -1 -1 6 2 1 1 1 1 -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 6 -2 2 -2 -2 -2 1 -1 -1 -1 1 1 1 -1 -1 -1 6 -2 -2 2 -2 -2 -1 1 -1 -1 1 -1 -1 1 1 -1 2 -1 -1 0 0 0 -1 0 0 0 0 0 0 0 0 0 12 -1 -2 -1 -1 -1 -2 -1 -1 -1 -2 -2 -2 -1 -1 -1 6 -1 -2 1 -1 -1 -2 1 -1 -1 2 -2 -2 1 1 -1 6 -1 -1 0 -1 -1 -1 0 -1 -1 0 -1 -1 0 0 -1 6 -2 -1 1 -1 -1 -2 2 -2 -2 1 -1 -1 1 1 -1 6 -1 -2 -1 1 -1 -2 -1 1 -1 -2 2 -2 1 -1 1 6 -2 -2 -2 2 -2 -1 -1 1 -1 -1 1 -1 1 -1 1 6 -1 -1 -1 0 -1 -1 -1 0 -1 -1 0 -1 0 -1 0 6 -2 -1 -1 1 -1 -2 -2 2 -2 -1 1 -1 1 -1 1 12 -2 -1 -1 -1 -1 -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 6 -1 -2 -1 -1 1 -2 -1 -1 1 -2 -2 2 -1 1 1 6 -2 -2 -2 -2 2 -1 -1 -1 1 -1 -1 1 -1 1 1 6 -1 -1 -1 -1 0 -1 -1 -1 0 -1 -1 0 -1 0 0 6 -2 -1 -1 -1 1 -2 -2 -2 2 -1 -1 1 -1 1 1 6 0 -1 -1 -1 -1 0 0 0 0 -1 -1 -1 -1 -1 -1 6 1 -2 -1 -1 -1 2 1 1 1 -2 -2 -2 -1 -1 -1 6 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 0 0 0 0 0 -1 0 0 -1 0 0 -1 0 0 0 6 1 1 1 1 2 -1 -1 -1 -2 -1 -1 -2 -1 -2 -2 end lrslib-062/ine/metric/mp6.ine0000600001553200155320000000540512722006424013713 0ustar avismp6.ine *metric polytope on 6 points begin 80 16 integer 0 1 1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 1 0 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 -1 -1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 1 0 0 0 0 0 2 0 0 0 0 0 -1 0 -1 0 0 -1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 1 0 0 0 0 2 0 0 0 0 0 -1 0 0 -1 0 0 -1 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 1 0 0 0 2 0 0 0 0 0 0 -1 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 -1 0 0 2 0 0 0 0 0 0 -1 0 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 -1 0 2 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 -1 2 0 0 0 0 0 0 0 0 0 -1 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 1 0 0 2 0 0 0 0 0 0 0 0 0 -1 0 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 1 0 2 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 1 2 -1 -1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 2 -1 0 -1 0 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 2 -1 0 0 -1 0 0 0 -1 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 2 -1 0 0 0 -1 0 0 0 -1 0 0 0 0 0 0 0 1 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 2 0 -1 -1 0 0 0 0 0 0 -1 0 0 0 0 0 2 0 -1 0 -1 0 0 0 0 0 0 -1 0 0 0 0 2 0 -1 0 0 -1 0 0 0 0 0 0 -1 0 0 0 2 0 0 -1 -1 0 0 0 0 0 0 0 0 -1 0 0 2 0 0 -1 0 -1 0 0 0 0 0 0 0 0 -1 0 2 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 -1 end lrslib-062/ine/test/0000700001553200155320000000000012722006424012202 5ustar avislrslib-062/ine/test/tsp5.ine0000600001553200155320000000163412722006424013600 0ustar avistsp5.ine H-representation linearity 5 1 2 3 4 5 begin 25 11 rational -2 1 1 1 1 0 0 0 0 0 0 -2 1 0 0 0 1 1 1 0 0 0 -3 1 1 1 0 1 1 0 1 0 0 1 -1 0 -1 0 0 -1 0 0 1 0 1 -1 -1 0 0 -1 0 0 0 0 1 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 -1 -1 0 0 -1 0 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 0 2 -1 0 0 0 -1 -1 0 0 0 0 -1 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 1 1 1 0 0 0 0 0 0 0 -2 1 1 1 0 1 1 0 0 0 0 2 -1 -1 -1 0 0 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 0 0 2 -1 0 -1 0 0 -1 0 0 0 0 3 -1 -1 -1 0 -1 -1 0 0 0 0 -1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 -1 1 1 0 0 1 0 0 0 0 0 1 0 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 end lrslib-062/ine/test/cyclic17_8.ine0000600001553200155320000000210012722006424014537 0ustar aviscylic17-8.ine begin 17 9 integer 1 -72 516 -4608 36156 -294912 2349516 -18874368 150850236 1 -63 381 -3087 20901 -151263 1049061 -7411887 51738501 1 -54 264 -1944 10956 -69984 410124 -2519424 14971836 1 -45 165 -1125 4917 -28125 130845 -703125 3370917 1 -36 84 -576 1596 -9216 27084 -147456 445116 1 -27 21 -243 21 -2187 -3219 -19683 -85659 1 -18 -24 -72 -564 -288 -9204 -1152 -142404 1 -9 -51 -9 -699 -9 -9771 -9 -144699 1 0 -60 0 -708 0 -9780 0 -144708 1 9 -51 9 -699 9 -9771 9 -144699 1 18 -24 72 -564 288 -9204 1152 -142404 1 27 21 243 21 2187 -3219 19683 -85659 1 36 84 576 1596 9216 27084 147456 445116 1 45 165 1125 4917 28125 130845 703125 3370917 1 54 264 1944 10956 69984 410124 2519424 14971836 1 63 381 3087 20901 151263 1049061 7411887 51738501 1 72 516 4608 36156 294912 2349516 18874368 150850236 end lrslib-062/ine/test/kkd38_6.ine0000600001553200155320000000453712722006424014063 0ustar aviskkd38_6.ine digits 120 begin 38 7 integer 2919394390774395218459334 -4379091595292464054287507 -36492430237104184038520181 -253987324572060483286422939 -1691789494531258045567157717 -11149182918946980113429731347 -73511950112254277868261780941 7 -21 -133 -777 -4669 -29001 -184813 7 -14 -112 -728 -4564 -28784 -184372 7 -7 -77 -595 -4109 -27307 -179717 7 0 -28 -336 -2884 -21840 -156148 7 7 35 91 -301 -7133 -75445 7 14 112 728 4396 25424 141772 7 21 203 1617 12131 88641 638723 7 28 308 2800 23996 200368 1650188 7 35 427 4319 41251 384335 3535267 7 42 560 6216 65324 670992 6815180 7 49 707 8533 97811 1098349 12216107 7 56 868 11312 140476 1712816 20717068 7 63 1043 14595 195251 2570043 33602843 7 70 1232 18424 264236 3735760 52521932 7 77 1435 22841 349699 5286617 79549555 7 84 1652 27888 454076 7311024 117255692 7 91 1883 33607 579971 9909991 168778163 7 98 2128 40040 730156 13197968 237900748 7 105 2387 47229 907571 17303685 329136347 7 112 2660 55216 1115324 22370992 447815180 7 119 2947 64043 1356691 28559699 600178027 7 126 3248 73752 1635116 36046416 793474508 7 133 3563 84385 1954211 45025393 1036066403 7 140 3892 95984 2317756 55709360 1337536012 7 147 4235 108591 2729699 68330367 1708799555 7 154 4592 122248 3194156 83140624 2162225612 7 161 4963 136997 3715411 100413341 2711758603 7 168 5348 152880 4297916 120443568 3373047308 7 175 5747 169939 4946291 143549035 4163578427 7 182 6160 188216 5665324 170070992 5102815180 7 189 6587 207753 6459971 200375049 6212340947 7 196 7028 228592 7335356 234852016 7516007948 7 203 7483 250775 8296771 273918743 9040090963 7 210 7952 274344 9349676 318018960 10813446092 7 217 8435 299341 10499699 367624117 12867674555 7 224 8932 325808 11752636 423234224 15237291532 -2919394390774395218459333 4379091595292464054287507 36492430237104184038520181 253987324572060483286422939 1691789494531258045567157717 11149182918946980113429731347 73511950112254277868261780941 end lrslib-062/ine/test/kq20_11a.ine0000600001553200155320000000153312722006424014122 0ustar aviskq20_11.ine H-representation nonnegative begin 10 11 integer 10000 -915 -828 -303 -632 -786 -231 -12 -568 -351 -308 10000 -930 -217 -480 -704 -700 -91 -441 -927 -33 -330 10000 -765 -616 -962 -274 -276 -39 -924 -541 -444 -838 10000 -747 -470 -506 -329 -481 -425 -679 -140 -764 -960 10000 -243 -664 -760 -333 -456 -686 -717 -137 -721 -833 10000 -682 -107 -380 -720 -382 -920 -164 -220 -640 -262 10000 -145 -942 -873 -570 -973 -365 -685 -932 -424 -928 10000 -183 -612 -402 -869 -681 -539 -941 -513 -290 -622 10000 -669 -694 -353 -941 -209 -572 -580 -822 -964 -725 10000 -188 -646 -87 -552 -330 -19 -976 -609 -965 -158 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 end lrslib-062/ine/test/in5.ine0000600001553200155320000000057612722006424013404 0ustar avisin5.ine begin 14 10 integer 10 2 3 -8 -1 -2 -3 -3 -2 -2 10 -6 33 8 -2 -2 0 0 2 0 10 93 3 -11 3 -2 -1 -1 -1 -3 5 -9 21 23 -4 -2 -3 0 0 1 27 31 23 5 -4 -1 3 9 11 -12 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 end nonnegative verbose lrslib-062/ine/test/in2.ine0000600001553200155320000000041712722006424013373 0ustar avisin2.ine begin 16 6 integer 1 -1 0 -1 0 0 1 -1 0 0 0 -1 1 0 -1 -1 0 0 1 0 -1 0 -1 0 1 0 0 0 -1 -1 0 -1 1 0 0 1 0 1 -1 0 1 0 0 0 0 -1 1 1 0 0 1 1 -1 0 0 1 0 1 0 -1 2 -1 -1 -1 -1 -1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 end nonnegative lrslib-062/ine/test/mit31_20.ine0000600001553200155320000000274512722006424014147 0ustar avismit31-20.ine H-representation digits 80 begin 31 20 integer 1 6 -12 -3 0 0 0 12 8 0 0 -12 -3 0 0 0 6 0 -1 0 1 -2 1 -2 2 0 4 -4 4 2 0 -2 0 -1 2 -2 0 0 0 -1 1 0 3 0 0 -2 0 0 2 0 -4 0 0 1 0 2 0 -2 0 1 1 0 -1 2 2 0 0 0 0 -2 0 -2 0 -1 2 0 0 0 0 1 1 0 3 -2 2 0 0 0 0 -2 0 2 0 -1 -2 0 0 0 0 1 1 2 1 0 0 -2 0 0 -2 0 0 0 0 1 0 0 0 2 0 -1 1 2 5 -2 -2 4 -4 -4 0 -2 8 -2 0 -1 -2 -2 0 4 0 -1 1 2 -3 2 2 0 -4 -4 4 2 0 2 0 -1 -2 2 0 0 0 -1 1 2 1 -2 2 0 -4 4 -4 2 0 -2 0 -1 2 2 0 0 0 -1 1 4 -1 -2 -2 4 0 0 -4 2 0 2 0 -1 2 0 0 -4 0 1 1 4 -5 0 0 -2 0 0 2 0 4 0 0 1 0 -2 0 -2 0 1 1 6 -11 -2 -2 4 4 4 8 -2 -8 -2 0 -1 -2 2 0 4 0 -1 1 -6 -12 -3 0 0 0 -12 -8 0 0 -12 -3 0 0 0 -6 0 -1 0 1 -4 -4 -1 0 0 0 0 0 0 0 4 1 0 0 0 4 0 1 0 1 -2 0 1 0 0 0 4 0 0 0 0 1 0 0 0 -2 0 -1 0 1 -2 4 -3 0 0 0 -4 8 0 0 4 -3 0 0 0 -2 0 -1 0 1 0 4 -1 0 0 0 0 0 0 0 -4 1 0 0 0 0 0 1 0 1 0 0 3 0 0 0 0 0 0 0 0 -3 0 0 0 0 0 1 0 1 2 4 -3 0 0 0 4 -8 0 0 4 -3 0 0 0 2 0 -1 0 1 2 0 1 0 0 0 -4 0 0 0 0 1 0 0 0 2 0 -1 0 1 4 -4 -1 0 0 0 0 0 0 0 4 1 0 0 0 -4 0 1 0 1 -6 -11 -2 -2 -4 -4 -4 -8 -2 -8 -2 0 -1 -2 -2 0 -4 0 -1 1 -4 -5 0 0 2 0 0 -2 0 4 0 0 1 0 2 0 2 0 1 1 -4 -1 -2 -2 -4 0 0 4 2 0 2 0 -1 2 0 0 4 0 1 1 -2 -3 2 2 0 4 4 -4 2 0 2 0 -1 -2 -2 0 0 0 -1 1 -2 1 0 0 2 0 0 2 0 0 0 0 1 0 0 0 -2 0 -1 1 -2 1 2 -2 0 -4 4 4 -2 0 2 0 -1 2 -2 0 0 0 -1 1 -2 5 -2 -2 -4 4 4 0 -2 8 -2 0 -1 -2 2 0 -4 0 -1 1 0 3 2 -2 0 0 0 0 2 0 -2 0 -1 -2 0 0 0 0 1 1 0 3 0 0 2 0 0 -2 0 -4 0 0 1 0 -2 0 2 0 1 1 2 1 2 -2 0 4 -4 -4 -2 0 2 0 -1 2 2 0 0 0 -1 end lrslib-062/ine/test/in3.ine0000600001553200155320000000036512722006424013376 0ustar avisin3.ine begin 13 7 integer 0 1 -1 0 1 0 0 0 0 -1 1 0 0 1 0 -1 1 0 1 0 0 0 -1 0 1 0 1 0 0 0 1 -1 0 0 1 0 1 1 0 -1 0 0 0 0 0 0 -1 1 1 0 1 0 1 0 -1 0 0 0 0 0 1 -1 1 0 0 1 1 0 0 -1 0 0 0 0 1 1 -1 0 1 0 -1 0 1 0 12 -1 -1 -1 -1 -1 -1 end lrslib-062/ine/test/in4.ine0000600001553200155320000000042412722006424013373 0ustar avisin4.ine begin 12 8 integer 10 -8 -1 -2 -3 -3 -2 -2 10 8 -2 -2 0 0 2 0 10 -11 3 -2 -1 -1 -1 -3 5 23 -4 -2 -3 0 0 1 27 5 -4 -1 3 9 11 -12 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 end nonnegative lrslib-062/ine/test/trunc10.ine0000600001553200155320000000601712722006424014201 0ustar avistrunc10.ine * delta= 1/10 eps0=1/20 scut=1/40 pcut=1/40 * begin 112 11 integer 3 5 -5 -5 -5 -5 -5 -5 -5 -5 20 3 -5 -5 -5 -5 -5 -5 -5 -5 -5 20 3 0 10 0 0 0 0 0 0 0 20 3 0 20 0 0 0 0 0 0 0 10 3 5 20 -5 -5 -5 -5 -5 -5 -5 -5 3 -5 20 -5 -5 -5 -5 -5 -5 -5 -5 3 0 20 10 0 0 0 0 0 0 0 3 0 20 0 10 0 0 0 0 0 0 3 0 20 0 0 10 0 0 0 0 0 3 0 20 0 0 0 10 0 0 0 0 3 0 20 0 0 0 0 10 0 0 0 3 0 20 0 0 0 0 0 10 0 0 3 0 20 0 0 0 0 0 0 10 0 3 0 0 10 0 0 0 0 0 0 20 3 0 0 20 0 0 0 0 0 0 10 3 5 -5 20 -5 -5 -5 -5 -5 -5 -5 3 -5 -5 20 -5 -5 -5 -5 -5 -5 -5 3 0 10 20 0 0 0 0 0 0 0 3 0 0 20 10 0 0 0 0 0 0 3 0 0 20 0 10 0 0 0 0 0 3 0 0 20 0 0 10 0 0 0 0 3 0 0 20 0 0 0 10 0 0 0 3 0 0 20 0 0 0 0 10 0 0 3 0 0 20 0 0 0 0 0 10 0 3 0 0 0 10 0 0 0 0 0 20 3 0 0 0 20 0 0 0 0 0 10 3 5 -5 -5 20 -5 -5 -5 -5 -5 -5 3 -5 -5 -5 20 -5 -5 -5 -5 -5 -5 3 0 10 0 20 0 0 0 0 0 0 3 0 0 10 20 0 0 0 0 0 0 3 0 0 0 20 10 0 0 0 0 0 3 0 0 0 20 0 10 0 0 0 0 3 0 0 0 20 0 0 10 0 0 0 3 0 0 0 20 0 0 0 10 0 0 3 0 0 0 20 0 0 0 0 10 0 3 0 0 0 0 10 0 0 0 0 20 3 0 0 0 0 20 0 0 0 0 10 3 5 -5 -5 -5 20 -5 -5 -5 -5 -5 3 -5 -5 -5 -5 20 -5 -5 -5 -5 -5 3 0 10 0 0 20 0 0 0 0 0 3 0 0 10 0 20 0 0 0 0 0 3 0 0 0 10 20 0 0 0 0 0 3 0 0 0 0 20 10 0 0 0 0 3 0 0 0 0 20 0 10 0 0 0 3 0 0 0 0 20 0 0 10 0 0 3 0 0 0 0 20 0 0 0 10 0 3 0 0 0 0 0 10 0 0 0 20 3 0 0 0 0 0 20 0 0 0 10 3 5 -5 -5 -5 -5 20 -5 -5 -5 -5 3 -5 -5 -5 -5 -5 20 -5 -5 -5 -5 3 0 10 0 0 0 20 0 0 0 0 3 0 0 10 0 0 20 0 0 0 0 3 0 0 0 10 0 20 0 0 0 0 3 0 0 0 0 10 20 0 0 0 0 3 0 0 0 0 0 20 10 0 0 0 3 0 0 0 0 0 20 0 10 0 0 3 0 0 0 0 0 20 0 0 10 0 3 0 0 0 0 0 0 10 0 0 20 3 0 0 0 0 0 0 20 0 0 10 3 5 -5 -5 -5 -5 -5 20 -5 -5 -5 3 -5 -5 -5 -5 -5 -5 20 -5 -5 -5 3 0 10 0 0 0 0 20 0 0 0 3 0 0 10 0 0 0 20 0 0 0 3 0 0 0 10 0 0 20 0 0 0 3 0 0 0 0 10 0 20 0 0 0 3 0 0 0 0 0 10 20 0 0 0 3 0 0 0 0 0 0 20 10 0 0 3 0 0 0 0 0 0 20 0 10 0 3 0 0 0 0 0 0 0 10 0 20 3 0 0 0 0 0 0 0 20 0 10 3 5 -5 -5 -5 -5 -5 -5 20 -5 -5 3 -5 -5 -5 -5 -5 -5 -5 20 -5 -5 3 0 10 0 0 0 0 0 20 0 0 3 0 0 10 0 0 0 0 20 0 0 3 0 0 0 10 0 0 0 20 0 0 3 0 0 0 0 10 0 0 20 0 0 3 0 0 0 0 0 10 0 20 0 0 3 0 0 0 0 0 0 10 20 0 0 3 0 0 0 0 0 0 0 20 10 0 3 0 0 0 0 0 0 0 0 10 20 3 0 0 0 0 0 0 0 0 20 10 3 5 -5 -5 -5 -5 -5 -5 -5 20 -5 3 -5 -5 -5 -5 -5 -5 -5 -5 20 -5 3 0 10 0 0 0 0 0 0 20 0 3 0 0 10 0 0 0 0 0 20 0 3 0 0 0 10 0 0 0 0 20 0 3 0 0 0 0 10 0 0 0 20 0 3 0 0 0 0 0 10 0 0 20 0 3 0 0 0 0 0 0 10 0 20 0 3 0 0 0 0 0 0 0 10 20 0 1 10 -10 -10 -10 -10 -10 -10 -10 -10 -10 1 -10 -10 -10 -10 -10 -10 -10 -10 -10 -10 39 40 0 0 0 0 0 0 0 0 0 39 -40 0 0 0 0 0 0 0 0 0 1 0 8 0 0 0 0 0 0 0 0 1 0 0 8 0 0 0 0 0 0 0 1 0 0 0 8 0 0 0 0 0 0 1 0 0 0 0 8 0 0 0 0 0 1 0 0 0 0 0 8 0 0 0 0 1 0 0 0 0 0 0 8 0 0 0 1 0 0 0 0 0 0 0 8 0 0 1 0 0 0 0 0 0 0 0 8 0 1 0 0 0 0 0 0 0 0 0 8 7 0 -8 0 0 0 0 0 0 0 0 7 0 0 -8 0 0 0 0 0 0 0 7 0 0 0 -8 0 0 0 0 0 0 7 0 0 0 0 -8 0 0 0 0 0 7 0 0 0 0 0 -8 0 0 0 0 7 0 0 0 0 0 0 -8 0 0 0 7 0 0 0 0 0 0 0 -8 0 0 7 0 0 0 0 0 0 0 0 -8 0 7 0 0 0 0 0 0 0 0 0 -8 end printcobasis startingcobasis 82 83 84 85 86 87 88 89 90 112 lrslib-062/ine/test/inf.ine0000600001553200155320000000011512722006424013452 0ustar avis*infeasible system begin 4 4 integer -1 -1 -1 -1 0 1 0 0 0 0 1 0 0 0 0 1 end lrslib-062/ine/test/in7.ine0000600001553200155320000000150612722006424013400 0ustar avisin7.ine begin 20 11 integer 10000 -915 -828 -303 -632 -786 -231 -12 -568 -351 -308 10000 -930 -217 -480 -704 -700 -91 -441 -927 -33 -330 10000 -765 -616 -962 -274 -276 -39 -924 -541 -444 -838 10000 -747 -470 -506 -329 -481 -425 -679 -140 -764 -960 10000 -243 -664 -760 -333 -456 -686 -717 -137 -721 -833 10000 -682 -107 -380 -720 -382 -920 -164 -220 -640 -262 10000 -145 -942 -873 -570 -973 -365 -685 -932 -424 -928 10000 -183 -612 -402 -869 -681 -539 -941 -513 -290 -622 10000 -669 -694 -353 -941 -209 -572 -580 -822 -964 -725 10000 -188 -646 -87 -552 -330 -19 -976 -609 -965 -158 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 end nonnegative lrslib-062/ine/test/in0.ine0000600001553200155320000000023412722006424013366 0ustar avisin0.ine begin 8 6 integer 9 -2 -3 -3 -2 -2 9 -2 0 0 2 0 9 -2 -1 -1 -1 -3 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 end nonegative lrslib-062/ine/test/cross4.ine0000600001553200155320000000040312722006424014113 0ustar aviscross4.ine H-representation begin 16 5 integer 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 end lrslib-062/ine/test/truss2.ine0000600001553200155320000000363712722006424014154 0ustar avistruss *example H-representation begin 12 7 rational 0 -1107121100 -7094932300 -509288900 1581271400 -2991877000 121979199 0 -1107129000 7032470300 34962123 1920391300 -2980227600 193723910 0 1475107100 151545650 -3894269700 384905410 5325424500 -2983380400 0 990727340 29341662 -1558120400 283839350 961245970 4544466400 0 -1839194200 389088800 -7787625500 -3393884800 -3104674100 -993856820 0 990727340 29341662 -1558120400 283839350 961245970 4544466400 0 105491630 -60552183 -2291864200 6864742100 1279634800 -3346341200 0 -1223784100 35749168 -1440369600 930993540 -3004955300 -25679281 0 -935892200 -129544890 1528908700 2954193399 -2958306400 427239050 0 29586836 -16982840 -642790400 1925328000 358894280 -938535540 0 0 0 0 0 0 0 0 990727340 29341662 -1558120400 283839350 961245970 4544466400 end lrslib-062/ine/test/metric80_16.ine0000600001553200155320000000546012722006424014647 0ustar avismetric80_16.ine H-representation *metric polytope on 6 points linearity 3 1 2 3 begin 80 16 integer 0 1 1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 1 0 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 0 1 6 0 0 0 0 0 -1 -1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 1 0 0 0 0 0 6 0 0 0 0 0 -1 0 -1 0 0 -1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 1 0 0 0 0 6 0 0 0 0 0 -1 0 0 -1 0 0 -1 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 1 0 0 0 6 0 0 0 0 0 0 -1 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 -1 0 0 6 0 0 0 0 0 0 -1 0 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 -1 0 6 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 -1 6 0 0 0 0 0 0 0 0 0 -1 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 1 0 0 6 0 0 0 0 0 0 0 0 0 -1 0 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 1 0 6 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 1 6 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 1 6 -1 -1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 6 -1 0 -1 0 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 6 -1 0 0 -1 0 0 0 -1 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 6 -1 0 0 0 -1 0 0 0 -1 0 0 0 0 0 0 0 1 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 6 0 -1 -1 0 0 0 0 0 0 -1 0 0 0 0 0 6 0 -1 0 -1 0 0 0 0 0 0 -1 0 0 0 0 6 0 -1 0 0 -1 0 0 0 0 0 0 -1 0 0 0 6 0 0 -1 -1 0 0 0 0 0 0 0 0 -1 0 0 6 0 0 -1 0 -1 0 0 0 0 0 0 0 0 -1 0 6 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 -1 end lrslib-062/ine/test/metric40_11.ine0000600001553200155320000000205212722006424014630 0ustar avismetric40-11.ine *metric polytope on 5 points H-representation begin 40 11 integer 0 0 0 1 1 0 0 0 0 0 -1 0 0 1 0 1 0 0 0 0 -1 0 0 0 1 1 0 0 0 0 -1 0 0 0 1 0 0 1 0 0 -1 0 0 0 0 1 0 1 0 0 -1 0 0 0 0 0 1 1 0 0 -1 0 0 0 0 0 0 -1 0 0 1 0 0 1 0 0 0 0 0 0 -1 1 0 0 0 0 0 1 0 0 0 0 0 0 -1 1 0 0 1 0 0 -1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 1 1 0 0 0 0 0 -1 0 1 0 1 0 2 0 0 0 0 -1 -1 0 -1 0 0 0 -1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 1 0 0 0 1 -1 0 0 0 0 0 1 0 0 -1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 -1 1 0 0 0 0 0 -1 1 0 1 0 0 2 -1 -1 0 0 -1 0 0 0 0 0 2 0 0 0 0 -1 0 -1 0 -1 0 0 -1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 1 0 0 0 1 0 -1 0 0 0 0 1 0 2 -1 0 0 -1 0 0 -1 0 0 0 0 0 0 0 0 1 -1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 -1 0 0 1 -1 0 0 0 0 1 0 0 2 -1 0 -1 0 0 -1 0 0 0 0 2 0 0 0 0 0 -1 -1 0 0 -1 0 0 0 0 0 1 1 0 -1 0 0 0 0 0 0 0 1 0 1 0 -1 0 0 1 -1 0 0 1 0 0 0 0 0 0 1 0 0 -1 0 0 1 0 0 0 2 0 -1 0 -1 0 0 0 0 -1 0 0 0 0 0 0 0 1 1 0 0 -1 0 1 0 -1 0 0 1 0 0 0 0 2 0 0 -1 -1 0 0 0 0 0 -1 2 0 -1 -1 0 0 0 0 -1 0 0 2 0 0 0 0 0 0 0 -1 -1 -1 end lrslib-062/ine/test/kq20_11.ine0000600001553200155320000000153312722006424013761 0ustar aviskq20_11.ine H-representation nonnegative begin 10 11 integer 10000 -915 -828 -303 -632 -786 -231 -12 -568 -351 -308 10000 -930 -217 -480 -704 -700 -91 -441 -927 -33 -330 10000 -765 -616 -962 -274 -276 -39 -924 -541 -444 -838 10000 -747 -470 -506 -329 -481 -425 -679 -140 -764 -960 10000 -243 -664 -760 -333 -456 -686 -717 -137 -721 -833 10000 -682 -107 -380 -720 -382 -920 -164 -220 -640 -262 10000 -145 -942 -873 -570 -973 -365 -685 -932 -424 -928 10000 -183 -612 -402 -869 -681 -539 -941 -513 -290 -622 10000 -669 -694 -353 -941 -209 -572 -580 -822 -964 -725 10000 -188 -646 -87 -552 -330 -19 -976 -609 -965 -158 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 end lrslib-062/ine/test/in1.ine0000600001553200155320000000133112722006424013366 0ustar avisin1.ine begin 34 5 integer 1 -299 -534 815 807 1 -887 -399 -867 -543 1 683 632 958 -181 1 -756 681 -658 470 1 -99 135 -921 -825 1 -795 -874 -286 732 1 43 -567 588 -143 1 -955 414 -159 -378 1 -235 -695 947 166 1 957 853 -194 -258 1 487 -914 -100 -991 1 -515 -786 -169 200 1 954 -758 -178 985 1 505 -970 400 -211 1 714 997 401 661 1 -475 618 459 775 1 -219 704 -111 -876 1 152 -390 -629 984 1 -240 -621 -62 583 1 -76 531 -606 -676 1 490 -519 -240 -109 1 -635 860 -798 825 1 5 49 781 895 1 495 490 -774 866 1 -78 69 853 861 1 -340 228 -374 498 1 390 -12 -524 -408 1 -382 -42 -376 264 1 -299 -731 -283 -518 1 892 -581 654 -439 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 end nonnegative printcobasis 10 lrslib-062/ine/test/diamond.ine0000600001553200155320000000023712722006424014316 0ustar avisdiamond.ine 93.7.6 Unit diamond centred at origin Last two inequalities define vertex (-1/2,0) begin 4 3 rational 1/2 -1 -1 1/2 -1 1 1/2 1 -1 1/2 1 1 end lrslib-062/ine/test/in6.ine0000600001553200155320000000120512722006424013373 0ustar avisin6.ine begin 23 11 integer 1 1 1 1 1 1 1 1 1 1 0 2 -2 -3 8 1 2 3 3 2 2 -9 3 6 -3 -8 2 2 0 0 -2 0 -9 4 -9 -3 1 -3 2 1 1 1 3 -9 5 9 -2 -2 4 2 3 0 0 -1 -5 6 -3 -2 -5 4 1 -3 -9 -1 2 -7 7 -9 -3 -5 -2 2 4 -2 4 -1 -7 8 -8 -4 5 -2 2 4 -2 4 -1 -7 9 -7 -5 -5 -2 2 4 -2 4 -1 -7 10 -6 -6 5 -2 2 4 -2 4 -1 -7 11 -5 -7 -5 -2 2 4 -2 4 -1 -7 12 -4 -8 5 -2 2 4 -2 4 -1 -7 13 -3 -9 -5 -2 2 4 -2 4 -1 -7 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 end nonnegative lrslib-062/ine/test/trunc7.ine0000600001553200155320000000230012722006424014116 0ustar avistrunc7.ine * delta= 1/7 eps0=1/14 scut=1/28 pcut=1/28 * begin 58 8 integer 6 7 -7 -7 -7 -7 -7 28 6 -7 -7 -7 -7 -7 -7 28 3 0 7 0 0 0 0 14 3 0 14 0 0 0 0 7 6 7 28 -7 -7 -7 -7 -7 6 -7 28 -7 -7 -7 -7 -7 3 0 14 7 0 0 0 0 3 0 14 0 7 0 0 0 3 0 14 0 0 7 0 0 3 0 14 0 0 0 7 0 3 0 0 7 0 0 0 14 3 0 0 14 0 0 0 7 6 7 -7 28 -7 -7 -7 -7 6 -7 -7 28 -7 -7 -7 -7 3 0 7 14 0 0 0 0 3 0 0 14 7 0 0 0 3 0 0 14 0 7 0 0 3 0 0 14 0 0 7 0 3 0 0 0 7 0 0 14 3 0 0 0 14 0 0 7 6 7 -7 -7 28 -7 -7 -7 6 -7 -7 -7 28 -7 -7 -7 3 0 7 0 14 0 0 0 3 0 0 7 14 0 0 0 3 0 0 0 14 7 0 0 3 0 0 0 14 0 7 0 3 0 0 0 0 7 0 14 3 0 0 0 0 14 0 7 6 7 -7 -7 -7 28 -7 -7 6 -7 -7 -7 -7 28 -7 -7 3 0 7 0 0 14 0 0 3 0 0 7 0 14 0 0 3 0 0 0 7 14 0 0 3 0 0 0 0 14 7 0 3 0 0 0 0 0 7 14 3 0 0 0 0 0 14 7 6 7 -7 -7 -7 -7 28 -7 6 -7 -7 -7 -7 -7 28 -7 3 0 7 0 0 0 14 0 3 0 0 7 0 0 14 0 3 0 0 0 7 0 14 0 3 0 0 0 0 7 14 0 1 7 -7 -7 -7 -7 -7 -7 1 -7 -7 -7 -7 -7 -7 -7 27 28 0 0 0 0 0 0 27 -28 0 0 0 0 0 0 5 0 28 0 0 0 0 0 5 0 0 28 0 0 0 0 5 0 0 0 28 0 0 0 5 0 0 0 0 28 0 0 5 0 0 0 0 0 28 0 5 0 0 0 0 0 0 28 23 0 -28 0 0 0 0 0 23 0 0 -28 0 0 0 0 23 0 0 0 -28 0 0 0 23 0 0 0 0 -28 0 0 23 0 0 0 0 0 -28 0 23 0 0 0 0 0 0 -28 end lrslib-062/ine/cocoa13/0000700001553200155320000000000012722006424012453 5ustar avislrslib-062/ine/cocoa13/bv4.ine0000600001553200155320000000245512722006423013652 0ustar avis*ext form for perm H-representation linearity 11 1 2 3 4 5 6 7 8 9 10 11 begin 27 21 integer 0 4 0 0 0 3 0 0 0 2 0 0 0 1 0 0 0 -1 0 0 0 0 0 4 0 0 0 3 0 0 0 2 0 0 0 1 0 0 0 -1 0 0 0 0 0 4 0 0 0 3 0 0 0 2 0 0 0 1 0 0 0 -1 0 0 0 0 0 4 0 0 0 3 0 0 0 2 0 0 0 1 0 0 0 -1 -1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 -1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 -1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 -1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 end lrslib-062/ine/cocoa13/perm5.ine0000600001553200155320000000105012722006423014175 0ustar avis*permutahedron n=5 H-representation linearity 1 1 begin 31 6 integer -15 1 1 1 1 1 14 -1 -1 -1 -1 0 14 -1 -1 -1 0 -1 14 -1 -1 0 -1 -1 14 -1 0 -1 -1 -1 14 0 -1 -1 -1 -1 12 -1 -1 -1 0 0 12 -1 -1 0 -1 0 12 -1 -1 0 0 -1 12 -1 0 -1 -1 0 12 -1 0 -1 0 -1 12 -1 0 0 -1 -1 12 0 -1 -1 -1 0 12 0 -1 -1 0 -1 12 0 -1 0 -1 -1 12 0 0 -1 -1 -1 9 -1 -1 0 0 0 9 -1 0 -1 0 0 9 -1 0 0 -1 0 9 -1 0 0 0 -1 9 0 -1 -1 0 0 9 0 -1 0 -1 0 9 0 -1 0 0 -1 9 0 0 -1 -1 0 9 0 0 -1 0 -1 9 0 0 0 -1 -1 5 -1 0 0 0 0 5 0 -1 0 0 0 5 0 0 -1 0 0 5 0 0 0 -1 0 5 0 0 0 0 -1 end linearity 1 1 lrslib-062/ine/cocoa13/perm4.ine0000600001553200155320000000037612722006423014206 0ustar avis*permutahedron n=4 H-representation begin 15 5 integer -10 1 1 1 1 9 -1 -1 -1 0 9 -1 -1 0 -1 9 -1 0 -1 -1 9 0 -1 -1 -1 7 -1 -1 0 0 7 -1 0 -1 0 7 -1 0 0 -1 7 0 -1 -1 0 7 0 -1 0 -1 7 0 0 -1 -1 4 -1 0 0 0 4 0 -1 0 0 4 0 0 -1 0 4 0 0 0 -1 end linearity 1 1 lrslib-062/ine/cocoa13/bv5.ine0000600001553200155320000000513612722006423013652 0ustar avis*ext form for perm H-representation linearity 14 1 2 3 4 5 6 7 8 9 10 11 12 13 14 begin 39 31 integer 0 5 0 0 0 0 4 0 0 0 0 3 0 0 0 0 2 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 0 0 5 0 0 0 0 4 0 0 0 0 3 0 0 0 0 2 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 0 0 5 0 0 0 0 4 0 0 0 0 3 0 0 0 0 2 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 0 0 5 0 0 0 0 4 0 0 0 0 3 0 0 0 0 2 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 0 0 5 0 0 0 0 4 0 0 0 0 3 0 0 0 0 2 0 0 0 0 1 0 0 0 0 -1 -1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 -1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 end lrslib-062/ine/cocoa13/c40-20.ext0000600001553200155320000002634012722006423014010 0ustar avis*cyclic polytope n=40, d=21 V-representation begin 40 21 integer 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 1 3 9 27 81 243 729 2187 6561 19683 59049 177147 531441 1594323 4782969 14348907 43046721 129140163 387420489 1162261467 3486784401 1 4 16 64 256 1024 4096 16384 65536 262144 1048576 4194304 16777216 67108864 268435456 1073741824 4294967296 17179869184 68719476736 274877906944 1099511627776 1 5 25 125 625 3125 15625 78125 390625 1953125 9765625 48828125 244140625 1220703125 6103515625 30517578125 152587890625 762939453125 3814697265625 19073486328125 95367431640625 1 6 36 216 1296 7776 46656 279936 1679616 10077696 60466176 362797056 2176782336 13060694016 78364164096 470184984576 2821109907456 16926659444736 101559956668416 609359740010496 3656158440062976 1 7 49 343 2401 16807 117649 823543 5764801 40353607 282475249 1977326743 13841287201 96889010407 678223072849 4747561509943 33232930569601 232630513987207 1628413597910449 11398895185373143 79792266297612001 1 8 64 512 4096 32768 262144 2097152 16777216 134217728 1073741824 8589934592 68719476736 549755813888 4398046511104 35184372088832 281474976710656 2251799813685248 18014398509481984 144115188075855872 1152921504606846976 1 9 81 729 6561 59049 531441 4782969 43046721 387420489 3486784401 31381059609 282429536481 2541865828329 22876792454961 205891132094649 1853020188851841 16677181699666569 150094635296999121 1350851717672992089 12157665459056928801 1 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000 100000000000 1000000000000 10000000000000 100000000000000 1000000000000000 10000000000000000 100000000000000000 1000000000000000000 10000000000000000000 100000000000000000000 1 11 121 1331 14641 161051 1771561 19487171 214358881 2357947691 25937424601 285311670611 3138428376721 34522712143931 379749833583241 4177248169415651 45949729863572161 505447028499293771 5559917313492231481 61159090448414546291 672749994932560009201 1 12 144 1728 20736 248832 2985984 35831808 429981696 5159780352 61917364224 743008370688 8916100448256 106993205379072 1283918464548864 15407021574586368 184884258895036416 2218611106740436992 26623333280885243904 319479999370622926848 3833759992447475122176 1 13 169 2197 28561 371293 4826809 62748517 815730721 10604499373 137858491849 1792160394037 23298085122481 302875106592253 3937376385699289 51185893014090757 665416609183179841 8650415919381337933 112455406951957393129 1461920290375446110677 19004963774880799438801 1 14 196 2744 38416 537824 7529536 105413504 1475789056 20661046784 289254654976 4049565169664 56693912375296 793714773254144 11112006825558016 155568095557812224 2177953337809371136 30491346729331195904 426878854210636742656 5976303958948914397184 83668255425284801560576 1 15 225 3375 50625 759375 11390625 170859375 2562890625 38443359375 576650390625 8649755859375 129746337890625 1946195068359375 29192926025390625 437893890380859375 6568408355712890625 98526125335693359375 1477891880035400390625 22168378200531005859375 332525673007965087890625 1 16 256 4096 65536 1048576 16777216 268435456 4294967296 68719476736 1099511627776 17592186044416 281474976710656 4503599627370496 72057594037927936 1152921504606846976 18446744073709551616 295147905179352825856 4722366482869645213696 75557863725914323419136 1208925819614629174706176 1 17 289 4913 83521 1419857 24137569 410338673 6975757441 118587876497 2015993900449 34271896307633 582622237229761 9904578032905937 168377826559400929 2862423051509815793 48661191875666868481 827240261886336764177 14063084452067724991009 239072435685151324847153 4064231406647572522401601 1 18 324 5832 104976 1889568 34012224 612220032 11019960576 198359290368 3570467226624 64268410079232 1156831381426176 20822964865671168 374813367582081024 6746640616477458432 121439531096594251776 2185911559738696531968 39346408075296537575424 708235345355337676357632 12748236216396078174437376 1 19 361 6859 130321 2476099 47045881 893871739 16983563041 322687697779 6131066257801 116490258898219 2213314919066161 42052983462257059 799006685782884121 15181127029874798299 288441413567621167681 5480386857784802185939 104127350297911241532841 1978419655660313589123979 37589973457545958193355601 1 20 400 8000 160000 3200000 64000000 1280000000 25600000000 512000000000 10240000000000 204800000000000 4096000000000000 81920000000000000 1638400000000000000 32768000000000000000 655360000000000000000 13107200000000000000000 262144000000000000000000 5242880000000000000000000 104857600000000000000000000 1 21 441 9261 194481 4084101 85766121 1801088541 37822859361 794280046581 16679880978201 350277500542221 7355827511386641 154472377739119461 3243919932521508681 68122318582951682301 1430568690241985328321 30041942495081691894741 630880792396715529789561 13248496640331026125580781 278218429446951548637196401 1 22 484 10648 234256 5153632 113379904 2494357888 54875873536 1207269217792 26559922791424 584318301411328 12855002631049216 282810057883082752 6221821273427820544 136880068015412051968 3011361496339065143296 66249952919459433152512 1457498964228107529355264 32064977213018365645815808 705429498686404044207947776 1 23 529 12167 279841 6436343 148035889 3404825447 78310985281 1801152661463 41426511213649 952809757913927 21914624432020321 504036361936467383 11592836324538749809 266635235464391245607 6132610415680998648961 141050039560662968926103 3244150909895248285300369 74615470927590710561908487 1716155831334586342923895201 1 24 576 13824 331776 7962624 191102976 4586471424 110075314176 2641807540224 63403380965376 1521681143169024 36520347436056576 876488338465357824 21035720123168587776 504857282956046106624 12116574790945106558976 290797794982682557415424 6979147079584381377970176 167499529910025153071284224 4019988717840603673710821376 1 25 625 15625 390625 9765625 244140625 6103515625 152587890625 3814697265625 95367431640625 2384185791015625 59604644775390625 1490116119384765625 37252902984619140625 931322574615478515625 23283064365386962890625 582076609134674072265625 14551915228366851806640625 363797880709171295166015625 9094947017729282379150390625 1 26 676 17576 456976 11881376 308915776 8031810176 208827064576 5429503678976 141167095653376 3670344486987776 95428956661682176 2481152873203736576 64509974703297150976 1677259342285725925376 43608742899428874059776 1133827315385150725554176 29479510200013918864408576 766467265200361890474622976 19928148895209409152340197376 1 27 729 19683 531441 14348907 387420489 10460353203 282429536481 7625597484987 205891132094649 5559060566555523 150094635296999121 4052555153018976267 109418989131512359209 2954312706550833698643 79766443076872509863361 2153693963075557766310747 58149737003040059690390169 1570042899082081611640534563 42391158275216203514294433201 1 28 784 21952 614656 17210368 481890304 13492928512 377801998336 10578455953408 296196766695424 8293509467471872 232218265089212416 6502111422497947648 182059119829942534144 5097655355238390956032 142734349946674946768896 3996561798506898509529088 111903730358193158266814464 3133304450029408431470804992 87732524600823436081182539776 1 29 841 24389 707281 20511149 594823321 17249876309 500246412961 14507145975869 420707233300201 12200509765705829 353814783205469041 10260628712958602189 297558232675799463481 8629188747598184440949 250246473680347348787521 7257147736730073114838109 210457284365172120330305161 6103261246589991489578849669 176994576151109753197786640401 1 30 900 27000 810000 24300000 729000000 21870000000 656100000000 19683000000000 590490000000000 17714700000000000 531441000000000000 15943230000000000000 478296900000000000000 14348907000000000000000 430467210000000000000000 12914016300000000000000000 387420489000000000000000000 11622614670000000000000000000 348678440100000000000000000000 1 31 961 29791 923521 28629151 887503681 27512614111 852891037441 26439622160671 819628286980801 25408476896404831 787662783788549761 24417546297445042591 756943935220796320321 23465261991844685929951 727423121747185263828481 22550116774162743178682911 699053619999045038539170241 21670662219970396194714277471 671790528819082282036142601601 1 32 1024 32768 1048576 33554432 1073741824 34359738368 1099511627776 35184372088832 1125899906842624 36028797018963968 1152921504606846976 36893488147419103232 1180591620717411303424 37778931862957161709568 1208925819614629174706176 38685626227668133590597632 1237940039285380274899124224 39614081257132168796771975168 1267650600228229401496703205376 1 33 1089 35937 1185921 39135393 1291467969 42618442977 1406408618241 46411484401953 1531578985264449 50542106513726817 1667889514952984961 55040353993448503713 1816331681783800622529 59938945498865420543457 1977985201462558877934081 65273511648264442971824673 2154025884392726618070214209 71082854184959978396317068897 2345734188103679287078463273601 1 34 1156 39304 1336336 45435424 1544804416 52523350144 1785793904896 60716992766464 2064377754059776 70188843638032384 2386420683693101056 81138303245565435904 2758702310349224820736 93795878551873643905024 3189059870763703892770816 108428035605965932354207744 3686553210602841700043063296 125342809160496617801464152064 4261655511456885005249781170176 1 35 1225 42875 1500625 52521875 1838265625 64339296875 2251875390625 78815638671875 2758547353515625 96549157373046875 3379220508056640625 118272717781982421875 4139545122369384765625 144884079282928466796875 5070942774902496337890625 177482997121587371826171875 6211904899255558013916015625 217416671473944530487060546875 7609583501588058567047119140625 1 36 1296 46656 1679616 60466176 2176782336 78364164096 2821109907456 101559956668416 3656158440062976 131621703842267136 4738381338321616896 170581728179578208256 6140942214464815497216 221073919720733357899776 7958661109946400884391936 286511799958070431838109696 10314424798490535546171949056 371319292745659279662190166016 13367494538843734067838845976576 1 37 1369 50653 1874161 69343957 2565726409 94931877133 3512479453921 129961739795077 4808584372417849 177917621779460413 6582952005840035281 243569224216081305397 9012061295995008299689 333446267951815307088493 12337511914217166362274241 456487940826035155404146917 16890053810563300749953435929 624931990990842127748277129373 23122483666661158726686253786801 1 38 1444 54872 2085136 79235168 3010936384 114415582592 4347792138496 165216101262848 6278211847988224 238572050223552512 9065737908494995456 344498040522809827328 13090925539866773438464 497455170514937390661632 18903296479567620845142016 718325266223569592115396608 27296360116495644500385071104 1037261684426834491014632701952 39415944008219710658556042674176 1 39 1521 59319 2313441 90224199 3518743761 137231006679 5352009260481 208728361158759 8140406085191601 317475837322472439 12381557655576425121 482880748567480579719 18832349194131742609041 734461618571137961752599 28644003124274380508351361 1117116121846700839825703079 43567528752021332753202420081 1699133621328831977374894383159 66266211231824447117620880943201 1 40 1600 64000 2560000 102400000 4096000000 163840000000 6553600000000 262144000000000 10485760000000000 419430400000000000 16777216000000000000 671088640000000000000 26843545600000000000000 1073741824000000000000000 42949672960000000000000000 1717986918400000000000000000 68719476736000000000000000000 2748779069440000000000000000000 109951162777600000000000000000000 end lrslib-062/ine/cocoa13/c28-14.ext0000600001553200155320000000741412722006423014022 0ustar avis*cyclic polytope n=28, d=14 V-representation begin 28 15 integer 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 1 3 9 27 81 243 729 2187 6561 19683 59049 177147 531441 1594323 4782969 1 4 16 64 256 1024 4096 16384 65536 262144 1048576 4194304 16777216 67108864 268435456 1 5 25 125 625 3125 15625 78125 390625 1953125 9765625 48828125 244140625 1220703125 6103515625 1 6 36 216 1296 7776 46656 279936 1679616 10077696 60466176 362797056 2176782336 13060694016 78364164096 1 7 49 343 2401 16807 117649 823543 5764801 40353607 282475249 1977326743 13841287201 96889010407 678223072849 1 8 64 512 4096 32768 262144 2097152 16777216 134217728 1073741824 8589934592 68719476736 549755813888 4398046511104 1 9 81 729 6561 59049 531441 4782969 43046721 387420489 3486784401 31381059609 282429536481 2541865828329 22876792454961 1 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000 100000000000 1000000000000 10000000000000 100000000000000 1 11 121 1331 14641 161051 1771561 19487171 214358881 2357947691 25937424601 285311670611 3138428376721 34522712143931 379749833583241 1 12 144 1728 20736 248832 2985984 35831808 429981696 5159780352 61917364224 743008370688 8916100448256 106993205379072 1283918464548864 1 13 169 2197 28561 371293 4826809 62748517 815730721 10604499373 137858491849 1792160394037 23298085122481 302875106592253 3937376385699289 1 14 196 2744 38416 537824 7529536 105413504 1475789056 20661046784 289254654976 4049565169664 56693912375296 793714773254144 11112006825558016 1 15 225 3375 50625 759375 11390625 170859375 2562890625 38443359375 576650390625 8649755859375 129746337890625 1946195068359375 29192926025390625 1 16 256 4096 65536 1048576 16777216 268435456 4294967296 68719476736 1099511627776 17592186044416 281474976710656 4503599627370496 72057594037927936 1 17 289 4913 83521 1419857 24137569 410338673 6975757441 118587876497 2015993900449 34271896307633 582622237229761 9904578032905937 168377826559400929 1 18 324 5832 104976 1889568 34012224 612220032 11019960576 198359290368 3570467226624 64268410079232 1156831381426176 20822964865671168 374813367582081024 1 19 361 6859 130321 2476099 47045881 893871739 16983563041 322687697779 6131066257801 116490258898219 2213314919066161 42052983462257059 799006685782884121 1 20 400 8000 160000 3200000 64000000 1280000000 25600000000 512000000000 10240000000000 204800000000000 4096000000000000 81920000000000000 1638400000000000000 1 21 441 9261 194481 4084101 85766121 1801088541 37822859361 794280046581 16679880978201 350277500542221 7355827511386641 154472377739119461 3243919932521508681 1 22 484 10648 234256 5153632 113379904 2494357888 54875873536 1207269217792 26559922791424 584318301411328 12855002631049216 282810057883082752 6221821273427820544 1 23 529 12167 279841 6436343 148035889 3404825447 78310985281 1801152661463 41426511213649 952809757913927 21914624432020321 504036361936467383 11592836324538749809 1 24 576 13824 331776 7962624 191102976 4586471424 110075314176 2641807540224 63403380965376 1521681143169024 36520347436056576 876488338465357824 21035720123168587776 1 25 625 15625 390625 9765625 244140625 6103515625 152587890625 3814697265625 95367431640625 2384185791015625 59604644775390625 1490116119384765625 37252902984619140625 1 26 676 17576 456976 11881376 308915776 8031810176 208827064576 5429503678976 141167095653376 3670344486987776 95428956661682176 2481152873203736576 64509974703297150976 1 27 729 19683 531441 14348907 387420489 10460353203 282429536481 7625597484987 205891132094649 5559060566555523 150094635296999121 4052555153018976267 109418989131512359209 1 28 784 21952 614656 17210368 481890304 13492928512 377801998336 10578455953408 296196766695424 8293509467471872 232218265089212416 6502111422497947648 182059119829942534144 end lrslib-062/ine/cocoa13/perm9.ine0000600001553200155320000003160012722006423014205 0ustar avis*permutahedron n=9 H-representation linearity 1 1 begin 511 10 integer -45 1 1 1 1 1 1 1 1 1 44 -1 -1 -1 -1 -1 -1 -1 -1 0 44 -1 -1 -1 -1 -1 -1 -1 0 -1 44 -1 -1 -1 -1 -1 -1 0 -1 -1 44 -1 -1 -1 -1 -1 0 -1 -1 -1 44 -1 -1 -1 -1 0 -1 -1 -1 -1 44 -1 -1 -1 0 -1 -1 -1 -1 -1 44 -1 -1 0 -1 -1 -1 -1 -1 -1 44 -1 0 -1 -1 -1 -1 -1 -1 -1 44 0 -1 -1 -1 -1 -1 -1 -1 -1 42 -1 -1 -1 -1 -1 -1 -1 0 0 42 -1 -1 -1 -1 -1 -1 0 -1 0 42 -1 -1 -1 -1 -1 -1 0 0 -1 42 -1 -1 -1 -1 -1 0 -1 -1 0 42 -1 -1 -1 -1 -1 0 -1 0 -1 42 -1 -1 -1 -1 -1 0 0 -1 -1 42 -1 -1 -1 -1 0 -1 -1 -1 0 42 -1 -1 -1 -1 0 -1 -1 0 -1 42 -1 -1 -1 -1 0 -1 0 -1 -1 42 -1 -1 -1 -1 0 0 -1 -1 -1 42 -1 -1 -1 0 -1 -1 -1 -1 0 42 -1 -1 -1 0 -1 -1 -1 0 -1 42 -1 -1 -1 0 -1 -1 0 -1 -1 42 -1 -1 -1 0 -1 0 -1 -1 -1 42 -1 -1 -1 0 0 -1 -1 -1 -1 42 -1 -1 0 -1 -1 -1 -1 -1 0 42 -1 -1 0 -1 -1 -1 -1 0 -1 42 -1 -1 0 -1 -1 -1 0 -1 -1 42 -1 -1 0 -1 -1 0 -1 -1 -1 42 -1 -1 0 -1 0 -1 -1 -1 -1 42 -1 -1 0 0 -1 -1 -1 -1 -1 42 -1 0 -1 -1 -1 -1 -1 -1 0 42 -1 0 -1 -1 -1 -1 -1 0 -1 42 -1 0 -1 -1 -1 -1 0 -1 -1 42 -1 0 -1 -1 -1 0 -1 -1 -1 42 -1 0 -1 -1 0 -1 -1 -1 -1 42 -1 0 -1 0 -1 -1 -1 -1 -1 42 -1 0 0 -1 -1 -1 -1 -1 -1 42 0 -1 -1 -1 -1 -1 -1 -1 0 42 0 -1 -1 -1 -1 -1 -1 0 -1 42 0 -1 -1 -1 -1 -1 0 -1 -1 42 0 -1 -1 -1 -1 0 -1 -1 -1 42 0 -1 -1 -1 0 -1 -1 -1 -1 42 0 -1 -1 0 -1 -1 -1 -1 -1 42 0 -1 0 -1 -1 -1 -1 -1 -1 42 0 0 -1 -1 -1 -1 -1 -1 -1 39 -1 -1 -1 -1 -1 -1 0 0 0 39 -1 -1 -1 -1 -1 0 -1 0 0 39 -1 -1 -1 -1 -1 0 0 -1 0 39 -1 -1 -1 -1 -1 0 0 0 -1 39 -1 -1 -1 -1 0 -1 -1 0 0 39 -1 -1 -1 -1 0 -1 0 -1 0 39 -1 -1 -1 -1 0 -1 0 0 -1 39 -1 -1 -1 -1 0 0 -1 -1 0 39 -1 -1 -1 -1 0 0 -1 0 -1 39 -1 -1 -1 -1 0 0 0 -1 -1 39 -1 -1 -1 0 -1 -1 -1 0 0 39 -1 -1 -1 0 -1 -1 0 -1 0 39 -1 -1 -1 0 -1 -1 0 0 -1 39 -1 -1 -1 0 -1 0 -1 -1 0 39 -1 -1 -1 0 -1 0 -1 0 -1 39 -1 -1 -1 0 -1 0 0 -1 -1 39 -1 -1 -1 0 0 -1 -1 -1 0 39 -1 -1 -1 0 0 -1 -1 0 -1 39 -1 -1 -1 0 0 -1 0 -1 -1 39 -1 -1 -1 0 0 0 -1 -1 -1 39 -1 -1 0 -1 -1 -1 -1 0 0 39 -1 -1 0 -1 -1 -1 0 -1 0 39 -1 -1 0 -1 -1 -1 0 0 -1 39 -1 -1 0 -1 -1 0 -1 -1 0 39 -1 -1 0 -1 -1 0 -1 0 -1 39 -1 -1 0 -1 -1 0 0 -1 -1 39 -1 -1 0 -1 0 -1 -1 -1 0 39 -1 -1 0 -1 0 -1 -1 0 -1 39 -1 -1 0 -1 0 -1 0 -1 -1 39 -1 -1 0 -1 0 0 -1 -1 -1 39 -1 -1 0 0 -1 -1 -1 -1 0 39 -1 -1 0 0 -1 -1 -1 0 -1 39 -1 -1 0 0 -1 -1 0 -1 -1 39 -1 -1 0 0 -1 0 -1 -1 -1 39 -1 -1 0 0 0 -1 -1 -1 -1 39 -1 0 -1 -1 -1 -1 -1 0 0 39 -1 0 -1 -1 -1 -1 0 -1 0 39 -1 0 -1 -1 -1 -1 0 0 -1 39 -1 0 -1 -1 -1 0 -1 -1 0 39 -1 0 -1 -1 -1 0 -1 0 -1 39 -1 0 -1 -1 -1 0 0 -1 -1 39 -1 0 -1 -1 0 -1 -1 -1 0 39 -1 0 -1 -1 0 -1 -1 0 -1 39 -1 0 -1 -1 0 -1 0 -1 -1 39 -1 0 -1 -1 0 0 -1 -1 -1 39 -1 0 -1 0 -1 -1 -1 -1 0 39 -1 0 -1 0 -1 -1 -1 0 -1 39 -1 0 -1 0 -1 -1 0 -1 -1 39 -1 0 -1 0 -1 0 -1 -1 -1 39 -1 0 -1 0 0 -1 -1 -1 -1 39 -1 0 0 -1 -1 -1 -1 -1 0 39 -1 0 0 -1 -1 -1 -1 0 -1 39 -1 0 0 -1 -1 -1 0 -1 -1 39 -1 0 0 -1 -1 0 -1 -1 -1 39 -1 0 0 -1 0 -1 -1 -1 -1 39 -1 0 0 0 -1 -1 -1 -1 -1 39 0 -1 -1 -1 -1 -1 -1 0 0 39 0 -1 -1 -1 -1 -1 0 -1 0 39 0 -1 -1 -1 -1 -1 0 0 -1 39 0 -1 -1 -1 -1 0 -1 -1 0 39 0 -1 -1 -1 -1 0 -1 0 -1 39 0 -1 -1 -1 -1 0 0 -1 -1 39 0 -1 -1 -1 0 -1 -1 -1 0 39 0 -1 -1 -1 0 -1 -1 0 -1 39 0 -1 -1 -1 0 -1 0 -1 -1 39 0 -1 -1 -1 0 0 -1 -1 -1 39 0 -1 -1 0 -1 -1 -1 -1 0 39 0 -1 -1 0 -1 -1 -1 0 -1 39 0 -1 -1 0 -1 -1 0 -1 -1 39 0 -1 -1 0 -1 0 -1 -1 -1 39 0 -1 -1 0 0 -1 -1 -1 -1 39 0 -1 0 -1 -1 -1 -1 -1 0 39 0 -1 0 -1 -1 -1 -1 0 -1 39 0 -1 0 -1 -1 -1 0 -1 -1 39 0 -1 0 -1 -1 0 -1 -1 -1 39 0 -1 0 -1 0 -1 -1 -1 -1 39 0 -1 0 0 -1 -1 -1 -1 -1 39 0 0 -1 -1 -1 -1 -1 -1 0 39 0 0 -1 -1 -1 -1 -1 0 -1 39 0 0 -1 -1 -1 -1 0 -1 -1 39 0 0 -1 -1 -1 0 -1 -1 -1 39 0 0 -1 -1 0 -1 -1 -1 -1 39 0 0 -1 0 -1 -1 -1 -1 -1 39 0 0 0 -1 -1 -1 -1 -1 -1 35 -1 -1 -1 -1 -1 0 0 0 0 35 -1 -1 -1 -1 0 -1 0 0 0 35 -1 -1 -1 -1 0 0 -1 0 0 35 -1 -1 -1 -1 0 0 0 -1 0 35 -1 -1 -1 -1 0 0 0 0 -1 35 -1 -1 -1 0 -1 -1 0 0 0 35 -1 -1 -1 0 -1 0 -1 0 0 35 -1 -1 -1 0 -1 0 0 -1 0 35 -1 -1 -1 0 -1 0 0 0 -1 35 -1 -1 -1 0 0 -1 -1 0 0 35 -1 -1 -1 0 0 -1 0 -1 0 35 -1 -1 -1 0 0 -1 0 0 -1 35 -1 -1 -1 0 0 0 -1 -1 0 35 -1 -1 -1 0 0 0 -1 0 -1 35 -1 -1 -1 0 0 0 0 -1 -1 35 -1 -1 0 -1 -1 -1 0 0 0 35 -1 -1 0 -1 -1 0 -1 0 0 35 -1 -1 0 -1 -1 0 0 -1 0 35 -1 -1 0 -1 -1 0 0 0 -1 35 -1 -1 0 -1 0 -1 -1 0 0 35 -1 -1 0 -1 0 -1 0 -1 0 35 -1 -1 0 -1 0 -1 0 0 -1 35 -1 -1 0 -1 0 0 -1 -1 0 35 -1 -1 0 -1 0 0 -1 0 -1 35 -1 -1 0 -1 0 0 0 -1 -1 35 -1 -1 0 0 -1 -1 -1 0 0 35 -1 -1 0 0 -1 -1 0 -1 0 35 -1 -1 0 0 -1 -1 0 0 -1 35 -1 -1 0 0 -1 0 -1 -1 0 35 -1 -1 0 0 -1 0 -1 0 -1 35 -1 -1 0 0 -1 0 0 -1 -1 35 -1 -1 0 0 0 -1 -1 -1 0 35 -1 -1 0 0 0 -1 -1 0 -1 35 -1 -1 0 0 0 -1 0 -1 -1 35 -1 -1 0 0 0 0 -1 -1 -1 35 -1 0 -1 -1 -1 -1 0 0 0 35 -1 0 -1 -1 -1 0 -1 0 0 35 -1 0 -1 -1 -1 0 0 -1 0 35 -1 0 -1 -1 -1 0 0 0 -1 35 -1 0 -1 -1 0 -1 -1 0 0 35 -1 0 -1 -1 0 -1 0 -1 0 35 -1 0 -1 -1 0 -1 0 0 -1 35 -1 0 -1 -1 0 0 -1 -1 0 35 -1 0 -1 -1 0 0 -1 0 -1 35 -1 0 -1 -1 0 0 0 -1 -1 35 -1 0 -1 0 -1 -1 -1 0 0 35 -1 0 -1 0 -1 -1 0 -1 0 35 -1 0 -1 0 -1 -1 0 0 -1 35 -1 0 -1 0 -1 0 -1 -1 0 35 -1 0 -1 0 -1 0 -1 0 -1 35 -1 0 -1 0 -1 0 0 -1 -1 35 -1 0 -1 0 0 -1 -1 -1 0 35 -1 0 -1 0 0 -1 -1 0 -1 35 -1 0 -1 0 0 -1 0 -1 -1 35 -1 0 -1 0 0 0 -1 -1 -1 35 -1 0 0 -1 -1 -1 -1 0 0 35 -1 0 0 -1 -1 -1 0 -1 0 35 -1 0 0 -1 -1 -1 0 0 -1 35 -1 0 0 -1 -1 0 -1 -1 0 35 -1 0 0 -1 -1 0 -1 0 -1 35 -1 0 0 -1 -1 0 0 -1 -1 35 -1 0 0 -1 0 -1 -1 -1 0 35 -1 0 0 -1 0 -1 -1 0 -1 35 -1 0 0 -1 0 -1 0 -1 -1 35 -1 0 0 -1 0 0 -1 -1 -1 35 -1 0 0 0 -1 -1 -1 -1 0 35 -1 0 0 0 -1 -1 -1 0 -1 35 -1 0 0 0 -1 -1 0 -1 -1 35 -1 0 0 0 -1 0 -1 -1 -1 35 -1 0 0 0 0 -1 -1 -1 -1 35 0 -1 -1 -1 -1 -1 0 0 0 35 0 -1 -1 -1 -1 0 -1 0 0 35 0 -1 -1 -1 -1 0 0 -1 0 35 0 -1 -1 -1 -1 0 0 0 -1 35 0 -1 -1 -1 0 -1 -1 0 0 35 0 -1 -1 -1 0 -1 0 -1 0 35 0 -1 -1 -1 0 -1 0 0 -1 35 0 -1 -1 -1 0 0 -1 -1 0 35 0 -1 -1 -1 0 0 -1 0 -1 35 0 -1 -1 -1 0 0 0 -1 -1 35 0 -1 -1 0 -1 -1 -1 0 0 35 0 -1 -1 0 -1 -1 0 -1 0 35 0 -1 -1 0 -1 -1 0 0 -1 35 0 -1 -1 0 -1 0 -1 -1 0 35 0 -1 -1 0 -1 0 -1 0 -1 35 0 -1 -1 0 -1 0 0 -1 -1 35 0 -1 -1 0 0 -1 -1 -1 0 35 0 -1 -1 0 0 -1 -1 0 -1 35 0 -1 -1 0 0 -1 0 -1 -1 35 0 -1 -1 0 0 0 -1 -1 -1 35 0 -1 0 -1 -1 -1 -1 0 0 35 0 -1 0 -1 -1 -1 0 -1 0 35 0 -1 0 -1 -1 -1 0 0 -1 35 0 -1 0 -1 -1 0 -1 -1 0 35 0 -1 0 -1 -1 0 -1 0 -1 35 0 -1 0 -1 -1 0 0 -1 -1 35 0 -1 0 -1 0 -1 -1 -1 0 35 0 -1 0 -1 0 -1 -1 0 -1 35 0 -1 0 -1 0 -1 0 -1 -1 35 0 -1 0 -1 0 0 -1 -1 -1 35 0 -1 0 0 -1 -1 -1 -1 0 35 0 -1 0 0 -1 -1 -1 0 -1 35 0 -1 0 0 -1 -1 0 -1 -1 35 0 -1 0 0 -1 0 -1 -1 -1 35 0 -1 0 0 0 -1 -1 -1 -1 35 0 0 -1 -1 -1 -1 -1 0 0 35 0 0 -1 -1 -1 -1 0 -1 0 35 0 0 -1 -1 -1 -1 0 0 -1 35 0 0 -1 -1 -1 0 -1 -1 0 35 0 0 -1 -1 -1 0 -1 0 -1 35 0 0 -1 -1 -1 0 0 -1 -1 35 0 0 -1 -1 0 -1 -1 -1 0 35 0 0 -1 -1 0 -1 -1 0 -1 35 0 0 -1 -1 0 -1 0 -1 -1 35 0 0 -1 -1 0 0 -1 -1 -1 35 0 0 -1 0 -1 -1 -1 -1 0 35 0 0 -1 0 -1 -1 -1 0 -1 35 0 0 -1 0 -1 -1 0 -1 -1 35 0 0 -1 0 -1 0 -1 -1 -1 35 0 0 -1 0 0 -1 -1 -1 -1 35 0 0 0 -1 -1 -1 -1 -1 0 35 0 0 0 -1 -1 -1 -1 0 -1 35 0 0 0 -1 -1 -1 0 -1 -1 35 0 0 0 -1 -1 0 -1 -1 -1 35 0 0 0 -1 0 -1 -1 -1 -1 35 0 0 0 0 -1 -1 -1 -1 -1 30 -1 -1 -1 -1 0 0 0 0 0 30 -1 -1 -1 0 -1 0 0 0 0 30 -1 -1 -1 0 0 -1 0 0 0 30 -1 -1 -1 0 0 0 -1 0 0 30 -1 -1 -1 0 0 0 0 -1 0 30 -1 -1 -1 0 0 0 0 0 -1 30 -1 -1 0 -1 -1 0 0 0 0 30 -1 -1 0 -1 0 -1 0 0 0 30 -1 -1 0 -1 0 0 -1 0 0 30 -1 -1 0 -1 0 0 0 -1 0 30 -1 -1 0 -1 0 0 0 0 -1 30 -1 -1 0 0 -1 -1 0 0 0 30 -1 -1 0 0 -1 0 -1 0 0 30 -1 -1 0 0 -1 0 0 -1 0 30 -1 -1 0 0 -1 0 0 0 -1 30 -1 -1 0 0 0 -1 -1 0 0 30 -1 -1 0 0 0 -1 0 -1 0 30 -1 -1 0 0 0 -1 0 0 -1 30 -1 -1 0 0 0 0 -1 -1 0 30 -1 -1 0 0 0 0 -1 0 -1 30 -1 -1 0 0 0 0 0 -1 -1 30 -1 0 -1 -1 -1 0 0 0 0 30 -1 0 -1 -1 0 -1 0 0 0 30 -1 0 -1 -1 0 0 -1 0 0 30 -1 0 -1 -1 0 0 0 -1 0 30 -1 0 -1 -1 0 0 0 0 -1 30 -1 0 -1 0 -1 -1 0 0 0 30 -1 0 -1 0 -1 0 -1 0 0 30 -1 0 -1 0 -1 0 0 -1 0 30 -1 0 -1 0 -1 0 0 0 -1 30 -1 0 -1 0 0 -1 -1 0 0 30 -1 0 -1 0 0 -1 0 -1 0 30 -1 0 -1 0 0 -1 0 0 -1 30 -1 0 -1 0 0 0 -1 -1 0 30 -1 0 -1 0 0 0 -1 0 -1 30 -1 0 -1 0 0 0 0 -1 -1 30 -1 0 0 -1 -1 -1 0 0 0 30 -1 0 0 -1 -1 0 -1 0 0 30 -1 0 0 -1 -1 0 0 -1 0 30 -1 0 0 -1 -1 0 0 0 -1 30 -1 0 0 -1 0 -1 -1 0 0 30 -1 0 0 -1 0 -1 0 -1 0 30 -1 0 0 -1 0 -1 0 0 -1 30 -1 0 0 -1 0 0 -1 -1 0 30 -1 0 0 -1 0 0 -1 0 -1 30 -1 0 0 -1 0 0 0 -1 -1 30 -1 0 0 0 -1 -1 -1 0 0 30 -1 0 0 0 -1 -1 0 -1 0 30 -1 0 0 0 -1 -1 0 0 -1 30 -1 0 0 0 -1 0 -1 -1 0 30 -1 0 0 0 -1 0 -1 0 -1 30 -1 0 0 0 -1 0 0 -1 -1 30 -1 0 0 0 0 -1 -1 -1 0 30 -1 0 0 0 0 -1 -1 0 -1 30 -1 0 0 0 0 -1 0 -1 -1 30 -1 0 0 0 0 0 -1 -1 -1 30 0 -1 -1 -1 -1 0 0 0 0 30 0 -1 -1 -1 0 -1 0 0 0 30 0 -1 -1 -1 0 0 -1 0 0 30 0 -1 -1 -1 0 0 0 -1 0 30 0 -1 -1 -1 0 0 0 0 -1 30 0 -1 -1 0 -1 -1 0 0 0 30 0 -1 -1 0 -1 0 -1 0 0 30 0 -1 -1 0 -1 0 0 -1 0 30 0 -1 -1 0 -1 0 0 0 -1 30 0 -1 -1 0 0 -1 -1 0 0 30 0 -1 -1 0 0 -1 0 -1 0 30 0 -1 -1 0 0 -1 0 0 -1 30 0 -1 -1 0 0 0 -1 -1 0 30 0 -1 -1 0 0 0 -1 0 -1 30 0 -1 -1 0 0 0 0 -1 -1 30 0 -1 0 -1 -1 -1 0 0 0 30 0 -1 0 -1 -1 0 -1 0 0 30 0 -1 0 -1 -1 0 0 -1 0 30 0 -1 0 -1 -1 0 0 0 -1 30 0 -1 0 -1 0 -1 -1 0 0 30 0 -1 0 -1 0 -1 0 -1 0 30 0 -1 0 -1 0 -1 0 0 -1 30 0 -1 0 -1 0 0 -1 -1 0 30 0 -1 0 -1 0 0 -1 0 -1 30 0 -1 0 -1 0 0 0 -1 -1 30 0 -1 0 0 -1 -1 -1 0 0 30 0 -1 0 0 -1 -1 0 -1 0 30 0 -1 0 0 -1 -1 0 0 -1 30 0 -1 0 0 -1 0 -1 -1 0 30 0 -1 0 0 -1 0 -1 0 -1 30 0 -1 0 0 -1 0 0 -1 -1 30 0 -1 0 0 0 -1 -1 -1 0 30 0 -1 0 0 0 -1 -1 0 -1 30 0 -1 0 0 0 -1 0 -1 -1 30 0 -1 0 0 0 0 -1 -1 -1 30 0 0 -1 -1 -1 -1 0 0 0 30 0 0 -1 -1 -1 0 -1 0 0 30 0 0 -1 -1 -1 0 0 -1 0 30 0 0 -1 -1 -1 0 0 0 -1 30 0 0 -1 -1 0 -1 -1 0 0 30 0 0 -1 -1 0 -1 0 -1 0 30 0 0 -1 -1 0 -1 0 0 -1 30 0 0 -1 -1 0 0 -1 -1 0 30 0 0 -1 -1 0 0 -1 0 -1 30 0 0 -1 -1 0 0 0 -1 -1 30 0 0 -1 0 -1 -1 -1 0 0 30 0 0 -1 0 -1 -1 0 -1 0 30 0 0 -1 0 -1 -1 0 0 -1 30 0 0 -1 0 -1 0 -1 -1 0 30 0 0 -1 0 -1 0 -1 0 -1 30 0 0 -1 0 -1 0 0 -1 -1 30 0 0 -1 0 0 -1 -1 -1 0 30 0 0 -1 0 0 -1 -1 0 -1 30 0 0 -1 0 0 -1 0 -1 -1 30 0 0 -1 0 0 0 -1 -1 -1 30 0 0 0 -1 -1 -1 -1 0 0 30 0 0 0 -1 -1 -1 0 -1 0 30 0 0 0 -1 -1 -1 0 0 -1 30 0 0 0 -1 -1 0 -1 -1 0 30 0 0 0 -1 -1 0 -1 0 -1 30 0 0 0 -1 -1 0 0 -1 -1 30 0 0 0 -1 0 -1 -1 -1 0 30 0 0 0 -1 0 -1 -1 0 -1 30 0 0 0 -1 0 -1 0 -1 -1 30 0 0 0 -1 0 0 -1 -1 -1 30 0 0 0 0 -1 -1 -1 -1 0 30 0 0 0 0 -1 -1 -1 0 -1 30 0 0 0 0 -1 -1 0 -1 -1 30 0 0 0 0 -1 0 -1 -1 -1 30 0 0 0 0 0 -1 -1 -1 -1 24 -1 -1 -1 0 0 0 0 0 0 24 -1 -1 0 -1 0 0 0 0 0 24 -1 -1 0 0 -1 0 0 0 0 24 -1 -1 0 0 0 -1 0 0 0 24 -1 -1 0 0 0 0 -1 0 0 24 -1 -1 0 0 0 0 0 -1 0 24 -1 -1 0 0 0 0 0 0 -1 24 -1 0 -1 -1 0 0 0 0 0 24 -1 0 -1 0 -1 0 0 0 0 24 -1 0 -1 0 0 -1 0 0 0 24 -1 0 -1 0 0 0 -1 0 0 24 -1 0 -1 0 0 0 0 -1 0 24 -1 0 -1 0 0 0 0 0 -1 24 -1 0 0 -1 -1 0 0 0 0 24 -1 0 0 -1 0 -1 0 0 0 24 -1 0 0 -1 0 0 -1 0 0 24 -1 0 0 -1 0 0 0 -1 0 24 -1 0 0 -1 0 0 0 0 -1 24 -1 0 0 0 -1 -1 0 0 0 24 -1 0 0 0 -1 0 -1 0 0 24 -1 0 0 0 -1 0 0 -1 0 24 -1 0 0 0 -1 0 0 0 -1 24 -1 0 0 0 0 -1 -1 0 0 24 -1 0 0 0 0 -1 0 -1 0 24 -1 0 0 0 0 -1 0 0 -1 24 -1 0 0 0 0 0 -1 -1 0 24 -1 0 0 0 0 0 -1 0 -1 24 -1 0 0 0 0 0 0 -1 -1 24 0 -1 -1 -1 0 0 0 0 0 24 0 -1 -1 0 -1 0 0 0 0 24 0 -1 -1 0 0 -1 0 0 0 24 0 -1 -1 0 0 0 -1 0 0 24 0 -1 -1 0 0 0 0 -1 0 24 0 -1 -1 0 0 0 0 0 -1 24 0 -1 0 -1 -1 0 0 0 0 24 0 -1 0 -1 0 -1 0 0 0 24 0 -1 0 -1 0 0 -1 0 0 24 0 -1 0 -1 0 0 0 -1 0 24 0 -1 0 -1 0 0 0 0 -1 24 0 -1 0 0 -1 -1 0 0 0 24 0 -1 0 0 -1 0 -1 0 0 24 0 -1 0 0 -1 0 0 -1 0 24 0 -1 0 0 -1 0 0 0 -1 24 0 -1 0 0 0 -1 -1 0 0 24 0 -1 0 0 0 -1 0 -1 0 24 0 -1 0 0 0 -1 0 0 -1 24 0 -1 0 0 0 0 -1 -1 0 24 0 -1 0 0 0 0 -1 0 -1 24 0 -1 0 0 0 0 0 -1 -1 24 0 0 -1 -1 -1 0 0 0 0 24 0 0 -1 -1 0 -1 0 0 0 24 0 0 -1 -1 0 0 -1 0 0 24 0 0 -1 -1 0 0 0 -1 0 24 0 0 -1 -1 0 0 0 0 -1 24 0 0 -1 0 -1 -1 0 0 0 24 0 0 -1 0 -1 0 -1 0 0 24 0 0 -1 0 -1 0 0 -1 0 24 0 0 -1 0 -1 0 0 0 -1 24 0 0 -1 0 0 -1 -1 0 0 24 0 0 -1 0 0 -1 0 -1 0 24 0 0 -1 0 0 -1 0 0 -1 24 0 0 -1 0 0 0 -1 -1 0 24 0 0 -1 0 0 0 -1 0 -1 24 0 0 -1 0 0 0 0 -1 -1 24 0 0 0 -1 -1 -1 0 0 0 24 0 0 0 -1 -1 0 -1 0 0 24 0 0 0 -1 -1 0 0 -1 0 24 0 0 0 -1 -1 0 0 0 -1 24 0 0 0 -1 0 -1 -1 0 0 24 0 0 0 -1 0 -1 0 -1 0 24 0 0 0 -1 0 -1 0 0 -1 24 0 0 0 -1 0 0 -1 -1 0 24 0 0 0 -1 0 0 -1 0 -1 24 0 0 0 -1 0 0 0 -1 -1 24 0 0 0 0 -1 -1 -1 0 0 24 0 0 0 0 -1 -1 0 -1 0 24 0 0 0 0 -1 -1 0 0 -1 24 0 0 0 0 -1 0 -1 -1 0 24 0 0 0 0 -1 0 -1 0 -1 24 0 0 0 0 -1 0 0 -1 -1 24 0 0 0 0 0 -1 -1 -1 0 24 0 0 0 0 0 -1 -1 0 -1 24 0 0 0 0 0 -1 0 -1 -1 24 0 0 0 0 0 0 -1 -1 -1 17 -1 -1 0 0 0 0 0 0 0 17 -1 0 -1 0 0 0 0 0 0 17 -1 0 0 -1 0 0 0 0 0 17 -1 0 0 0 -1 0 0 0 0 17 -1 0 0 0 0 -1 0 0 0 17 -1 0 0 0 0 0 -1 0 0 17 -1 0 0 0 0 0 0 -1 0 17 -1 0 0 0 0 0 0 0 -1 17 0 -1 -1 0 0 0 0 0 0 17 0 -1 0 -1 0 0 0 0 0 17 0 -1 0 0 -1 0 0 0 0 17 0 -1 0 0 0 -1 0 0 0 17 0 -1 0 0 0 0 -1 0 0 17 0 -1 0 0 0 0 0 -1 0 17 0 -1 0 0 0 0 0 0 -1 17 0 0 -1 -1 0 0 0 0 0 17 0 0 -1 0 -1 0 0 0 0 17 0 0 -1 0 0 -1 0 0 0 17 0 0 -1 0 0 0 -1 0 0 17 0 0 -1 0 0 0 0 -1 0 17 0 0 -1 0 0 0 0 0 -1 17 0 0 0 -1 -1 0 0 0 0 17 0 0 0 -1 0 -1 0 0 0 17 0 0 0 -1 0 0 -1 0 0 17 0 0 0 -1 0 0 0 -1 0 17 0 0 0 -1 0 0 0 0 -1 17 0 0 0 0 -1 -1 0 0 0 17 0 0 0 0 -1 0 -1 0 0 17 0 0 0 0 -1 0 0 -1 0 17 0 0 0 0 -1 0 0 0 -1 17 0 0 0 0 0 -1 -1 0 0 17 0 0 0 0 0 -1 0 -1 0 17 0 0 0 0 0 -1 0 0 -1 17 0 0 0 0 0 0 -1 -1 0 17 0 0 0 0 0 0 -1 0 -1 17 0 0 0 0 0 0 0 -1 -1 9 -1 0 0 0 0 0 0 0 0 9 0 -1 0 0 0 0 0 0 0 9 0 0 -1 0 0 0 0 0 0 9 0 0 0 -1 0 0 0 0 0 9 0 0 0 0 -1 0 0 0 0 9 0 0 0 0 0 -1 0 0 0 9 0 0 0 0 0 0 -1 0 0 9 0 0 0 0 0 0 0 -1 0 9 0 0 0 0 0 0 0 0 -1 end linearity 1 1 lrslib-062/ine/cocoa13/mit.ine0000600001553200155320000005040512722006423013746 0ustar avismit.ine begin 729 9 integer 72 0 0 -4 -4 -2 0 0 0 216 -2 -2 -10 -12 -6 0 0 0 192 -4 -2 -8 -8 -8 0 0 0 288 -12 6 8 -16 -8 0 0 0 96 -4 2 0 -4 -4 0 0 0 144 -5 1 -4 -6 -6 0 0 0 288 -8 -2 -10 -12 -12 0 0 0 96 -4 2 -4 -2 -4 0 0 0 240 -7 -1 -10 -8 -10 0 0 0 288 -8 -2 -12 -8 -12 0 0 0 288 -8 -2 -8 -16 -8 0 0 0 96 -4 2 -8 0 0 0 0 0 0 0 6 -8 4 8 0 0 0 0 4 6 -8 0 8 0 0 0 24 2 2 -4 -2 2 0 0 0 864 -24 -6 -40 -16 -32 0 0 0 24 0 0 -2 -2 2 0 0 0 0 4 10 -16 0 24 0 0 0 0 1 1 -4 0 12 0 0 0 0 0 6 -16 8 40 0 0 0 96 -4 2 -16 16 32 0 0 0 288 -8 -2 -16 0 0 0 0 0 96 -4 2 8 -8 8 0 0 0 288 -8 -2 8 -24 24 0 0 0 0 0 2 -8 8 24 0 0 0 96 -1 -1 -4 -8 8 0 0 0 576 -12 -6 -16 -40 16 0 0 0 192 -4 -2 0 -16 16 0 0 0 576 -8 -6 -24 -32 -16 0 0 0 576 -12 -6 -20 -32 -16 0 0 0 960 -16 -10 -40 -56 -16 0 0 0 160 0 0 -7 -7 -6 -1 0 -1 480 -4 -4 -21 -21 -18 -1 0 -3 192 -4 -4 -12 -4 -8 4 2 -4 640 -16 -8 -28 -28 -24 4 2 -4 640 -8 -6 -28 -28 -24 0 0 -4 192 -8 0 -8 -8 -8 4 2 0 384 -12 -4 -16 -16 -16 4 2 0 960 -20 -12 -42 -42 -36 4 2 -6 240 -9 -1 -11 -9 -10 3 2 -1 0 2 2 4 0 0 -4 -2 0 640 -22 -4 -24 -28 -24 8 4 -4 1920 -60 -20 -76 -84 -72 20 10 -12 1920 -32 -22 -84 -84 -72 4 2 -12 960 -28 -10 -44 -36 -40 8 4 -4 1152 -36 -12 -52 -44 -48 12 6 -4 720 -23 -7 -33 -27 -30 7 4 -3 1920 -48 -24 -88 -72 -80 12 6 -8 3456 -96 -40 -160 -128 -144 28 14 -16 576 -15 -7 -26 -20 -24 4 2 -4 384 -12 -4 -20 -12 -16 4 2 0 336 -11 -3 -17 -11 -14 3 2 -1 192 -8 0 -12 -4 -8 4 2 0 0 0 0 -4 4 0 4 2 0 0 0 2 -8 8 0 8 4 -2 192 -12 12 -28 12 -8 20 10 -4 192 -12 12 -20 4 -8 12 6 -2 1920 -48 -24 -92 -60 -80 12 6 -4 576 -15 -7 -28 -18 -24 4 2 -2 1536 -42 -18 -76 -40 -64 12 6 -8 384 -12 -4 -20 4 -16 4 2 -4 1920 -60 -20 -102 18 -76 14 10 -18 1920 -60 -20 -102 -46 -76 14 10 -2 672 -22 -6 -37 -17 -26 5 4 -1 640 -22 -4 -36 -16 -24 4 4 0 960 -40 0 -64 -16 -32 8 10 0 64 -4 4 -8 0 0 0 2 0 0 0 8 -6 2 4 -2 2 0 0 8 18 -8 0 8 -8 2 0 64 36 60 -28 -4 24 -28 6 -4 192 28 36 -20 -12 8 -20 2 -4 96 4 4 -5 -5 -2 -3 0 -1 64 4 6 -4 -4 0 -4 0 0 96 0 0 -5 -5 -2 -1 0 -1 16 0 0 -1 -1 0 0 0 0 192 -6 0 -8 12 -8 0 0 -4 192 -6 0 -8 -4 -8 0 0 0 960 -30 -8 -48 -20 -40 8 4 -4 960 -32 -8 -52 -20 -40 12 6 -4 960 -32 -8 -52 44 -40 12 6 -20 960 -30 -8 -48 12 -40 8 4 -12 576 -16 -6 -28 -12 -24 4 2 -4 208 -8 0 -8 -8 -8 4 2 -2 160 -7 1 -5 -7 -6 3 2 -1 192 -12 12 0 -8 -8 8 6 0 160 -9 7 -1 -7 -6 5 4 -1 640 -20 -4 -20 -28 -24 4 2 -4 96 -5 3 -2 -4 -4 2 2 0 192 -6 0 -4 -8 -8 0 0 0 480 -18 -2 -17 -21 -18 7 4 -3 528 -19 -3 -20 -22 -20 8 4 -4 960 -30 -4 -32 -36 -40 4 2 -4 1152 -36 -4 -32 -40 -48 0 2 -8 1152 -36 -12 -48 -40 -48 8 6 -8 192 -8 0 -4 -4 -8 4 2 -4 192 -6 0 0 -4 -8 0 0 -4 384 -12 -4 -8 -8 -16 4 2 -8 1920 -48 -24 -48 -40 -80 12 6 -40 384 -16 2 -20 -12 -16 4 4 0 576 -24 0 -32 -16 -24 8 6 0 432 -17 -1 -23 -13 -18 5 4 -1 576 -28 12 -36 -12 -24 12 10 -4 960 -52 36 -92 12 -40 52 26 -12 0 0 4 -14 10 4 6 6 -2 2688 -72 -32 -120 -104 -112 16 10 -8 0 0 8 -20 12 56 -12 2 -4 64 -4 4 -16 8 24 -4 2 0 192 -8 0 -16 0 0 0 2 0 64 8 16 -20 -4 24 -12 2 -4 0 2 4 -4 0 8 -4 0 0 288 -13 3 -12 -10 -12 6 4 -2 336 -14 2 -15 -11 -14 7 4 -3 96 3 1 -8 -6 4 0 0 -2 192 12 0 -20 -12 8 4 2 -4 0 4 8 -6 2 4 -2 2 -2 192 -12 12 -28 28 -8 20 10 -12 0 0 0 -4 16 0 4 2 -6 0 0 0 -4 40 0 4 2 -12 192 -8 0 -12 44 -8 4 2 -12 0 0 2 0 32 0 0 0 -8 192 -12 12 -20 300 -8 12 6 -76 960 -40 0 -64 208 -32 8 10 -56 2112 -72 -16 -120 120 -80 16 14 -48 512 -16 -4 -26 6 -20 2 2 -6 512 -16 -4 -26 -10 -20 2 2 -2 448 -16 0 -24 -8 -16 0 2 0 448 24 8 -68 -20 56 12 6 -20 192 8 2 -24 -8 16 4 2 -8 192 16 0 -36 -4 24 12 6 -12 448 -13 -5 -23 -13 -18 3 2 -1 64 -2 0 -4 0 0 0 0 0 0 2 -2 -4 4 0 4 2 -2 0 0 0 -22 22 4 14 10 0 0 0 0 -22 82 4 14 10 -30 0 0 4 -14 34 4 6 6 -14 480 -21 3 -20 -18 -20 8 6 -2 480 -19 1 -16 -18 -20 4 4 -2 1344 -52 0 -44 -52 -56 12 10 -4 576 -22 0 -12 -24 -24 4 4 0 768 -28 -4 -24 -32 -32 8 6 0 768 -28 -4 40 -32 -32 -8 6 0 576 -22 0 20 -24 -24 -4 4 0 320 -12 0 10 -14 -12 -2 2 -2 160 -7 1 3 -7 -6 1 2 -1 0 2 2 -12 8 16 4 2 -4 0 22 14 -52 16 80 12 6 -16 192 32 16 -68 -4 88 12 6 -20 128 18 10 -36 -8 48 4 2 -8 64 8 8 -20 -4 24 -4 2 -4 0 4 2 -4 4 8 0 0 -4 0 4 8 -14 2 20 -4 2 -2 0 1 7 -11 3 14 -3 2 -1 0 0 8 -12 4 16 -4 2 0 0 4 12 -20 4 32 -8 2 0 0 0 24 -44 20 64 -16 6 0 0 0 4 -10 6 12 -2 2 -2 0 14 22 -44 8 64 -12 6 -8 0 6 10 -18 2 28 -6 2 -2 192 28 36 -52 -12 72 -36 2 -12 96 3 3 -8 -6 4 -4 0 -2 0 1 1 -2 0 4 0 0 0 0 0 12 -10 6 12 -6 2 -2 48 0 0 -3 -3 2 -1 0 -1 192 16 24 -44 -12 72 -28 2 -12 0 4 12 -14 2 20 -8 2 -2 0 1 9 -11 3 14 -5 2 -1 192 32 40 -68 -4 88 -36 6 -20 16 1 1 -3 -1 6 -1 0 -1 64 4 6 -12 -4 24 -8 0 -4 0 4 12 -20 4 40 -12 2 -4 0 0 10 -16 8 24 -8 2 0 192 -12 12 -40 16 32 -8 6 0 0 0 24 -34 14 44 -14 6 -2 64 -4 4 -16 8 16 0 2 0 0 0 8 -20 12 32 0 2 0 0 0 4 -14 10 20 2 2 -2 0 0 2 -2 2 4 -2 0 0 0 0 24 -44 20 72 -20 6 -4 0 0 24 -60 36 104 -4 6 -4 0 6 10 -16 4 24 -8 2 -4 0 1 1 -1 1 2 -1 0 -1 0 6 18 -16 4 24 -12 2 -4 384 0 -2 -20 -20 -8 0 0 -4 384 -12 -4 -12 -20 -8 4 2 -4 640 -16 -8 -20 -36 -8 4 2 -4 960 -20 -12 -32 -56 -8 4 2 -4 96 -1 -1 -4 -6 0 0 0 0 1280 -6 -14 -60 -80 0 -4 2 0 1024 -2 -10 -52 -64 0 -4 2 0 1024 -12 -12 -48 -56 -16 0 2 -8 384 8 -4 -24 -24 0 0 2 0 256 4 -4 -16 -16 0 2 2 0 1024 0 -16 -56 -56 -16 8 6 -8 960 0 -16 -52 -52 -16 12 6 -8 6400 -96 -72 -280 -280 -240 8 6 -40 960 -16 -12 -42 -42 -36 2 2 -6 3840 -48 -40 -168 -168 -144 0 2 -24 4032 -72 -48 -178 -178 -148 10 6 -26 1152 -20 -14 -52 -52 -40 4 2 -8 0 2 -2 0 0 0 2 2 0 192 -6 0 12 -8 -8 -4 0 0 192 -4 -4 -8 -8 -8 4 2 0 6912 -176 -88 -288 -288 -288 40 26 0 1920 -48 -24 -80 -80 -80 10 6 0 576 -12 -10 -24 -24 -24 6 4 0 5760 -168 -64 -264 -216 -240 48 26 -24 960 -48 24 -36 -36 -40 20 18 -4 960 -44 12 -28 -36 -40 12 14 -4 192 -12 12 4 -4 -8 4 6 -4 960 -56 48 -20 -36 -40 28 26 -4 640 -20 0 -4 -28 -24 -2 0 -4 576 -24 0 -28 -12 -24 4 6 -4 0 0 0 4 8 0 -2 0 -4 192 -6 0 -4 12 -8 -4 0 -6 960 -30 0 -32 -12 -40 -8 0 -6 960 -32 0 -36 -20 -40 -4 2 -4 640 -20 0 -28 -4 -24 -4 0 -2 0 0 20 -4 12 8 -12 0 -2 16 0 0 -1 -1 6 -1 0 -1 720 -23 -3 -25 -27 -30 3 2 -3 624 -21 -1 -27 -17 -26 1 2 -1 768 -26 0 -32 -20 -32 0 2 0 1536 -62 0 -80 -44 -64 16 14 0 1344 -42 -12 -64 -44 -56 12 6 -4 2880 -90 -28 -128 -108 -120 28 14 -12 960 -30 0 -12 -32 -40 -6 0 -8 768 -30 0 -24 -28 -32 6 6 -4 576 -24 0 -20 -20 -24 8 6 -4 576 -24 0 -15 -23 -22 9 6 -5 192 -8 0 12 -4 -8 -4 2 -4 0 0 2 -4 4 8 0 0 0 0 0 0 -8 8 8 4 2 0 192 -12 12 -76 76 88 20 10 -12 0 0 6 -28 28 40 8 4 -6 576 -15 -7 -29 -15 -22 3 2 -1 448 -13 -5 -25 -7 -14 3 2 -1 512 -14 -6 -26 -14 -20 4 2 -2 448 -13 -5 -23 -5 -18 3 2 -3 384 -6 -4 -16 -20 -8 0 0 -4 0 6 8 -16 4 40 -4 0 -4 0 8 8 -24 8 48 0 2 -8 96 -1 -1 0 -6 36 -4 0 -6 192 -4 -4 12 -12 72 -4 2 -12 0 0 0 -6 6 4 2 2 0 384 -12 -4 -22 -6 -12 2 2 0 1216 -31 -15 -59 -37 -50 7 4 -3 960 -20 -16 -42 -42 -36 10 6 -6 2304 -72 -20 -112 -64 -96 16 10 -8 1344 -42 -12 -64 -36 -56 8 6 -6 1152 -36 -12 -56 -32 -48 8 6 -4 384 -12 -4 -16 -8 -16 0 2 0 192 -6 0 -4 0 -8 -4 0 0 912 -26 -10 -43 -31 -38 5 4 -1 960 -27 -11 -46 -32 -40 6 4 -2 1344 -39 -15 -66 -44 -56 10 6 -4 4224 -120 -48 -200 -152 -176 32 18 -16 4992 -132 -60 -240 -168 -208 32 18 -16 3456 -96 -40 -168 -104 -144 24 14 -16 2688 -76 -28 -128 -72 -112 16 10 -16 960 -29 -9 -46 -28 -40 6 4 -4 0 2 -2 12 0 0 -4 2 0 960 -20 -20 134 -42 -36 -38 10 -6 1920 -60 -20 148 -84 -72 -36 10 -12 1920 -68 -12 100 -84 -72 -20 14 -12 320 -12 0 -6 -14 -12 2 2 -2 960 -40 0 -26 -42 -36 18 10 -6 576 -12 -8 -22 -30 -12 2 2 -6 576 -12 -10 -8 -24 -24 -2 4 0 2304 -56 -32 -80 -96 -96 8 10 0 960 -20 -20 -38 -42 -36 20 10 -6 192 -6 0 -4 -4 -8 -2 0 -2 0 0 0 1 1 2 -1 0 -1 192 -8 0 -4 28 -8 -4 2 -12 192 -8 0 -4 60 -8 -4 2 -20 0 0 2 -4 4 16 -4 0 0 1792 -28 -20 -80 -88 -48 0 2 -16 384 -3 -3 -18 -20 -8 -2 0 -4 8064 -204 -100 -384 -264 -336 48 26 -24 1920 -48 -24 -88 -56 -80 8 6 -8 384 -12 -4 -16 8 -16 0 2 -8 192 -12 12 -12 -4 -8 4 6 0 192 -12 12 -12 12 -8 4 6 -8 192 -12 12 4 60 -8 -12 6 -28 0 0 0 -8 8 16 0 2 0 192 -4 -2 -4 -4 -8 0 0 -4 192 -4 -4 16 -12 0 -4 2 0 768 -20 -12 40 -48 0 -8 6 0 512 -14 -6 20 -32 0 -4 2 0 64 -2 0 0 -4 0 0 0 0 1344 -60 12 -68 -44 -56 20 18 -4 2112 -92 12 -116 -60 -88 28 26 -4 960 -44 12 -52 -28 -40 12 14 0 1920 -48 -24 -72 -56 -80 8 6 -24 96 -5 3 -4 -2 -4 0 2 0 0 0 2 -8 24 0 8 4 -10 0 4 4 -16 8 112 -16 2 -8 384 -12 -4 -24 0 0 0 2 0 0 2 -2 -4 16 0 4 2 -8 64 -4 4 -20 20 24 4 2 -2 128 -6 2 -20 16 16 4 2 -2 192 -8 0 -20 12 8 4 2 0 96 -4 0 -14 10 8 4 2 -2 448 -20 4 -76 60 56 20 10 -12 192 -4 -2 -4 -12 8 0 0 -4 384 -12 -4 0 -24 16 4 2 -8 192 -8 0 4 -12 8 4 2 -4 192 12 20 -20 -12 8 -12 2 -4 192 12 4 -20 -12 8 -4 2 -4 192 76 20 -84 -12 72 -4 18 -12 64 20 12 -28 -4 24 -4 6 -4 64 20 44 -28 -4 24 -20 6 -4 0 12 36 -22 2 20 -14 6 -2 0 4 10 -8 0 8 -4 2 0 0 4 6 -8 0 8 -2 2 0 0 4 0 -6 2 4 2 2 -2 0 0 4 -6 2 4 0 2 0 192 4 2 -12 -12 0 -4 0 0 0 8 8 -16 0 24 -4 2 0 64 20 4 -28 -4 24 4 6 -4 0 20 4 -24 0 24 4 6 0 0 8 0 -8 0 8 4 2 0 0 5 -1 -6 2 4 4 2 -2 64 24 0 -28 -4 24 12 6 -4 96 46 -10 -42 -6 36 18 14 -6 32 18 -6 -14 -2 12 10 6 -2 192 112 -40 -84 -12 72 76 38 -12 0 6 -2 -4 0 4 4 2 0 0 0 0 0 16 0 0 2 -8 192 -12 12 4 28 -8 4 6 -20 960 -40 0 38 -42 -36 2 10 -6 960 -40 8 -20 -36 -40 4 10 -4 192 -8 2 0 -8 -8 0 2 0 384 -18 6 -4 -16 -16 4 6 0 192 -8 0 8 -8 -8 0 2 0 320 -20 20 10 -14 -12 14 10 -2 576 -8 -6 -20 -36 24 -4 0 -12 96 -1 -1 -4 -6 4 0 0 -2 192 16 -8 -20 -12 8 12 6 -4 960 12 -20 -60 -52 -8 20 10 -12 576 -12 -8 -26 -26 -20 4 2 -4 1920 -48 -24 -68 -100 -40 12 6 -20 640 -16 -8 -32 -16 -24 4 2 0 384 -12 -4 -24 0 -8 4 2 0 192 -8 0 -36 44 24 12 6 -12 192 -8 0 -36 76 24 12 6 -20 128 -6 2 -20 40 16 4 2 -8 64 -4 4 -20 60 24 4 2 -12 0 0 2 -4 20 8 0 0 -4 624 -21 -5 -34 -16 -24 4 4 0 400 -12 -4 -20 -12 -16 2 2 0 192 1 -1 -10 -12 0 -2 0 0 640 -16 -8 -8 -40 48 0 2 -16 1920 -48 -24 -24 -120 80 8 6 -40 96 8 8 -22 -6 36 -10 2 -6 0 8 8 -16 0 32 -8 2 0 2112 -72 -16 -120 -40 -80 16 14 -8 3456 -100 -36 -160 -120 -144 24 14 -16 1152 -36 -12 -59 -27 -46 7 6 -3 1920 -48 -24 -96 -32 -64 8 6 0 640 -16 -8 -32 0 0 0 2 0 240 -2 -2 -11 -15 10 -3 0 -5 960 -20 -12 -32 -56 16 0 2 -16 1920 -48 -24 216 -80 -80 -64 6 0 384 -12 -4 32 -16 -16 -8 2 0 320 -10 0 18 -14 -12 -6 0 -2 192 -6 0 20 -4 -8 -8 0 -4 320 -10 0 -14 18 -12 -2 0 -6 32 -1 1 -4 6 20 -4 0 -2 192 -8 0 -16 32 0 0 2 -8 192 -8 0 -20 28 8 4 2 -4 0 0 0 -8 28 8 4 2 -8 0 0 0 -6 34 4 2 2 -10 384 -12 -4 -22 2 -12 2 2 -2 192 -12 12 28 -12 8 12 6 -4 576 -24 0 -8 -24 -16 8 6 -8 192 -8 0 -2 -10 -4 4 2 -2 768 0 -8 -40 -40 -16 0 2 -8 3840 0 -56 -200 -200 -80 24 18 -40 384 0 -6 -20 -20 -8 4 2 -4 768 -12 -10 -36 -36 -24 4 2 -6 192 -8 0 -20 28 88 -12 2 -4 64 -4 4 -20 52 200 -28 2 -12 0 0 8 -24 72 336 -48 2 -24 0 1 1 -2 4 40 -6 0 -4 0 0 2 -4 12 48 -8 0 -4 1792 -4 -20 -88 -112 0 -8 6 0 768 4 -12 -40 -48 0 0 6 0 192 0 -4 -10 -10 -4 2 2 -2 96 -5 3 1 -5 -2 3 2 -1 96 6 -2 -10 -6 4 2 2 -2 528 9 -11 -35 -29 -2 9 6 -7 480 38 -18 -50 -30 20 22 14 -10 640 12 -12 -40 -40 0 8 6 0 48 -3 3 -14 8 24 -4 2 0 384 2 -6 -20 -24 144 4 2 -24 192 -4 -2 -6 -10 -4 0 0 -2 1344 -24 -16 -56 -72 -16 0 2 -16 2880 -60 -36 -112 -152 -56 12 6 -28 1344 -24 -16 -56 -72 -24 4 2 -12 384 -6 -6 -12 -24 0 0 2 0 64 -4 4 4 -4 0 4 2 0 384 -12 -4 48 -8 -16 -16 2 -8 192 -6 0 12 -4 -8 -6 0 -4 576 -18 0 -23 -3 -22 -5 0 -3 0 0 0 -22 194 4 14 10 -58 64 -4 4 -8 96 0 0 2 -24 0 0 10 -2 154 4 -6 0 -38 384 -12 -4 16 -24 80 0 2 -16 64 -2 0 8 -4 24 0 0 -4 384 -12 -4 48 -24 144 0 2 -24 192 -8 0 4 -12 0 4 2 0 384 -12 -4 16 -24 16 0 2 -8 0 0 6 1 9 2 -5 0 -3 0 0 2 4 16 0 -4 0 -6 1344 -56 8 -60 -44 -56 12 14 -4 192 -4 -2 32 -4 -8 -12 0 -4 1920 -48 -24 296 -40 -80 -104 6 -40 192 -4 -2 24 -8 -8 -8 0 0 960 -20 -10 114 -42 -36 -38 0 -6 640 -16 -8 68 -28 -24 -20 2 -4 0 10 2 -12 0 160 -20 2 0 0 3 -1 -6 4 40 -2 2 -4 0 8 -8 -24 24 80 8 10 -8 0 116 -36 -80 0 80 64 38 0 0 136 -56 -120 40 80 104 58 -40 0 14 -6 -12 4 8 12 6 -4 0 10 -6 -12 8 16 12 6 -8 192 8 -8 -20 -4 88 12 6 -20 960 0 -16 -52 -52 248 12 6 -52 0 0 2 -4 20 80 -12 0 -4 64 -2 0 -4 8 24 -4 0 0 1920 -40 -20 -68 -84 -72 -2 0 -12 576 -12 -6 -19 -23 -22 -1 0 -5 1920 -48 -24 -72 -72 -80 4 6 -8 192 -4 -4 4 -4 -8 -4 2 -4 1920 -68 -12 -60 -84 -72 20 14 -12 0 1 1 -2 4 24 -4 0 -4 0 0 2 -4 12 32 -6 0 -4 64 -4 4 -20 52 72 -12 2 -12 192 -8 0 -20 28 24 -4 2 -4 448 -16 0 -36 28 56 -12 2 -4 288 -8 -4 -2 -18 12 2 2 -6 192 -4 -4 12 -12 8 -4 2 -4 192 -12 12 14 -10 -4 10 6 -2 192 -8 0 36 -12 72 4 2 -12 1344 -24 -16 -36 -84 120 -12 2 -36 960 -20 -12 -20 -60 72 -4 2 -24 640 -16 -8 -20 -36 0 4 2 -8 576 -12 -8 -18 -34 -4 2 2 -2 192 -4 -4 -4 -12 0 4 2 0 192 -4 -4 -6 -10 -4 4 2 -2 192 -4 -4 36 -4 -8 -12 2 -4 192 -4 -4 28 -8 -8 -8 2 0 192 -4 -4 4 -8 -8 -2 2 0 960 -20 -20 22 -42 -36 -10 10 -6 384 -12 -4 16 -8 -16 -8 2 -8 576 -12 -6 0 -16 -24 -10 0 -8 1920 -48 -24 -24 -56 -80 -16 6 -24 1920 -48 -24 72 -40 -80 -48 6 -40 192 -4 -2 8 -4 -8 -6 0 -4 576 -12 -6 -15 -23 -22 -3 0 -5 0 0 0 -8 24 80 -8 2 -8 64 -4 4 -20 20 72 -12 2 -4 192 -8 0 -20 12 24 -4 2 0 192 -6 0 -12 8 8 -4 0 0 0 0 0 -8 24 16 0 2 -8 0 0 2 -4 20 16 -4 0 -4 0 0 2 -4 12 24 -4 0 -4 96 -4 0 -14 10 20 -2 2 -2 64 -4 4 -20 52 40 -4 2 -12 192 -12 12 -60 188 152 -28 6 -36 192 -4 -2 -4 -12 0 0 0 0 0 16 24 -52 12 120 -12 2 -12 0 0 14 -18 6 20 -6 4 0 576 -8 -8 -20 -36 24 -4 2 -12 640 -16 -8 24 -40 48 -8 2 -16 192 -6 0 8 -12 8 0 0 -4 640 -20 -4 16 -40 48 0 2 -16 960 -20 -12 -4 -60 168 -12 2 -36 640 -16 -8 24 -40 176 -8 2 -32 640 -16 -8 56 -40 240 -8 2 -40 960 -20 -12 28 -60 296 -20 2 -52 192 -4 -2 12 -12 72 -4 0 -12 1920 -48 -24 156 -100 -40 -44 6 -20 384 -12 -4 20 -20 -8 -4 2 -4 192 -8 0 6 -10 -4 2 2 -2 0 0 0 8 4 0 -4 0 -2 192 -12 12 4 12 -8 -12 6 -4 192 -8 0 -4 4 -8 -4 2 0 192 -6 0 -4 20 -8 -4 0 -8 0 3 11 -9 1 10 -5 2 -1 576 -12 -6 -16 -16 -24 -2 0 -8 1920 -48 -24 -48 -112 32 8 6 -32 640 -16 -8 -8 -40 16 0 2 -8 1152 -12 -12 -52 -60 -24 -4 2 -12 2880 -60 -36 -112 -152 -48 8 6 -32 0 8 16 -36 12 120 -28 2 -12 0 2 4 -8 4 40 -8 0 -4 0 0 4 -16 16 48 -8 2 -4 0 4 4 -16 8 48 -8 2 -8 128 -6 2 -2 -6 -4 2 2 0 160 -7 1 1 -9 -2 3 2 -1 288 -8 -4 -2 -18 0 2 2 0 768 -20 -12 8 -48 0 0 6 0 0 8 0 0 0 96 -16 2 0 192 4 -4 12 -12 72 -20 2 -12 0 6 -2 12 0 48 -12 2 0 0 12 -4 -8 0 96 -8 6 0 192 16 -16 -12 -12 72 4 14 -12 0 14 -10 -4 0 48 4 10 0 640 -16 -8 32 -40 0 -8 2 0 1920 -48 -24 104 -120 80 -24 6 -40 1920 -48 -24 116 -108 8 -36 6 -28 640 -16 -8 24 -40 16 -8 2 -8 192 -4 -2 12 -12 8 -4 0 -4 192 -4 -2 13 -11 2 -5 0 -3 576 -12 -6 28 -36 16 -12 0 -8 192 -4 -2 12 -12 0 -4 0 0 192 -4 -2 18 -10 -4 -6 0 -2 384 -12 -4 16 -24 0 0 2 0 384 -12 -4 0 -24 0 4 2 0 1920 -48 -24 -56 -56 -80 -8 6 -8 0 20 4 -24 0 288 -40 6 0 0 2 0 4 0 8 -4 0 0 0 10 -6 -4 0 16 4 6 0 0 14 -6 -8 0 8 8 6 0 0 20 -4 -16 0 16 8 6 0 0 8 2 -8 0 8 0 2 0 0 32 0 -32 0 32 8 10 0 48 19 -1 -21 -3 18 5 6 -3 1152 -18 -14 -50 -62 -20 2 2 -10 0 2 -2 -2 2 4 2 2 -2 192 -4 -2 4 -12 40 -4 0 -8 192 -4 -2 4 -12 24 -4 0 -6 128 -3 -1 2 -8 16 -2 0 -4 64 -4 4 -20 20 40 -4 2 -4 192 -12 12 -52 36 104 -20 6 -4 0 0 6 -12 20 40 -8 0 -4 384 -12 -4 -24 32 64 -8 2 0 0 0 0 -6 18 4 2 2 -6 0 0 0 -8 20 8 4 2 -6 0 0 8 -24 40 208 -32 2 -16 0 0 8 -24 40 144 -24 2 -16 0 0 8 -24 40 112 -16 2 -16 192 -8 0 -20 60 152 -20 2 -4 64 -4 4 -20 84 264 -36 2 -12 960 -16 -12 -26 -42 -36 -6 2 -6 960 -20 -12 -34 -42 -36 0 2 -6 960 -20 -16 -18 -42 -36 -2 6 -6 576 -8 -8 -20 -36 88 -4 2 -20 192 132 -60 -84 -12 72 76 58 -12 192 20 -12 -20 -12 8 12 10 -4 96 3 -3 -6 -6 0 2 2 0 768 16 -16 -48 -48 0 8 10 0 96 -1 -1 0 -6 20 -4 0 -4 0 3 5 -10 8 72 -14 0 -8 0 4 12 -32 24 176 -32 2 -16 192 -12 12 -60 60 152 -28 6 -4 192 -12 12 -76 76 184 -28 10 -12 0 0 0 0 48 0 0 2 -16 576 -12 -8 -12 -36 24 0 2 -12 192 -4 -4 -4 -12 8 4 2 -4 0 0 12 -32 32 96 -16 2 -8 0 24 -8 -24 8 16 16 10 -8 0 52 -28 -64 40 80 48 30 -40 192 -12 12 20 156 -8 -28 6 -60 192 -12 12 20 380 -8 -28 6 -116 0 0 2 4 40 0 -4 0 -12 0 0 6 8 24 0 -8 0 -10 0 0 8 -36 28 152 -20 6 -4 32 -2 2 -12 8 32 -4 2 0 0 0 2 4 4 0 -4 0 0 0 0 6 8 8 0 -8 0 -2 0 0 6 1 5 2 -5 0 -1 1024 -16 -12 -48 -48 -32 4 2 -8 1248 -23 -15 -55 -57 -42 3 2 -9 1344 -24 -16 -58 -66 -36 2 2 -12 1056 -21 -13 -45 -51 -30 3 2 -9 960 -20 -12 -40 -48 -24 4 2 -8 0 0 8 -24 24 112 -20 2 -8 0 4 12 -32 24 144 -24 2 -16 0 0 8 -24 24 80 -12 2 -8 0 8 0 -8 24 80 -8 2 -24 0 6 -2 -4 16 48 4 2 -16 0 14 -10 -20 16 48 20 10 -16 0 20 -12 -32 24 80 16 14 -24 0 14 -2 -20 8 16 12 6 -8 0 12 -4 -16 8 16 8 6 -8 0 2 0 0 4 8 0 0 -4 192 4 -4 -12 -4 88 4 2 -20 96 1 -3 -4 -6 36 0 2 -6 192 4 -12 -4 -12 72 12 10 -12 192 -4 -4 22 -10 -4 -6 2 -2 1344 -28 -16 -54 -62 -44 2 2 -10 2688 -36 -28 -120 -144 -32 -8 2 -32 640 -8 -6 -28 -36 0 -4 0 -8 112 -1 -1 -5 -7 2 -1 0 -1 48 2 2 -7 -3 18 -5 0 -3 0 1 1 -2 0 8 -2 0 0 0 12 20 -48 24 240 -48 2 -24 4864 -80 -56 -216 -216 -176 8 6 -32 2304 -32 -24 -104 -104 -80 0 2 -16 1152 -24 -14 -44 -60 -24 4 2 -12 384 -6 -4 -12 -24 24 -4 0 -8 1728 -28 -20 -64 -104 48 -8 2 -32 1344 -24 -16 -36 -84 88 -12 2 -28 192 8 -8 -12 -12 8 4 6 -4 192 48 -32 -28 -12 72 20 30 -12 1920 -48 -24 -44 -108 8 4 6 -28 960 -20 -12 -20 -60 40 -4 2 -16 1344 -28 -16 -28 -84 40 -4 2 -20 768 -14 -8 -20 -48 24 -4 0 -12 2112 -32 -24 -68 -132 152 -20 2 -52 192 -4 -2 -3 -11 2 -1 0 -3 576 -12 -6 -4 -36 16 -4 0 -8 192 -4 -2 4 -12 16 -4 0 -4 1728 -36 -18 -59 -75 -62 -3 0 -13 192 4 -4 -12 -12 0 4 2 0 96 -1 -1 -3 -5 -2 -1 0 -1 192 0 -2 -4 -12 0 -4 0 0 2496 -36 -28 -96 -152 16 -8 2 -16 960 -12 -12 -36 -60 8 -4 2 -4 1920 -18 -26 -76 -120 0 -4 6 0 2688 -42 -34 -116 -144 -48 4 6 -24 864 -17 -11 -37 -43 -22 3 2 -7 2880 -60 -36 -118 -142 -76 10 6 -26 192 -6 0 -10 10 -4 -2 0 -2 192 -6 0 -10 2 -4 -2 0 0 0 0 2 -2 26 4 -2 0 -6 192 -12 12 -40 240 32 -8 6 -56 480 -7 -5 -12 -30 52 -8 0 -14 0 0 4 -16 16 80 -12 2 -4 0 4 6 -12 4 48 -12 0 -4 1152 -36 -12 -60 -20 -40 4 6 -4 0 2 8 -16 12 56 -12 0 -4 0 10 16 -32 12 120 -28 0 -12 96 9 -1 16 -6 36 -20 0 -6 96 1 -1 0 -6 4 -4 0 -2 416 -10 -6 -12 -24 16 4 2 -8 192 -4 -4 6 -10 -4 -2 2 -2 192 -4 -4 8 -12 0 -2 2 0 0 4 -2 -3 1 2 3 2 -1 960 -12 -12 -44 -52 -16 4 2 -8 576 -8 -8 -28 -28 -16 4 2 -4 0 3 5 -9 1 10 -1 2 -1 0 3 7 -9 1 10 -3 2 -1 1792 -16 -24 -88 -88 -48 8 6 -16 864 -15 -11 -39 -41 -26 3 2 -7 672 -11 -9 -31 -33 -18 3 2 -5 960 -16 -12 -42 -50 -20 2 2 -8 3200 -80 -40 -154 -90 -132 18 10 -6 1920 -48 -24 -94 -46 -76 10 6 -2 1056 -12 -12 -50 -58 -4 -2 2 -14 960 -12 -12 -44 -52 -8 4 2 -12 0 0 6 -20 20 56 -8 2 -6 192 8 8 -24 -8 16 -8 2 -8 0 3 1 -2 4 8 -2 0 -4 0 11 1 -2 20 40 -6 0 -20 0 0 18 -3 13 10 -13 0 -3 400 -6 -4 -16 -20 -8 -2 0 -4 3648 -64 -40 -144 -176 -96 -8 2 -32 624 -8 -6 -26 -34 -4 -4 0 -8 576 0 -6 -28 -36 0 -4 2 0 4608 -60 -52 -200 -240 -96 -8 6 -48 1152 -18 -14 -48 -60 -24 0 2 -12 1920 -34 -22 -80 -92 -56 0 2 -16 1728 -36 -22 -74 -82 -52 8 4 -14 1344 -28 -20 -40 -80 96 8 6 -32 576 -12 -8 -12 -36 56 0 2 -16 528 -13 -7 -16 -30 4 4 2 -8 192 -12 12 -48 40 80 -16 6 -8 192 -12 12 -48 200 80 -16 6 -48 0 0 6 -12 52 40 -8 0 -12 0 0 2 -3 21 10 -3 0 -5 256 -8 0 -12 12 -8 -2 0 -4 192 -6 0 -7 13 -6 -3 0 -5 512 -16 0 -24 0 -16 -4 0 -2 512 -14 -6 -4 -32 0 2 2 0 640 -16 -8 -8 -40 0 2 2 0 960 -20 -14 -20 -60 0 2 4 0 960 -20 -12 -4 -60 72 -12 2 -20 960 -20 -12 -4 -60 104 -12 2 -28 192 -12 12 20 36 -8 -28 6 0 0 0 2 -3 5 10 -3 0 -1 192 28 -4 -44 -4 24 20 10 -12 64 8 0 -12 -4 8 4 2 -2 256 14 6 -36 -16 32 4 2 -8 48 4 6 -10 -2 20 -8 0 -4 16 2 4 -4 0 8 -4 0 -2 0 12 36 -28 12 56 -28 2 -12 0 4 4 -8 0 8 0 2 0 64 4 8 -12 -4 8 -4 2 0 448 12 12 -36 -28 8 -12 2 -4 768 -10 -8 -28 -48 8 -4 0 -4 1536 -22 -16 -52 -96 56 -12 0 -28 1792 -16 -16 -88 -88 -48 0 2 -16 384 6 -10 -20 -24 0 4 6 0 2304 -12 -28 -104 -144 0 -8 6 0 3840 -48 -40 -168 -200 -80 -8 2 -40 0 0 8 -6 10 4 -2 2 -4 0 4 8 -6 18 4 -2 2 -10 768 -16 -10 -16 -48 24 -2 2 -12 2304 -56 -32 -32 -144 96 8 10 -48 1792 -48 -24 -16 -112 0 8 10 0 2304 -56 -32 -32 -144 0 8 10 0 192 -6 0 -7 5 -6 -3 0 -3 448 -14 0 -19 1 -14 -5 0 -3 576 -18 0 -24 4 -16 -8 0 -4 2880 -60 -36 -96 -168 -16 8 6 -16 192 -6 0 10 -10 -4 -2 0 -2 256 -8 0 12 -12 -8 -4 0 -2 512 -16 0 0 -24 -16 -2 0 -4 192 -6 0 2 -10 -4 0 0 -2 576 -18 0 4 -24 -16 -4 0 -8 448 -14 0 1 -19 -14 -3 0 -5 576 -18 0 -3 -23 -22 -3 0 -5 192 -6 0 5 -7 -6 -3 0 -3 192 -6 0 13 -7 -6 -5 0 -3 64 -4 4 20 -4 24 4 2 -4 2304 -56 -32 -96 -96 -96 16 10 0 768 -30 0 -32 -28 -32 8 6 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 end lrslib-062/ine/cocoa13/perm7.ine0000600001553200155320000000521612722006423014207 0ustar avis*permutahedron n=7 H-representation linearity 1 1 begin 127 8 integer -28 1 1 1 1 1 1 1 27 -1 -1 -1 -1 -1 -1 0 27 -1 -1 -1 -1 -1 0 -1 27 -1 -1 -1 -1 0 -1 -1 27 -1 -1 -1 0 -1 -1 -1 27 -1 -1 0 -1 -1 -1 -1 27 -1 0 -1 -1 -1 -1 -1 27 0 -1 -1 -1 -1 -1 -1 25 -1 -1 -1 -1 -1 0 0 25 -1 -1 -1 -1 0 -1 0 25 -1 -1 -1 -1 0 0 -1 25 -1 -1 -1 0 -1 -1 0 25 -1 -1 -1 0 -1 0 -1 25 -1 -1 -1 0 0 -1 -1 25 -1 -1 0 -1 -1 -1 0 25 -1 -1 0 -1 -1 0 -1 25 -1 -1 0 -1 0 -1 -1 25 -1 -1 0 0 -1 -1 -1 25 -1 0 -1 -1 -1 -1 0 25 -1 0 -1 -1 -1 0 -1 25 -1 0 -1 -1 0 -1 -1 25 -1 0 -1 0 -1 -1 -1 25 -1 0 0 -1 -1 -1 -1 25 0 -1 -1 -1 -1 -1 0 25 0 -1 -1 -1 -1 0 -1 25 0 -1 -1 -1 0 -1 -1 25 0 -1 -1 0 -1 -1 -1 25 0 -1 0 -1 -1 -1 -1 25 0 0 -1 -1 -1 -1 -1 22 -1 -1 -1 -1 0 0 0 22 -1 -1 -1 0 -1 0 0 22 -1 -1 -1 0 0 -1 0 22 -1 -1 -1 0 0 0 -1 22 -1 -1 0 -1 -1 0 0 22 -1 -1 0 -1 0 -1 0 22 -1 -1 0 -1 0 0 -1 22 -1 -1 0 0 -1 -1 0 22 -1 -1 0 0 -1 0 -1 22 -1 -1 0 0 0 -1 -1 22 -1 0 -1 -1 -1 0 0 22 -1 0 -1 -1 0 -1 0 22 -1 0 -1 -1 0 0 -1 22 -1 0 -1 0 -1 -1 0 22 -1 0 -1 0 -1 0 -1 22 -1 0 -1 0 0 -1 -1 22 -1 0 0 -1 -1 -1 0 22 -1 0 0 -1 -1 0 -1 22 -1 0 0 -1 0 -1 -1 22 -1 0 0 0 -1 -1 -1 22 0 -1 -1 -1 -1 0 0 22 0 -1 -1 -1 0 -1 0 22 0 -1 -1 -1 0 0 -1 22 0 -1 -1 0 -1 -1 0 22 0 -1 -1 0 -1 0 -1 22 0 -1 -1 0 0 -1 -1 22 0 -1 0 -1 -1 -1 0 22 0 -1 0 -1 -1 0 -1 22 0 -1 0 -1 0 -1 -1 22 0 -1 0 0 -1 -1 -1 22 0 0 -1 -1 -1 -1 0 22 0 0 -1 -1 -1 0 -1 22 0 0 -1 -1 0 -1 -1 22 0 0 -1 0 -1 -1 -1 22 0 0 0 -1 -1 -1 -1 18 -1 -1 -1 0 0 0 0 18 -1 -1 0 -1 0 0 0 18 -1 -1 0 0 -1 0 0 18 -1 -1 0 0 0 -1 0 18 -1 -1 0 0 0 0 -1 18 -1 0 -1 -1 0 0 0 18 -1 0 -1 0 -1 0 0 18 -1 0 -1 0 0 -1 0 18 -1 0 -1 0 0 0 -1 18 -1 0 0 -1 -1 0 0 18 -1 0 0 -1 0 -1 0 18 -1 0 0 -1 0 0 -1 18 -1 0 0 0 -1 -1 0 18 -1 0 0 0 -1 0 -1 18 -1 0 0 0 0 -1 -1 18 0 -1 -1 -1 0 0 0 18 0 -1 -1 0 -1 0 0 18 0 -1 -1 0 0 -1 0 18 0 -1 -1 0 0 0 -1 18 0 -1 0 -1 -1 0 0 18 0 -1 0 -1 0 -1 0 18 0 -1 0 -1 0 0 -1 18 0 -1 0 0 -1 -1 0 18 0 -1 0 0 -1 0 -1 18 0 -1 0 0 0 -1 -1 18 0 0 -1 -1 -1 0 0 18 0 0 -1 -1 0 -1 0 18 0 0 -1 -1 0 0 -1 18 0 0 -1 0 -1 -1 0 18 0 0 -1 0 -1 0 -1 18 0 0 -1 0 0 -1 -1 18 0 0 0 -1 -1 -1 0 18 0 0 0 -1 -1 0 -1 18 0 0 0 -1 0 -1 -1 18 0 0 0 0 -1 -1 -1 13 -1 -1 0 0 0 0 0 13 -1 0 -1 0 0 0 0 13 -1 0 0 -1 0 0 0 13 -1 0 0 0 -1 0 0 13 -1 0 0 0 0 -1 0 13 -1 0 0 0 0 0 -1 13 0 -1 -1 0 0 0 0 13 0 -1 0 -1 0 0 0 13 0 -1 0 0 -1 0 0 13 0 -1 0 0 0 -1 0 13 0 -1 0 0 0 0 -1 13 0 0 -1 -1 0 0 0 13 0 0 -1 0 -1 0 0 13 0 0 -1 0 0 -1 0 13 0 0 -1 0 0 0 -1 13 0 0 0 -1 -1 0 0 13 0 0 0 -1 0 -1 0 13 0 0 0 -1 0 0 -1 13 0 0 0 0 -1 -1 0 13 0 0 0 0 -1 0 -1 13 0 0 0 0 0 -1 -1 7 -1 0 0 0 0 0 0 7 0 -1 0 0 0 0 0 7 0 0 -1 0 0 0 0 7 0 0 0 -1 0 0 0 7 0 0 0 0 -1 0 0 7 0 0 0 0 0 -1 0 7 0 0 0 0 0 0 -1 end linearity 1 1 lrslib-062/ine/cocoa13/bv8.ine0000600001553200155320000003146512722006423013661 0ustar avis*ext form for perm H-representation linearity 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 begin 87 73 integer 0 8 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 -1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 end lrslib-062/ine/cocoa13/bv6.ine0000600001553200155320000001135512722006423013653 0ustar avis*ext form for perm H-representation linearity 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 begin 53 43 integer 0 6 0 0 0 0 0 5 0 0 0 0 0 4 0 0 0 0 0 3 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 0 0 0 6 0 0 0 0 0 5 0 0 0 0 0 4 0 0 0 0 0 3 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 0 0 0 6 0 0 0 0 0 5 0 0 0 0 0 4 0 0 0 0 0 3 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 0 0 0 6 0 0 0 0 0 5 0 0 0 0 0 4 0 0 0 0 0 3 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 0 0 0 6 0 0 0 0 0 5 0 0 0 0 0 4 0 0 0 0 0 3 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 0 0 0 6 0 0 0 0 0 5 0 0 0 0 0 4 0 0 0 0 0 3 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 -1 -1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 -1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 end lrslib-062/ine/cocoa13/bv10.ine0000600001553200155320000007102212722006424013724 0ustar avis*ext form for perm H-representation linearity 29 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 begin 129 111 integer 0 10 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 -1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 end lrslib-062/ine/cocoa13/perm10.ine0000600001553200155320000007023412722006424014264 0ustar avis*permutahedron n=10 H-representation linearity 1 1 begin 1023 11 integer -55 1 1 1 1 1 1 1 1 1 1 54 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 54 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 54 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 54 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 54 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 54 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 54 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 54 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 54 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 54 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 52 -1 -1 -1 -1 -1 -1 -1 -1 0 0 52 -1 -1 -1 -1 -1 -1 -1 0 -1 0 52 -1 -1 -1 -1 -1 -1 -1 0 0 -1 52 -1 -1 -1 -1 -1 -1 0 -1 -1 0 52 -1 -1 -1 -1 -1 -1 0 -1 0 -1 52 -1 -1 -1 -1 -1 -1 0 0 -1 -1 52 -1 -1 -1 -1 -1 0 -1 -1 -1 0 52 -1 -1 -1 -1 -1 0 -1 -1 0 -1 52 -1 -1 -1 -1 -1 0 -1 0 -1 -1 52 -1 -1 -1 -1 -1 0 0 -1 -1 -1 52 -1 -1 -1 -1 0 -1 -1 -1 -1 0 52 -1 -1 -1 -1 0 -1 -1 -1 0 -1 52 -1 -1 -1 -1 0 -1 -1 0 -1 -1 52 -1 -1 -1 -1 0 -1 0 -1 -1 -1 52 -1 -1 -1 -1 0 0 -1 -1 -1 -1 52 -1 -1 -1 0 -1 -1 -1 -1 -1 0 52 -1 -1 -1 0 -1 -1 -1 -1 0 -1 52 -1 -1 -1 0 -1 -1 -1 0 -1 -1 52 -1 -1 -1 0 -1 -1 0 -1 -1 -1 52 -1 -1 -1 0 -1 0 -1 -1 -1 -1 52 -1 -1 -1 0 0 -1 -1 -1 -1 -1 52 -1 -1 0 -1 -1 -1 -1 -1 -1 0 52 -1 -1 0 -1 -1 -1 -1 -1 0 -1 52 -1 -1 0 -1 -1 -1 -1 0 -1 -1 52 -1 -1 0 -1 -1 -1 0 -1 -1 -1 52 -1 -1 0 -1 -1 0 -1 -1 -1 -1 52 -1 -1 0 -1 0 -1 -1 -1 -1 -1 52 -1 -1 0 0 -1 -1 -1 -1 -1 -1 52 -1 0 -1 -1 -1 -1 -1 -1 -1 0 52 -1 0 -1 -1 -1 -1 -1 -1 0 -1 52 -1 0 -1 -1 -1 -1 -1 0 -1 -1 52 -1 0 -1 -1 -1 -1 0 -1 -1 -1 52 -1 0 -1 -1 -1 0 -1 -1 -1 -1 52 -1 0 -1 -1 0 -1 -1 -1 -1 -1 52 -1 0 -1 0 -1 -1 -1 -1 -1 -1 52 -1 0 0 -1 -1 -1 -1 -1 -1 -1 52 0 -1 -1 -1 -1 -1 -1 -1 -1 0 52 0 -1 -1 -1 -1 -1 -1 -1 0 -1 52 0 -1 -1 -1 -1 -1 -1 0 -1 -1 52 0 -1 -1 -1 -1 -1 0 -1 -1 -1 52 0 -1 -1 -1 -1 0 -1 -1 -1 -1 52 0 -1 -1 -1 0 -1 -1 -1 -1 -1 52 0 -1 -1 0 -1 -1 -1 -1 -1 -1 52 0 -1 0 -1 -1 -1 -1 -1 -1 -1 52 0 0 -1 -1 -1 -1 -1 -1 -1 -1 49 -1 -1 -1 -1 -1 -1 -1 0 0 0 49 -1 -1 -1 -1 -1 -1 0 -1 0 0 49 -1 -1 -1 -1 -1 -1 0 0 -1 0 49 -1 -1 -1 -1 -1 -1 0 0 0 -1 49 -1 -1 -1 -1 -1 0 -1 -1 0 0 49 -1 -1 -1 -1 -1 0 -1 0 -1 0 49 -1 -1 -1 -1 -1 0 -1 0 0 -1 49 -1 -1 -1 -1 -1 0 0 -1 -1 0 49 -1 -1 -1 -1 -1 0 0 -1 0 -1 49 -1 -1 -1 -1 -1 0 0 0 -1 -1 49 -1 -1 -1 -1 0 -1 -1 -1 0 0 49 -1 -1 -1 -1 0 -1 -1 0 -1 0 49 -1 -1 -1 -1 0 -1 -1 0 0 -1 49 -1 -1 -1 -1 0 -1 0 -1 -1 0 49 -1 -1 -1 -1 0 -1 0 -1 0 -1 49 -1 -1 -1 -1 0 -1 0 0 -1 -1 49 -1 -1 -1 -1 0 0 -1 -1 -1 0 49 -1 -1 -1 -1 0 0 -1 -1 0 -1 49 -1 -1 -1 -1 0 0 -1 0 -1 -1 49 -1 -1 -1 -1 0 0 0 -1 -1 -1 49 -1 -1 -1 0 -1 -1 -1 -1 0 0 49 -1 -1 -1 0 -1 -1 -1 0 -1 0 49 -1 -1 -1 0 -1 -1 -1 0 0 -1 49 -1 -1 -1 0 -1 -1 0 -1 -1 0 49 -1 -1 -1 0 -1 -1 0 -1 0 -1 49 -1 -1 -1 0 -1 -1 0 0 -1 -1 49 -1 -1 -1 0 -1 0 -1 -1 -1 0 49 -1 -1 -1 0 -1 0 -1 -1 0 -1 49 -1 -1 -1 0 -1 0 -1 0 -1 -1 49 -1 -1 -1 0 -1 0 0 -1 -1 -1 49 -1 -1 -1 0 0 -1 -1 -1 -1 0 49 -1 -1 -1 0 0 -1 -1 -1 0 -1 49 -1 -1 -1 0 0 -1 -1 0 -1 -1 49 -1 -1 -1 0 0 -1 0 -1 -1 -1 49 -1 -1 -1 0 0 0 -1 -1 -1 -1 49 -1 -1 0 -1 -1 -1 -1 -1 0 0 49 -1 -1 0 -1 -1 -1 -1 0 -1 0 49 -1 -1 0 -1 -1 -1 -1 0 0 -1 49 -1 -1 0 -1 -1 -1 0 -1 -1 0 49 -1 -1 0 -1 -1 -1 0 -1 0 -1 49 -1 -1 0 -1 -1 -1 0 0 -1 -1 49 -1 -1 0 -1 -1 0 -1 -1 -1 0 49 -1 -1 0 -1 -1 0 -1 -1 0 -1 49 -1 -1 0 -1 -1 0 -1 0 -1 -1 49 -1 -1 0 -1 -1 0 0 -1 -1 -1 49 -1 -1 0 -1 0 -1 -1 -1 -1 0 49 -1 -1 0 -1 0 -1 -1 -1 0 -1 49 -1 -1 0 -1 0 -1 -1 0 -1 -1 49 -1 -1 0 -1 0 -1 0 -1 -1 -1 49 -1 -1 0 -1 0 0 -1 -1 -1 -1 49 -1 -1 0 0 -1 -1 -1 -1 -1 0 49 -1 -1 0 0 -1 -1 -1 -1 0 -1 49 -1 -1 0 0 -1 -1 -1 0 -1 -1 49 -1 -1 0 0 -1 -1 0 -1 -1 -1 49 -1 -1 0 0 -1 0 -1 -1 -1 -1 49 -1 -1 0 0 0 -1 -1 -1 -1 -1 49 -1 0 -1 -1 -1 -1 -1 -1 0 0 49 -1 0 -1 -1 -1 -1 -1 0 -1 0 49 -1 0 -1 -1 -1 -1 -1 0 0 -1 49 -1 0 -1 -1 -1 -1 0 -1 -1 0 49 -1 0 -1 -1 -1 -1 0 -1 0 -1 49 -1 0 -1 -1 -1 -1 0 0 -1 -1 49 -1 0 -1 -1 -1 0 -1 -1 -1 0 49 -1 0 -1 -1 -1 0 -1 -1 0 -1 49 -1 0 -1 -1 -1 0 -1 0 -1 -1 49 -1 0 -1 -1 -1 0 0 -1 -1 -1 49 -1 0 -1 -1 0 -1 -1 -1 -1 0 49 -1 0 -1 -1 0 -1 -1 -1 0 -1 49 -1 0 -1 -1 0 -1 -1 0 -1 -1 49 -1 0 -1 -1 0 -1 0 -1 -1 -1 49 -1 0 -1 -1 0 0 -1 -1 -1 -1 49 -1 0 -1 0 -1 -1 -1 -1 -1 0 49 -1 0 -1 0 -1 -1 -1 -1 0 -1 49 -1 0 -1 0 -1 -1 -1 0 -1 -1 49 -1 0 -1 0 -1 -1 0 -1 -1 -1 49 -1 0 -1 0 -1 0 -1 -1 -1 -1 49 -1 0 -1 0 0 -1 -1 -1 -1 -1 49 -1 0 0 -1 -1 -1 -1 -1 -1 0 49 -1 0 0 -1 -1 -1 -1 -1 0 -1 49 -1 0 0 -1 -1 -1 -1 0 -1 -1 49 -1 0 0 -1 -1 -1 0 -1 -1 -1 49 -1 0 0 -1 -1 0 -1 -1 -1 -1 49 -1 0 0 -1 0 -1 -1 -1 -1 -1 49 -1 0 0 0 -1 -1 -1 -1 -1 -1 49 0 -1 -1 -1 -1 -1 -1 -1 0 0 49 0 -1 -1 -1 -1 -1 -1 0 -1 0 49 0 -1 -1 -1 -1 -1 -1 0 0 -1 49 0 -1 -1 -1 -1 -1 0 -1 -1 0 49 0 -1 -1 -1 -1 -1 0 -1 0 -1 49 0 -1 -1 -1 -1 -1 0 0 -1 -1 49 0 -1 -1 -1 -1 0 -1 -1 -1 0 49 0 -1 -1 -1 -1 0 -1 -1 0 -1 49 0 -1 -1 -1 -1 0 -1 0 -1 -1 49 0 -1 -1 -1 -1 0 0 -1 -1 -1 49 0 -1 -1 -1 0 -1 -1 -1 -1 0 49 0 -1 -1 -1 0 -1 -1 -1 0 -1 49 0 -1 -1 -1 0 -1 -1 0 -1 -1 49 0 -1 -1 -1 0 -1 0 -1 -1 -1 49 0 -1 -1 -1 0 0 -1 -1 -1 -1 49 0 -1 -1 0 -1 -1 -1 -1 -1 0 49 0 -1 -1 0 -1 -1 -1 -1 0 -1 49 0 -1 -1 0 -1 -1 -1 0 -1 -1 49 0 -1 -1 0 -1 -1 0 -1 -1 -1 49 0 -1 -1 0 -1 0 -1 -1 -1 -1 49 0 -1 -1 0 0 -1 -1 -1 -1 -1 49 0 -1 0 -1 -1 -1 -1 -1 -1 0 49 0 -1 0 -1 -1 -1 -1 -1 0 -1 49 0 -1 0 -1 -1 -1 -1 0 -1 -1 49 0 -1 0 -1 -1 -1 0 -1 -1 -1 49 0 -1 0 -1 -1 0 -1 -1 -1 -1 49 0 -1 0 -1 0 -1 -1 -1 -1 -1 49 0 -1 0 0 -1 -1 -1 -1 -1 -1 49 0 0 -1 -1 -1 -1 -1 -1 -1 0 49 0 0 -1 -1 -1 -1 -1 -1 0 -1 49 0 0 -1 -1 -1 -1 -1 0 -1 -1 49 0 0 -1 -1 -1 -1 0 -1 -1 -1 49 0 0 -1 -1 -1 0 -1 -1 -1 -1 49 0 0 -1 -1 0 -1 -1 -1 -1 -1 49 0 0 -1 0 -1 -1 -1 -1 -1 -1 49 0 0 0 -1 -1 -1 -1 -1 -1 -1 45 -1 -1 -1 -1 -1 -1 0 0 0 0 45 -1 -1 -1 -1 -1 0 -1 0 0 0 45 -1 -1 -1 -1 -1 0 0 -1 0 0 45 -1 -1 -1 -1 -1 0 0 0 -1 0 45 -1 -1 -1 -1 -1 0 0 0 0 -1 45 -1 -1 -1 -1 0 -1 -1 0 0 0 45 -1 -1 -1 -1 0 -1 0 -1 0 0 45 -1 -1 -1 -1 0 -1 0 0 -1 0 45 -1 -1 -1 -1 0 -1 0 0 0 -1 45 -1 -1 -1 -1 0 0 -1 -1 0 0 45 -1 -1 -1 -1 0 0 -1 0 -1 0 45 -1 -1 -1 -1 0 0 -1 0 0 -1 45 -1 -1 -1 -1 0 0 0 -1 -1 0 45 -1 -1 -1 -1 0 0 0 -1 0 -1 45 -1 -1 -1 -1 0 0 0 0 -1 -1 45 -1 -1 -1 0 -1 -1 -1 0 0 0 45 -1 -1 -1 0 -1 -1 0 -1 0 0 45 -1 -1 -1 0 -1 -1 0 0 -1 0 45 -1 -1 -1 0 -1 -1 0 0 0 -1 45 -1 -1 -1 0 -1 0 -1 -1 0 0 45 -1 -1 -1 0 -1 0 -1 0 -1 0 45 -1 -1 -1 0 -1 0 -1 0 0 -1 45 -1 -1 -1 0 -1 0 0 -1 -1 0 45 -1 -1 -1 0 -1 0 0 -1 0 -1 45 -1 -1 -1 0 -1 0 0 0 -1 -1 45 -1 -1 -1 0 0 -1 -1 -1 0 0 45 -1 -1 -1 0 0 -1 -1 0 -1 0 45 -1 -1 -1 0 0 -1 -1 0 0 -1 45 -1 -1 -1 0 0 -1 0 -1 -1 0 45 -1 -1 -1 0 0 -1 0 -1 0 -1 45 -1 -1 -1 0 0 -1 0 0 -1 -1 45 -1 -1 -1 0 0 0 -1 -1 -1 0 45 -1 -1 -1 0 0 0 -1 -1 0 -1 45 -1 -1 -1 0 0 0 -1 0 -1 -1 45 -1 -1 -1 0 0 0 0 -1 -1 -1 45 -1 -1 0 -1 -1 -1 -1 0 0 0 45 -1 -1 0 -1 -1 -1 0 -1 0 0 45 -1 -1 0 -1 -1 -1 0 0 -1 0 45 -1 -1 0 -1 -1 -1 0 0 0 -1 45 -1 -1 0 -1 -1 0 -1 -1 0 0 45 -1 -1 0 -1 -1 0 -1 0 -1 0 45 -1 -1 0 -1 -1 0 -1 0 0 -1 45 -1 -1 0 -1 -1 0 0 -1 -1 0 45 -1 -1 0 -1 -1 0 0 -1 0 -1 45 -1 -1 0 -1 -1 0 0 0 -1 -1 45 -1 -1 0 -1 0 -1 -1 -1 0 0 45 -1 -1 0 -1 0 -1 -1 0 -1 0 45 -1 -1 0 -1 0 -1 -1 0 0 -1 45 -1 -1 0 -1 0 -1 0 -1 -1 0 45 -1 -1 0 -1 0 -1 0 -1 0 -1 45 -1 -1 0 -1 0 -1 0 0 -1 -1 45 -1 -1 0 -1 0 0 -1 -1 -1 0 45 -1 -1 0 -1 0 0 -1 -1 0 -1 45 -1 -1 0 -1 0 0 -1 0 -1 -1 45 -1 -1 0 -1 0 0 0 -1 -1 -1 45 -1 -1 0 0 -1 -1 -1 -1 0 0 45 -1 -1 0 0 -1 -1 -1 0 -1 0 45 -1 -1 0 0 -1 -1 -1 0 0 -1 45 -1 -1 0 0 -1 -1 0 -1 -1 0 45 -1 -1 0 0 -1 -1 0 -1 0 -1 45 -1 -1 0 0 -1 -1 0 0 -1 -1 45 -1 -1 0 0 -1 0 -1 -1 -1 0 45 -1 -1 0 0 -1 0 -1 -1 0 -1 45 -1 -1 0 0 -1 0 -1 0 -1 -1 45 -1 -1 0 0 -1 0 0 -1 -1 -1 45 -1 -1 0 0 0 -1 -1 -1 -1 0 45 -1 -1 0 0 0 -1 -1 -1 0 -1 45 -1 -1 0 0 0 -1 -1 0 -1 -1 45 -1 -1 0 0 0 -1 0 -1 -1 -1 45 -1 -1 0 0 0 0 -1 -1 -1 -1 45 -1 0 -1 -1 -1 -1 -1 0 0 0 45 -1 0 -1 -1 -1 -1 0 -1 0 0 45 -1 0 -1 -1 -1 -1 0 0 -1 0 45 -1 0 -1 -1 -1 -1 0 0 0 -1 45 -1 0 -1 -1 -1 0 -1 -1 0 0 45 -1 0 -1 -1 -1 0 -1 0 -1 0 45 -1 0 -1 -1 -1 0 -1 0 0 -1 45 -1 0 -1 -1 -1 0 0 -1 -1 0 45 -1 0 -1 -1 -1 0 0 -1 0 -1 45 -1 0 -1 -1 -1 0 0 0 -1 -1 45 -1 0 -1 -1 0 -1 -1 -1 0 0 45 -1 0 -1 -1 0 -1 -1 0 -1 0 45 -1 0 -1 -1 0 -1 -1 0 0 -1 45 -1 0 -1 -1 0 -1 0 -1 -1 0 45 -1 0 -1 -1 0 -1 0 -1 0 -1 45 -1 0 -1 -1 0 -1 0 0 -1 -1 45 -1 0 -1 -1 0 0 -1 -1 -1 0 45 -1 0 -1 -1 0 0 -1 -1 0 -1 45 -1 0 -1 -1 0 0 -1 0 -1 -1 45 -1 0 -1 -1 0 0 0 -1 -1 -1 45 -1 0 -1 0 -1 -1 -1 -1 0 0 45 -1 0 -1 0 -1 -1 -1 0 -1 0 45 -1 0 -1 0 -1 -1 -1 0 0 -1 45 -1 0 -1 0 -1 -1 0 -1 -1 0 45 -1 0 -1 0 -1 -1 0 -1 0 -1 45 -1 0 -1 0 -1 -1 0 0 -1 -1 45 -1 0 -1 0 -1 0 -1 -1 -1 0 45 -1 0 -1 0 -1 0 -1 -1 0 -1 45 -1 0 -1 0 -1 0 -1 0 -1 -1 45 -1 0 -1 0 -1 0 0 -1 -1 -1 45 -1 0 -1 0 0 -1 -1 -1 -1 0 45 -1 0 -1 0 0 -1 -1 -1 0 -1 45 -1 0 -1 0 0 -1 -1 0 -1 -1 45 -1 0 -1 0 0 -1 0 -1 -1 -1 45 -1 0 -1 0 0 0 -1 -1 -1 -1 45 -1 0 0 -1 -1 -1 -1 -1 0 0 45 -1 0 0 -1 -1 -1 -1 0 -1 0 45 -1 0 0 -1 -1 -1 -1 0 0 -1 45 -1 0 0 -1 -1 -1 0 -1 -1 0 45 -1 0 0 -1 -1 -1 0 -1 0 -1 45 -1 0 0 -1 -1 -1 0 0 -1 -1 45 -1 0 0 -1 -1 0 -1 -1 -1 0 45 -1 0 0 -1 -1 0 -1 -1 0 -1 45 -1 0 0 -1 -1 0 -1 0 -1 -1 45 -1 0 0 -1 -1 0 0 -1 -1 -1 45 -1 0 0 -1 0 -1 -1 -1 -1 0 45 -1 0 0 -1 0 -1 -1 -1 0 -1 45 -1 0 0 -1 0 -1 -1 0 -1 -1 45 -1 0 0 -1 0 -1 0 -1 -1 -1 45 -1 0 0 -1 0 0 -1 -1 -1 -1 45 -1 0 0 0 -1 -1 -1 -1 -1 0 45 -1 0 0 0 -1 -1 -1 -1 0 -1 45 -1 0 0 0 -1 -1 -1 0 -1 -1 45 -1 0 0 0 -1 -1 0 -1 -1 -1 45 -1 0 0 0 -1 0 -1 -1 -1 -1 45 -1 0 0 0 0 -1 -1 -1 -1 -1 45 0 -1 -1 -1 -1 -1 -1 0 0 0 45 0 -1 -1 -1 -1 -1 0 -1 0 0 45 0 -1 -1 -1 -1 -1 0 0 -1 0 45 0 -1 -1 -1 -1 -1 0 0 0 -1 45 0 -1 -1 -1 -1 0 -1 -1 0 0 45 0 -1 -1 -1 -1 0 -1 0 -1 0 45 0 -1 -1 -1 -1 0 -1 0 0 -1 45 0 -1 -1 -1 -1 0 0 -1 -1 0 45 0 -1 -1 -1 -1 0 0 -1 0 -1 45 0 -1 -1 -1 -1 0 0 0 -1 -1 45 0 -1 -1 -1 0 -1 -1 -1 0 0 45 0 -1 -1 -1 0 -1 -1 0 -1 0 45 0 -1 -1 -1 0 -1 -1 0 0 -1 45 0 -1 -1 -1 0 -1 0 -1 -1 0 45 0 -1 -1 -1 0 -1 0 -1 0 -1 45 0 -1 -1 -1 0 -1 0 0 -1 -1 45 0 -1 -1 -1 0 0 -1 -1 -1 0 45 0 -1 -1 -1 0 0 -1 -1 0 -1 45 0 -1 -1 -1 0 0 -1 0 -1 -1 45 0 -1 -1 -1 0 0 0 -1 -1 -1 45 0 -1 -1 0 -1 -1 -1 -1 0 0 45 0 -1 -1 0 -1 -1 -1 0 -1 0 45 0 -1 -1 0 -1 -1 -1 0 0 -1 45 0 -1 -1 0 -1 -1 0 -1 -1 0 45 0 -1 -1 0 -1 -1 0 -1 0 -1 45 0 -1 -1 0 -1 -1 0 0 -1 -1 45 0 -1 -1 0 -1 0 -1 -1 -1 0 45 0 -1 -1 0 -1 0 -1 -1 0 -1 45 0 -1 -1 0 -1 0 -1 0 -1 -1 45 0 -1 -1 0 -1 0 0 -1 -1 -1 45 0 -1 -1 0 0 -1 -1 -1 -1 0 45 0 -1 -1 0 0 -1 -1 -1 0 -1 45 0 -1 -1 0 0 -1 -1 0 -1 -1 45 0 -1 -1 0 0 -1 0 -1 -1 -1 45 0 -1 -1 0 0 0 -1 -1 -1 -1 45 0 -1 0 -1 -1 -1 -1 -1 0 0 45 0 -1 0 -1 -1 -1 -1 0 -1 0 45 0 -1 0 -1 -1 -1 -1 0 0 -1 45 0 -1 0 -1 -1 -1 0 -1 -1 0 45 0 -1 0 -1 -1 -1 0 -1 0 -1 45 0 -1 0 -1 -1 -1 0 0 -1 -1 45 0 -1 0 -1 -1 0 -1 -1 -1 0 45 0 -1 0 -1 -1 0 -1 -1 0 -1 45 0 -1 0 -1 -1 0 -1 0 -1 -1 45 0 -1 0 -1 -1 0 0 -1 -1 -1 45 0 -1 0 -1 0 -1 -1 -1 -1 0 45 0 -1 0 -1 0 -1 -1 -1 0 -1 45 0 -1 0 -1 0 -1 -1 0 -1 -1 45 0 -1 0 -1 0 -1 0 -1 -1 -1 45 0 -1 0 -1 0 0 -1 -1 -1 -1 45 0 -1 0 0 -1 -1 -1 -1 -1 0 45 0 -1 0 0 -1 -1 -1 -1 0 -1 45 0 -1 0 0 -1 -1 -1 0 -1 -1 45 0 -1 0 0 -1 -1 0 -1 -1 -1 45 0 -1 0 0 -1 0 -1 -1 -1 -1 45 0 -1 0 0 0 -1 -1 -1 -1 -1 45 0 0 -1 -1 -1 -1 -1 -1 0 0 45 0 0 -1 -1 -1 -1 -1 0 -1 0 45 0 0 -1 -1 -1 -1 -1 0 0 -1 45 0 0 -1 -1 -1 -1 0 -1 -1 0 45 0 0 -1 -1 -1 -1 0 -1 0 -1 45 0 0 -1 -1 -1 -1 0 0 -1 -1 45 0 0 -1 -1 -1 0 -1 -1 -1 0 45 0 0 -1 -1 -1 0 -1 -1 0 -1 45 0 0 -1 -1 -1 0 -1 0 -1 -1 45 0 0 -1 -1 -1 0 0 -1 -1 -1 45 0 0 -1 -1 0 -1 -1 -1 -1 0 45 0 0 -1 -1 0 -1 -1 -1 0 -1 45 0 0 -1 -1 0 -1 -1 0 -1 -1 45 0 0 -1 -1 0 -1 0 -1 -1 -1 45 0 0 -1 -1 0 0 -1 -1 -1 -1 45 0 0 -1 0 -1 -1 -1 -1 -1 0 45 0 0 -1 0 -1 -1 -1 -1 0 -1 45 0 0 -1 0 -1 -1 -1 0 -1 -1 45 0 0 -1 0 -1 -1 0 -1 -1 -1 45 0 0 -1 0 -1 0 -1 -1 -1 -1 45 0 0 -1 0 0 -1 -1 -1 -1 -1 45 0 0 0 -1 -1 -1 -1 -1 -1 0 45 0 0 0 -1 -1 -1 -1 -1 0 -1 45 0 0 0 -1 -1 -1 -1 0 -1 -1 45 0 0 0 -1 -1 -1 0 -1 -1 -1 45 0 0 0 -1 -1 0 -1 -1 -1 -1 45 0 0 0 -1 0 -1 -1 -1 -1 -1 45 0 0 0 0 -1 -1 -1 -1 -1 -1 40 -1 -1 -1 -1 -1 0 0 0 0 0 40 -1 -1 -1 -1 0 -1 0 0 0 0 40 -1 -1 -1 -1 0 0 -1 0 0 0 40 -1 -1 -1 -1 0 0 0 -1 0 0 40 -1 -1 -1 -1 0 0 0 0 -1 0 40 -1 -1 -1 -1 0 0 0 0 0 -1 40 -1 -1 -1 0 -1 -1 0 0 0 0 40 -1 -1 -1 0 -1 0 -1 0 0 0 40 -1 -1 -1 0 -1 0 0 -1 0 0 40 -1 -1 -1 0 -1 0 0 0 -1 0 40 -1 -1 -1 0 -1 0 0 0 0 -1 40 -1 -1 -1 0 0 -1 -1 0 0 0 40 -1 -1 -1 0 0 -1 0 -1 0 0 40 -1 -1 -1 0 0 -1 0 0 -1 0 40 -1 -1 -1 0 0 -1 0 0 0 -1 40 -1 -1 -1 0 0 0 -1 -1 0 0 40 -1 -1 -1 0 0 0 -1 0 -1 0 40 -1 -1 -1 0 0 0 -1 0 0 -1 40 -1 -1 -1 0 0 0 0 -1 -1 0 40 -1 -1 -1 0 0 0 0 -1 0 -1 40 -1 -1 -1 0 0 0 0 0 -1 -1 40 -1 -1 0 -1 -1 -1 0 0 0 0 40 -1 -1 0 -1 -1 0 -1 0 0 0 40 -1 -1 0 -1 -1 0 0 -1 0 0 40 -1 -1 0 -1 -1 0 0 0 -1 0 40 -1 -1 0 -1 -1 0 0 0 0 -1 40 -1 -1 0 -1 0 -1 -1 0 0 0 40 -1 -1 0 -1 0 -1 0 -1 0 0 40 -1 -1 0 -1 0 -1 0 0 -1 0 40 -1 -1 0 -1 0 -1 0 0 0 -1 40 -1 -1 0 -1 0 0 -1 -1 0 0 40 -1 -1 0 -1 0 0 -1 0 -1 0 40 -1 -1 0 -1 0 0 -1 0 0 -1 40 -1 -1 0 -1 0 0 0 -1 -1 0 40 -1 -1 0 -1 0 0 0 -1 0 -1 40 -1 -1 0 -1 0 0 0 0 -1 -1 40 -1 -1 0 0 -1 -1 -1 0 0 0 40 -1 -1 0 0 -1 -1 0 -1 0 0 40 -1 -1 0 0 -1 -1 0 0 -1 0 40 -1 -1 0 0 -1 -1 0 0 0 -1 40 -1 -1 0 0 -1 0 -1 -1 0 0 40 -1 -1 0 0 -1 0 -1 0 -1 0 40 -1 -1 0 0 -1 0 -1 0 0 -1 40 -1 -1 0 0 -1 0 0 -1 -1 0 40 -1 -1 0 0 -1 0 0 -1 0 -1 40 -1 -1 0 0 -1 0 0 0 -1 -1 40 -1 -1 0 0 0 -1 -1 -1 0 0 40 -1 -1 0 0 0 -1 -1 0 -1 0 40 -1 -1 0 0 0 -1 -1 0 0 -1 40 -1 -1 0 0 0 -1 0 -1 -1 0 40 -1 -1 0 0 0 -1 0 -1 0 -1 40 -1 -1 0 0 0 -1 0 0 -1 -1 40 -1 -1 0 0 0 0 -1 -1 -1 0 40 -1 -1 0 0 0 0 -1 -1 0 -1 40 -1 -1 0 0 0 0 -1 0 -1 -1 40 -1 -1 0 0 0 0 0 -1 -1 -1 40 -1 0 -1 -1 -1 -1 0 0 0 0 40 -1 0 -1 -1 -1 0 -1 0 0 0 40 -1 0 -1 -1 -1 0 0 -1 0 0 40 -1 0 -1 -1 -1 0 0 0 -1 0 40 -1 0 -1 -1 -1 0 0 0 0 -1 40 -1 0 -1 -1 0 -1 -1 0 0 0 40 -1 0 -1 -1 0 -1 0 -1 0 0 40 -1 0 -1 -1 0 -1 0 0 -1 0 40 -1 0 -1 -1 0 -1 0 0 0 -1 40 -1 0 -1 -1 0 0 -1 -1 0 0 40 -1 0 -1 -1 0 0 -1 0 -1 0 40 -1 0 -1 -1 0 0 -1 0 0 -1 40 -1 0 -1 -1 0 0 0 -1 -1 0 40 -1 0 -1 -1 0 0 0 -1 0 -1 40 -1 0 -1 -1 0 0 0 0 -1 -1 40 -1 0 -1 0 -1 -1 -1 0 0 0 40 -1 0 -1 0 -1 -1 0 -1 0 0 40 -1 0 -1 0 -1 -1 0 0 -1 0 40 -1 0 -1 0 -1 -1 0 0 0 -1 40 -1 0 -1 0 -1 0 -1 -1 0 0 40 -1 0 -1 0 -1 0 -1 0 -1 0 40 -1 0 -1 0 -1 0 -1 0 0 -1 40 -1 0 -1 0 -1 0 0 -1 -1 0 40 -1 0 -1 0 -1 0 0 -1 0 -1 40 -1 0 -1 0 -1 0 0 0 -1 -1 40 -1 0 -1 0 0 -1 -1 -1 0 0 40 -1 0 -1 0 0 -1 -1 0 -1 0 40 -1 0 -1 0 0 -1 -1 0 0 -1 40 -1 0 -1 0 0 -1 0 -1 -1 0 40 -1 0 -1 0 0 -1 0 -1 0 -1 40 -1 0 -1 0 0 -1 0 0 -1 -1 40 -1 0 -1 0 0 0 -1 -1 -1 0 40 -1 0 -1 0 0 0 -1 -1 0 -1 40 -1 0 -1 0 0 0 -1 0 -1 -1 40 -1 0 -1 0 0 0 0 -1 -1 -1 40 -1 0 0 -1 -1 -1 -1 0 0 0 40 -1 0 0 -1 -1 -1 0 -1 0 0 40 -1 0 0 -1 -1 -1 0 0 -1 0 40 -1 0 0 -1 -1 -1 0 0 0 -1 40 -1 0 0 -1 -1 0 -1 -1 0 0 40 -1 0 0 -1 -1 0 -1 0 -1 0 40 -1 0 0 -1 -1 0 -1 0 0 -1 40 -1 0 0 -1 -1 0 0 -1 -1 0 40 -1 0 0 -1 -1 0 0 -1 0 -1 40 -1 0 0 -1 -1 0 0 0 -1 -1 40 -1 0 0 -1 0 -1 -1 -1 0 0 40 -1 0 0 -1 0 -1 -1 0 -1 0 40 -1 0 0 -1 0 -1 -1 0 0 -1 40 -1 0 0 -1 0 -1 0 -1 -1 0 40 -1 0 0 -1 0 -1 0 -1 0 -1 40 -1 0 0 -1 0 -1 0 0 -1 -1 40 -1 0 0 -1 0 0 -1 -1 -1 0 40 -1 0 0 -1 0 0 -1 -1 0 -1 40 -1 0 0 -1 0 0 -1 0 -1 -1 40 -1 0 0 -1 0 0 0 -1 -1 -1 40 -1 0 0 0 -1 -1 -1 -1 0 0 40 -1 0 0 0 -1 -1 -1 0 -1 0 40 -1 0 0 0 -1 -1 -1 0 0 -1 40 -1 0 0 0 -1 -1 0 -1 -1 0 40 -1 0 0 0 -1 -1 0 -1 0 -1 40 -1 0 0 0 -1 -1 0 0 -1 -1 40 -1 0 0 0 -1 0 -1 -1 -1 0 40 -1 0 0 0 -1 0 -1 -1 0 -1 40 -1 0 0 0 -1 0 -1 0 -1 -1 40 -1 0 0 0 -1 0 0 -1 -1 -1 40 -1 0 0 0 0 -1 -1 -1 -1 0 40 -1 0 0 0 0 -1 -1 -1 0 -1 40 -1 0 0 0 0 -1 -1 0 -1 -1 40 -1 0 0 0 0 -1 0 -1 -1 -1 40 -1 0 0 0 0 0 -1 -1 -1 -1 40 0 -1 -1 -1 -1 -1 0 0 0 0 40 0 -1 -1 -1 -1 0 -1 0 0 0 40 0 -1 -1 -1 -1 0 0 -1 0 0 40 0 -1 -1 -1 -1 0 0 0 -1 0 40 0 -1 -1 -1 -1 0 0 0 0 -1 40 0 -1 -1 -1 0 -1 -1 0 0 0 40 0 -1 -1 -1 0 -1 0 -1 0 0 40 0 -1 -1 -1 0 -1 0 0 -1 0 40 0 -1 -1 -1 0 -1 0 0 0 -1 40 0 -1 -1 -1 0 0 -1 -1 0 0 40 0 -1 -1 -1 0 0 -1 0 -1 0 40 0 -1 -1 -1 0 0 -1 0 0 -1 40 0 -1 -1 -1 0 0 0 -1 -1 0 40 0 -1 -1 -1 0 0 0 -1 0 -1 40 0 -1 -1 -1 0 0 0 0 -1 -1 40 0 -1 -1 0 -1 -1 -1 0 0 0 40 0 -1 -1 0 -1 -1 0 -1 0 0 40 0 -1 -1 0 -1 -1 0 0 -1 0 40 0 -1 -1 0 -1 -1 0 0 0 -1 40 0 -1 -1 0 -1 0 -1 -1 0 0 40 0 -1 -1 0 -1 0 -1 0 -1 0 40 0 -1 -1 0 -1 0 -1 0 0 -1 40 0 -1 -1 0 -1 0 0 -1 -1 0 40 0 -1 -1 0 -1 0 0 -1 0 -1 40 0 -1 -1 0 -1 0 0 0 -1 -1 40 0 -1 -1 0 0 -1 -1 -1 0 0 40 0 -1 -1 0 0 -1 -1 0 -1 0 40 0 -1 -1 0 0 -1 -1 0 0 -1 40 0 -1 -1 0 0 -1 0 -1 -1 0 40 0 -1 -1 0 0 -1 0 -1 0 -1 40 0 -1 -1 0 0 -1 0 0 -1 -1 40 0 -1 -1 0 0 0 -1 -1 -1 0 40 0 -1 -1 0 0 0 -1 -1 0 -1 40 0 -1 -1 0 0 0 -1 0 -1 -1 40 0 -1 -1 0 0 0 0 -1 -1 -1 40 0 -1 0 -1 -1 -1 -1 0 0 0 40 0 -1 0 -1 -1 -1 0 -1 0 0 40 0 -1 0 -1 -1 -1 0 0 -1 0 40 0 -1 0 -1 -1 -1 0 0 0 -1 40 0 -1 0 -1 -1 0 -1 -1 0 0 40 0 -1 0 -1 -1 0 -1 0 -1 0 40 0 -1 0 -1 -1 0 -1 0 0 -1 40 0 -1 0 -1 -1 0 0 -1 -1 0 40 0 -1 0 -1 -1 0 0 -1 0 -1 40 0 -1 0 -1 -1 0 0 0 -1 -1 40 0 -1 0 -1 0 -1 -1 -1 0 0 40 0 -1 0 -1 0 -1 -1 0 -1 0 40 0 -1 0 -1 0 -1 -1 0 0 -1 40 0 -1 0 -1 0 -1 0 -1 -1 0 40 0 -1 0 -1 0 -1 0 -1 0 -1 40 0 -1 0 -1 0 -1 0 0 -1 -1 40 0 -1 0 -1 0 0 -1 -1 -1 0 40 0 -1 0 -1 0 0 -1 -1 0 -1 40 0 -1 0 -1 0 0 -1 0 -1 -1 40 0 -1 0 -1 0 0 0 -1 -1 -1 40 0 -1 0 0 -1 -1 -1 -1 0 0 40 0 -1 0 0 -1 -1 -1 0 -1 0 40 0 -1 0 0 -1 -1 -1 0 0 -1 40 0 -1 0 0 -1 -1 0 -1 -1 0 40 0 -1 0 0 -1 -1 0 -1 0 -1 40 0 -1 0 0 -1 -1 0 0 -1 -1 40 0 -1 0 0 -1 0 -1 -1 -1 0 40 0 -1 0 0 -1 0 -1 -1 0 -1 40 0 -1 0 0 -1 0 -1 0 -1 -1 40 0 -1 0 0 -1 0 0 -1 -1 -1 40 0 -1 0 0 0 -1 -1 -1 -1 0 40 0 -1 0 0 0 -1 -1 -1 0 -1 40 0 -1 0 0 0 -1 -1 0 -1 -1 40 0 -1 0 0 0 -1 0 -1 -1 -1 40 0 -1 0 0 0 0 -1 -1 -1 -1 40 0 0 -1 -1 -1 -1 -1 0 0 0 40 0 0 -1 -1 -1 -1 0 -1 0 0 40 0 0 -1 -1 -1 -1 0 0 -1 0 40 0 0 -1 -1 -1 -1 0 0 0 -1 40 0 0 -1 -1 -1 0 -1 -1 0 0 40 0 0 -1 -1 -1 0 -1 0 -1 0 40 0 0 -1 -1 -1 0 -1 0 0 -1 40 0 0 -1 -1 -1 0 0 -1 -1 0 40 0 0 -1 -1 -1 0 0 -1 0 -1 40 0 0 -1 -1 -1 0 0 0 -1 -1 40 0 0 -1 -1 0 -1 -1 -1 0 0 40 0 0 -1 -1 0 -1 -1 0 -1 0 40 0 0 -1 -1 0 -1 -1 0 0 -1 40 0 0 -1 -1 0 -1 0 -1 -1 0 40 0 0 -1 -1 0 -1 0 -1 0 -1 40 0 0 -1 -1 0 -1 0 0 -1 -1 40 0 0 -1 -1 0 0 -1 -1 -1 0 40 0 0 -1 -1 0 0 -1 -1 0 -1 40 0 0 -1 -1 0 0 -1 0 -1 -1 40 0 0 -1 -1 0 0 0 -1 -1 -1 40 0 0 -1 0 -1 -1 -1 -1 0 0 40 0 0 -1 0 -1 -1 -1 0 -1 0 40 0 0 -1 0 -1 -1 -1 0 0 -1 40 0 0 -1 0 -1 -1 0 -1 -1 0 40 0 0 -1 0 -1 -1 0 -1 0 -1 40 0 0 -1 0 -1 -1 0 0 -1 -1 40 0 0 -1 0 -1 0 -1 -1 -1 0 40 0 0 -1 0 -1 0 -1 -1 0 -1 40 0 0 -1 0 -1 0 -1 0 -1 -1 40 0 0 -1 0 -1 0 0 -1 -1 -1 40 0 0 -1 0 0 -1 -1 -1 -1 0 40 0 0 -1 0 0 -1 -1 -1 0 -1 40 0 0 -1 0 0 -1 -1 0 -1 -1 40 0 0 -1 0 0 -1 0 -1 -1 -1 40 0 0 -1 0 0 0 -1 -1 -1 -1 40 0 0 0 -1 -1 -1 -1 -1 0 0 40 0 0 0 -1 -1 -1 -1 0 -1 0 40 0 0 0 -1 -1 -1 -1 0 0 -1 40 0 0 0 -1 -1 -1 0 -1 -1 0 40 0 0 0 -1 -1 -1 0 -1 0 -1 40 0 0 0 -1 -1 -1 0 0 -1 -1 40 0 0 0 -1 -1 0 -1 -1 -1 0 40 0 0 0 -1 -1 0 -1 -1 0 -1 40 0 0 0 -1 -1 0 -1 0 -1 -1 40 0 0 0 -1 -1 0 0 -1 -1 -1 40 0 0 0 -1 0 -1 -1 -1 -1 0 40 0 0 0 -1 0 -1 -1 -1 0 -1 40 0 0 0 -1 0 -1 -1 0 -1 -1 40 0 0 0 -1 0 -1 0 -1 -1 -1 40 0 0 0 -1 0 0 -1 -1 -1 -1 40 0 0 0 0 -1 -1 -1 -1 -1 0 40 0 0 0 0 -1 -1 -1 -1 0 -1 40 0 0 0 0 -1 -1 -1 0 -1 -1 40 0 0 0 0 -1 -1 0 -1 -1 -1 40 0 0 0 0 -1 0 -1 -1 -1 -1 40 0 0 0 0 0 -1 -1 -1 -1 -1 34 -1 -1 -1 -1 0 0 0 0 0 0 34 -1 -1 -1 0 -1 0 0 0 0 0 34 -1 -1 -1 0 0 -1 0 0 0 0 34 -1 -1 -1 0 0 0 -1 0 0 0 34 -1 -1 -1 0 0 0 0 -1 0 0 34 -1 -1 -1 0 0 0 0 0 -1 0 34 -1 -1 -1 0 0 0 0 0 0 -1 34 -1 -1 0 -1 -1 0 0 0 0 0 34 -1 -1 0 -1 0 -1 0 0 0 0 34 -1 -1 0 -1 0 0 -1 0 0 0 34 -1 -1 0 -1 0 0 0 -1 0 0 34 -1 -1 0 -1 0 0 0 0 -1 0 34 -1 -1 0 -1 0 0 0 0 0 -1 34 -1 -1 0 0 -1 -1 0 0 0 0 34 -1 -1 0 0 -1 0 -1 0 0 0 34 -1 -1 0 0 -1 0 0 -1 0 0 34 -1 -1 0 0 -1 0 0 0 -1 0 34 -1 -1 0 0 -1 0 0 0 0 -1 34 -1 -1 0 0 0 -1 -1 0 0 0 34 -1 -1 0 0 0 -1 0 -1 0 0 34 -1 -1 0 0 0 -1 0 0 -1 0 34 -1 -1 0 0 0 -1 0 0 0 -1 34 -1 -1 0 0 0 0 -1 -1 0 0 34 -1 -1 0 0 0 0 -1 0 -1 0 34 -1 -1 0 0 0 0 -1 0 0 -1 34 -1 -1 0 0 0 0 0 -1 -1 0 34 -1 -1 0 0 0 0 0 -1 0 -1 34 -1 -1 0 0 0 0 0 0 -1 -1 34 -1 0 -1 -1 -1 0 0 0 0 0 34 -1 0 -1 -1 0 -1 0 0 0 0 34 -1 0 -1 -1 0 0 -1 0 0 0 34 -1 0 -1 -1 0 0 0 -1 0 0 34 -1 0 -1 -1 0 0 0 0 -1 0 34 -1 0 -1 -1 0 0 0 0 0 -1 34 -1 0 -1 0 -1 -1 0 0 0 0 34 -1 0 -1 0 -1 0 -1 0 0 0 34 -1 0 -1 0 -1 0 0 -1 0 0 34 -1 0 -1 0 -1 0 0 0 -1 0 34 -1 0 -1 0 -1 0 0 0 0 -1 34 -1 0 -1 0 0 -1 -1 0 0 0 34 -1 0 -1 0 0 -1 0 -1 0 0 34 -1 0 -1 0 0 -1 0 0 -1 0 34 -1 0 -1 0 0 -1 0 0 0 -1 34 -1 0 -1 0 0 0 -1 -1 0 0 34 -1 0 -1 0 0 0 -1 0 -1 0 34 -1 0 -1 0 0 0 -1 0 0 -1 34 -1 0 -1 0 0 0 0 -1 -1 0 34 -1 0 -1 0 0 0 0 -1 0 -1 34 -1 0 -1 0 0 0 0 0 -1 -1 34 -1 0 0 -1 -1 -1 0 0 0 0 34 -1 0 0 -1 -1 0 -1 0 0 0 34 -1 0 0 -1 -1 0 0 -1 0 0 34 -1 0 0 -1 -1 0 0 0 -1 0 34 -1 0 0 -1 -1 0 0 0 0 -1 34 -1 0 0 -1 0 -1 -1 0 0 0 34 -1 0 0 -1 0 -1 0 -1 0 0 34 -1 0 0 -1 0 -1 0 0 -1 0 34 -1 0 0 -1 0 -1 0 0 0 -1 34 -1 0 0 -1 0 0 -1 -1 0 0 34 -1 0 0 -1 0 0 -1 0 -1 0 34 -1 0 0 -1 0 0 -1 0 0 -1 34 -1 0 0 -1 0 0 0 -1 -1 0 34 -1 0 0 -1 0 0 0 -1 0 -1 34 -1 0 0 -1 0 0 0 0 -1 -1 34 -1 0 0 0 -1 -1 -1 0 0 0 34 -1 0 0 0 -1 -1 0 -1 0 0 34 -1 0 0 0 -1 -1 0 0 -1 0 34 -1 0 0 0 -1 -1 0 0 0 -1 34 -1 0 0 0 -1 0 -1 -1 0 0 34 -1 0 0 0 -1 0 -1 0 -1 0 34 -1 0 0 0 -1 0 -1 0 0 -1 34 -1 0 0 0 -1 0 0 -1 -1 0 34 -1 0 0 0 -1 0 0 -1 0 -1 34 -1 0 0 0 -1 0 0 0 -1 -1 34 -1 0 0 0 0 -1 -1 -1 0 0 34 -1 0 0 0 0 -1 -1 0 -1 0 34 -1 0 0 0 0 -1 -1 0 0 -1 34 -1 0 0 0 0 -1 0 -1 -1 0 34 -1 0 0 0 0 -1 0 -1 0 -1 34 -1 0 0 0 0 -1 0 0 -1 -1 34 -1 0 0 0 0 0 -1 -1 -1 0 34 -1 0 0 0 0 0 -1 -1 0 -1 34 -1 0 0 0 0 0 -1 0 -1 -1 34 -1 0 0 0 0 0 0 -1 -1 -1 34 0 -1 -1 -1 -1 0 0 0 0 0 34 0 -1 -1 -1 0 -1 0 0 0 0 34 0 -1 -1 -1 0 0 -1 0 0 0 34 0 -1 -1 -1 0 0 0 -1 0 0 34 0 -1 -1 -1 0 0 0 0 -1 0 34 0 -1 -1 -1 0 0 0 0 0 -1 34 0 -1 -1 0 -1 -1 0 0 0 0 34 0 -1 -1 0 -1 0 -1 0 0 0 34 0 -1 -1 0 -1 0 0 -1 0 0 34 0 -1 -1 0 -1 0 0 0 -1 0 34 0 -1 -1 0 -1 0 0 0 0 -1 34 0 -1 -1 0 0 -1 -1 0 0 0 34 0 -1 -1 0 0 -1 0 -1 0 0 34 0 -1 -1 0 0 -1 0 0 -1 0 34 0 -1 -1 0 0 -1 0 0 0 -1 34 0 -1 -1 0 0 0 -1 -1 0 0 34 0 -1 -1 0 0 0 -1 0 -1 0 34 0 -1 -1 0 0 0 -1 0 0 -1 34 0 -1 -1 0 0 0 0 -1 -1 0 34 0 -1 -1 0 0 0 0 -1 0 -1 34 0 -1 -1 0 0 0 0 0 -1 -1 34 0 -1 0 -1 -1 -1 0 0 0 0 34 0 -1 0 -1 -1 0 -1 0 0 0 34 0 -1 0 -1 -1 0 0 -1 0 0 34 0 -1 0 -1 -1 0 0 0 -1 0 34 0 -1 0 -1 -1 0 0 0 0 -1 34 0 -1 0 -1 0 -1 -1 0 0 0 34 0 -1 0 -1 0 -1 0 -1 0 0 34 0 -1 0 -1 0 -1 0 0 -1 0 34 0 -1 0 -1 0 -1 0 0 0 -1 34 0 -1 0 -1 0 0 -1 -1 0 0 34 0 -1 0 -1 0 0 -1 0 -1 0 34 0 -1 0 -1 0 0 -1 0 0 -1 34 0 -1 0 -1 0 0 0 -1 -1 0 34 0 -1 0 -1 0 0 0 -1 0 -1 34 0 -1 0 -1 0 0 0 0 -1 -1 34 0 -1 0 0 -1 -1 -1 0 0 0 34 0 -1 0 0 -1 -1 0 -1 0 0 34 0 -1 0 0 -1 -1 0 0 -1 0 34 0 -1 0 0 -1 -1 0 0 0 -1 34 0 -1 0 0 -1 0 -1 -1 0 0 34 0 -1 0 0 -1 0 -1 0 -1 0 34 0 -1 0 0 -1 0 -1 0 0 -1 34 0 -1 0 0 -1 0 0 -1 -1 0 34 0 -1 0 0 -1 0 0 -1 0 -1 34 0 -1 0 0 -1 0 0 0 -1 -1 34 0 -1 0 0 0 -1 -1 -1 0 0 34 0 -1 0 0 0 -1 -1 0 -1 0 34 0 -1 0 0 0 -1 -1 0 0 -1 34 0 -1 0 0 0 -1 0 -1 -1 0 34 0 -1 0 0 0 -1 0 -1 0 -1 34 0 -1 0 0 0 -1 0 0 -1 -1 34 0 -1 0 0 0 0 -1 -1 -1 0 34 0 -1 0 0 0 0 -1 -1 0 -1 34 0 -1 0 0 0 0 -1 0 -1 -1 34 0 -1 0 0 0 0 0 -1 -1 -1 34 0 0 -1 -1 -1 -1 0 0 0 0 34 0 0 -1 -1 -1 0 -1 0 0 0 34 0 0 -1 -1 -1 0 0 -1 0 0 34 0 0 -1 -1 -1 0 0 0 -1 0 34 0 0 -1 -1 -1 0 0 0 0 -1 34 0 0 -1 -1 0 -1 -1 0 0 0 34 0 0 -1 -1 0 -1 0 -1 0 0 34 0 0 -1 -1 0 -1 0 0 -1 0 34 0 0 -1 -1 0 -1 0 0 0 -1 34 0 0 -1 -1 0 0 -1 -1 0 0 34 0 0 -1 -1 0 0 -1 0 -1 0 34 0 0 -1 -1 0 0 -1 0 0 -1 34 0 0 -1 -1 0 0 0 -1 -1 0 34 0 0 -1 -1 0 0 0 -1 0 -1 34 0 0 -1 -1 0 0 0 0 -1 -1 34 0 0 -1 0 -1 -1 -1 0 0 0 34 0 0 -1 0 -1 -1 0 -1 0 0 34 0 0 -1 0 -1 -1 0 0 -1 0 34 0 0 -1 0 -1 -1 0 0 0 -1 34 0 0 -1 0 -1 0 -1 -1 0 0 34 0 0 -1 0 -1 0 -1 0 -1 0 34 0 0 -1 0 -1 0 -1 0 0 -1 34 0 0 -1 0 -1 0 0 -1 -1 0 34 0 0 -1 0 -1 0 0 -1 0 -1 34 0 0 -1 0 -1 0 0 0 -1 -1 34 0 0 -1 0 0 -1 -1 -1 0 0 34 0 0 -1 0 0 -1 -1 0 -1 0 34 0 0 -1 0 0 -1 -1 0 0 -1 34 0 0 -1 0 0 -1 0 -1 -1 0 34 0 0 -1 0 0 -1 0 -1 0 -1 34 0 0 -1 0 0 -1 0 0 -1 -1 34 0 0 -1 0 0 0 -1 -1 -1 0 34 0 0 -1 0 0 0 -1 -1 0 -1 34 0 0 -1 0 0 0 -1 0 -1 -1 34 0 0 -1 0 0 0 0 -1 -1 -1 34 0 0 0 -1 -1 -1 -1 0 0 0 34 0 0 0 -1 -1 -1 0 -1 0 0 34 0 0 0 -1 -1 -1 0 0 -1 0 34 0 0 0 -1 -1 -1 0 0 0 -1 34 0 0 0 -1 -1 0 -1 -1 0 0 34 0 0 0 -1 -1 0 -1 0 -1 0 34 0 0 0 -1 -1 0 -1 0 0 -1 34 0 0 0 -1 -1 0 0 -1 -1 0 34 0 0 0 -1 -1 0 0 -1 0 -1 34 0 0 0 -1 -1 0 0 0 -1 -1 34 0 0 0 -1 0 -1 -1 -1 0 0 34 0 0 0 -1 0 -1 -1 0 -1 0 34 0 0 0 -1 0 -1 -1 0 0 -1 34 0 0 0 -1 0 -1 0 -1 -1 0 34 0 0 0 -1 0 -1 0 -1 0 -1 34 0 0 0 -1 0 -1 0 0 -1 -1 34 0 0 0 -1 0 0 -1 -1 -1 0 34 0 0 0 -1 0 0 -1 -1 0 -1 34 0 0 0 -1 0 0 -1 0 -1 -1 34 0 0 0 -1 0 0 0 -1 -1 -1 34 0 0 0 0 -1 -1 -1 -1 0 0 34 0 0 0 0 -1 -1 -1 0 -1 0 34 0 0 0 0 -1 -1 -1 0 0 -1 34 0 0 0 0 -1 -1 0 -1 -1 0 34 0 0 0 0 -1 -1 0 -1 0 -1 34 0 0 0 0 -1 -1 0 0 -1 -1 34 0 0 0 0 -1 0 -1 -1 -1 0 34 0 0 0 0 -1 0 -1 -1 0 -1 34 0 0 0 0 -1 0 -1 0 -1 -1 34 0 0 0 0 -1 0 0 -1 -1 -1 34 0 0 0 0 0 -1 -1 -1 -1 0 34 0 0 0 0 0 -1 -1 -1 0 -1 34 0 0 0 0 0 -1 -1 0 -1 -1 34 0 0 0 0 0 -1 0 -1 -1 -1 34 0 0 0 0 0 0 -1 -1 -1 -1 27 -1 -1 -1 0 0 0 0 0 0 0 27 -1 -1 0 -1 0 0 0 0 0 0 27 -1 -1 0 0 -1 0 0 0 0 0 27 -1 -1 0 0 0 -1 0 0 0 0 27 -1 -1 0 0 0 0 -1 0 0 0 27 -1 -1 0 0 0 0 0 -1 0 0 27 -1 -1 0 0 0 0 0 0 -1 0 27 -1 -1 0 0 0 0 0 0 0 -1 27 -1 0 -1 -1 0 0 0 0 0 0 27 -1 0 -1 0 -1 0 0 0 0 0 27 -1 0 -1 0 0 -1 0 0 0 0 27 -1 0 -1 0 0 0 -1 0 0 0 27 -1 0 -1 0 0 0 0 -1 0 0 27 -1 0 -1 0 0 0 0 0 -1 0 27 -1 0 -1 0 0 0 0 0 0 -1 27 -1 0 0 -1 -1 0 0 0 0 0 27 -1 0 0 -1 0 -1 0 0 0 0 27 -1 0 0 -1 0 0 -1 0 0 0 27 -1 0 0 -1 0 0 0 -1 0 0 27 -1 0 0 -1 0 0 0 0 -1 0 27 -1 0 0 -1 0 0 0 0 0 -1 27 -1 0 0 0 -1 -1 0 0 0 0 27 -1 0 0 0 -1 0 -1 0 0 0 27 -1 0 0 0 -1 0 0 -1 0 0 27 -1 0 0 0 -1 0 0 0 -1 0 27 -1 0 0 0 -1 0 0 0 0 -1 27 -1 0 0 0 0 -1 -1 0 0 0 27 -1 0 0 0 0 -1 0 -1 0 0 27 -1 0 0 0 0 -1 0 0 -1 0 27 -1 0 0 0 0 -1 0 0 0 -1 27 -1 0 0 0 0 0 -1 -1 0 0 27 -1 0 0 0 0 0 -1 0 -1 0 27 -1 0 0 0 0 0 -1 0 0 -1 27 -1 0 0 0 0 0 0 -1 -1 0 27 -1 0 0 0 0 0 0 -1 0 -1 27 -1 0 0 0 0 0 0 0 -1 -1 27 0 -1 -1 -1 0 0 0 0 0 0 27 0 -1 -1 0 -1 0 0 0 0 0 27 0 -1 -1 0 0 -1 0 0 0 0 27 0 -1 -1 0 0 0 -1 0 0 0 27 0 -1 -1 0 0 0 0 -1 0 0 27 0 -1 -1 0 0 0 0 0 -1 0 27 0 -1 -1 0 0 0 0 0 0 -1 27 0 -1 0 -1 -1 0 0 0 0 0 27 0 -1 0 -1 0 -1 0 0 0 0 27 0 -1 0 -1 0 0 -1 0 0 0 27 0 -1 0 -1 0 0 0 -1 0 0 27 0 -1 0 -1 0 0 0 0 -1 0 27 0 -1 0 -1 0 0 0 0 0 -1 27 0 -1 0 0 -1 -1 0 0 0 0 27 0 -1 0 0 -1 0 -1 0 0 0 27 0 -1 0 0 -1 0 0 -1 0 0 27 0 -1 0 0 -1 0 0 0 -1 0 27 0 -1 0 0 -1 0 0 0 0 -1 27 0 -1 0 0 0 -1 -1 0 0 0 27 0 -1 0 0 0 -1 0 -1 0 0 27 0 -1 0 0 0 -1 0 0 -1 0 27 0 -1 0 0 0 -1 0 0 0 -1 27 0 -1 0 0 0 0 -1 -1 0 0 27 0 -1 0 0 0 0 -1 0 -1 0 27 0 -1 0 0 0 0 -1 0 0 -1 27 0 -1 0 0 0 0 0 -1 -1 0 27 0 -1 0 0 0 0 0 -1 0 -1 27 0 -1 0 0 0 0 0 0 -1 -1 27 0 0 -1 -1 -1 0 0 0 0 0 27 0 0 -1 -1 0 -1 0 0 0 0 27 0 0 -1 -1 0 0 -1 0 0 0 27 0 0 -1 -1 0 0 0 -1 0 0 27 0 0 -1 -1 0 0 0 0 -1 0 27 0 0 -1 -1 0 0 0 0 0 -1 27 0 0 -1 0 -1 -1 0 0 0 0 27 0 0 -1 0 -1 0 -1 0 0 0 27 0 0 -1 0 -1 0 0 -1 0 0 27 0 0 -1 0 -1 0 0 0 -1 0 27 0 0 -1 0 -1 0 0 0 0 -1 27 0 0 -1 0 0 -1 -1 0 0 0 27 0 0 -1 0 0 -1 0 -1 0 0 27 0 0 -1 0 0 -1 0 0 -1 0 27 0 0 -1 0 0 -1 0 0 0 -1 27 0 0 -1 0 0 0 -1 -1 0 0 27 0 0 -1 0 0 0 -1 0 -1 0 27 0 0 -1 0 0 0 -1 0 0 -1 27 0 0 -1 0 0 0 0 -1 -1 0 27 0 0 -1 0 0 0 0 -1 0 -1 27 0 0 -1 0 0 0 0 0 -1 -1 27 0 0 0 -1 -1 -1 0 0 0 0 27 0 0 0 -1 -1 0 -1 0 0 0 27 0 0 0 -1 -1 0 0 -1 0 0 27 0 0 0 -1 -1 0 0 0 -1 0 27 0 0 0 -1 -1 0 0 0 0 -1 27 0 0 0 -1 0 -1 -1 0 0 0 27 0 0 0 -1 0 -1 0 -1 0 0 27 0 0 0 -1 0 -1 0 0 -1 0 27 0 0 0 -1 0 -1 0 0 0 -1 27 0 0 0 -1 0 0 -1 -1 0 0 27 0 0 0 -1 0 0 -1 0 -1 0 27 0 0 0 -1 0 0 -1 0 0 -1 27 0 0 0 -1 0 0 0 -1 -1 0 27 0 0 0 -1 0 0 0 -1 0 -1 27 0 0 0 -1 0 0 0 0 -1 -1 27 0 0 0 0 -1 -1 -1 0 0 0 27 0 0 0 0 -1 -1 0 -1 0 0 27 0 0 0 0 -1 -1 0 0 -1 0 27 0 0 0 0 -1 -1 0 0 0 -1 27 0 0 0 0 -1 0 -1 -1 0 0 27 0 0 0 0 -1 0 -1 0 -1 0 27 0 0 0 0 -1 0 -1 0 0 -1 27 0 0 0 0 -1 0 0 -1 -1 0 27 0 0 0 0 -1 0 0 -1 0 -1 27 0 0 0 0 -1 0 0 0 -1 -1 27 0 0 0 0 0 -1 -1 -1 0 0 27 0 0 0 0 0 -1 -1 0 -1 0 27 0 0 0 0 0 -1 -1 0 0 -1 27 0 0 0 0 0 -1 0 -1 -1 0 27 0 0 0 0 0 -1 0 -1 0 -1 27 0 0 0 0 0 -1 0 0 -1 -1 27 0 0 0 0 0 0 -1 -1 -1 0 27 0 0 0 0 0 0 -1 -1 0 -1 27 0 0 0 0 0 0 -1 0 -1 -1 27 0 0 0 0 0 0 0 -1 -1 -1 19 -1 -1 0 0 0 0 0 0 0 0 19 -1 0 -1 0 0 0 0 0 0 0 19 -1 0 0 -1 0 0 0 0 0 0 19 -1 0 0 0 -1 0 0 0 0 0 19 -1 0 0 0 0 -1 0 0 0 0 19 -1 0 0 0 0 0 -1 0 0 0 19 -1 0 0 0 0 0 0 -1 0 0 19 -1 0 0 0 0 0 0 0 -1 0 19 -1 0 0 0 0 0 0 0 0 -1 19 0 -1 -1 0 0 0 0 0 0 0 19 0 -1 0 -1 0 0 0 0 0 0 19 0 -1 0 0 -1 0 0 0 0 0 19 0 -1 0 0 0 -1 0 0 0 0 19 0 -1 0 0 0 0 -1 0 0 0 19 0 -1 0 0 0 0 0 -1 0 0 19 0 -1 0 0 0 0 0 0 -1 0 19 0 -1 0 0 0 0 0 0 0 -1 19 0 0 -1 -1 0 0 0 0 0 0 19 0 0 -1 0 -1 0 0 0 0 0 19 0 0 -1 0 0 -1 0 0 0 0 19 0 0 -1 0 0 0 -1 0 0 0 19 0 0 -1 0 0 0 0 -1 0 0 19 0 0 -1 0 0 0 0 0 -1 0 19 0 0 -1 0 0 0 0 0 0 -1 19 0 0 0 -1 -1 0 0 0 0 0 19 0 0 0 -1 0 -1 0 0 0 0 19 0 0 0 -1 0 0 -1 0 0 0 19 0 0 0 -1 0 0 0 -1 0 0 19 0 0 0 -1 0 0 0 0 -1 0 19 0 0 0 -1 0 0 0 0 0 -1 19 0 0 0 0 -1 -1 0 0 0 0 19 0 0 0 0 -1 0 -1 0 0 0 19 0 0 0 0 -1 0 0 -1 0 0 19 0 0 0 0 -1 0 0 0 -1 0 19 0 0 0 0 -1 0 0 0 0 -1 19 0 0 0 0 0 -1 -1 0 0 0 19 0 0 0 0 0 -1 0 -1 0 0 19 0 0 0 0 0 -1 0 0 -1 0 19 0 0 0 0 0 -1 0 0 0 -1 19 0 0 0 0 0 0 -1 -1 0 0 19 0 0 0 0 0 0 -1 0 -1 0 19 0 0 0 0 0 0 -1 0 0 -1 19 0 0 0 0 0 0 0 -1 -1 0 19 0 0 0 0 0 0 0 -1 0 -1 19 0 0 0 0 0 0 0 0 -1 -1 10 -1 0 0 0 0 0 0 0 0 0 10 0 -1 0 0 0 0 0 0 0 0 10 0 0 -1 0 0 0 0 0 0 0 10 0 0 0 -1 0 0 0 0 0 0 10 0 0 0 0 -1 0 0 0 0 0 10 0 0 0 0 0 -1 0 0 0 0 10 0 0 0 0 0 0 -1 0 0 0 10 0 0 0 0 0 0 0 -1 0 0 10 0 0 0 0 0 0 0 0 -1 0 10 0 0 0 0 0 0 0 0 0 -1 end lrslib-062/ine/cocoa13/c30-15.ext0000600001553200155320000001121212722006423014003 0ustar avis*cyclic polytope n=30, d=15 V-representation begin 30 16 integer 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 1 3 9 27 81 243 729 2187 6561 19683 59049 177147 531441 1594323 4782969 14348907 1 4 16 64 256 1024 4096 16384 65536 262144 1048576 4194304 16777216 67108864 268435456 1073741824 1 5 25 125 625 3125 15625 78125 390625 1953125 9765625 48828125 244140625 1220703125 6103515625 30517578125 1 6 36 216 1296 7776 46656 279936 1679616 10077696 60466176 362797056 2176782336 13060694016 78364164096 470184984576 1 7 49 343 2401 16807 117649 823543 5764801 40353607 282475249 1977326743 13841287201 96889010407 678223072849 4747561509943 1 8 64 512 4096 32768 262144 2097152 16777216 134217728 1073741824 8589934592 68719476736 549755813888 4398046511104 35184372088832 1 9 81 729 6561 59049 531441 4782969 43046721 387420489 3486784401 31381059609 282429536481 2541865828329 22876792454961 205891132094649 1 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000000 100000000000 1000000000000 10000000000000 100000000000000 1000000000000000 1 11 121 1331 14641 161051 1771561 19487171 214358881 2357947691 25937424601 285311670611 3138428376721 34522712143931 379749833583241 4177248169415651 1 12 144 1728 20736 248832 2985984 35831808 429981696 5159780352 61917364224 743008370688 8916100448256 106993205379072 1283918464548864 15407021574586368 1 13 169 2197 28561 371293 4826809 62748517 815730721 10604499373 137858491849 1792160394037 23298085122481 302875106592253 3937376385699289 51185893014090757 1 14 196 2744 38416 537824 7529536 105413504 1475789056 20661046784 289254654976 4049565169664 56693912375296 793714773254144 11112006825558016 155568095557812224 1 15 225 3375 50625 759375 11390625 170859375 2562890625 38443359375 576650390625 8649755859375 129746337890625 1946195068359375 29192926025390625 437893890380859375 1 16 256 4096 65536 1048576 16777216 268435456 4294967296 68719476736 1099511627776 17592186044416 281474976710656 4503599627370496 72057594037927936 1152921504606846976 1 17 289 4913 83521 1419857 24137569 410338673 6975757441 118587876497 2015993900449 34271896307633 582622237229761 9904578032905937 168377826559400929 2862423051509815793 1 18 324 5832 104976 1889568 34012224 612220032 11019960576 198359290368 3570467226624 64268410079232 1156831381426176 20822964865671168 374813367582081024 6746640616477458432 1 19 361 6859 130321 2476099 47045881 893871739 16983563041 322687697779 6131066257801 116490258898219 2213314919066161 42052983462257059 799006685782884121 15181127029874798299 1 20 400 8000 160000 3200000 64000000 1280000000 25600000000 512000000000 10240000000000 204800000000000 4096000000000000 81920000000000000 1638400000000000000 32768000000000000000 1 21 441 9261 194481 4084101 85766121 1801088541 37822859361 794280046581 16679880978201 350277500542221 7355827511386641 154472377739119461 3243919932521508681 68122318582951682301 1 22 484 10648 234256 5153632 113379904 2494357888 54875873536 1207269217792 26559922791424 584318301411328 12855002631049216 282810057883082752 6221821273427820544 136880068015412051968 1 23 529 12167 279841 6436343 148035889 3404825447 78310985281 1801152661463 41426511213649 952809757913927 21914624432020321 504036361936467383 11592836324538749809 266635235464391245607 1 24 576 13824 331776 7962624 191102976 4586471424 110075314176 2641807540224 63403380965376 1521681143169024 36520347436056576 876488338465357824 21035720123168587776 504857282956046106624 1 25 625 15625 390625 9765625 244140625 6103515625 152587890625 3814697265625 95367431640625 2384185791015625 59604644775390625 1490116119384765625 37252902984619140625 931322574615478515625 1 26 676 17576 456976 11881376 308915776 8031810176 208827064576 5429503678976 141167095653376 3670344486987776 95428956661682176 2481152873203736576 64509974703297150976 1677259342285725925376 1 27 729 19683 531441 14348907 387420489 10460353203 282429536481 7625597484987 205891132094649 5559060566555523 150094635296999121 4052555153018976267 109418989131512359209 2954312706550833698643 1 28 784 21952 614656 17210368 481890304 13492928512 377801998336 10578455953408 296196766695424 8293509467471872 232218265089212416 6502111422497947648 182059119829942534144 5097655355238390956032 1 29 841 24389 707281 20511149 594823321 17249876309 500246412961 14507145975869 420707233300201 12200509765705829 353814783205469041 10260628712958602189 297558232675799463481 8629188747598184440949 1 30 900 27000 810000 24300000 729000000 21870000000 656100000000 19683000000000 590490000000000 17714700000000000 531441000000000000 15943230000000000000 478296900000000000000 14348907000000000000000 endlrslib-062/ine/cocoa13/bv7.ine0000600001553200155320000002002212722006423013643 0ustar avis*ext form for perm H-representation linearity 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 begin 69 57 integer 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 6 0 0 0 0 0 0 5 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 -1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 end lrslib-062/ine/cocoa13/bv9.ine0000600001553200155320000004676012722006423013666 0ustar avis*ext form for perm H-representation linearity 26 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 begin 107 91 integer 0 9 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 -1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 end lrslib-062/ine/cocoa13/perm6.ine0000600001553200155320000000227712722006423014212 0ustar avis*permutahedron n=6 H-representation linearity 1 1 begin 63 7 integer -21 1 1 1 1 1 1 20 -1 -1 -1 -1 -1 0 20 -1 -1 -1 -1 0 -1 20 -1 -1 -1 0 -1 -1 20 -1 -1 0 -1 -1 -1 20 -1 0 -1 -1 -1 -1 20 0 -1 -1 -1 -1 -1 18 -1 -1 -1 -1 0 0 18 -1 -1 -1 0 -1 0 18 -1 -1 -1 0 0 -1 18 -1 -1 0 -1 -1 0 18 -1 -1 0 -1 0 -1 18 -1 -1 0 0 -1 -1 18 -1 0 -1 -1 -1 0 18 -1 0 -1 -1 0 -1 18 -1 0 -1 0 -1 -1 18 -1 0 0 -1 -1 -1 18 0 -1 -1 -1 -1 0 18 0 -1 -1 -1 0 -1 18 0 -1 -1 0 -1 -1 18 0 -1 0 -1 -1 -1 18 0 0 -1 -1 -1 -1 15 -1 -1 -1 0 0 0 15 -1 -1 0 -1 0 0 15 -1 -1 0 0 -1 0 15 -1 -1 0 0 0 -1 15 -1 0 -1 -1 0 0 15 -1 0 -1 0 -1 0 15 -1 0 -1 0 0 -1 15 -1 0 0 -1 -1 0 15 -1 0 0 -1 0 -1 15 -1 0 0 0 -1 -1 15 0 -1 -1 -1 0 0 15 0 -1 -1 0 -1 0 15 0 -1 -1 0 0 -1 15 0 -1 0 -1 -1 0 15 0 -1 0 -1 0 -1 15 0 -1 0 0 -1 -1 15 0 0 -1 -1 -1 0 15 0 0 -1 -1 0 -1 15 0 0 -1 0 -1 -1 15 0 0 0 -1 -1 -1 11 -1 -1 0 0 0 0 11 -1 0 -1 0 0 0 11 -1 0 0 -1 0 0 11 -1 0 0 0 -1 0 11 -1 0 0 0 0 -1 11 0 -1 -1 0 0 0 11 0 -1 0 -1 0 0 11 0 -1 0 0 -1 0 11 0 -1 0 0 0 -1 11 0 0 -1 -1 0 0 11 0 0 -1 0 -1 0 11 0 0 -1 0 0 -1 11 0 0 0 -1 -1 0 11 0 0 0 -1 0 -1 11 0 0 0 0 -1 -1 6 -1 0 0 0 0 0 6 0 -1 0 0 0 0 6 0 0 -1 0 0 0 6 0 0 0 -1 0 0 6 0 0 0 0 -1 0 6 0 0 0 0 0 -1 end linearity 1 1 lrslib-062/ine/cocoa13/perm8.ine0000600001553200155320000001353512722006423014213 0ustar avis*permutahedron n=8 H-representation linearity 1 1 begin 255 9 integer -36 1 1 1 1 1 1 1 1 35 -1 -1 -1 -1 -1 -1 -1 0 35 -1 -1 -1 -1 -1 -1 0 -1 35 -1 -1 -1 -1 -1 0 -1 -1 35 -1 -1 -1 -1 0 -1 -1 -1 35 -1 -1 -1 0 -1 -1 -1 -1 35 -1 -1 0 -1 -1 -1 -1 -1 35 -1 0 -1 -1 -1 -1 -1 -1 35 0 -1 -1 -1 -1 -1 -1 -1 33 -1 -1 -1 -1 -1 -1 0 0 33 -1 -1 -1 -1 -1 0 -1 0 33 -1 -1 -1 -1 -1 0 0 -1 33 -1 -1 -1 -1 0 -1 -1 0 33 -1 -1 -1 -1 0 -1 0 -1 33 -1 -1 -1 -1 0 0 -1 -1 33 -1 -1 -1 0 -1 -1 -1 0 33 -1 -1 -1 0 -1 -1 0 -1 33 -1 -1 -1 0 -1 0 -1 -1 33 -1 -1 -1 0 0 -1 -1 -1 33 -1 -1 0 -1 -1 -1 -1 0 33 -1 -1 0 -1 -1 -1 0 -1 33 -1 -1 0 -1 -1 0 -1 -1 33 -1 -1 0 -1 0 -1 -1 -1 33 -1 -1 0 0 -1 -1 -1 -1 33 -1 0 -1 -1 -1 -1 -1 0 33 -1 0 -1 -1 -1 -1 0 -1 33 -1 0 -1 -1 -1 0 -1 -1 33 -1 0 -1 -1 0 -1 -1 -1 33 -1 0 -1 0 -1 -1 -1 -1 33 -1 0 0 -1 -1 -1 -1 -1 33 0 -1 -1 -1 -1 -1 -1 0 33 0 -1 -1 -1 -1 -1 0 -1 33 0 -1 -1 -1 -1 0 -1 -1 33 0 -1 -1 -1 0 -1 -1 -1 33 0 -1 -1 0 -1 -1 -1 -1 33 0 -1 0 -1 -1 -1 -1 -1 33 0 0 -1 -1 -1 -1 -1 -1 30 -1 -1 -1 -1 -1 0 0 0 30 -1 -1 -1 -1 0 -1 0 0 30 -1 -1 -1 -1 0 0 -1 0 30 -1 -1 -1 -1 0 0 0 -1 30 -1 -1 -1 0 -1 -1 0 0 30 -1 -1 -1 0 -1 0 -1 0 30 -1 -1 -1 0 -1 0 0 -1 30 -1 -1 -1 0 0 -1 -1 0 30 -1 -1 -1 0 0 -1 0 -1 30 -1 -1 -1 0 0 0 -1 -1 30 -1 -1 0 -1 -1 -1 0 0 30 -1 -1 0 -1 -1 0 -1 0 30 -1 -1 0 -1 -1 0 0 -1 30 -1 -1 0 -1 0 -1 -1 0 30 -1 -1 0 -1 0 -1 0 -1 30 -1 -1 0 -1 0 0 -1 -1 30 -1 -1 0 0 -1 -1 -1 0 30 -1 -1 0 0 -1 -1 0 -1 30 -1 -1 0 0 -1 0 -1 -1 30 -1 -1 0 0 0 -1 -1 -1 30 -1 0 -1 -1 -1 -1 0 0 30 -1 0 -1 -1 -1 0 -1 0 30 -1 0 -1 -1 -1 0 0 -1 30 -1 0 -1 -1 0 -1 -1 0 30 -1 0 -1 -1 0 -1 0 -1 30 -1 0 -1 -1 0 0 -1 -1 30 -1 0 -1 0 -1 -1 -1 0 30 -1 0 -1 0 -1 -1 0 -1 30 -1 0 -1 0 -1 0 -1 -1 30 -1 0 -1 0 0 -1 -1 -1 30 -1 0 0 -1 -1 -1 -1 0 30 -1 0 0 -1 -1 -1 0 -1 30 -1 0 0 -1 -1 0 -1 -1 30 -1 0 0 -1 0 -1 -1 -1 30 -1 0 0 0 -1 -1 -1 -1 30 0 -1 -1 -1 -1 -1 0 0 30 0 -1 -1 -1 -1 0 -1 0 30 0 -1 -1 -1 -1 0 0 -1 30 0 -1 -1 -1 0 -1 -1 0 30 0 -1 -1 -1 0 -1 0 -1 30 0 -1 -1 -1 0 0 -1 -1 30 0 -1 -1 0 -1 -1 -1 0 30 0 -1 -1 0 -1 -1 0 -1 30 0 -1 -1 0 -1 0 -1 -1 30 0 -1 -1 0 0 -1 -1 -1 30 0 -1 0 -1 -1 -1 -1 0 30 0 -1 0 -1 -1 -1 0 -1 30 0 -1 0 -1 -1 0 -1 -1 30 0 -1 0 -1 0 -1 -1 -1 30 0 -1 0 0 -1 -1 -1 -1 30 0 0 -1 -1 -1 -1 -1 0 30 0 0 -1 -1 -1 -1 0 -1 30 0 0 -1 -1 -1 0 -1 -1 30 0 0 -1 -1 0 -1 -1 -1 30 0 0 -1 0 -1 -1 -1 -1 30 0 0 0 -1 -1 -1 -1 -1 26 -1 -1 -1 -1 0 0 0 0 26 -1 -1 -1 0 -1 0 0 0 26 -1 -1 -1 0 0 -1 0 0 26 -1 -1 -1 0 0 0 -1 0 26 -1 -1 -1 0 0 0 0 -1 26 -1 -1 0 -1 -1 0 0 0 26 -1 -1 0 -1 0 -1 0 0 26 -1 -1 0 -1 0 0 -1 0 26 -1 -1 0 -1 0 0 0 -1 26 -1 -1 0 0 -1 -1 0 0 26 -1 -1 0 0 -1 0 -1 0 26 -1 -1 0 0 -1 0 0 -1 26 -1 -1 0 0 0 -1 -1 0 26 -1 -1 0 0 0 -1 0 -1 26 -1 -1 0 0 0 0 -1 -1 26 -1 0 -1 -1 -1 0 0 0 26 -1 0 -1 -1 0 -1 0 0 26 -1 0 -1 -1 0 0 -1 0 26 -1 0 -1 -1 0 0 0 -1 26 -1 0 -1 0 -1 -1 0 0 26 -1 0 -1 0 -1 0 -1 0 26 -1 0 -1 0 -1 0 0 -1 26 -1 0 -1 0 0 -1 -1 0 26 -1 0 -1 0 0 -1 0 -1 26 -1 0 -1 0 0 0 -1 -1 26 -1 0 0 -1 -1 -1 0 0 26 -1 0 0 -1 -1 0 -1 0 26 -1 0 0 -1 -1 0 0 -1 26 -1 0 0 -1 0 -1 -1 0 26 -1 0 0 -1 0 -1 0 -1 26 -1 0 0 -1 0 0 -1 -1 26 -1 0 0 0 -1 -1 -1 0 26 -1 0 0 0 -1 -1 0 -1 26 -1 0 0 0 -1 0 -1 -1 26 -1 0 0 0 0 -1 -1 -1 26 0 -1 -1 -1 -1 0 0 0 26 0 -1 -1 -1 0 -1 0 0 26 0 -1 -1 -1 0 0 -1 0 26 0 -1 -1 -1 0 0 0 -1 26 0 -1 -1 0 -1 -1 0 0 26 0 -1 -1 0 -1 0 -1 0 26 0 -1 -1 0 -1 0 0 -1 26 0 -1 -1 0 0 -1 -1 0 26 0 -1 -1 0 0 -1 0 -1 26 0 -1 -1 0 0 0 -1 -1 26 0 -1 0 -1 -1 -1 0 0 26 0 -1 0 -1 -1 0 -1 0 26 0 -1 0 -1 -1 0 0 -1 26 0 -1 0 -1 0 -1 -1 0 26 0 -1 0 -1 0 -1 0 -1 26 0 -1 0 -1 0 0 -1 -1 26 0 -1 0 0 -1 -1 -1 0 26 0 -1 0 0 -1 -1 0 -1 26 0 -1 0 0 -1 0 -1 -1 26 0 -1 0 0 0 -1 -1 -1 26 0 0 -1 -1 -1 -1 0 0 26 0 0 -1 -1 -1 0 -1 0 26 0 0 -1 -1 -1 0 0 -1 26 0 0 -1 -1 0 -1 -1 0 26 0 0 -1 -1 0 -1 0 -1 26 0 0 -1 -1 0 0 -1 -1 26 0 0 -1 0 -1 -1 -1 0 26 0 0 -1 0 -1 -1 0 -1 26 0 0 -1 0 -1 0 -1 -1 26 0 0 -1 0 0 -1 -1 -1 26 0 0 0 -1 -1 -1 -1 0 26 0 0 0 -1 -1 -1 0 -1 26 0 0 0 -1 -1 0 -1 -1 26 0 0 0 -1 0 -1 -1 -1 26 0 0 0 0 -1 -1 -1 -1 21 -1 -1 -1 0 0 0 0 0 21 -1 -1 0 -1 0 0 0 0 21 -1 -1 0 0 -1 0 0 0 21 -1 -1 0 0 0 -1 0 0 21 -1 -1 0 0 0 0 -1 0 21 -1 -1 0 0 0 0 0 -1 21 -1 0 -1 -1 0 0 0 0 21 -1 0 -1 0 -1 0 0 0 21 -1 0 -1 0 0 -1 0 0 21 -1 0 -1 0 0 0 -1 0 21 -1 0 -1 0 0 0 0 -1 21 -1 0 0 -1 -1 0 0 0 21 -1 0 0 -1 0 -1 0 0 21 -1 0 0 -1 0 0 -1 0 21 -1 0 0 -1 0 0 0 -1 21 -1 0 0 0 -1 -1 0 0 21 -1 0 0 0 -1 0 -1 0 21 -1 0 0 0 -1 0 0 -1 21 -1 0 0 0 0 -1 -1 0 21 -1 0 0 0 0 -1 0 -1 21 -1 0 0 0 0 0 -1 -1 21 0 -1 -1 -1 0 0 0 0 21 0 -1 -1 0 -1 0 0 0 21 0 -1 -1 0 0 -1 0 0 21 0 -1 -1 0 0 0 -1 0 21 0 -1 -1 0 0 0 0 -1 21 0 -1 0 -1 -1 0 0 0 21 0 -1 0 -1 0 -1 0 0 21 0 -1 0 -1 0 0 -1 0 21 0 -1 0 -1 0 0 0 -1 21 0 -1 0 0 -1 -1 0 0 21 0 -1 0 0 -1 0 -1 0 21 0 -1 0 0 -1 0 0 -1 21 0 -1 0 0 0 -1 -1 0 21 0 -1 0 0 0 -1 0 -1 21 0 -1 0 0 0 0 -1 -1 21 0 0 -1 -1 -1 0 0 0 21 0 0 -1 -1 0 -1 0 0 21 0 0 -1 -1 0 0 -1 0 21 0 0 -1 -1 0 0 0 -1 21 0 0 -1 0 -1 -1 0 0 21 0 0 -1 0 -1 0 -1 0 21 0 0 -1 0 -1 0 0 -1 21 0 0 -1 0 0 -1 -1 0 21 0 0 -1 0 0 -1 0 -1 21 0 0 -1 0 0 0 -1 -1 21 0 0 0 -1 -1 -1 0 0 21 0 0 0 -1 -1 0 -1 0 21 0 0 0 -1 -1 0 0 -1 21 0 0 0 -1 0 -1 -1 0 21 0 0 0 -1 0 -1 0 -1 21 0 0 0 -1 0 0 -1 -1 21 0 0 0 0 -1 -1 -1 0 21 0 0 0 0 -1 -1 0 -1 21 0 0 0 0 -1 0 -1 -1 21 0 0 0 0 0 -1 -1 -1 15 -1 -1 0 0 0 0 0 0 15 -1 0 -1 0 0 0 0 0 15 -1 0 0 -1 0 0 0 0 15 -1 0 0 0 -1 0 0 0 15 -1 0 0 0 0 -1 0 0 15 -1 0 0 0 0 0 -1 0 15 -1 0 0 0 0 0 0 -1 15 0 -1 -1 0 0 0 0 0 15 0 -1 0 -1 0 0 0 0 15 0 -1 0 0 -1 0 0 0 15 0 -1 0 0 0 -1 0 0 15 0 -1 0 0 0 0 -1 0 15 0 -1 0 0 0 0 0 -1 15 0 0 -1 -1 0 0 0 0 15 0 0 -1 0 -1 0 0 0 15 0 0 -1 0 0 -1 0 0 15 0 0 -1 0 0 0 -1 0 15 0 0 -1 0 0 0 0 -1 15 0 0 0 -1 -1 0 0 0 15 0 0 0 -1 0 -1 0 0 15 0 0 0 -1 0 0 -1 0 15 0 0 0 -1 0 0 0 -1 15 0 0 0 0 -1 -1 0 0 15 0 0 0 0 -1 0 -1 0 15 0 0 0 0 -1 0 0 -1 15 0 0 0 0 0 -1 -1 0 15 0 0 0 0 0 -1 0 -1 15 0 0 0 0 0 0 -1 -1 8 -1 0 0 0 0 0 0 0 8 0 -1 0 0 0 0 0 0 8 0 0 -1 0 0 0 0 0 8 0 0 0 -1 0 0 0 0 8 0 0 0 0 -1 0 0 0 8 0 0 0 0 0 -1 0 0 8 0 0 0 0 0 0 -1 0 8 0 0 0 0 0 0 0 -1 end linearity 1 1 lrslib-062/COPYING0000600001553200155320000004314612722006425011516 0ustar avis GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. lrslib-062/plrs.cpp0000600001553200155320000004043412722006616012146 0ustar avis#include #include #include #include #include #include #include #include #include "lrslib.h" #include "plrs.hpp" #include using namespace std; //Synynchrochronization Variables boost::mutex consume_mutex; boost::condition_variable consume; boost::atomic output_list; boost::atomic producers_finished(false); boost::atomic initializing(true); boost::mutex cobasis_list_mutex; //List of starting cobasis queue cobasis_list; //Total counts long RAYS = 0; long VERTICES = 0; long BASIS = 0; long FACETS = 0; long INTVERTICES = 0; lrs_mp Tnum, Tden, tN, tD, Vnum, Vden; int INITDEPTH = 4; int MAXTHREADS = 12; int ESTIMATES = 0; int SUBTREESIZE = 1000; int SETUP = FALSE; // generate threads but do not run them int cobasislistsize = 0; string INPUTFILE; ofstream OUTSTREAM; int PLRS_DEBUG=0; int PLRS_DEBUG_PHASE1=0; plrs_output * reverseList(plrs_output* head){ plrs_output * last = head, * new_head = NULL; while(last) { plrs_output * tmp = last; last = last->next; tmp->next = new_head; new_head = tmp; } return new_head; } void processCobasis(string cobasis){ stringstream ss(cobasis); string height; //split string after h= and retreive height value getline(ss, height, '='); getline(ss, height, ' '); //Check if the cobasis is a leaf node // if(atoi(height.c_str()) == INITDEPTH){ if (ESTIMATES || (atoi(height.c_str()) == INITDEPTH) ) { /* FIXME this is wrong */ //Remove the following characters char chars[] = "#VRBh=facetsFvertices/rays"; unsigned hull = FALSE; if (cobasis.compare(0,2,"F#")==0) hull = TRUE; for(unsigned int i = 0; i < sizeof(chars); ++i){ cobasis.erase(remove(cobasis.begin(), cobasis.end(), chars[i]), cobasis.end()); } //Split the string after facets (do not need det, indet etc. for restart) ss.str(cobasis); getline(ss, cobasis, 'I'); /* 2013.2.14 set depth to zero: hull=F between 3rd and 4th spaces in cobasis; hull=T 2nd and 3rd*/ unsigned found = cobasis.find(" "); found = cobasis.find(" ",found+1); if (hull == FALSE) found = cobasis.find(" ",found+1); unsigned found1 = cobasis.find(" ",found+1); cobasis.replace(found+1,found1-found-1,"0"); //Save in cobasis list as a starting point for a thread cobasis_list.push(cobasis); } } void copyFile(string infile, string outfile){ ifstream input_file (infile.c_str()); ofstream output_file (outfile.c_str()); string line; if(output_file.is_open()){ if(input_file.is_open()){ while(input_file.good()){ getline(input_file, line); output_file< lock(cobasis_list_mutex); //check if starting cobasis left if(!cobasis_list.size()) break; //There is a cobasis left store and pop from list string starting_cobasis = cobasis_list.front(); cobasis_list.pop(); //Release cobasis list lock lock.unlock(); //Begin searching tree with starting cobasis doWork(thread_number, starting_cobasis); } } void findInitCobasis(){ char * argv[] = {"init_temp.ine"}; lrs_main(1, argv); //No longer need temporary ine file so delete it if(remove("init_temp.ine") != 0) printf("Error deleting init file!\n"); } void processOutput(){ // this will atomically pop everything that has been posted so far. // consume list is a linked list in 'reverse post order' plrs_output* consume_list = output_list.exchange(0,boost::memory_order_acquire); //Reverse list since order is important when initializing if(initializing){ consume_list = reverseList(consume_list); } //proccess the list of output accordingly while(consume_list){ if(consume_list->type == "vertex"){ if (OUTSTREAM == NULL) printf("%s\n",consume_list->data.c_str()); else OUTSTREAM <data<type == "ray"){ if (OUTSTREAM == NULL) printf("%s\n",consume_list->data.c_str()); else OUTSTREAM <data<type =="cobasis"){ if(initializing){ //Initializing so process cobasis - if leaf node store in starting cobasis list //Note that we will not be piping initial cobasis to output processCobasis(consume_list->data); }else{ if (OUTSTREAM == NULL) printf("%s\n",consume_list->data.c_str()); else OUTSTREAM <data<type =="V cobasis"){ if(!initializing){ if (OUTSTREAM == NULL) printf("%s\n",consume_list->data.c_str()); else OUTSTREAM <data<type == "facet count"){ FACETS += atoi(consume_list->data.c_str()); }else if(consume_list->type == "ray count"){ RAYS += atoi(consume_list->data.c_str()); }else if(consume_list->type == "basis count"){ BASIS += atoi(consume_list->data.c_str()); }else if(consume_list->type == "vertex count"){ VERTICES += atoi(consume_list->data.c_str()); }else if(consume_list->type == "integer vertex count"){ INTVERTICES += atoi(consume_list->data.c_str()); }else if(consume_list->type == "volume"){ const char * c = consume_list->data.c_str(); plrs_readrat(Tnum,Tden,c); copy(tN,Vnum); copy(tD,Vden); linrat(tN,tD,1L,Tnum,Tden,1L,Vnum,Vden); // cout << "volume " << prat("",Tnum,Tden) << endl; // cout << "tvolume " << prat("",Vnum,Vden) << endl; }else if(consume_list->type == "options warning"){ //Only pipe warnings if initializing otherwise they are displayed multiple times if(initializing){ if (OUTSTREAM == NULL) printf("%s\n", consume_list->data.c_str()); else OUTSTREAM <data<type == "header"){ //Only pipe headers if initializing otherwise they are displayed multiple times if(initializing){ if (OUTSTREAM == NULL) printf("%s\n", consume_list->data.c_str()); else OUTSTREAM <data<type == "debug"){ //Print debug output if it's produced if (OUTSTREAM == NULL) printf("%s\n", consume_list->data.c_str()); else OUTSTREAM << consume_list->data<next; delete consume_list; consume_list = temp; } } void consumeOutput() { while(!producers_finished) { processOutput(); boost::unique_lock lock(consume_mutex); // check one last time while holding the lock before blocking. if(!output_list && !producers_finished) consume.wait(lock); } //Producer thread(s) have finished searching so manage output_list one last time processOutput(); } void notifyProducerFinished(){ //Get consumer lock boost::unique_lock lock(consume_mutex); producers_finished = true; //notify consumer thread in case it is waiting for producer consume.notify_one(); } void initializeStartingCobasis(){ printf("*Max depth of %d to initialize starting cobasis list\n", INITDEPTH); if(OUTSTREAM != NULL) OUTSTREAM <<"*Max depth of "<0){ string starting_cobasis = cobasis_list.front(); cobasis_list.pop(); //Create .ine file char * thread_file = new char[256]; int threadnumber = cobasis_list.size(); sprintf(thread_file, "%s_%d.ine", INPUTFILE.c_str(),threadnumber); copyFile(INPUTFILE, thread_file); ofstream out_file (thread_file, ios::app); out_file<<"mindepth "<< 0 < 0){ printf("%s\n", prat("*Volume=",Vnum,Vden).c_str()); printf("*Totals: facets=%ld bases=%ld\n",FACETS,BASIS); if (OUTSTREAM != NULL) { OUTSTREAM <type = type; o->data = data; if (PLRS_DEBUG) cout <data<next = stale_head; }while( !output_list.compare_exchange_weak( stale_head, o, boost::memory_order_release ) ); // Because only one thread can post the 'first output', only that thread will attempt // to aquire the lock and therefore there should be no contention on this lock except // when *this thread is about to block on a wait condition. if( !stale_head ) { boost::unique_lock lock(consume_mutex); consume.notify_one(); } } lrslib-062/mplrs.h0000600001553200155320000002173412722006615011771 0ustar avis/* mplrs.h: header for mplrs.c This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Author: Charles Jordan skip@ist.hokudai.ac.jp Based on plrs by Gary Roumanis Initial lrs Author: David Avis avis@cs.mcgill.ca */ #ifndef MPLRSH #define MPLRSH 1 #include "lrslib.h" #include #include #include #include #include #define USAGE "Usage is: \n mpirun -np mplrs \n or \n mpirun -np mplrs -id -maxc -maxd -lmin -lmax -scale -maxbuf -countonly -hist -temp -freq -stop -checkp -restart -time -stopafter " /* Default values for options. */ #define DEF_LMIN 3 /* default -lmin */ #define DEF_LMAX -1 /* default -lmax */ #define DEF_ID 2 /* default -id */ #define DEF_MAXD 0 /* default -maxd */ #define DEF_MAXC 50 /* default -maxc */ #define DEF_MAXNCOB 0 /* default -stopafter (disabled) */ #define DEF_MAXBUF 500 /* default -maxbuf */ #define DEF_TEMP "/tmp/" /* default prefix for temporary files * use /a/b to get files /a/bfilename, * use /a/b/ to get files /a/b/filename */ #define DEF_INPUT NULL /* default input filename (or NULL) */ #define DEF_OUTPUT NULL /* default output filename (or NULL) */ #define DEF_HIST NULL /* default histogram filename (or NULL) */ #define DEF_RESTART NULL/* default restart filename (or NULL) */ #define DEF_FREQ NULL /* default sub-problem size filename (NULL) */ #define DEF_CHECKP NULL /* default checkpoint filename (or NULL) */ #define DEF_STOP NULL /* default stop-signal filename (or NULL) */ #define DEF_SCALEC 100 /* default multiplicative scaling factor for maxc, * used when L is too large (controlled by lmax) */ /* singly linked list */ typedef struct slist { void *data; slist *next; } slist; typedef struct outlist { char *type; char *data; outlist *next; } outlist; /* A linked-list of buffers for MPI communications. * req[0...count-1] correspond to buf[0...count-1] * * When req[i] completes, should free buf[i]. * When all reqs complete, should free buf, req, tags,sizes,types. */ typedef struct msgbuf { MPI_Request *req; void **buf; int count; int target; int data; /* optional, use yourself if needed for something */ int queue; /* if 1, send items 1...count after 0 has completed */ /* queue pointers must be NULL or something free()able */ int *tags; /* tags to use on items 1...count if queued */ int *sizes; /* sizes of sends if queued */ MPI_Datatype *types; /* types of sends if queued */ msgbuf *next; } msgbuf; /* A structure containing the state of this process. * Each process has one. */ typedef struct mplrsv { /* MPI communication buffers */ msgbuf *outgoing; slist *cobasis_list; int caughtsig; /* flag for catching a signal */ /* counts */ unsigned long rays; unsigned long vertices; unsigned long bases; unsigned long facets; unsigned long intvertices; lrs_mp Tnum, Tden, tN, tD, Vnum, Vden; struct timeval start, end; /* MPI info */ int rank; /* my rank */ int size; /* number of MPI processes */ int my_tag; /* to distinguish MPI sends */ char host[MPI_MAX_PROCESSOR_NAME]; /* name of this host */ /* output_list */ outlist *output_list; /* for convenience */ char *tfn_prefix; char *tfn; FILE *tfile; int initializing; /* in phase 1? */ int countonly; /* countonly */ int outnum; /* number of output lines buffered */ int maxbuf; /* maximum number of output lines to buffer before flush */ char *input_filename; /* input filename */ char *input; /* buffer for contents of input file */ } mplrsv; /* A structure for variables only the master needs */ typedef struct masterv { slist *cobasis_list; /* list of work to do (L) */ unsigned long tot_L; /* total size of L (total # jobs) */ unsigned long size_L; /* current size of L (for histograms * and scaling) */ unsigned long num_empty; /* number of times L became empty */ unsigned int num_producers; /* number of producers running */ unsigned int *act_producers; /* whether each producer owes us * remaining bases message. * Needed only for histograms. */ unsigned int live_workers; /* number that haven't exited */ /* MPI communication buffers */ int *workin; /* incoming messages from producers desiring work */ MPI_Request *mworkers; /* MPI_Requests for these messages */ msgbuf *incoming; /* incoming cobases from producers */ MPI_Request *sigcheck; /* MPI_Requests for reporting signals*/ int checkpointing; /* are we checkpointing now? */ /* user options */ unsigned int lmin; /* option -lmin */ unsigned int lmax; /* option -lmax */ unsigned int scalec; /* option -scale*/ unsigned int initdepth; /* option -id */ unsigned int maxdepth; /* option -maxd */ unsigned int maxcobases; /* option -maxc */ unsigned int time_limit; /* option -time */ unsigned long maxncob; /* option -stopafter */ /* files */ char *hist_filename; /*histogram filename (or NULL)*/ FILE *hist; int doing_histogram; /* are we doing a histogram? */ char *freq_filename; /*are we outputting sub-problem sizes?*/ FILE *freq; char *restart_filename; /* restart from a checkpoint */ FILE *restart; char *checkp_filename; /* filename to save checkpoint*/ FILE *checkp; char *stop_filename; /* option -stop */ FILE *stop; FILE *input; } masterv; /* A structure for variables only the consumer needs */ typedef struct consumerv { /* MPI communication buffers */ /* for headers */ MPI_Request *prodreq; /* consumer keeps an open request * for each producer and master */ int *prodibf; /* and two ints as a receive buffer */ /* for content */ msgbuf *incoming; /* incoming MPI communication buffers */ /* output */ char *output_filename; /* output filename (or NULL) */ FILE *output; /* output file (NULL for stdout) */ /* status */ unsigned int num_producers; /* number of producers still going */ unsigned int checkpoint; /* do we want to checkpoint now? */ /* other */ int waiting_initial; /* waiting for initial producer, * hold output until after 'begin' */ } consumerv; /* MASTER and CONSUMER and INITIAL must be different */ #define MASTER 0 /* the MPI process that becomes master */ #define CONSUMER 1 /* the MPI process that becomes consumer */ #define INITIAL 2 #define CHECKFLAG -3 /* must be distinct negative values */ #define RESTARTFLAG -4 /* define DEBUG to get many mplrs debug messages */ #ifdef DEBUG #define mprintf(a) printf a #else #define mprintf(a) #endif /* define DEBUG2 to get even more */ #ifdef DEBUG2 #define mprintf2(a) printf a #else #define mprintf2(a) #endif /* define DEBUG3 to get lots */ #ifdef DEBUG3 #define mprintf3(a) printf a #else #define mprintf3(a) #endif /* function prototypes */ void mplrs_init(int, char **); void mplrs_caughtsig(int); void master_sendfile(void); void mplrs_initstrucs(); void mplrs_commandline(int, char **); void mplrs_initfiles(void); void bad_args(void); int mplrs_fallback(void); int mplrs_master(void); void send_work(int, int); void recv_producer_lists(void); void process_returned_cobases(msgbuf *); void setparams(int *); void check_stop(void); void master_checksigs(void); void master_restart(void); void master_checkpoint(void); void master_checkpointfile(void); void master_checkpointconsumer(void); void print_histogram(timeval *, timeval *); int mplrs_worker(void); void clean_outgoing_buffers(void); /* shared with master */ void do_work(const int *, const char *); void process_output(void); void send_output(int, char *); void process_cobasis(const char *); inline slist *addlist(slist *, void *); void return_unfinished_cobases(void); char *append_out(char *, int *, const char *); int mplrs_worker_finished(void); int mplrs_consumer(void); void consumer_start_incoming(void); msgbuf *consumer_queue_incoming(int *, int); void consumer_proc_messages(void); int consumer_checkpoint(void); inline int outgoing_msgbuf_completed(msgbuf *); inline void free_msgbuf(msgbuf *); outlist *reverse_list(outlist*); void send_master_stats(void); void recv_master_stats(void); void send_counting_stats(int); void recv_counting_stats(int); void initial_print(void); inline void phase1_print(void); void final_print(void); inline char *dupstr(const char *str); #endif /* MPLRSH */ lrslib-062/nashdemo.c0000600001553200155320000000325312722006426012421 0ustar avis/*********************************************************/ /* nashdemo is a simple template for lrsnashlib.c */ /* */ /* It builds two 3x4 matrices A B and computes */ /* their equilibria */ /*********************************************************/ /* Compile: gcc -O3 -o nashdemo nashdemo.c lrsnashlib.c lrslib.c lrsgmp.c -lgmp -DGMP Usage: nashdemo */ #include #include #include #include "lrslib.h" #include "lrsnashlib.h" int main() { long s,t; game Game; // Storage for one game game *g = &Game; gInfo GI= {.name="Game"}; // Input file name could go here if there is one g->aux = &GI; if ( !lrs_init ("\n*nashdemo:")) // Done once but essential for lrslib usage ! return 1; g->nstrats[ROW]=3; // row player g->nstrats[COL]=4; // col player setFwidth(g,4); // field length for printing games for(s=0;s<3;s++) // Game 1: load payoff matrices with some integers for(t=0;t<4;t++) { g->payoff[s][t][ROW].num=s+t; g->payoff[s][t][COL].num=s*t; g->payoff[s][t][ROW].den=1; g->payoff[s][t][COL].den=1; } printGame(g); lrs_solve_nash(g); for(s=0;s<3;s++) // Game 2: load payoff matrices with some rationals for(t=0;t<4;t++) { g->payoff[s][t][ROW].num=s+t; g->payoff[s][t][COL].num=1; g->payoff[s][t][ROW].den=2; g->payoff[s][t][COL].den=3; } printGame(g); lrs_solve_nash(g); return 0; } lrslib-062/lrs.c0000600001553200155320000000023112722006426011414 0ustar avis#include #include #include "lrslib.h" int main (int argc, char *argv[]) { lrs_main(argc,argv); printf("\n"); return 0; } lrslib-062/2nash.c0000600001553200155320000000470412722006615011640 0ustar avis// 2nash.c v1.0a Jan 15, 2009 // Hack of nlrs.c by Conor Meagher to run lrs simultaneously on n processors for n input files // runs lrsnash on input files A B in both orders simultaneously, terminating when first proc finishes // output goes in third argument if any, else in file: out #include #include #include #include int main(int argc, char *argv[]) { pid_t cpid[argc - 1], w; char buffer [250]; int status,l,j; if (argc < 3 || argc > 4) { printf("Usage: 2nash A B [outfile]\n"); return(0); } for(l = 1; l < 3; l++) { cpid[l -1] = fork(); if (cpid[l -1] == -1) { perror("fork"); exit(EXIT_FAILURE); } if(cpid[l-1] == 0) { //forked threads // n= sprintf(buffer, "lrs %s > out%i", argv[l], l); if(l==1) { int n= sprintf(buffer, "lrsnash %s %s > out%i", argv[1], argv[2], l); } else { int n= sprintf(buffer, "lrsnash %s %s > out%i", argv[2], argv[1], l); } int i=system(buffer); _exit(0); } } // main thread w = wait(&status); for(j = 1; j < 3; j++) { if(w == cpid[j-1]) { // this child finished first if(j==1) printf("lrsnash %s %s finished first\n", argv[1], argv[2]); else { printf("lrsnash %s %s finished first\n", argv[2], argv[1]); printf("player numbers will be reversed in output\n"); } if(argc == 4) { printf("output file: %s\n", argv[3]); int n = sprintf(buffer, "/bin/mv -f out%i %s", j, argv[3]); } else { printf("output file: out\n", argv[2], argv[1]); int n = sprintf(buffer, "/bin/mv -f out%i out", j); } int i = system(buffer); } else { int n = sprintf(buffer, "/bin/rm -f out%i", j); int i = system(buffer); } } printf("the other process will be "); /*...will be killed */ fflush(stdout); kill(0,9); exit(EXIT_SUCCESS); } lrslib-062/cube.ine0000600001553200155320000000020312722006426012062 0ustar aviscube *cube of side 2 centred at origin H-representation begin 6 4 rational 1 1 0 0 1 0 1 0 1 0 0 1 1 -1 0 0 1 0 -1 0 1 0 0 -1 end lrslib-062/plrs.hpp0000600001553200155320000000342612722006426012152 0ustar avis/* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. Ver 1.0 parallel version (plrs) Author: Gary Roumanis I have adapted the synchronous lrslib library (v.4.3.) to take advantage of multiple processors/cores. My goal was to keep the program portable and stable. Thus, I took advantage of the free BOOST (http://www.boost.org/) library. Moreover, to limit the introduction of bugs I have made a concious effort to keep the underlying lrslib code untouched. Initial lrs Author: David Avis avis@cs.mcgill.ca */ #ifndef PLRS_HPP_INCLUDED #define PLRS_HPP_INCLUDED #include #include #define USAGE "Usage is plrs -mt -id " struct plrs_output { std::string type; std::string data; plrs_output* next; }; plrs_output * reverseList(plrs_output* head); void processCobasis(string cobasis); void findInitCobasis(); void copyFile(string infile, string outfile); void doWork(int thread_number, string starting_cobasis); void startThread(int thread_number); void processOutput(); void consumeOutput(); void notifyProducerFinished(); void initializeStartingCobasis(); #endif lrslib-062/plotD.gp0000600001553200155320000000105512722006425012066 0ustar avisset terminal postscript landscape enhanced color set output 'plotD.ps' set yzeroaxis set boxwidth 50 set title "Frequency distribution of subtree sizes" set xlabel "Size of subtree" set ylabel "Frequency" set style fill solid 1.0 noborder bin_width = 1; bin_number(x) = floor(x/bin_width) rounded(x) = bin_width * ( bin_number(x) ) plot [0:*] 'freq' using (rounded($1)):(1) smooth frequency with boxes set title "Frequency distribution of subtree sizes up to 100 nodes" set boxwidth 1 plot [0:100] 'freq' using (rounded($1)):(1) smooth frequency with boxes lrslib-062/cube.ext0000600001553200155320000000022112722006425012106 0ustar avis V-representation begin 8 4 rational 1 1 1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 end lrslib-062/lrsnashlib.c0000600001553200155320000011763612722006426012777 0ustar avis/*******************************************************/ /* lrsnashlib is a library of routines for computing */ /* computing all nash equilibria for two person games */ /* given by mxn payoff matrices A,B */ /* */ /* */ /* Main user callable function is */ /* lrs_solve_nash(game *g) */ /* */ /* Requires lrsnashlib.h lrslib.h lrslib.c */ /* */ /* Sample driver: lrsnash.c */ /* Derived from nash.c in lrslib-060 */ /* by Terje Lensberg, October 26, 2015: */ /*******************************************************/ #include #include #include "lrslib.h" #include "lrsnashlib.h" //======================================================================== // Standard solver. Modified version of main() from lrsNash //======================================================================== int lrs_solve_nash(game * g) { lrs_dic *P1, *P2; /* structure for holding current dictionary and indices */ lrs_dat *Q1, *Q2; /* structure for holding static problem data */ lrs_mp_vector output1; /* holds one line of output; ray,vertex,facet,linearity */ lrs_mp_vector output2; /* holds one line of output; ray,vertex,facet,linearity */ lrs_mp_matrix Lin; /* holds input linearities if any are found */ lrs_mp_matrix A2orig; lrs_dic *P2orig; /* we will save player 2's dictionary in getabasis */ long *linindex; /* for faster restart of player 2 */ long col; /* output column index for dictionary */ long startcol = 0; long prune = FALSE; /* if TRUE, getnextbasis will prune tree and backtrack */ long numequilib = 0; /* number of nash equilibria found */ long oldnum = 0; /* global variables lrs_ifp and lrs_ofp are file pointers for input and output */ /* they default to stdin and stdout, but may be overidden by command line parms. */ /*********************************************************************************/ /* Step 1: Allocate lrs_dat, lrs_dic and set up the problem */ /*********************************************************************************/ FirstTime=TRUE; /* This is done for each new game */ Q1 = lrs_alloc_dat("LRS globals"); /* allocate and init structure for static problem data */ if (Q1 == NULL) { return; } Q1->nash = TRUE; Q1->n = g->nstrats[ROW] + 2; Q1->m = g->nstrats[ROW] + g->nstrats[COL] + 1; Q1->debug = Debug_flag; Q1->verbose = Verbose_flag; P1 = lrs_alloc_dic(Q1); /* allocate and initialize lrs_dic */ if (P1 == NULL) { return; } BuildRep(P1, Q1, g, 1, 0); output1 = lrs_alloc_mp_vector(Q1->n + Q1->m); /* output holds one line of output from dictionary */ /* allocate and init structure for player 2's problem data */ Q2 = lrs_alloc_dat("LRS globals"); if (Q2 == NULL) { return; } Q2->debug = Debug_flag; Q2->verbose = Verbose_flag; Q2->nash = TRUE; Q2->n = g->nstrats[COL] + 2; Q2->m = g->nstrats[ROW] + g->nstrats[COL] + 1; P2orig = lrs_alloc_dic(Q2); /* allocate and initialize lrs_dic */ if (P2orig == NULL) { return; } BuildRep(P2orig, Q2, g, 0, 1); A2orig = P2orig->A; output2 = lrs_alloc_mp_vector(Q1->n + Q1->m); /* output holds one line of output from dictionary */ linindex = calloc((P2orig->m + P2orig->d + 2), sizeof(long)); /* for next time */ fprintf(lrs_ofp, "\n"); // fprintf (lrs_ofp, "***** %ld %ld rational\n", Q1->n, Q2->n); /*********************************************************************************/ /* Step 2: Find a starting cobasis from default of specified order */ /* P1 is created to hold active dictionary data and may be cached */ /* Lin is created if necessary to hold linearity space */ /* Print linearity space if any, and retrieve output from first dict. */ /*********************************************************************************/ if (!lrs_getfirstbasis(&P1, Q1, &Lin, TRUE)) return 1; if (Q1->dualdeg) { printf("\n*Warning! Dual degenerate, ouput may be incomplete"); printf("\n*Recommendation: Add dualperturb option before maximize in first input file\n"); } if (Q1->unbounded) { printf("\n*Warning! Unbounded starting dictionary for p1, output may be incomplete"); printf("\n*Recommendation: Change/remove maximize option, or include bounds \n"); } /* Pivot to a starting dictionary */ /* There may have been column redundancy */ /* If so the linearity space is obtained and redundant */ /* columns are removed. User can access linearity space */ /* from lrs_mp_matrix Lin dimensions nredundcol x d+1 */ if (Q1->homogeneous && Q1->hull) startcol++; /* col zero not treated as redundant */ for (col = startcol; col < Q1->nredundcol; col++) /* print linearity space */ lrs_printoutput(Q1, Lin[col]); /* Array Lin[][] holds the coeffs. */ /*********************************************************************************/ /* Step 3: Terminate if lponly option set, otherwise initiate a reverse */ /* search from the starting dictionary. Get output for each new dict. */ /*********************************************************************************/ /* We initiate reverse search from this dictionary */ /* getting new dictionaries until the search is complete */ /* User can access each output line from output which is */ /* vertex/ray/facet from the lrs_mp_vector output */ /* prune is TRUE if tree should be pruned at current node */ do { prune = lrs_checkbound(P1, Q1); if (!prune && lrs_getsolution(P1, Q1, output1, col)) { oldnum = numequilib; nash2_main(P1, Q1, P2orig, Q2, &numequilib, output2, linindex); if (numequilib > oldnum || Q1->verbose) { if (Q1->verbose) prat(" \np2's obj value: ", P1->objnum, P1->objden); lrs_nashoutput(Q1, output1, 1L); fprintf(lrs_ofp, "\n"); } } } while (lrs_getnextbasis(&P1, Q1, prune)); fprintf(lrs_ofp, "*Number of equilibria found: %ld", numequilib); fprintf(lrs_ofp, "\n*Player 1: vertices=%ld bases=%ld pivots=%ld", Q1->count[1], Q1->count[2], Q1->count[3]); fprintf(lrs_ofp, "\n*Player 2: vertices=%ld bases=%ld pivots=%ld", Q2->count[1], Q2->count[2], Q2->count[3]); lrs_clear_mp_vector(output1, Q1->m + Q1->n); lrs_clear_mp_vector(output2, Q1->m + Q1->n); lrs_free_dic(P1, Q1); /* deallocate lrs_dic */ lrs_free_dat(Q1); /* deallocate lrs_dat */ /* 2015.10.10 new code to clear P2orig */ Q2->Qhead = P2orig; /* reset this or you crash free_dic */ P2orig->A = A2orig; /* reset this or you crash free_dic */ lrs_free_dic(P2orig, Q2); /* deallocate lrs_dic */ lrs_free_dat(Q2); /* deallocate lrs_dat */ free(linindex); // lrs_close("nash:"); fprintf(lrs_ofp, "\n"); return 0; } /*********************************************/ /* end of nash driver */ /*********************************************/ /**********************************************************/ /* nash2_main is a second driver used in computing nash */ /* equilibria on a second polytope interleaved with first */ /**********************************************************/ long nash2_main(lrs_dic * P1, lrs_dat * Q1, lrs_dic * P2orig, lrs_dat * Q2, long *numequilib, lrs_mp_vector output, long linindex[]) { lrs_dic *P2; /* This can get resized, cached etc. Loaded from P2orig */ lrs_mp_matrix Lin; /* holds input linearities if any are found */ long col; /* output column index for dictionary */ long startcol = 0; long prune = FALSE; /* if TRUE, getnextbasis will prune tree and backtrack */ long nlinearity; long *linearity; static long firstwarning = TRUE; /* FALSE if dual deg warning for Q2 already given */ static long firstunbounded = TRUE; /* FALSE if dual deg warning for Q2 already given */ long i, j; /* global variables lrs_ifp and lrs_ofp are file pointers for input and output */ /* they default to stdin and stdout, but may be overidden by command line parms. */ /*********************************************************************************/ /* Step 1: Allocate lrs_dat, lrs_dic and set up the problem */ /*********************************************************************************/ P2 = lrs_getdic(Q2); copy_dict(Q2, P2, P2orig); /* Here we take the linearities generated by the current vertex of player 1*/ /* and append them to the linearity in player 2's input matrix */ /* next is the key magic linking player 1 and 2 */ /* be careful if you mess with this! */ linearity = Q2->linearity; nlinearity = 0; for (i = Q1->lastdv + 1; i <= P1->m; i++) { if (!zero(P1->A[P1->Row[i]][0])) { j = Q1->inequality[P1->B[i] - Q1->lastdv]; if (Q1->nlinearity == 0 || j < Q1->linearity[0]) linearity[nlinearity++] = j; } } /* add back in the linearity for probs summing to one */ if (Q1->nlinearity > 0) linearity[nlinearity++] = Q1->linearity[0]; /*sort linearities */ for (i = 1; i < nlinearity; i++) reorder(linearity, nlinearity); if (Q2->verbose) { fprintf(lrs_ofp, "\np2: linearities %ld", nlinearity); for (i = 0; i < nlinearity; i++) fprintf(lrs_ofp, " %ld", linearity[i]); } Q2->nlinearity = nlinearity; Q2->polytope = FALSE; /*********************************************************************************/ /* Step 2: Find a starting cobasis from default of specified order */ /* P2 is created to hold active dictionary data and may be cached */ /* Lin is created if necessary to hold linearity space */ /* Print linearity space if any, and retrieve output from first dict. */ /*********************************************************************************/ if (!lrs_getfirstbasis2(&P2, Q2, P2orig, &Lin, TRUE, linindex)) goto sayonara; if (firstwarning && Q2->dualdeg) { firstwarning = FALSE; printf("\n*Warning! Dual degenerate, ouput may be incomplete"); printf("\n*Recommendation: Add dualperturb option before maximize in second input file\n"); } if (firstunbounded && Q2->unbounded) { firstunbounded = FALSE; printf("\n*Warning! Unbounded starting dictionary for p2, output may be incomplete"); printf("\n*Recommendation: Change/remove maximize option, or include bounds \n"); } /* Pivot to a starting dictionary */ /* There may have been column redundancy */ /* If so the linearity space is obtained and redundant */ /* columns are removed. User can access linearity space */ /* from lrs_mp_matrix Lin dimensions nredundcol x d+1 */ if (Q2->homogeneous && Q2->hull) startcol++; /* col zero not treated as redundant */ /* for (col = startcol; col < Q2->nredundcol; col++) *//* print linearity space */ /*lrs_printoutput (Q2, Lin[col]); *//* Array Lin[][] holds the coeffs. */ /*********************************************************************************/ /* Step 3: Terminate if lponly option set, otherwise initiate a reverse */ /* search from the starting dictionary. Get output for each new dict. */ /*********************************************************************************/ /* We initiate reverse search from this dictionary */ /* getting new dictionaries until the search is complete */ /* User can access each output line from output which is */ /* vertex/ray/facet from the lrs_mp_vector output */ /* prune is TRUE if tree should be pruned at current node */ do { prune = lrs_checkbound(P2, Q2); col = 0; if (!prune && lrs_getsolution(P2, Q2, output, col)) { if (Q2->verbose) prat(" \np1's obj value: ", P2->objnum, P2->objden); if (lrs_nashoutput(Q2, output, 2L)) (*numequilib)++; } } while (lrs_getnextbasis(&P2, Q2, prune)); sayonara: lrs_free_dic(P2, Q2); return 0; } /*********************************************/ /* end of nash2_main */ /*********************************************/ /* In lrs_getfirstbasis and lrs_getnextbasis we use D instead of P */ /* since the dictionary P may change, ie. &P in calling routine */ #define D (*D_p) long lrs_getfirstbasis2(lrs_dic ** D_p, lrs_dat * Q, lrs_dic * P2orig, lrs_mp_matrix * Lin, long no_output, long linindex[]) /* gets first basis, FALSE if none */ /* P may get changed if lin. space Lin found */ /* no_output is TRUE supresses output headers */ { long i, j, k; /* assign local variables to structures */ lrs_mp_matrix A; long *B, *C, *Row, *Col; long *inequality; long *linearity; long hull = Q->hull; long m, d, lastdv, nlinearity, nredundcol; static long ocount = 0; m = D->m; d = D->d; lastdv = Q->lastdv; nredundcol = 0L; /* will be set after getabasis */ nlinearity = Q->nlinearity; /* may be reset if new linearity read */ linearity = Q->linearity; A = D->A; B = D->B; C = D->C; Row = D->Row; Col = D->Col; inequality = Q->inequality; /* default is to look for starting cobasis using linearies first, then */ /* filling in from last rows of input as necessary */ /* linearity array is assumed sorted here */ /* note if restart/given start inequality indices already in place */ /* from nlinearity..d-1 */ for (i = 0; i < nlinearity; i++) /* put linearities first in the order */ inequality[i] = linearity[i]; k = 0; /* index for linearity array */ if (Q->givenstart) k = d; else k = nlinearity; for (i = m; i >= 1; i--) { j = 0; while (j < k && inequality[j] != i) j++; /* see if i is in inequality */ if (j == k) inequality[k++] = i; } if (Q->debug) { fprintf(lrs_ofp, "\n*Starting cobasis uses input row order"); for (i = 0; i < m; i++) fprintf(lrs_ofp, " %ld", inequality[i]); } if (!Q->maximize && !Q->minimize) for (j = 0; j <= d; j++) itomp(ZERO, A[0][j]); /* Now we pivot to standard form, and then find a primal feasible basis */ /* Note these steps MUST be done, even if restarting, in order to get */ /* the same index/inequality correspondance we had for the original prob. */ /* The inequality array is used to give the insertion order */ /* and is defaulted to the last d rows when givenstart=FALSE */ if (!getabasis2(D, Q, P2orig, inequality, linindex)) { return FALSE; } if (Q->debug) { fprintf(lrs_ofp, "\nafter getabasis2"); printA(D, Q); } nredundcol = Q->nredundcol; lastdv = Q->lastdv; d = D->d; /********************************************************************/ /* now we start printing the output file unless no output requested */ /********************************************************************/ if (!no_output || Q->debug) { fprintf(lrs_ofp, "\nV-representation"); /* Print linearity space */ /* Don't print linearity if first column zero in hull computation */ k = 0; if (nredundcol > k) { fprintf(lrs_ofp, "\nlinearity %ld ", nredundcol - k); /*adjust nredundcol for homog. */ for (i = 1; i <= nredundcol - k; i++) fprintf(lrs_ofp, " %ld", i); } /* end print of linearity space */ fprintf(lrs_ofp, "\nbegin"); fprintf(lrs_ofp, "\n***** %ld rational", Q->n); } /* end of if !no_output ....... */ /* Reset up the inequality array to remember which index is which input inequality */ /* inequality[B[i]-lastdv] is row number of the inequality with index B[i] */ /* inequality[C[i]-lastdv] is row number of the inequality with index C[i] */ for (i = 1; i <= m; i++) inequality[i] = i; if (nlinearity > 0) { /* some cobasic indices will be removed */ for (i = 0; i < nlinearity; i++) /* remove input linearity indices */ inequality[linearity[i]] = 0; k = 1; /* counter for linearities */ for (i = 1; i <= m - nlinearity; i++) { while (k <= m && inequality[k] == 0) k++; /* skip zeroes in corr. to linearity */ inequality[i] = inequality[k++]; } } /* end if linearity */ if (Q->debug) { fprintf(lrs_ofp, "\ninequality array initialization:"); for (i = 1; i <= m - nlinearity; i++) fprintf(lrs_ofp, " %ld", inequality[i]); } if (nredundcol > 0) { const unsigned int Qn = Q->n; *Lin = lrs_alloc_mp_matrix(nredundcol, Qn); for (i = 0; i < nredundcol; i++) { if (!(Q->homogeneous && Q->hull && i == 0)) { /* skip redund col 1 for homog. hull */ lrs_getray(D, Q, Col[0], D->C[0] + i - hull, (*Lin)[i]); /* adjust index for deletions */ } if (!removecobasicindex(D, Q, 0L)) { lrs_clear_mp_matrix(*Lin, nredundcol, Qn); return FALSE; } } } /* end if nredundcol > 0 */ if (Q->verbose) { fprintf(lrs_ofp, "\nNumber of pivots for starting dictionary: %ld", Q->count[3]); ocount = Q->count[3]; } /* Do dual pivots to get primal feasibility */ if (!primalfeasible(D, Q)) { if (Q->verbose) { fprintf(lrs_ofp, "\nNumber of pivots for feasible solution: %ld", Q->count[3]); fprintf(lrs_ofp, " - No feasible solution"); ocount = Q->count[3]; } return FALSE; } if (Q->verbose) { fprintf(lrs_ofp, "\nNumber of pivots for feasible solution: %ld", Q->count[3]); ocount = Q->count[3]; } /* Now solve LP if objective function was given */ if (Q->maximize || Q->minimize) { Q->unbounded = !lrs_solvelp(D, Q, Q->maximize); /* check to see if objective is dual degenerate */ j = 1; while (j <= d && !zero(A[0][j])) j++; if (j <= d) Q->dualdeg = TRUE; } else /* re-initialize cost row to -det */ { for (j = 1; j <= d; j++) { copy(A[0][j], D->det); storesign(A[0][j], NEG); } itomp(ZERO, A[0][0]); /* zero optimum objective value */ } /* reindex basis to 0..m if necessary */ /* we use the fact that cobases are sorted by index value */ if (Q->debug) printA(D, Q); while (C[0] <= m) { i = C[0]; //j = inequality[B[i] - lastdv]; //inequality[B[i] - lastdv] = inequality[C[0] - lastdv]; //inequality[C[0] - lastdv] = j; C[0] = B[i]; B[i] = i; reorder1(C, Col, ZERO, d); } if (Q->debug) { fprintf(lrs_ofp, "\n*Inequality numbers for indices %ld .. %ld : ", lastdv + 1, m + d); for (i = 1; i <= m - nlinearity; i++) fprintf(lrs_ofp, " %ld ", inequality[i]); printA(D, Q); } if (Q->restart) { if (Q->debug) fprintf(lrs_ofp, "\nPivoting to restart co-basis"); if (!restartpivots(D, Q)) return FALSE; D->lexflag = lexmin(D, Q, ZERO); /* see if lexmin basis */ if (Q->debug) printA(D, Q); } /* Check to see if necessary to resize */ if (Q->inputd > D->d) *D_p = resize(D, Q); return TRUE; } /********* end of lrs_getfirstbasis ***************/ long getabasis2(lrs_dic * P, lrs_dat * Q, lrs_dic * P2orig, long order[], long linindex[]) /* Pivot Ax<=b to standard form */ /*Try to find a starting basis by pivoting in the variables x[1]..x[d] */ /*If there are any input linearities, these appear first in order[] */ /* Steps: (a) Try to pivot out basic variables using order */ /* Stop if some linearity cannot be made to leave basis */ /* (b) Permanently remove the cobasic indices of linearities */ /* (c) If some decision variable cobasic, it is a linearity, */ /* and will be removed. */ { /* 2015.10.10 linindex now preallocated and received as parameter so we can free it */ // static long firsttime = TRUE; /* stays true until first valid dictionary built */ long i, j, k; /* assign local variables to structures */ lrs_mp_matrix A = P->A; long *B = P->B; long *C = P->C; long *Row = P->Row; long *Col = P->Col; long *linearity = Q->linearity; long *redundcol = Q->redundcol; long m, d, nlinearity; long nredundcol = 0L; /* will be calculated here */ m = P->m; d = P->d; nlinearity = Q->nlinearity; //2015.9.15 /* after first time we update the change in linearities from the last time, saving many pivots */ if (!FirstTime) { for (i = 1; i <= m + d; i++) linindex[i] = FALSE; if (Q->debug) fprintf(lrs_ofp, "\nlindex ="); for (i = 0; i < nlinearity; i++) { linindex[d + linearity[i]] = TRUE; if (Q->debug) fprintf(lrs_ofp, " %ld", d + linearity[i]); } for (i = 1; i <= m; i++) { if (linindex[B[i]]) { /* pivot out unwanted linearities */ k = 0; while (k < d && (linindex[C[k]] || zero(A[Row[i]][Col[k]]))) k++; if (k < d) { j = i; /* note this index changes in update, cannot use i!) */ if (C[k] > B[j]) /* decrease i or we may skip a linearity */ i--; pivot(P, Q, j, k); update(P, Q, &j, &k); } else { /* this is not necessarily an error, eg. two identical rows/cols in payoff matrix */ if (!zero(A[Row[i]][0])) { /* error condition */ if (Q->debug || Q->verbose) { fprintf(lrs_ofp, "\n*Infeasible linearity i=%ld B[i]=%ld", i, B[i]); if (Q->debug) printA(P, Q); } return (FALSE); } if (Q->debug || Q->verbose) { fprintf(lrs_ofp, "\n*Couldn't remove linearity i=%ld B[i]=%ld", i, B[i]); } } } /* if linindex */ } /* for i .. */ } else { /* we have not had a successful dictionary built from the given linearities */ /* standard lrs processing is done on only the first call to getabasis2 */ if (Q->debug) { fprintf(lrs_ofp, "\ngetabasis from inequalities given in order"); for (i = 0; i < m; i++) fprintf(lrs_ofp, " %ld", order[i]); } for (j = 0; j < m; j++) { i = 0; while (i <= m && B[i] != d + order[j]) i++; /* find leaving basis index i */ if (j < nlinearity && i > m) { /* cannot pivot linearity to cobasis */ if (Q->debug) printA(P, Q); #ifndef LRS_QUIET fprintf(lrs_ofp, "\nCannot find linearity in the basis"); #endif return FALSE; } if (i <= m) { /* try to do a pivot */ k = 0; while (C[k] <= d && zero(A[Row[i]][Col[k]])) k++; if (C[k] <= d) { pivot(P, Q, i, k); update(P, Q, &i, &k); } else if (j < nlinearity) { /* cannot pivot linearity to cobasis */ if (zero(A[Row[i]][0])) { #ifndef LRS_QUIET fprintf(lrs_ofp, "\n*Input linearity in row %ld is redundant--skipped", order[j]); #endif linearity[j] = 0; } else { if (Q->debug) printA(P, Q); if (Q->debug || Q->verbose) fprintf(lrs_ofp, "\nInconsistent linearities"); return FALSE; } } /* end if j < nlinearity */ } /* end of if i <= m .... */ } /* end of for */ /* update linearity array to get rid of redundancies */ i = 0; k = 0; /* counters for linearities */ while (k < nlinearity) { while (k < nlinearity && linearity[k] == 0) k++; if (k < nlinearity) linearity[i++] = linearity[k++]; } nlinearity = i; /* lrs bug fix, 2009.6.27, nash 2015.9.16 */ Q->nlinearity = i; /* column dependencies now can be recorded */ /* redundcol contains input column number 0..n-1 where redundancy is */ k = 0; while (k < d && C[k] <= d) { if (C[k] <= d) /* decision variable still in cobasis */ redundcol[nredundcol++] = C[k] - Q->hull; /* adjust for hull indices */ k++; } /* now we know how many decision variables remain in problem */ Q->nredundcol = nredundcol; Q->lastdv = d - nredundcol; /* 2015.9.15 bug fix : we needed first *successful* time */ FirstTime = FALSE; } /* else firsttime ... we have built a dictionary from the given linearities */ /* we continue from here after loading dictionary */ if (Q->debug) { fprintf(lrs_ofp, "\nend of first phase of getabasis2: "); fprintf(lrs_ofp, "lastdv=%ld nredundcol=%ld", Q->lastdv, Q->nredundcol); fprintf(lrs_ofp, "\nredundant cobases:"); for (i = 0; i < nredundcol; i++) fprintf(lrs_ofp, " %ld", redundcol[i]); printA(P, Q); } /* here we save dictionary for use next time, *before* we resize */ copy_dict(Q, P2orig, P); /* Remove linearities from cobasis for rest of computation */ /* This is done in order so indexing is not screwed up */ for (i = 0; i < nlinearity; i++) { /* find cobasic index */ k = 0; while (k < d && C[k] != linearity[i] + d) k++; if (k >= d) { if (Q->debug || Q->verbose) { fprintf(lrs_ofp, "\nCould not remove cobasic index"); } /* not neccesarily an error as eg., could be repeated row/col in payoff */ } else { removecobasicindex(P, Q, k); d = P->d; } } if (Q->debug && nlinearity > 0) printA(P, Q); /* set index value for first slack variable */ /* Check feasability */ if (Q->givenstart) { i = Q->lastdv + 1; while (i <= m && !negative(A[Row[i]][0])) i++; if (i <= m) fprintf(lrs_ofp, "\n*Infeasible startingcobasis - will be modified"); } return TRUE; } /* end of getabasis2 */ long lrs_nashoutput(lrs_dat * Q, lrs_mp_vector output, long player) { long i; long origin = TRUE; /* do not print the origin for either player */ for (i = 1; i < Q->n; i++) if (!zero(output[i])) origin = FALSE; if (origin) return FALSE; fprintf(lrs_ofp, "%ld ", player); for (i = 1; i < Q->n; i++) prat("", output[i], output[0]); fprintf(lrs_ofp, "\n"); fflush(lrs_ofp); return TRUE; } /* end lrs_nashoutput */ //======================================================================== // Old style solver. Included for backward compatibility //======================================================================== int lrs_solve_nash_legacy (int argc, char *argv[]) // Handles legacy input files { lrs_dic *P1,*P2; /* structure for holding current dictionary and indices */ lrs_dat *Q1,*Q2; /* structure for holding static problem data */ lrs_mp_vector output1; /* holds one line of output; ray,vertex,facet,linearity */ lrs_mp_vector output2; /* holds one line of output; ray,vertex,facet,linearity */ lrs_mp_matrix Lin; /* holds input linearities if any are found */ lrs_mp_matrix A2orig; lrs_dic *P2orig; /* we will save player 2's dictionary in getabasis */ long *linindex; /* for faster restart of player 2 */ long col; /* output column index for dictionary */ long startcol = 0; long prune = FALSE; /* if TRUE, getnextbasis will prune tree and backtrack */ long numequilib=0; /* number of nash equilibria found */ long oldnum=0; /* global variables lrs_ifp and lrs_ofp are file pointers for input and output */ /* they default to stdin and stdout, but may be overidden by command line parms. */ if(argc <= 2 ) { printf("Usage: %s input1 input2 [outputfile] \n", argv[0]); return 1; } /*************************************************** Step 0: Do some global initialization that should only be done once, no matter how many lrs_dat records are allocated. db ***************************************************/ if ( !lrs_init ("\n*nash:")) return 1; printf("\n"); printf(AUTHOR); /*********************************************************************************/ /* Step 1: Allocate lrs_dat, lrs_dic and set up the problem */ /*********************************************************************************/ Q1 = lrs_alloc_dat ("LRS globals"); /* allocate and init structure for static problem data */ if (Q1 == NULL) return 1; Q1->nash=TRUE; if (!lrs_read_dat (Q1, argc, argv)) /* read first part of problem data to get dimensions */ return 1; /* and problem type: H- or V- input representation */ P1 = lrs_alloc_dic (Q1); /* allocate and initialize lrs_dic */ if (P1 == NULL) return 1; if (!lrs_read_dic (P1, Q1)) /* read remainder of input to setup P1 and Q1 */ return 1; output1 = lrs_alloc_mp_vector (Q1->n + Q1->m); /* output holds one line of output from dictionary */ fclose(lrs_ifp); /* allocate and init structure for player 2's problem data */ printf ("\n*Second input taken from file %s\n", argv[2]); Q2 = lrs_alloc_dat ("LRS globals"); if (Q2 == NULL) return 1; Q2->nash=TRUE; if (!lrs_read_dat (Q2, 2, argv)) /* read first part of problem data to get dimensions */ return 1; /* and problem type: H- or V- input representation */ if (Q2->nlinearity > 0) free(Q2->linearity); /* we will start again */ Q2->linearity = CALLOC ((Q2->m + 2), sizeof (long)); P2orig = lrs_alloc_dic (Q2); /* allocate and initialize lrs_dic */ if (P2orig == NULL) return 1; if (!lrs_read_dic (P2orig, Q2)) /* read remainder of input to setup P2 and Q2 */ return 1; A2orig = P2orig->A; output2 = lrs_alloc_mp_vector (Q1->n + Q1->m); /* output holds one line of output from dictionary */ linindex = calloc ((P2orig->m + P2orig->d + 2), sizeof (long)); /* for next time*/ fprintf (lrs_ofp, "\n***** %ld %ld rational\n", Q1->n, Q2->n); /*********************************************************************************/ /* Step 2: Find a starting cobasis from default of specified order */ /* P1 is created to hold active dictionary data and may be cached */ /* Lin is created if necessary to hold linearity space */ /* Print linearity space if any, and retrieve output from first dict. */ /*********************************************************************************/ if (!lrs_getfirstbasis (&P1, Q1, &Lin, TRUE)) return 1; if (Q1->dualdeg) { printf("\n*Warning! Dual degenerate, ouput may be incomplete"); printf("\n*Recommendation: Add dualperturb option before maximize in first input file\n"); } if (Q1->unbounded) { printf("\n*Warning! Unbounded starting dictionary for p1, output may be incomplete"); printf("\n*Recommendation: Change/remove maximize option, or include bounds \n"); } /* Pivot to a starting dictionary */ /* There may have been column redundancy */ /* If so the linearity space is obtained and redundant */ /* columns are removed. User can access linearity space */ /* from lrs_mp_matrix Lin dimensions nredundcol x d+1 */ if (Q1->homogeneous && Q1->hull) startcol++; /* col zero not treated as redundant */ for (col = startcol; col < Q1->nredundcol; col++) /* print linearity space */ lrs_printoutput (Q1, Lin[col]); /* Array Lin[][] holds the coeffs. */ /*********************************************************************************/ /* Step 3: Terminate if lponly option set, otherwise initiate a reverse */ /* search from the starting dictionary. Get output for each new dict. */ /*********************************************************************************/ /* We initiate reverse search from this dictionary */ /* getting new dictionaries until the search is complete */ /* User can access each output line from output which is */ /* vertex/ray/facet from the lrs_mp_vector output */ /* prune is TRUE if tree should be pruned at current node */ do { prune=lrs_checkbound(P1,Q1); if (!prune && lrs_getsolution (P1, Q1, output1, col)) { oldnum=numequilib; nash2_main(P1,Q1,P2orig,Q2,&numequilib,output2,linindex); if (numequilib > oldnum || Q1->verbose) { if(Q1->verbose) prat(" \np2's obj value: ",P1->objnum,P1->objden); lrs_nashoutput (Q1, output1, 1L); fprintf (lrs_ofp, "\n"); } } } while (lrs_getnextbasis (&P1, Q1, prune)); fprintf(lrs_ofp,"\n*Number of equilibria found: %ld",numequilib); fprintf (lrs_ofp,"\n*Player 1: vertices=%ld bases=%ld pivots=%ld", Q1->count[1], Q1->count[2],Q1->count[3]); fprintf (lrs_ofp,"\n*Player 2: vertices=%ld bases=%ld pivots=%ld", Q2->count[1], Q2->count[2],Q2->count[3]); lrs_clear_mp_vector(output1, Q1->m + Q1->n); lrs_clear_mp_vector(output2, Q1->m + Q1->n); lrs_free_dic (P1,Q1); /* deallocate lrs_dic */ lrs_free_dat (Q1); /* deallocate lrs_dat */ /* 2015.10.10 new code to clear P2orig */ Q2->Qhead = P2orig; /* reset this or you crash free_dic */ P2orig->A=A2orig; /* reset this or you crash free_dic */ lrs_free_dic (P2orig,Q2); /* deallocate lrs_dic */ lrs_free_dat (Q2); /* deallocate lrs_dat */ free (linindex); lrs_close ("nash:"); return 0; } /*********************************************/ /* end of nash driver */ /*********************************************/ //========================================================================== // Building the problem representations (adapted from Gambit-enummixed) //========================================================================== // // These two functions are based upon the program setupnash.c from the // lrslib distribution, and the user's guide documentation. // There are two separate functions, one for each player's problem. // According to the user's guide, the ordering of the constraint rows // is significant, and differs between the players; for player 1's problem // the nonnegativity constraints come first, whereas for player 2's problem // they appear later. Experiments suggest this is in fact true, and // reversing them breaks something. // //----------------------------------------------------------------------------------------// void FillNonnegativityRows(lrs_dic * P, lrs_dat * Q, int firstRow, int lastRow, int n) { const int MAXCOL = 1000; /* maximum number of columns */ long num[MAXCOL], den[MAXCOL]; long row, col; for (row = firstRow; row <= lastRow; row++) { num[0] = 0; den[0] = 1; for (col = 1; col < n; col++) { num[col] = (row - firstRow + 1 == col) ? 1 : 0; den[col] = 1; } lrs_set_row(P, Q, row, num, den, GE); } } //----------------------------------------------------------------------------------------// void FillConstraintRows(lrs_dic * P, lrs_dat * Q, const game * g, int p1, int p2, int firstRow) { const int MAXCOL = 1000; /* maximum number of columns */ long num[MAXCOL], den[MAXCOL]; ratnum x; int row, s, t; for (row = firstRow; row < firstRow + g->nstrats[p1]; row++) { num[0] = 0; den[0] = 1; s = row - firstRow; for (t = 0; t < g->nstrats[p2]; t++) { x = p1 == ROW ? g->payoff[s][t][p1] : g->payoff[t][s][p1]; num[t + 1] = -x.num; den[t + 1] = x.den; } num[g->nstrats[p2] + 1] = 1; den[g->nstrats[p2] + 1] = 1; lrs_set_row(P, Q, row, num, den, GE); } } //----------------------------------------------------------------------------------------// void FillLinearityRow(lrs_dic * P, lrs_dat * Q, int m, int n) { const int MAXCOL = 1000; /* maximum number of columns */ long num[MAXCOL], den[MAXCOL]; int i; num[0] = -1; den[0] = 1; for (i = 1; i < n - 1; i++) { num[i] = 1; den[i] = 1; } num[n - 1] = 0; den[n - 1] = 1; lrs_set_row(P, Q, m, num, den, EQ); } // // TL added this to get first row of ones. Don't know if it's needed //----------------------------------------------------------------------------------------// void FillFirstRow(lrs_dic * P, lrs_dat * Q, int n) { const int MAXCOL = 1000; /* maximum number of columns */ long num[MAXCOL], den[MAXCOL]; int i; for (i = 0; i < n; i++) { num[i] = 1; den[i] = 1; } lrs_set_row(P, Q, 0, num, den, GE); } // // Build the H-representation for player p1 //----------------------------------------------------------------------------------------// void BuildRep(lrs_dic * P, lrs_dat * Q, const game * g, int p1, int p2) { long m = Q->m; /* number of inequalities */ long n = Q->n; if (p1 == 0) { FillConstraintRows(P, Q, g, p1, p2, 1); FillNonnegativityRows(P, Q, g->nstrats[p1] + 1, g->nstrats[ROW] + g->nstrats[COL], n); } else { FillNonnegativityRows(P, Q, 1, g->nstrats[p2], n); FillConstraintRows(P, Q, g, p1, p2, g->nstrats[p2] + 1); // 1 here } FillLinearityRow(P, Q, m, n); // TL added this to get first row of ones. (Is this necessary?) FillFirstRow(P, Q, n); } //----------------------------------------------------------------------------------------// void printGame(game * g) { int s, t; char out[2][MAXINPUT]; fprintf(lrs_ofp, "\n--------------------------------------------------------------------------------\n"); fprintf(lrs_ofp, "%s payoff matrix:\n", ((gInfo *)g->aux)->name); for (s = 0; s < g->nstrats[ROW]; s++) { for (t = 0; t < g->nstrats[COL]; t++) { if(g->payoff[s][t][ROW].den == 1) sprintf(out[ROW], "%ld,", g->payoff[s][t][ROW].num); else sprintf(out[ROW], "%ld/%ld,", g->payoff[s][t][ROW].num, g->payoff[s][t][ROW].den); if(g->payoff[s][t][COL].den == 1) sprintf(out[COL], "%ld", g->payoff[s][t][COL].num); else sprintf(out[COL], "%ld/%ld", g->payoff[s][t][COL].num, g->payoff[s][t][COL].den); fprintf(lrs_ofp, "%*s%-*s ", ((gInfo *)g->aux)->fwidth[t][ROW]+1, out[ROW], ((gInfo *)g->aux)->fwidth[t][COL], out[COL]); } fprintf(lrs_ofp, "\n"); } fprintf(lrs_ofp, "\nNash equilibria:\n"); fflush(lrs_ofp); } // Functions to set field widths for pretty printing of payoff matrices void setFwidth(game *g, int len) { int pos, t; for (t = 0; t < g->nstrats[COL]; t++) for (pos = 0; pos < 2; pos++) ((gInfo *)g->aux)->fwidth[t][pos] = len; } void initFwidth(game *g) { int pos, t; for (t = 0; t < g->nstrats[COL]; t++) for (pos = 0; pos < 2; pos++) ((gInfo *)g->aux)->fwidth[t][pos] = 0; } void updateFwidth(game *g, int col, int pos, char *str) { int len = strlen(str); if(len > ((gInfo *)g->aux)->fwidth[col][pos]) ((gInfo *)g->aux)->fwidth[col][pos] = len; } /******************** end of lrsnashlib.c ***************************/ lrslib-062/game10000600001553200155320000000021712722006425011370 0ustar avis*game: player 1 H-representation linearity 1 6 begin 6 5 rational 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 -1 0 -4 1 0 0 -2 -3 1 -1 1 1 1 0 end lrslib-062/mp5.mplrs0000600001553200155320000000332012722006426012232 0ustar avis*mplrs:lrslib v.6.0 2015.7.13(lrsgmp.h)8 processes *Copyright (C) 1995,2015, David Avis avis@cs.mcgill.ca *Input taken from mp5.ine *Starting depth of 2 maxcobases=50 maxdepth=0 lmin=3 lmax=3 scale=100 V-representation begin ***** 11 rational 1 1 1 1 1 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0 0 1 1 0 1 0 1 1 1 1 1 1 0 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 1 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 1 1/3 2/3 2/3 2/3 1/3 1/3 1/3 2/3 2/3 2/3 1 2/3 2/3 1/3 1/3 2/3 1/3 1/3 1/3 1/3 2/3 1 2/3 2/3 2/3 2/3 2/3 2/3 2/3 2/3 2/3 2/3 1 1 0 0 1 1 1 0 0 1 1 1 2/3 1/3 2/3 2/3 1/3 2/3 2/3 1/3 1/3 2/3 1 1/3 1/3 2/3 2/3 2/3 1/3 1/3 1/3 1/3 2/3 1 1/3 2/3 1/3 1/3 1/3 2/3 2/3 1/3 1/3 2/3 1 1 0 1 0 1 0 1 1 0 1 1 2/3 2/3 2/3 1/3 2/3 2/3 1/3 2/3 1/3 1/3 1 2/3 1/3 1/3 1/3 1/3 1/3 1/3 2/3 2/3 2/3 1 1/3 1/3 1/3 2/3 2/3 2/3 1/3 2/3 1/3 1/3 1 2/3 1/3 1/3 2/3 1/3 1/3 2/3 2/3 1/3 1/3 1 1/3 2/3 1/3 2/3 1/3 2/3 1/3 1/3 2/3 1/3 1 0 1 0 0 1 0 0 1 1 0 1 2/3 1/3 2/3 1/3 1/3 2/3 1/3 1/3 2/3 1/3 1 1/3 1/3 1/3 1/3 2/3 2/3 2/3 2/3 2/3 2/3 1 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 2/3 2/3 1/3 2/3 2/3 1/3 2/3 1/3 2/3 1/3 1 1/3 2/3 2/3 1/3 1/3 1/3 2/3 2/3 1/3 1/3 1 1 1 0 0 0 1 1 1 1 0 1 1/3 1/3 2/3 1/3 2/3 1/3 2/3 1/3 2/3 1/3 end *Totals: vertices=32 rays=0 bases=9041 integer-vertices=16 *Elapsed time: 1 seconds. lrslib-062/chdemo.c0000600001553200155320000000736612722006425012072 0ustar avis/* chdemo.c lrslib vertex enumeration demo */ /* last modified: May 29, 2001 */ /* Copyright: David Avis 2001, avis@cs.mcgill.ca */ /* Demo driver for convex hull computation using lrs */ /* This program computes facets of cyclic polytopes */ #include #include #include "lrslib.h" #define MAXCOL 1000 /* maximum number of colums */ void makecyclic (lrs_dic *P, lrs_dat *Q); int main (int argc, char *argv[]) { lrs_dic *P; /* structure for holding current dictionary and indices */ lrs_dat *Q; /* structure for holding static problem data */ lrs_mp_vector output; /* one line of output:ray,vertex,facet,linearity */ lrs_mp_matrix Lin; /* holds input linearities if any are found */ long i; long col; /* output column index for dictionary */ /* Global initialization - done once */ if ( !lrs_init ("\n*chdemo:")) return 1; /* compute the convex hull of a set of cyclic polytopes */ /* given by V-representations, dimension 2,...,7 */ for(i=1;i<=6;i++) { /* allocate and init structure for static problem data */ Q = lrs_alloc_dat ("LRS globals"); if (Q == NULL) return 1; /* now flags in lrs_dat can be set */ Q->m=i+3; /* number of input rows = number of vertices */ Q->n=i+2; /* number of input columns (dimension + 1 ) */ Q->hull = TRUE; /* convex hull problem: facet enumeration */ Q->polytope= TRUE; /* input is a polytope */ Q->getvolume= TRUE; /* compute the volume */ output = lrs_alloc_mp_vector (Q->n); P = lrs_alloc_dic (Q); /* allocate and initialize lrs_dic */ if (P == NULL) return 1; /* Build polyhedron: constraints and objective */ printf("\n\n*cyclic polytope: %ld vertices in R^%ld",Q->m,Q->n-1); makecyclic(P,Q); /* code from here is borrowed from lrs_main */ /* Pivot to a starting dictionary */ if (!lrs_getfirstbasis (&P, Q, &Lin, FALSE)) return 1; /* There may have been column redundancy */ /* (although not for this example of cyclic polytopes) */ /* If so the linearity space is obtained and redundant */ /* columns are removed. User can access linearity space */ /* from lrs_mp_matrix Lin dimensions nredundcol x d+1 */ for (col = 0L; col < Q->nredundcol; col++) /* print linearity space */ lrs_printoutput (Q, Lin[col]); /* Array Lin[][] holds the coeffs. */ /* We initiate reverse search from this dictionary */ /* getting new dictionaries until the search is complete */ /* User can access each output line from output which is */ /* vertex/ray/facet from the lrs_mp_vector output */ do { for (col = 0; col <= P->d; col++) if (lrs_getsolution (P, Q, output, col)) lrs_printoutput (Q, output); } while (lrs_getnextbasis (&P, Q, FALSE)); lrs_printtotals (P, Q); /* print final totals */ /* free space : do not change order of next 3 lines! */ lrs_clear_mp_vector (output, Q->n); lrs_free_dic (P,Q); /* deallocate lrs_dic */ lrs_free_dat (Q); /* deallocate lrs_dat */ } /* end of loop for i=3 ... */ lrs_close ("chdemo:"); printf("\n"); return 0; } /* end of main */ void makecyclic (lrs_dic *P, lrs_dat *Q) /* generate vertices of a cyclic polytope */ /* (t, t^2, ..., t^n-1 ), t=1..m */ { long num[MAXCOL]; long den[MAXCOL]; long row, j, t; long m=Q->m; long n=Q->n; for (row=1;row<=m;row++) { t=1; for(j=0;j #include #include "lrslib.h" #define MAXCOL 1000 /* maximum number of colums */ void makecube (lrs_dic *P, lrs_dat *Q); int main (int argc, char *argv[]) { lrs_dic *P; /* structure for holding current dictionary and indices */ lrs_dat *Q; /* structure for holding static problem data */ lrs_mp_vector output; /* one line of output:ray,vertex,facet,linearity */ lrs_mp_matrix Lin; /* holds input linearities if any are found */ long i; long col; /* output column index for dictionary */ /* Global initialization - done once */ if ( !lrs_init ("\n*vedemo:")) return 1; /* compute the vertices of a set of hypercubes given by */ /* their H-representations. */ for(i=1;i<=3;i++) { /* allocate and init structure for static problem data */ Q = lrs_alloc_dat ("LRS globals"); if (Q == NULL) return 1; /* now flags in lrs_dat can be set */ Q->n=i+2; /* number of input columns (dimension + 1 ) */ Q->m=2*i+2; /* number of input rows = number of inequalities */ output = lrs_alloc_mp_vector (Q->n); P = lrs_alloc_dic (Q); /* allocate and initialize lrs_dic */ if (P == NULL) return 1; /* Build polyhedron: constraints and objective */ makecube(P,Q); /* code from here is borrowed from lrs_main */ /* Pivot to a starting dictionary */ if (!lrs_getfirstbasis (&P, Q, &Lin, FALSE)) return 1; /* There may have been column redundancy */ /* (although not for this example of hypercubes) */ /* If so the linearity space is obtained and redundant */ /* columns are removed. User can access linearity space */ /* from lrs_mp_matrix Lin dimensions nredundcol x d+1 */ for (col = 0L; col < Q->nredundcol; col++) /* print linearity space */ lrs_printoutput (Q, Lin[col]); /* Array Lin[][] holds the coeffs. */ /* We initiate reverse search from this dictionary */ /* getting new dictionaries until the search is complete */ /* User can access each output line from output which is */ /* a vertex/ray/facet from the lrs_mp_vector output */ do { for (col = 0; col <= P->d; col++) if (lrs_getsolution (P, Q, output, col)) lrs_printoutput (Q, output); } while (lrs_getnextbasis (&P, Q, FALSE)); lrs_printtotals (P, Q); /* print final totals */ /* free space : do not change order of next 3 lines! */ lrs_clear_mp_vector (output, Q->n); lrs_free_dic (P,Q); /* deallocate lrs_dic */ lrs_free_dat (Q); /* deallocate lrs_dat */ } /* end of loop for i= ... */ lrs_close ("vedemo:"); printf("\n"); return 0; } /* end of main */ void makecube (lrs_dic *P, lrs_dat *Q) /* generate H-representation of a unit hypercube */ { long num[MAXCOL]; long den[MAXCOL]; long row, j; long m=Q->m; /* number of inequalities */ long n=Q->n; /* hypercube has dimension n-1 */ for (row=1;row<=m;row++) { for(j=0;j #include #endif #include #include #include #include "lrsgmp.h" long lrs_digits; /* max permitted no. of digits */ long lrs_record_digits; /* this is the biggest acheived so far. */ #define MAXINPUT 1000 /*max length of any input rational */ void lcm (lrs_mp a, lrs_mp b) /* a = least common multiple of a, b; b is preserved */ { lrs_mp temp1,temp2; lrs_alloc_mp(temp1); lrs_alloc_mp(temp2); copy (temp1, a); copy (temp2, b); gcd (temp1,temp2); exactdivint (a, temp1, temp2); /* temp2=a/temp1 there is no remainder */ mulint (temp2, b, a); lrs_clear_mp(temp1); lrs_clear_mp(temp2); } /* end of lcm */ /***************************************************************/ /* */ /* Package of routines for rational arithmetic */ /* (Built on top of package for multiprecision arithmetic */ /* */ /***************************************************************/ void reduce (lrs_mp Na, lrs_mp Da) /* reduces Na/Da by gcd(Na,Da) */ { lrs_mp Nb, Db, Nc, Dc; lrs_alloc_mp(Nb); lrs_alloc_mp(Db); lrs_alloc_mp(Nc); lrs_alloc_mp(Dc); copy (Nb, Na); copy (Db, Da); storesign (Nb, POS); storesign (Db, POS); copy (Nc, Na); copy (Dc, Da); gcd (Nb, Db); /* Nb is the gcd(Na,Da) */ exactdivint (Nc, Nb, Na); exactdivint (Dc, Nb, Da); lrs_clear_mp(Nb); lrs_clear_mp(Db); lrs_clear_mp(Nc); lrs_clear_mp(Dc); } void reduceint (lrs_mp Na, lrs_mp Da) /* divide Na by Da and return */ { lrs_mp temp1; lrs_alloc_mp(temp1); copy (temp1, Na); exactdivint (temp1, Da, Na); lrs_clear_mp(temp1); } long comprod (lrs_mp Na, lrs_mp Nb, lrs_mp Nc, lrs_mp Nd) /* +1 if Na*Nb > Nc*Nd */ /* -1 if Na*Nb < Nc*Nd */ /* 0 if Na*Nb = Nc*Nd */ { long i; lrs_mp temp1,temp2; lrs_alloc_mp(temp1); lrs_alloc_mp(temp2); mulint (Na, Nb, temp1); mulint (Nc, Nd, temp2); i=mpz_cmp(temp1,temp2); lrs_clear_mp(temp1); lrs_clear_mp(temp2); if (i > 0) return (ONE); else if (i < 0) return (-ONE); else return (ZERO); } void linrat (lrs_mp Na, lrs_mp Da, long ka, lrs_mp Nb, lrs_mp Db, long kb, lrs_mp Nc, lrs_mp Dc) /* computes Nc/Dc = ka*Na/Da +kb* Nb/Db and reduces answer by gcd(Nc,Dc) */ { lrs_mp temp1; lrs_alloc_mp(temp1); mulint (Na, Db, Nc); mulint (Da, Nb, temp1); linint (Nc, ka, temp1, kb); /* Nc = (ka*Na*Db)+(kb*Da*Nb) */ mulint (Da, Db, Dc); /* Dc = Da*Db */ reduce (Nc, Dc); lrs_clear_mp(temp1); } void divrat (lrs_mp Na, lrs_mp Da, lrs_mp Nb, lrs_mp Db, lrs_mp Nc, lrs_mp Dc) /* computes Nc/Dc = (Na/Da) /( Nb/Db ) and reduce */ { mulint (Na, Db, Nc); mulint (Da, Nb, Dc); reduce (Nc, Dc); } void mulrat (lrs_mp Na, lrs_mp Da, lrs_mp Nb, lrs_mp Db, lrs_mp Nc, lrs_mp Dc) /* computes Nc/Dc=(Na/Da)*(Nb/Db) and reduce */ { mulint (Na, Nb, Nc); mulint (Da, Db, Dc); reduce (Nc, Dc); } /***************************************************************/ /* */ /* Conversion and I/O functions */ /* */ /***************************************************************/ void atomp (const char *s, lrs_mp a) /*convert string to lrs_mp integer */ /* based on atoi KR p.58 */ { long diff, ten, i, sig; lrs_mp mpone; lrs_alloc_mp (mpone); itomp (ONE, mpone); ten = 10L; for (i = 0; s[i] == ' ' || s[i] == '\n' || s[i] == '\t'; i++); /*skip white space */ sig = POS; if (s[i] == '+' || s[i] == '-') /* sign */ sig = (s[i++] == '+') ? POS : NEG; itomp (0L, a); while (s[i] >= '0' && s[i] <= '9') { diff = s[i] - '0'; linint (a, ten, mpone, diff); i++; } storesign (a, sig); if (s[i]) { fprintf (stderr, "\nIllegal character in number: '%s'\n", s + i); exit (1); } lrs_clear_mp (mpone); } /* end of atomp */ void atoaa (const char *in, char *num, char *den) /* convert rational string in to num/den strings */ { long i, j; for (i = 0; in[i] != '\0' && in[i] != '/'; i++) num[i] = in[i]; num[i] = '\0'; den[0] = '\0'; if (in[i] == '/') { for (j = 0; in[j + i + 1] != '\0'; j++) den[j] = in[i + j + 1]; den[j] = '\0'; } } /* end of atoaa */ void rattodouble (lrs_mp a, lrs_mp b, double *x) /* convert lrs_mp rati onal to double */ { double y; y=mpz_get_d (a); (*x)=mpz_get_d (b); (*x) = y / (*x); } #ifdef PLRS /* read a rational or integer and convert to lrs_mp with base BASE */ /* returns true if denominator is not one */ /* returns 999 if premature end of file */ long plrs_readrat (lrs_mp Na, lrs_mp Da, const char* rat) { char in[MAXINPUT], num[MAXINPUT], den[MAXINPUT]; strcpy(in, rat); atoaa (in, num, den); /*convert rational to num/dem strings */ atomp (num, Na); if (den[0] == '\0') { itomp (1L, Da); return (FALSE); } atomp (den, Da); return (TRUE); } #endif long readrat (lrs_mp Na, lrs_mp Da) /* read a rational or integer and convert to lrs_mp */ /* returns true if denominator is not one */ { char in[MAXINPUT], num[MAXINPUT], den[MAXINPUT]; if(fscanf (lrs_ifp, "%s", in)==EOF) { fprintf (lrs_ofp, "\nInvalid input: check you have entered enough data!\n"); exit(1); } if(!strcmp(in,"end")) /*premature end of input file */ { return (999L); } atoaa (in, num, den); /*convert rational to num/dem strings */ atomp (num, Na); if (den[0] == '\0') { itomp (1L, Da); return (FALSE); } atomp (den, Da); return (TRUE); } #ifdef PLRS string prat (char name[], lrs_mp Nin, lrs_mp Din) /*reduce and print Nin/Din */ { //create stream to collect output stringstream ss; string str; char * buff; lrs_mp temp1, temp2; lrs_alloc_mp(temp1); lrs_alloc_mp(temp2); copy (temp1, Nin); copy (temp2, Din); reduce (temp1, temp2); ss< #include #endif #include #include #include #include "lrslong.h" long lrs_digits; /* max permitted no. of digits */ long lrs_record_digits; /* this is the biggest acheived so far. */ #define MAXINPUT 1000 /*max length of any input rational */ void gcd (lrs_mp u, lrs_mp v) /* Returns u=gcd(u,v) using classic Euclid's algorithm. v is destroyed. Knuth, II, p.320 */ { unsigned long ul, vl, r; ul = labs (*u); vl = labs (*v); if (ul == 0) { *u = vl; return; } while (vl != 0) { r = ul % vl; ul = vl; vl = r; } *u = ul; } /* gcd */ void lcm (lrs_mp a, lrs_mp b) /* a = least common multiple of a, b; b is preserved */ { lrs_mp u, v; copy (u, a); copy (v, b); gcd (u, v); exactdivint (a, u, v); /* v=a/u a contains remainder = 0 */ mulint (v, b, a); } /* end of lcm */ /***************************************************************/ /* */ /* Package of routines for rational arithmetic */ /* (Built on top of package for multiprecision arithmetic */ /* */ /***************************************************************/ void reduce (lrs_mp Na, lrs_mp Da) /* reduces Na/Da by gcd(Na,Da) */ { lrs_mp Nb, Db, Nc, Dc; copy (Nb, Na); copy (Db, Da); storesign (Nb, POS); storesign (Db, POS); copy (Nc, Na); copy (Dc, Da); gcd (Nb, Db); /* Nb is the gcd(Na,Da) */ exactdivint (Nc, Nb, Na); exactdivint (Dc, Nb, Da); } void reduceint (lrs_mp Na, lrs_mp Da) /* divide Na by Da and return */ { lrs_mp Temp; copy (Temp, Na); exactdivint (Temp, Da, Na); } long comprod (lrs_mp Na, lrs_mp Nb, lrs_mp Nc, lrs_mp Nd) /* +1 if Na*Nb > Nc*Nd */ /* -1 if Na*Nb < Nc*Nd */ /* 0 if Na*Nb = Nc*Nd */ { long mc; mc = *Na * *Nb - *Nc * *Nd; if (mc > 0) return 1; if (mc < 0) return -1; return 0; } void linrat (lrs_mp Na, lrs_mp Da, long ka, lrs_mp Nb, lrs_mp Db, long kb, lrs_mp Nc, lrs_mp Dc) /* computes Nc/Dc = ka*Na/Da +kb* Nb/Db and reduces answer by gcd(Nc,Dc) */ { lrs_mp c; mulint (Na, Db, Nc); mulint (Da, Nb, c); linint (Nc, ka, c, kb); /* Nc = (ka*Na*Db)+(kb*Da*Nb) */ mulint (Da, Db, Dc); /* Dc = Da*Db */ reduce (Nc, Dc); } void divrat (lrs_mp Na, lrs_mp Da, lrs_mp Nb, lrs_mp Db, lrs_mp Nc, lrs_mp Dc) /* computes Nc/Dc = (Na/Da) / ( Nb/Db ) and reduces answer by gcd(Nc,Dc) */ { mulint (Na, Db, Nc); mulint (Da, Nb, Dc); reduce (Nc, Dc); } void mulrat (lrs_mp Na, lrs_mp Da, lrs_mp Nb, lrs_mp Db, lrs_mp Nc, lrs_mp Dc) /* computes Nc/Dc = Na/Da * Nb/Db and reduces answer by gcd(Nc,Dc) */ { mulint (Na, Nb, Nc); mulint (Da, Db, Dc); reduce (Nc, Dc); } /***************************************************************/ /* */ /* Conversion and I/O functions */ /* */ /***************************************************************/ void atomp (const char *s, lrs_mp a) /*convert string to lrs_mp integer */ /* based on atoi KR p.58 */ { long diff, ten, i, sig; lrs_mp mpone; itomp (ONE, mpone); ten = 10L; for (i = 0; s[i] == ' ' || s[i] == '\n' || s[i] == '\t'; i++); /*skip white space */ sig = POS; if (s[i] == '+' || s[i] == '-') /* sign */ sig = (s[i++] == '+') ? POS : NEG; itomp (0L, a); while (s[i] >= '0' && s[i] <= '9') { diff = s[i] - '0'; linint (a, ten, mpone, diff); i++; } storesign (a, sig); if (s[i]) { fprintf (stderr, "\nIllegal character in number: '%s'\n", s + i); exit (1); } } /* end of atomp */ void atoaa (const char *in, char *num, char *den) /* convert rational string in to num/den strings */ { long i, j; for (i = 0; in[i] != '\0' && in[i] != '/'; i++) num[i] = in[i]; num[i] = '\0'; den[0] = '\0'; if (in[i] == '/') { for (j = 0; in[j + i + 1] != '\0'; j++) den[j] = in[i + j + 1]; den[j] = '\0'; } } /* end of atoaa */ void mptodouble (lrs_mp a, double *x) /* convert lrs_mp to double */ { (*x) = (*a); } long mptoi (lrs_mp a) /* convert lrs_mp to long */ { return (*a); } void rattodouble (lrs_mp a, lrs_mp b, double *x) /* convert lrs_mp rati onal to double */ { double y; mptodouble (a, &y); mptodouble (b, x); *x = y / (*x); } long readrat (lrs_mp Na, lrs_mp Da) /* read a rational or integer and convert to lrs_mp */ /* returns true if denominator is not one */ { char in[MAXINPUT], num[MAXINPUT], den[MAXINPUT]; if(fscanf (lrs_ifp, "%s", in)==EOF) { fprintf (lrs_ofp, "\nInvalid input: check you have entered enough data!\n"); exit(1); } if(!strcmp(in,"end")) /*premature end of input file */ { return (999L); } atoaa (in, num, den); /*convert rational to num/dem strings */ atomp (num, Na); if (den[0] == '\0') { itomp (1L, Da); return (FALSE); } atomp (den, Da); return (TRUE); } #ifdef PLRS /* read a rational or integer and convert to lrs_mp with base BASE */ /* returns true if denominator is not one */ long plrs_readrat (lrs_mp Na, lrs_mp Da, const char* rat) { char in[MAXINPUT], num[MAXINPUT], den[MAXINPUT]; strcpy(in, rat); atoaa (in, num, den); /*convert rational to num/dem strings */ atomp (num, Na); if (den[0] == '\0') { itomp (1L, Da); return (FALSE); } atomp (den, Da); return (TRUE); } #endif void readmp (lrs_mp a) /* read an integer and convert to lrs_mp */ { long in; if(fscanf (lrs_ifp, "%ld", &in)==EOF) { fprintf (lrs_ofp, "\nInvalid integer input"); exit(1); } itomp (in, a); } #ifdef PLRS string prat (char name[], lrs_mp Nin, lrs_mp Din) /*reduce and print Nin/Din */ { //create stream to collect output stringstream ss; string str; lrs_mp Nt, Dt; copy (Nt, Nin); copy (Dt, Din); reduce (Nt, Dt); if (sign (Nt) != NEG) ss<<" "; ss< #include #include "lrslib.h" #define MAXCOL 1000 /* maximum number of colums */ long num[MAXCOL]; long den[MAXCOL]; void makecube (lrs_dic *P, lrs_dat *Q); int main (int argc, char *argv[]) { lrs_dic *P; /* structure for holding current dictionary and indices */ lrs_dat *Q; /* structure for holding static problem data */ lrs_mp_vector output; /* one line of output:ray,vertex,facet,linearity */ long i; long m; /* number of constraints in the problem */ long n; /* number of variables in the problem + 1 */ long col; /* output column index for dictionary */ /* Global initialization - done once */ if ( !lrs_init ("\n*lpdemo:")) return 1; /* generate cubes with dimension d */ for(i=1;i<=2;i++) { n=10; m=18; /* number of rows for cube dimension d */ /* allocate and init structure for static problem data */ Q = lrs_alloc_dat ("LRS globals"); if (Q == NULL) return 1; Q->m=m; Q->n=n; Q->lponly=TRUE; /* we do not want all vertices generated! */ output = lrs_alloc_mp_vector (Q->n); P = lrs_alloc_dic (Q); /* allocate and initialize lrs_dic */ if (P == NULL) return 1; /* Build polyhedron: constraints and objective */ makecube(P,Q); /* Solve the LP */ if (!lrs_solve_lp(P,Q)) return 1; /* Print output */ prat ("\nObjective value = ", Q->objnum, Q->objden); for (col = 0; col < Q->n; col++) if (lrs_getsolution (P, Q, output, col)) lrs_printoutput (Q, output); /* free space : do not change order of next lines! */ lrs_clear_mp_vector (output, Q->n); lrs_free_dic (P,Q); /* deallocate lrs_dic */ lrs_free_dat (Q); /* deallocate lrs_dat */ } /* end of loop for i=1 ... */ lrs_close ("lpdemo:"); printf("\n"); return 0; } /* end of main */ /* code to generate unit cube and objective function */ void makecube (lrs_dic *P, lrs_dat *Q) /* generate H-representation of a unit hypercube */ /* with dimension n-1 */ { long num[MAXCOL]; long den[MAXCOL]; long row, j; long m=Q->m; long n=Q->n; for (row=1;row<=m;row++) { /* set up a cube */ for(j=0;j #include #include #include FILE *lrs_ifp; /* input file pointer */ #define DOCSTRING "\n\ $Id: rat2float.ds,v 1.3 2006/04/04 12:34:35 bremner Exp $ \n\ \n\ float takes a polytope file with rational or integer coefficents, \n\ and outputs an approximately equivelent one with floating point \n\ coefficents.\n\ \n\ WARNING: Assumes that numerator and denominator will fit in long integer,\n\ unless compiled with multiprecision support.\n\ \n\ \n\ \n\ " int usage(){ fprintf(stderr,"\n%s\n",rcsid);fprintf(stderr,DOCSTRING); exit(1); } #define CHECK_HELP if (argc > 1 && argv[1][0]=='-' && argv[1][1]=='h') usage(); #ifdef LRSMP #include "lrsmp.h" #endif #ifndef LRSMP typedef long integer_t; #define zero(n) (n==0) #define one(n) (n==1) #define pmp(s,n) printf("%s %d ",s,n) #define readrat(n,d) my_readrat(&n,&d); void my_readrat(long *num_p, long * denom_p) { char buf[BUFSIZ]; char *p; fscanf(lrs_ifp,"%s",buf); if (p=index(buf,'/')){ *p=0; *denom_p=atol(&p[1]); } else { *denom_p=1; } *num_p=atol(buf); } void rattodouble(integer_t num, integer_t denom, double *out_p){ *out_p=(double)num/(double)denom; } #else typedef lrs_mp integer_t; #define MP_DIGITS 1000L #endif int main(argc,argv) int argc; char **argv; { long int n; int j; integer_t num,denom,sdenom; double out; int scale; /* if column 0 is zero, scale column 1 to 1 */ char format[BUFSIZ]; char buf[BUFSIZ]; char inputm[BUFSIZ]; CHECK_HELP; if(argc > 1 ) /* command line argument overides stdin */ { if ((lrs_ifp = fopen (argv[1], "r")) == NULL) { printf ("\nBad input file name\n"); return(1); } } else lrs_ifp=stdin; #ifdef LRSMP lrs_mp_init (MP_DIGITS,lrs_ifp,stdout); #endif sprintf(format,"%%.%dlf ",DBL_DIG); while ( fgets(buf,BUFSIZ,lrs_ifp) !=NULL ) { fputs(buf,stdout); if (strncmp(buf,"begin",5)==0) break; } /* in lrs output m is undefined */ if (fscanf(lrs_ifp,"%s %ld %s",inputm,&n,buf)==EOF){ fprintf(stderr,"No begin line"); exit(1); } printf("%s %ld real\n",inputm,n); /* for (i=0;i #include #include #include FILE *lrs_ifp; /* input file pointer */ #define DOCSTRING "\n\ $Id: float2rat.ds,v 1.2 2006/04/03 21:15:39 bremner Exp $\n\ \n\ Converts floating point coefficent $f$ to rational by the \n\ simple expedient of outputing 10^k*f/10^k for appropriate \n\ $k$. Does no reduction of numbers. In particular this may cause overflow in \n\ old versions of lrs input (and I'm not about cdd).\n\ " int usage(){ fprintf(stderr,"\n%s\n",rcsid);fprintf(stderr,DOCSTRING); exit(1); } #define CHECK_HELP if (argc > 1 && argv[1][0]=='-' && argv[1][1]=='h') usage(); int main(argc,argv) int argc; char **argv; { long int m,n; int i,j; long atol(); char buf[BUFSIZ]; CHECK_HELP; if(argc > 1 ) /* command line argument overides stdin */ { if ((lrs_ifp = fopen (argv[1], "r")) == NULL) { printf ("\nBad input file name\n"); return(1); } } else lrs_ifp=stdin; while ( fgets(buf,BUFSIZ,lrs_ifp) !=NULL ) { fputs(buf,stdout); if (strncmp(buf,"begin",5)==0) break; } if (fscanf(lrs_ifp,"%ld %ld %s",&m,&n,buf)==EOF){ fprintf(stderr,"No begin line"); exit(1); } printf("%ld %ld rational\n",m,n); for (i=0;i []\n" "type %s -h for more information\n\n"; char Helptext[] = "\nusage (standard): %s [options...] \n" " Input file structure: Input files to setupnash\n" " Input files can be specified separately, or by using wildcards, as in 'game*'\n" " Options:\n" " -v, --verbose Prints a trace of the solution process\n" " -d, --debug Dumps lots of information for debugging\n" " -p, --printgame Prints the payoff matrix for the game\n" " -s, --standard Promise that input files have standard structure\n" " -o, --outfile Send output to \n" " -h, --help Prints this text\n" " Short options can be grouped, as in '-ps' and '-do out.txt'\n" "usage (legacy): %s []\n" " Input file structure: Output files from setupnash\n" " Passing options with legacy input files produces an error\n" " (options must be specified in the input files)\n\n"; char LegacyMsg[] = "\nProcessing legacy input files. Alternatively, you may skip\n" "setupnash and pass its input file to this program.\n"; #include #include #include #include #include #include "lrslib.h" #include "lrsnashlib.h" //======================================================================== // Games //======================================================================== //----------------------------------------------------------------------------------------// // Reading games //----------------------------------------------------------------------------------------// char *Outfile = NULL; //----------------------------------------------------------------------------------------// int openIO(void) { if (!lrs_init("*lrsnash:")) return FALSE; fprintf(stderr, "\n"); fprintf(stderr, AUTHOR); fprintf(stderr, "\n"); if(Outfile != NULL) { if ((lrs_ofp = fopen(Outfile, "w")) == NULL) { fprintf(stderr, "\nBad output file name\n"); return FALSE; } } return TRUE; } void closeIO(void) { if(lrs_ofp != stdout) fprintf(stdout, "\n"); lrs_close("lrsnash:"); } #define RATWARN(name, filename) fprintf(stderr, "\nWarning: String '%s' is not a rational number in file %s.\n", name, filename); #define RECWARN(filename) fprintf(stderr, "\nWarning: Excess data in file %s.\n", filename); #define ERREXIT if(lrs_ofp != NULL) closeIO(); exit(1); #define FILEERROR(name) {fprintf(stderr, "\nError: Cannot find input file '%s'. \ Execution halted\n", name); ERREXIT} #define READERROR(name) {fprintf(stderr, "\nError: Premature end of input file '%s'. \ Execution halted\n", name); ERREXIT} #define SIZEERROR(name) {fprintf(stderr, "\nError: Number of strategies exceeds maximum (%d) in input file '%s'. \ Execution halted\n",MAXSTRAT, name); ERREXIT} //----------------------------------------------------------------------------------------// // Simple function to convert string to (num, den) int tl_readrat(long *num, long *den, char *str) { char *div = strchr(str, '/'); if(div == NULL) { *num = atol(str); *den = 1; } else if(div == str || *(div+1) == 0) { // str = '/x' or str = 'x/' return FALSE; } else { *div = 0; // Note: 'str' is modified here *num = atol(str); *den = atol(div+1); } return TRUE; } //----------------------------------------------------------------------------------------// int readGame(game * g, char *filename) { FILE *IN; long pos, s, t, nr, nc; char in[MAXINPUT]; strcpy(((gInfo *)g->aux)->name, filename); if ((IN = fopen(filename, "r")) == NULL) FILEERROR(filename); if (fscanf(IN, "%ld %ld", &nr, &nc) < 2) READERROR(filename); if (nr > MAXSTRAT || nc > MAXSTRAT) SIZEERROR(filename); g->nstrats[ROW] = nr; g->nstrats[COL] = nc; initFwidth(g); // Read payoffs for (pos = 0; pos < 2; pos++) { for (s = 0; s < nr; s++) { for (t = 0; t < nc; t++) { if (fscanf(IN, "%s", in) < 1) READERROR(filename); updateFwidth(g, t, pos, in); if (!tl_readrat (&g->payoff[s][t][pos].num, &g->payoff[s][t][pos].den, in)) RATWARN(in, filename); } } } if (fscanf(IN, "%s", in) == 1) // Too many payoff entries RECWARN(filename); fclose(IN); return TRUE; } //----------------------------------------------------------------------------------------// //======================================================================== // Command line processing //======================================================================== // Flags to be set from command line options static long Print_game_flag; static long Standard_input_flag; void printUsage(char *progname) { fprintf(stderr, Usage, progname, progname, progname); } void printInfo(char *progname) { fprintf(stderr, Helptext, progname, progname); } //----------------------------------------------------------------------------------------// // Collects flags and reads list of games int getArgs(int argc, char **argv) { int c, error = FALSE; const char shortOptions[] = ":vdpsho:"; if (argc < 2) { printUsage(argv[0]); return FALSE; } while (1) { static struct option long_options[] = { {"verbose", no_argument, 0, 'v'}, {"debug", no_argument, 0, 'd'}, {"printgame", no_argument, 0, 'p'}, {"standard", no_argument, 0, 's'}, {"outfile", required_argument, 0, 'o'}, {"help", no_argument, 0, 'h'} // {0, 0, 0, 0} }; /* getopt_long stores the option index here. */ int option_index = 0; c = getopt_long(argc, argv, shortOptions, long_options, &option_index); /* Detect the end of the options. */ if (c == -1) break; switch (c) { case '?': fprintf(stderr, "\nError: Unknown option '-%c'.\n", optopt); error = TRUE; break; case ':': fprintf(stderr, "\nError: Missing argument to option '-%c'.\n", optopt); error = TRUE; break; case 'v': Verbose_flag = TRUE; break; case 'd': Debug_flag = TRUE; break; case 'p': Print_game_flag = TRUE; break; case 's': Standard_input_flag = TRUE; break; case 'h': printInfo(argv[0]); return FALSE; break; case 'o': Outfile = optarg; break; default: abort(); } } if(error) { fprintf(stderr, "Execution halted\n"); return FALSE; } return TRUE; } //----------------------------------------------------------------------------------------// // Checks if an input file is legacy (contains letters) int isLegacy(char *filename) { FILE *fp; int i, n, foundLetter = FALSE; char buf[100]; if((fp = fopen(filename, "r")) == NULL) FILEERROR(filename); n = fread(buf, sizeof(char), 100, fp); for(i=0;iaux = &GI; if(!getArgs(argc, argv)) // Read options and input file names. When we get here: return 1; // optind is a global integer supplied by getopt, and // argv[optind] is the first non-option argument in argv if(Standard_input_flag // Assume standard input files if user set the flag, || optind == argc - 1 // or if only one input file, || !isLegacy(argv[optind])) // or if the first input file is not legacy { if(!openIO()) return 1; while (optind < argc) { // Handle standard input file[s] if(readGame(g, argv[optind++])) { if(Print_game_flag) printGame(g); lrs_solve_nash(g); } } closeIO(); } else { // Handle legacy input files fprintf (stderr, "%s", LegacyMsg); // Print a message to user lrs_solve_nash_legacy(argc, argv); } return 0; } lrslib-062/lpdemo2.c0000600001553200155320000001236612722006425012171 0ustar avis/* lpdemo2.c Contributed by Terje Lensberg October 28, 2015 - Contains a C struct to represent LP problems and code to solve such LP representations with lrs - Illustrates the interface to lrs and its use of rational numbers - This version does only maximization - Compile: gcc -O3 -o lpdemo2 lpdemo2.c lrslib.c lrsgmp.c -lgmp -DGMP - Usage: ./lpdemo2 */ #include #include #include "lrslib.h" #define LE -1L // A constraint type used here. GE and EQ are defined in lrslib.h #define ROW 0 #define COL 1 #define MAXROW 10 // maximum number of rows #define MAXCOL 10 // maximum number of columns typedef struct { long num; long den; } ratnum; // Rational number: "num/den" typedef struct { ratnum a[MAXCOL]; // Coefficients long ctype; // Constraint type (GE, LE, EQ) ratnum rhs; // 'b' } lprow; // A row in the LP problem typedef struct { // C struct to represent an LP problem long dim[2]; // Number of rows and cols lprow row[MAXROW]; // The rows } lpp; /* An LP problem: max z = (3/4)*x1 + x2 - x3 s.t. 2*x1 + (2/3)*x2 - (2/3)*x3 <= 1 x1 + 2*x2 + (1/3)*x3 <= 3/2 x1 + x2 + x3 = 1 x1 >= 0 x2 >= 0 x3 >= 0 Solution: x1 = 11/32, x2 = 9/16, x3 = 3/32, z = 93/128 */ lpp LP = // The LP problem as a C struct with coefficients as rational numbers {num,den} { {7, 3}, // Dimensions { // -------- a --------- ctype rhs // lprow contents { {{3,4}, {1,1}, {-1,1}}, GE, {0,1} }, // Objective function (goes in row 0 with constraint type GE) { {{2,1}, {2,3}, {-2,3}}, LE, {1,1} }, // Inequality constraints { {{1,1}, {2,1}, { 1,3}}, LE, {3,2} }, { {{1,1}, {1,1}, { 1,1}}, EQ, {1,1} }, // Equality constraint { {{1,1}, {0,1}, { 0,1}}, GE, {0,1} }, // Lower bounds { {{0,1}, {1,1}, { 0,1}}, GE, {0,1} }, { {{0,1}, {0,1}, { 1,1}}, GE, {0,1} } } }; //----------------------------------------------------------------------------------------// // Build an lrs representation from the C struct: // - Replace LE constraints with GE by multiplying LE rows by -1 // - Multiply the RHS column by -1 and move it in front of matrix a // - For each row, call lrs_set_row() with the associated (and possibly modified) constraint type void buildLP (lrs_dic *P, lrs_dat *Q, lpp *lp) { long num[MAXCOL]; long den[MAXCOL]; long i, j, sgn; long m = lp->dim[ROW]; long n = lp->dim[COL]; lprow *row; for (i=0; irow + i; sgn = row->ctype == LE ? -1L : 1L; // sgn = 1 for EQ too if(sgn < 0L) // ctype == LE. Multiply row by -1 and change ctype to GE row->ctype = GE; // RHS num[0] = -sgn*row->rhs.num; // Opposite sign in column 0 den[0] = row->rhs.den; // Coef. matrix for(j=0; ja[j].num; // j+1: RHS goes in column 0 den[j+1] = row->a[j].den; } // Specify constraint type and set row lrs_set_row(P,Q,i,num,den,row->ctype); /* { // Uncomment this to print the lrs input representation of the LP problem char out[40]; printf("\n"); for(j=0;jctype == GE ? "GE" : "EQ"); } // end print */ } printf("\n"); } //----------------------------------------------------------------------------------------// // This is a slightly modified version of main() in lpdemo.c int lp_solve (lpp *lp) { lrs_dic *P; /* structure for holding current dictionary and indices */ lrs_dat *Q; /* structure for holding static problem data */ lrs_mp_vector output; /* one line of output:ray,vertex,facet,linearity */ long col; /* output column index for dictionary */ // allocate and init structure for static problem data Q = lrs_alloc_dat ("LRS globals"); if (Q == NULL) return 1; Q->m = lp->dim[ROW]-1; // Rows, excluding the objective function Q->n = 1+lp->dim[COL]; // Columns, including RHS which goes in column 0 Q->lponly = TRUE; // we do not want all vertices generated! Q->maximize = TRUE; output = lrs_alloc_mp_vector (Q->n); P = lrs_alloc_dic (Q); // allocate and initialize lrs_dic if (P == NULL) return 1; // Build the LP representation in the format required by lrs buildLP(P,Q,lp); // Solve the LP if (!lrs_solve_lp(P,Q)) return 1; // Print output prat ("\nObjective value = ", P->objnum, P->objden); for (col = 0; col < Q->n; col++) if (lrs_getsolution (P, Q, output, col)) lrs_printoutput (Q, output); /* free space : do not change order of next lines! */ lrs_clear_mp_vector (output, Q->n); lrs_free_dic (P,Q); /* deallocate lrs_dic */ lrs_free_dat (Q); /* deallocate lrs_dat */ return 0; } //----------------------------------------------------------------------------------------// int main(void) { lpp *lp = &LP; /* Global initialization - done once */ if ( !lrs_init ("\n*lp:")) return 1; lp_solve(lp); lrs_close ("lp:"); printf("\n"); } lrslib-062/mplrs.c0000600001553200155320000014604212722006617011766 0ustar avis/* mplrs.c: initial release of MPI version This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Author: Charles Jordan skip@ist.hokudai.ac.jp Based on plrs.cpp by Gary Roumanis Initial lrs Author: David Avis avis@cs.mcgill.ca */ /* #include "lrslib.h" */ /* included in mplrs.h */ #include "mplrs.h" #include #include #include #include #include /* global variables */ mplrsv mplrs; /* state of this process */ masterv master; /* state of the master */ consumerv consumer; /* state of the consumer */ int PLRS_DEBUG = 0; /****************** * initialization * ******************/ int main(int argc, char **argv) { mplrs_init(argc, argv); mprintf2(("%d: initialized on %s\n",mplrs.rank,mplrs.host)); if (mplrs.size<3) return mplrs_fallback(); if (mplrs.rank == MASTER) return mplrs_master(); else if (mplrs.rank == CONSUMER) return mplrs_consumer(); else return mplrs_worker(); } void mplrs_init(int argc, char **argv) { int i,j; int count; char c; time_t curt = time(NULL); char *tim, *tim1; /* make timestamp for filenames */ tim = ctime(&curt); tim1 = tim+4; tim1[3] = tim1[6] = '_'; tim1[15]='\0'; /* start MPI */ MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &mplrs.rank); MPI_Comm_size(MPI_COMM_WORLD, &mplrs.size); MPI_Get_processor_name(mplrs.host, &count); /* allocate mp for volume calculation, from plrs */ lrs_alloc_mp(mplrs.tN); lrs_alloc_mp(mplrs.tD); lrs_alloc_mp(mplrs.Vnum); lrs_alloc_mp(mplrs.Vden); lrs_alloc_mp(mplrs.Tnum); lrs_alloc_mp(mplrs.Tden); itomp(ZERO, mplrs.Vnum); itomp(ONE, mplrs.Vden); gettimeofday(&mplrs.start, NULL); mplrs_initstrucs(); /* initialize default values of globals */ /* process commandline arguments, set input and output files */ mplrs_commandline(argc, argv); if (mplrs.rank == MASTER || mplrs.rank == CONSUMER) { /* open input file for reading on master, open output file for * writing on consumer, open histogram file for writing on * master -- if these files are to be used. */ mplrs_initfiles(); if (mplrs.rank == MASTER) master_sendfile(); } else { /* receive input file from master */ MPI_Recv(&count, 1, MPI_INT, 0, 20, MPI_COMM_WORLD, MPI_STATUS_IGNORE); mplrs.input = (char *)malloc(sizeof(char)*(count+1)); MPI_Recv(mplrs.input, count, MPI_CHAR, 0, 20, MPI_COMM_WORLD, MPI_STATUS_IGNORE); mplrs.input[count] = '\0'; /* get number of chars needed for worker files */ j = mplrs.size; for (i=1; j>9; i++) j = j/10; i += 6+strlen(tim1); /* mplrs_TIMESTAMP */ i += strlen(mplrs.tfn_prefix) + strlen(mplrs.input_filename) + i + 6; /* _%d.ine\0 */ mplrs.tfn = (char *)malloc(sizeof(char) * i); sprintf(mplrs.tfn, "%smplrs_%s%s_%d.ine", mplrs.tfn_prefix, tim1, mplrs.input_filename, mplrs.rank); /* flatten directory structure in mplrs.input_filename * for mplrs.tfn, to prevent writing to non-existent * subdirectories in e.g. /tmp */ i = strlen(mplrs.tfn_prefix) + 6 + strlen(tim1)+1; j = strlen(mplrs.tfn); for (; i master.lmax) master.lmax = arg; continue; } else if (!strcmp(argv[i], "-lmax")) { arg = atoi(argv[i+1]); i++; if (arg<1 ) bad_args(); master.lmax = arg; if (master.lmin > master.lmax) master.lmin = arg; continue; } else if (!strcmp(argv[i], "-scale")) { arg = atoi(argv[i+1]); i++; if (arg<1) bad_args(); master.scalec = arg; continue; } else if (!strcmp(argv[i], "-hist")) { master.hist_filename = argv[i+1]; i++; continue; } else if (!strcmp(argv[i], "-freq")) { master.freq_filename = argv[i+1]; i++; continue; } else if (!strcmp(argv[i], "-stopafter")) { arg = atoi(argv[i+1]); i++; if (arg<1) bad_args(); master.maxncob = arg; continue; } else if (!strcmp(argv[i], "-countonly")) { mplrs.countonly = 1; continue; } else if (!strcmp(argv[i], "-maxbuf")) { arg = atoi(argv[i+1]); i++; if (arg<1) bad_args(); mplrs.maxbuf = arg; continue; } else if (!strcmp(argv[i], "-id")) { arg = atoi(argv[i+1]); i++; if (arg<0) bad_args(); master.initdepth = arg; continue; } else if (!strcmp(argv[i], "-maxd")) { arg = atoi(argv[i+1]); i++; if (arg<1) bad_args(); master.maxdepth = arg; continue; } else if (!strcmp(argv[i], "-maxc")) { arg = atoi(argv[i+1]); i++; if (arg<0) bad_args(); master.maxcobases = arg; continue; } else if (!strcmp(argv[i], "-checkp")) { master.checkp_filename = argv[i+1]; i++; continue; } else if (!strcmp(argv[i], "-stop")) { master.stop_filename = argv[i+1]; i++; continue; } else if (!strcmp(argv[i], "-time")) { arg = atoi(argv[i+1]); i++; if (arg<1) bad_args(); master.time_limit = arg; continue; } else if (!strcmp(argv[i], "-restart")) { master.restart_filename = argv[i+1]; i++; continue; } else if (!strcmp(argv[i], "-temp")) { mplrs.tfn_prefix = argv[i+1]; i++; continue; } else if (firstfile == 1) { mplrs.input_filename = argv[i]; firstfile = 2; } else if (firstfile == 2) { consumer.output_filename = argv[i]; firstfile = 3; } else bad_args(); } if (master.lmax == -1) master.lmax = (master.lmin>0? master.lmin: 0); if (mplrs.input_filename==NULL) /* need an input file */ bad_args(); if ((master.stop_filename!=NULL || master.time_limit!=0) && master.checkp_filename==NULL) bad_args(); /* need checkpoint file if stop condition given */ } /* open input file on master, histogram (if exists) on master, * output (if exists) on consumer */ void mplrs_initfiles(void) { if (mplrs.rank == MASTER) { master.input = fopen(mplrs.input_filename, "r"); if (master.input == NULL) { printf("Unable to open %s for reading [%s].\n", mplrs.input_filename, mplrs.host); /* MPI_Finalize(); */ exit(0); } if (master.hist_filename != NULL) { master.hist = fopen(master.hist_filename, "w"); if (master.hist == NULL) { printf("Unable to open %s for writing [%s].\n", master.hist_filename, mplrs.host); /* MPI_Finalize(); */ exit(0); } master.doing_histogram = 1; mprintf2(("M: Prepared histogram (%s)\n", master.hist_filename)); } if (master.freq_filename != NULL) { master.freq = fopen(master.freq_filename, "w"); if (master.freq == NULL) { printf("Unable to open %s for writing [%s].\n", master.freq_filename, mplrs.host); exit(0); } mprintf2(("M: Prepared frequency file (%s)\n", master.freq_filename)); } if (master.checkp_filename !=NULL) { master.checkp = fopen(master.checkp_filename, "w"); if (master.checkp == NULL) { printf("Unable to open %s for writing [%s].\n", master.checkp_filename, mplrs.host); /* MPI_Finalize(); */ exit(0); } mprintf2(("M: Prepared checkpoint file (%s)\n", master.checkp_filename)); } if (master.restart_filename != NULL) { master.restart = fopen(master.restart_filename, "r"); if (master.restart == NULL) { printf("Unable to open %s for reading [%s].\n", master.restart_filename, mplrs.host); /* MPI_Finalize(); */ exit(0); } mprintf2(("M: Opened restart file (%s)\n", master.restart_filename)); } } if (mplrs.rank == CONSUMER) { if (consumer.output_filename == NULL) return; consumer.output = fopen(consumer.output_filename, "w"); if (consumer.output == NULL) { printf("Unable to open %s for writing [%s].\n", consumer.output_filename, mplrs.host); /* MPI_Finalize(); */ exit(0); } } } /* Bad commandline arguments. Complain and die. */ void bad_args(void) { if (mplrs.rank == CONSUMER) printf("Invalid arguments.\n%s\n", USAGE); MPI_Finalize(); exit(0); } /* fallback -- meaningless if <3 processes * better would be to fallback to normal lrs if <4 processes */ int mplrs_fallback(void) { if (mplrs.rank==0) printf("mplrs requires at least 3 processes.\n"); MPI_Finalize(); exit(0); } /********** * master * **********/ int mplrs_master(void) { int i; int loopiter = 0; /* do some things only sometimes */ MPI_Request ign = MPI_REQUEST_NULL; /* a request we'll ignore */ timeval cur, last; /* for histograms */ int flag = 0;; int phase = 1; /* In phase1? */ int done = -1; /* need a negative int to send to finished workers */ float junk=0; /* need a buffer for incoming signal reports */ int ncob=0; /* for printing sizes of sub-problems and for -stopafter*/ unsigned long tot_ncob = 0; int want_stop = 0; gettimeofday(&last, NULL); master.num_producers = 0; /* nobody working right now */ master.act_producers = (unsigned int *)malloc(sizeof(unsigned int)*mplrs.size); master.live_workers = mplrs.size - 2; master.workin = (int *)malloc(sizeof(int)*mplrs.size); master.mworkers = (MPI_Request *)malloc(sizeof(MPI_Request)*mplrs.size); master.incoming = NULL; master.sigcheck = (MPI_Request *)malloc(sizeof(MPI_Request)*mplrs.size); if (master.restart!=NULL) { master_restart(); if (master.size_L>0) phase = 0; } for (i=0; i0 || master.live_workers>0) { loopiter++; /* sometimes check if we should update histogram etc */ if (!(loopiter&0x1ff)) { if (master.maxncob>0 && master.maxncob<=tot_ncob) want_stop = 1; if (master.doing_histogram) print_histogram(&cur, &last); } /* sometimes check if we should checkpoint */ if (!(loopiter&0x7ff) && !master.checkpointing) { if (master.stop_filename!=NULL || master.time_limit!=0) check_stop(); master_checksigs(); } recv_producer_lists(); /* check if anyone wants work */ for (i=0; i0 && master.cobasis_list==NULL) { break; /* no work to give now, but some may * appear later */ } if (phase==1 && i!=INITIAL) continue; /* INITIAL gets the first bit */ MPI_Test(master.mworkers+i, &flag, MPI_STATUS_IGNORE); if (!flag) continue; /* i is not ready for more work */ ncob = master.workin[i]; tot_ncob+=ncob; mprintf2(("M: %d looking for work\n", i)); if ((master.cobasis_list!=NULL || phase==1) && !master.checkpointing && !want_stop) { /* and not checkpointing! */ send_work(i,phase); MPI_Irecv(master.workin+i, 1, MPI_UNSIGNED,i, 6, MPI_COMM_WORLD, master.mworkers+i); phase=0; if (master.freq!=NULL && ncob>0) fprintf(master.freq, "%d\n", ncob); continue; } /* else tell worker we've finished */ mprintf(("M: Saying goodbye to %d, %d left\n", i, master.live_workers-1)); MPI_Isend(&done, 1, MPI_INT, i, 8, MPI_COMM_WORLD,&ign); MPI_Request_free(&ign); master.live_workers--; if (master.freq!=NULL && ncob>0) fprintf(master.freq, "%d\n", ncob); } clean_outgoing_buffers(); } if (master.checkpointing) master_checkpoint(); send_master_stats(); MPI_Finalize(); free(master.workin); free(master.mworkers); free(master.act_producers); free(master.sigcheck); return 0; } /* prepare to receive remaining cobases from target. * Since we don't yet know the size of buffers needed, we * only Irecv the header and will Irecv the actual cobases later */ void master_add_incoming(int target) { msgbuf *msg = (msgbuf *)malloc(sizeof(msgbuf)); msg->req = (MPI_Request *)malloc(sizeof(MPI_Request)*3); msg->buf = (void **)malloc(sizeof(void *)*3); msg->buf[0] = (int *)malloc(sizeof(int) * 3); /* (strlen,lengths,tag) */ msg->buf[1] = NULL; /* sizes not known yet */ msg->buf[2] = NULL; msg->count = 3; msg->target = target; msg->queue = 1; msg->tags = NULL; msg->sizes = NULL; msg->types = NULL; msg->next = master.incoming; master.incoming = msg; MPI_Irecv(msg->buf[0], 3, MPI_INT, target, 10, MPI_COMM_WORLD,msg->req); return; } /* check our list of incoming messages from producers about cobases * to add to L. Add any from messages that have completed. * If the header has completed (msg->queue==1 and header completed), * add the remaining MPI_Irecv's. * Update num_producers to keep track of how many messages the master * is owed (workers are not allowed to exit until num_producers==0 and * L is empty). * Also update size_L */ void recv_producer_lists(void) { msgbuf *msg, *prev=NULL, *next; int *header; int flag; for (msg = master.incoming; msg; msg=next) { next = msg->next; MPI_Test(msg->req, &flag, MPI_STATUS_IGNORE); if (!flag) /* header has not completed yet */ { prev = msg; continue; } header = (int *)msg->buf[0]; if (msg->queue) /* header completed, and need to Irecv now */ { if (header[0]==-1) /* producer returns NOTHING */ { master.num_producers--; master.act_producers[msg->target]--; free_msgbuf(msg); if (prev) prev->next = next; else master.incoming = next; continue; } msg->buf[1]= (char*)malloc(sizeof(char)*header[1]); msg->buf[2]= (int *)malloc(sizeof(int)*header[0]); MPI_Irecv(msg->buf[1], header[1], MPI_CHAR, msg->target, header[2], MPI_COMM_WORLD, msg->req+1); MPI_Irecv(msg->buf[2], header[0], MPI_INT, msg->target, header[2], MPI_COMM_WORLD, msg->req+2); msg->queue=0; prev = msg; continue; } /* header completed, did the rest? */ MPI_Testall(2, msg->req+1, &flag, MPI_STATUSES_IGNORE); if (!flag) /* not yet */ { prev = msg; continue; } mprintf2(("M: %d returned non-empty producer list (%d, %d)\n", msg->target, header[0], header[1])); process_returned_cobases(msg); mprintf2(("M: Now have size_L=%lu\n",master.size_L)); if (prev) prev->next = next; else master.incoming = next; master.num_producers--; master.act_producers[msg->target]--; free_msgbuf(msg); } return; } /* msg is a completed, non-empty buffer containing cobases to add to * L. Process it, add them to L, and update size_L * Basically the inverse of return_unfinished_cobases() */ void process_returned_cobases(msgbuf *msg) { int *header = (int *)msg->buf[0]; char *str = (char *)msg->buf[1]; int *lengths = (int *)msg->buf[2]; int i; char *cob; for (i=0; ireq = (MPI_Request *)malloc(sizeof(MPI_Request)*2); msg->buf = (void **)malloc(sizeof(void *)*2); /*{length of work string, int maxdepth, int maxcobases, 5xfuture use} */ msg->buf[0] = (int *)malloc(sizeof(int) * 8); header = (int *)msg->buf[0]; if (phase==0) /* normal */ { cob = master.cobasis_list; master.cobasis_list = cob->next; header[0] = strlen((char *)cob->data); msg->buf[1] = cob->data; setparams(header); /* scale if needed */ master.size_L--; if (master.size_L == 0) master.num_empty++; mprintf(("M: Sending work to %d (%d,%d,%d) %s\n", target, header[0], header[1], header[2], (char*)msg->buf[1])); msg->count = 2; free(cob); } else /* phase 1 */ { header[0] = 0; /* header[0]==0 means initial phase 1 */ header[1] = master.initdepth; header[2] = master.maxcobases; mprintf(("M: Sending phase 1 to %d (%d,%d)\n", target, header[1], header[2])); msg->buf[1] = NULL; msg->count = 1; } msg->target = target; msg->queue = 0; msg->tags = NULL; msg->sizes = NULL; msg->types = NULL; /* ready to send */ MPI_Isend(header, 8, MPI_INT, target, 1, MPI_COMM_WORLD, msg->req); if (phase==0) MPI_Isend(msg->buf[1], header[0], MPI_CHAR, target, 1, MPI_COMM_WORLD, msg->req+1); master_add_incoming(target); /* prepare to receive remaining cobases */ msg->next = mplrs.outgoing; mplrs.outgoing = msg; master.act_producers[target]++; master.num_producers++; return; } /* header is a work header (length, maxd, maxc) not yet set. * Set the parameters (maxd, maxc) as desired. */ void setparams(int *header) { /* if L is too small, use maxdepth */ if (master.lmin>0 && (master.size_L < mplrs.size*master.lmin)) header[1] = master.maxdepth; else /* don't have too small L, so no maxdepth */ header[1] = 0; header[2] = master.maxcobases; if (master.lmax>0 && (master.size_L > mplrs.size * master.lmax)) header[2] = header[2] * master.scalec; } /* check if we want to stop now. * if master.stop_filename exists or time limit exceeded, * set master.checkpointing = 1 and inform consumer. * this is not an immediate stop -- we wait for current workers to * complete the tasks they've been assigned, stopping after that. */ void check_stop(void) { int check[3] = {CHECKFLAG,0,0}; MPI_Request ign; struct timeval cur; int flag = 0; if (master.stop_filename) { mprintf2(("M: checking stop file %s\n", master.stop_filename)); master.stop = fopen(master.stop_filename, "r"); if (master.stop!=NULL) { flag=1; fclose(master.stop); } } if (master.time_limit!=0) { mprintf2(("M: checking if time exceeded\n")); gettimeofday(&cur, NULL); if (cur.tv_sec - mplrs.start.tv_sec > master.time_limit) flag=1; } if (flag!=0) { mprintf(("M: Stop condition detected, checkpointing!\n")); master.checkpointing = 1; MPI_Isend(check, 3, MPI_INT, CONSUMER, 7, MPI_COMM_WORLD, &ign); MPI_Request_free(&ign); } } /* check if we've caught a signal, or we've received a message from someone * that has. If so, we want to checkpoint like above */ void master_checksigs(void) { int i, flag, size=mplrs.size; int check[3] = {CHECKFLAG,0,0}; MPI_Request ign; if (mplrs.caughtsig == 1) { mprintf(("M: I caught signal, checkpointing!\n")); MPI_Isend(check, 3, MPI_INT, CONSUMER, 7, MPI_COMM_WORLD, &ign); master.checkpointing = 1; return; } for (i=1; inext; str = (char*)list->data; len = strlen(str)+1; /* include \0 */ MPI_Send(&len, 1, MPI_INT, CONSUMER, 1, MPI_COMM_WORLD); MPI_Send(str, len, MPI_CHAR, CONSUMER, 1, MPI_COMM_WORLD); free(str); free(list); } len = -1; MPI_Send(&len, 1, MPI_INT, CONSUMER, 1, MPI_COMM_WORLD); } void master_checkpointfile(void) { slist *list, *next; char *vol = cprat("", mplrs.Vnum, mplrs.Vden); fprintf(master.checkp, "mplrs3\n%lu %lu %lu %lu %lu\n%s\n", mplrs.rays, mplrs.vertices, mplrs.bases, mplrs.facets, mplrs.intvertices,vol); free(vol); for (list=master.cobasis_list; list; list=next) { next = list->next; fprintf(master.checkp, "%s\n", (char *)list->data); free(list->data); free(list); master.size_L--; } fclose(master.checkp); return; } /* we want to restart. load L and counting stats from restart file, * send counting stats to consumer (after notifying consumer of restart) */ void master_restart(void) { char *line=NULL; char *vol=NULL; size_t size=0, vsize=0; ssize_t len=0; int restart[3] = {RESTARTFLAG,0,0}; int ver; /* check 'mplrs1' header */ len = getline(&line, &size, master.restart); if (len!=7 || (strcmp("mplrs1\n",line) && strcmp("mplrs2\n",line) && strcmp("mplrs3\n",line))) { printf("Unknown checkpoint format\n"); /* MPI_Finalize(); */ exit(0); } mprintf2(("M: found checkpoint header\n")); sscanf(line,"mplrs%d\n",&ver); /* get counting stats */ fscanf(master.restart, "%lu %lu %lu %lu %lu\n", &mplrs.rays, &mplrs.vertices, &mplrs.bases, &mplrs.facets, &mplrs.intvertices); if (ver<3) /* volume added in mplrs3 */ printf("*Old checkpoint file, volume may be incorrect\n"); else /* get volume */ { len = getline(&vol, &vsize, master.restart); if (len<=1) { printf("Broken checkpoint file\n"); exit(0); } vol[len-1] = '\0'; /* remove '\n' */ plrs_readrat(mplrs.Tnum, mplrs.Tden, vol); copy(mplrs.tN, mplrs.Vnum); copy(mplrs.tD, mplrs.Vden); linrat(mplrs.tN, mplrs.tD, 1L, mplrs.Tnum, mplrs.Tden, 1L, mplrs.Vnum, mplrs.Vden); free(vol); } /* get L */ while((len = getline(&line, &size, master.restart))!= -1) { if (line[0]=='\n') /* ignore blank lines */ { free(line); line = NULL; size=0; continue; } line[strlen(line)-1]='\0'; /* replace \n by \0 */ master.cobasis_list = addlist(master.cobasis_list, line); master.size_L++; line = NULL; size = 0; } master.tot_L = master.size_L; /* maybe should save and retrieve */ mprintf(("M: Restarted with |L|=%lu\n",master.size_L)); fclose(master.restart); MPI_Send(restart, 3, MPI_INT, CONSUMER, 7, MPI_COMM_WORLD); send_counting_stats(CONSUMER); mplrs.rays = 0; mplrs.vertices = 0; mplrs.bases = 0; mplrs.facets = 0; mplrs.intvertices = 0; return; } /* check if we should update the histogram and then do it */ void print_histogram(timeval *cur, timeval *last) { float sec; int i; int act; gettimeofday(cur,NULL); if (cur->tv_sec > last->tv_sec) { sec = (float)(cur->tv_sec - mplrs.start.tv_sec) + ((float)(cur->tv_usec - mplrs.start.tv_usec))/1000000; act=0; for (i=0; itv_sec = cur->tv_sec; last->tv_usec = cur->tv_usec; } } /********** * worker * **********/ int mplrs_worker(void) { char *starting_cobasis; /* header for incoming work: * {length of work string, int maxdepth, int maxcobases, 5xfuture use} */ int header[8]={0,0,0,0,0,0,0,0}; MPI_Request req = MPI_REQUEST_NULL; unsigned int ncob=0; /* used for # cobases in prev. job */ unsigned int tot_ncob=0; int len; int flag; while (1) { ncob = mplrs.bases - tot_ncob; /* #cobases in last job */ tot_ncob = mplrs.bases; /* #cobases done so far */ /* check signals */ mplrs_handlesigs(); /* ask for work */ mprintf2(("%d: Asking master for work\n",mplrs.rank)); MPI_Isend(&ncob, 1, MPI_UNSIGNED, MASTER, 6, MPI_COMM_WORLD, &req); flag = 0; while (1) /* was MPI_Wait(&req, MPI_STATUS_IGNORE); */ { MPI_Test(&req, &flag, MPI_STATUS_IGNORE); if (flag) break; clean_outgoing_buffers(); } starting_cobasis = NULL; /* get response */ MPI_Recv(header, 8, MPI_INT, MASTER, MPI_ANY_TAG, MPI_COMM_WORLD, MPI_STATUS_IGNORE); mprintf2(("%d: Message received from master\n",mplrs.rank)); len = header[0]; if (len==-1) /* no more work to do */ return mplrs_worker_finished(); if (len>0) { starting_cobasis = (char*)malloc(sizeof(char)*(len+1)); MPI_Recv(starting_cobasis, len, MPI_CHAR, MASTER, MPI_ANY_TAG, MPI_COMM_WORLD, MPI_STATUS_IGNORE); starting_cobasis[len] = '\0'; } /* do work */ do_work(header, starting_cobasis); free(starting_cobasis); /* send output and unfinished cobases */ process_output(); return_unfinished_cobases(); clean_outgoing_buffers(); /* check buffered sends, * free if finished */ } return 0; /* unreachable */ } /* This worker has finished. Tell the consumer, send counting stats * and exit. */ int mplrs_worker_finished(void) { int done[3] = {-1,-1,-1}; mprintf((" %d: All finished! Informing consumer.\n",mplrs.rank)); while (mplrs.outgoing) /* needed? negligible in any case */ { clean_outgoing_buffers(); } MPI_Send(&done, 3, MPI_INT, CONSUMER, 7, MPI_COMM_WORLD); send_counting_stats(CONSUMER); MPI_Finalize(); return 0; } /* Go through our outgoing MPI_Isends, free anything that has completed. * Also, if any of these are queued and the header has completed, then * send the remaining data. * Don't use with incoming buffers. */ void clean_outgoing_buffers(void) { msgbuf *msg, *next, *prev=NULL; for (msg = mplrs.outgoing; msg; msg=next) { next = msg->next; if (!outgoing_msgbuf_completed(msg)) { prev = msg; continue; } if (prev) prev->next = next; else mplrs.outgoing = next; free_msgbuf(msg); } } /* header[1] gives maxdepth, header[2] gives maxcobases, * if header[0] > 0, * starting_cobasis gives the starting cobasis. * if header[0] == 0, starting at initial input (phase 1) */ void do_work(const int *header, const char *starting_cobasis) { char *argv[] = {mplrs.tfn}; /* prepare input file */ mplrs.initializing = 0; mplrs.tfile = fopen(mplrs.tfn, "w"); fprintf(mplrs.tfile, "%s", mplrs.input); mprintf3(("%d: Received work (%d,%d,%d)\n",mplrs.rank,header[0], header[1],header[2])); if (header[0]>0) fprintf(mplrs.tfile, "\nmindepth 0\nrestart %s\n", starting_cobasis); else mplrs.initializing = 1; /* phase 1 output handled different */ if (header[1]>0) fprintf(mplrs.tfile, "\nmaxdepth %d\n", header[1]); if (header[2]>0) fprintf(mplrs.tfile, "\nmaxcobases %d\n", header[2]); if (mplrs.countonly == 1) fprintf(mplrs.tfile, "countonly\n"); fclose(mplrs.tfile); mprintf2(("%d: Calling lrs_main\n",mplrs.rank)); lrs_main(1, argv); mprintf2(("%d: lrs_main returned\n",mplrs.rank)); if (remove(mplrs.tfn) != 0) /* UNsynchronized printf -- should fix */ printf("Error deleting thread file!\n"); } /* The worker has finished its work. Process the output, preparing * and sending the output to the consumer, and preparing the unfinished * cobases for return_unfinished_cobases(). */ void process_output(void) { outlist *out = mplrs.output_list, *next; char *out_string=NULL; /* for output file if exists */ const char *type; /* because plrs_output is C++ at the moment */ const char *data; /* because plrs_output is C++ at the moment */ int len = 1024; mplrs.outnum = 0; /* clearing buffer */ mplrs.output_list = NULL; out_string = (char *)malloc(sizeof(char)*len); out_string[0]='\0'; /* reverse when initializing to get correct order */ if (mplrs.initializing) out = reverse_list(out); while (out) { type = out->type; data = out->data; if (!strcmp(type, "vertex")) out_string = append_out(out_string, &len, data); else if (!strcmp(type, "ray")) out_string = append_out(out_string, &len, data); else if (!strcmp(type, "cobasis")) process_cobasis(data); else if (!strcmp(type, "V cobasis")) out_string = append_out(out_string, &len, data); else if (!strcmp(type, "facet count")) mplrs.facets += atoi(data); else if (!strcmp(type, "ray count")) mplrs.rays += atoi(data); else if (!strcmp(type, "basis count")) mplrs.bases += atoi(data); else if (!strcmp(type, "vertex count")) mplrs.vertices += atoi(data); else if (!strcmp(type, "integer vertex count")) mplrs.intvertices += atoi(data); else if (!strcmp(type, "volume")) { plrs_readrat(mplrs.Tnum, mplrs.Tden, data); copy(mplrs.tN, mplrs.Vnum); copy(mplrs.tD, mplrs.Vden); linrat(mplrs.tN, mplrs.tD, 1L, mplrs.Tnum, mplrs.Tden, 1L, mplrs.Vnum, mplrs.Vden); } else if (!strcmp(type, "options warning")) { /* only do warnings once, otherwise repeated */ if (mplrs.initializing) out_string = append_out(out_string, &len, data); } else if (!strcmp(type, "header")) { /*only do header if initializing, otherwise repeated*/ if (mplrs.initializing) out_string = append_out(out_string, &len, data); } else if (!strcmp(type, "debug")) { out_string = append_out(out_string, &len, data); } next = out->next; free(out->type); free(out->data); free(out); out = next; } if (strlen(out_string)>0 && strcmp(out_string, "\n")) send_output(1, out_string); else free(out_string); } /* send this string to the consumer to output. * If dest!=0, then it goes to the output file (stdout if no output file). * If dest==0, then it goes to stdout. * * The pointer str is surrendered to send_output and should not be changed * It will be freed once the send is complete. */ /* str should not be NULL */ void send_output(int dest, char *str) { msgbuf *msg = (msgbuf *)malloc(sizeof(msgbuf)); int *header = (int *)malloc(sizeof(int)*3); header[0] = dest; header[1] = strlen(str); header[2] = mplrs.my_tag; /* to ensure the dest/str pair * remains intact even if another * send happens in between */ msg->req = (MPI_Request *)malloc(sizeof(MPI_Request)*2); msg->buf = (void **)malloc(sizeof(void *)*2); msg->buf[0] = header; msg->buf[1] = str; msg->count = 2; msg->target = CONSUMER; msg->queue = 1; msg->tags = (int *)malloc(sizeof(int)*2); msg->sizes = (int *)malloc(sizeof(int)*2); msg->types = (MPI_Datatype *)malloc(sizeof(MPI_Datatype)*2); msg->types[1] = MPI_CHAR; msg->sizes[1] = header[1]+1; msg->tags[1] = mplrs.my_tag; mplrs.my_tag++; msg->next = mplrs.outgoing; mplrs.outgoing = msg; MPI_Isend(header, 3, MPI_INT, CONSUMER, 7, MPI_COMM_WORLD, msg->req); } /* called from process_output to handle a 'cobasis', * add to queue to return to master */ /* awful string-hacking, basically copied from plrs processCobasis() */ /* First, if first characters are 'F#', it's a hull. otherwise it's not. * Then, remove ignore_chars. * Then, remove everything starting from the first 'I' * Then, copy everything verbatim, except: * if it's a hull, replace everything between second and third spaces * by '0' * if it's not a hull, replace everything between third and fourth * spaces by '0' * (this is resetting the depth to be 0 for a restart) */ void process_cobasis(const char *newcob) { int nlen = strlen(newcob); char *buf = (char *)malloc(sizeof(char) * (nlen+1)); int i,j,k; int num_spaces=0; /* we count the number of spaces */ char ignore_chars[] = "#VRBh=facetsFvertices/rays"; char c; int num_ignore = strlen(ignore_chars); int hull = 0; int replace = 0; mprintf3(("%d: process_cobasis( %s )", mplrs.rank, newcob)); if (nlen>1 && newcob[0]=='F' && newcob[1]=='#') hull = 1; for (i=0,j=0; i<=nlen; i++) { c = newcob[i]; /* ignore ignore_chars */ for (k=0; k<=num_ignore; k++) if (c == ignore_chars[k]) break; if (k<=num_ignore) continue; if (c=='I') break; if (c==' ') /* count spaces to set depth to 0 for restart */ { num_spaces++; if ( (num_spaces==2 && hull==1) || (num_spaces==3 && hull==0) ) replace = 1; else if ( (num_spaces==3 && hull==1) || (num_spaces==4 && hull==0) ) replace = 0; buf[j++] = c; /* copy spaces */ continue; } if (replace == 1) buf[j++]='0'; else buf[j++]=c; } buf[j]='\0'; mprintf3((" produced %s\n",buf)); mplrs.cobasis_list = addlist(mplrs.cobasis_list, buf); } inline slist *addlist(slist *list, void *buf) { slist *n = (slist *)malloc(sizeof(struct slist)); n->data = buf; n->next = list; return n; } /* mplrs.cobasis_list may have things to send to the master. * Send the header, and then the cobases to add to L. */ void return_unfinished_cobases(void) { int listsize; slist *list, *next; int *lengths=NULL; char *cobases=NULL; int size = 0; int i; int start; /* header is (strlen(cobases), length of lengths, mplrs.my_tag) */ int *header = (int *)malloc(sizeof(int)*3); msgbuf *msg = (msgbuf *)malloc(sizeof(msgbuf)); msg->target = MASTER; for (listsize=0, list=mplrs.cobasis_list; list; list=list->next) { listsize++; size += strlen((char *)list->data); } if (listsize == 0) { header[0] = -1; header[1] = -1; header[2] = -1; msg->buf = (void **)malloc(sizeof(void *)); msg->buf[0] = header; msg->count = 1; msg->req = (MPI_Request *)malloc(sizeof(MPI_Request)); msg->queue = 0; msg->tags = NULL; msg->sizes = NULL; msg->types = NULL; MPI_Isend(header, 3, MPI_INT, MASTER, 10, MPI_COMM_WORLD, msg->req); msg->next = mplrs.outgoing; mplrs.outgoing = msg; return; } lengths = (int *)malloc(sizeof(int)*listsize); /*allows unconcatenate*/ cobases = (char *)malloc(sizeof(char)*(size+1));/*concatenated + 1 \0*/ for (start=0, i=0, list=mplrs.cobasis_list; list; list=next, i++) { next = list->next; strcpy(cobases+start, (char *)list->data); lengths[i] = strlen((char *)list->data); start+=lengths[i]; free(list->data); free(list); } /* final \0 is there */ header[0] = listsize; header[1] = size+1; header[2] = mplrs.my_tag; msg->req = (MPI_Request *)malloc(sizeof(MPI_Request) * 3); msg->buf = (void **)malloc(sizeof(void *) * 3); msg->buf[0] = header; msg->buf[1] = cobases; msg->buf[2] = lengths; msg->count = 3; msg->queue = 0; msg->tags = NULL; msg->sizes = NULL; msg->types = NULL; mprintf2(("%d: Queued send of %d cobases for L\n",mplrs.rank,listsize)); MPI_Isend(header, 3, MPI_INT, MASTER, 10, MPI_COMM_WORLD, msg->req); MPI_Isend(cobases, header[1], MPI_CHAR, MASTER, mplrs.my_tag, MPI_COMM_WORLD, msg->req+1); MPI_Isend(lengths, listsize, MPI_INT, MASTER, mplrs.my_tag, MPI_COMM_WORLD, msg->req+2); mplrs.my_tag++; msg->next = mplrs.outgoing; mplrs.outgoing = msg; mplrs.cobasis_list = NULL; } /* dest is a string in a buffer with size *size. * Append src and a newline to the string, realloc()ing as necessary, * returning the new pointer and updating size. */ char *append_out(char *dest, int *size, const char *src) { int len1 = strlen(dest); int len2 = strlen(src); int newsize = *size; char *newp = dest; if (len1 + len2 + 2 > *size) { newsize = newsize<<1; while ((newsize < len1+len2+2) && newsize) newsize = newsize<<1; if (!newsize) newsize = len1+len2+2; newp = (char *)realloc(dest, sizeof(char) * newsize); if (!newp) { newsize = len1+len2+2; newp = (char *)realloc(dest, sizeof(char) * newsize); if (!newp) { printf("%d: Error no memory (%d)\n",mplrs.rank, newsize); /* MPI_Finalize(); */ exit(2); } } *size = newsize; } strncat(newp, src, len2); newp[len1+len2]='\n'; newp[len1+len2+1]='\0'; return newp; } /************ * consumer * ************/ int mplrs_consumer(void) { int i; initial_print(); /* print version and other information */ /* initialize MPI_Requests and 3*int buffers for incoming messages */ consumer.prodreq = (MPI_Request*)malloc(sizeof(MPI_Request)*mplrs.size); consumer.prodibf = (int *)malloc(sizeof(int)*3*mplrs.size); consumer.num_producers = mplrs.size - 2; for (i=0; i0 || consumer.incoming || consumer.waiting_initial) { /* check if someone is trying to send us output */ /* if so, queue any incoming messages */ consumer_start_incoming(); /* check for completed message to process */ consumer_proc_messages(); /* check signals */ mplrs_handlesigs(); } mprintf2(("C: getting stats and exiting\n")); for (i=0; ireq = (MPI_Request *)malloc(sizeof(MPI_Request)*2); newmsg->buf = (void **)malloc(sizeof(void *)); newmsg->buf[0] = (char *)malloc(sizeof(char)*(header[1]+1)); newmsg->count = 1; newmsg->target = target; newmsg->next = curhead; newmsg->queue = 0; newmsg->tags = NULL; newmsg->sizes = NULL; newmsg->types = NULL; newmsg->data = header[0]; /* bound for stdout or output file */ /* get my_tag from producer via header[2] to uniquely identify msg */ MPI_Irecv(newmsg->buf[0], header[1]+1, MPI_CHAR, target, header[2], MPI_COMM_WORLD, newmsg->req); mprintf3(("C: Receiving from %d (%d,%d,%d)",target,header[0],header[1], header[2])); return newmsg; } /* check our incoming messages, process and remove anything that * has completed */ void consumer_proc_messages(void) { msgbuf *msg, *prev=NULL, *next; int i,len; for (msg=consumer.incoming; msg; msg=next) { next=msg->next; if (outgoing_msgbuf_completed(msg)) { if (consumer.waiting_initial && msg->target != INITIAL) continue; if (msg->data!=0) fprintf(consumer.output, "%s", (char*)msg->buf[0]); /* we wait on all other output until we've printed * the initial output containing ...begin\n * to ensure pretty output, if this is the begin, * flip the flag. */ if (consumer.waiting_initial) { len=strlen((char *)msg->buf[0])-5; for (i=0; ibuf[0]+i,6)) { mprintf3(("C: found begin\n")); phase1_print(); consumer.waiting_initial = 0; break; } } free_msgbuf(msg); if (prev) prev->next = next; else consumer.incoming = next; continue; } prev=msg; } } /* We are checkpointing instead of a normal exit. * Send counting stats to master, then exit quietly */ int consumer_checkpoint(void) { int len; char *str; char *vol = cprat("", mplrs.Vnum, mplrs.Vden); send_counting_stats(MASTER); MPI_Recv(&len, 1, MPI_INT, MASTER, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (len == -1) /* master produces checkpoint file */ { MPI_Finalize(); return 0; } fprintf(consumer.output, "*Checkpoint file follows this line\n"); fprintf(consumer.output, "mplrs3\n%lu %lu %lu %lu %lu\n%s\n", mplrs.rays, mplrs.vertices, mplrs.bases, mplrs.facets, mplrs.intvertices,vol); free(vol); while (1) { MPI_Recv(&len, 1, MPI_INT, MASTER, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (len<0) break; str = (char*)malloc(sizeof(char)*len); MPI_Recv(str, len, MPI_CHAR, MASTER, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); fprintf(consumer.output,"%s\n",str); free(str); } fprintf(consumer.output,"*Checkpoint finished above this line\n"); MPI_Finalize(); return 0; } /* check whether this outgoing msgbuf has completed. * If the msg is queued (msg->queue == 1), * then if the first part has completed, send the remaining parts * Don't use with *queued* incoming msgbuf. */ inline int outgoing_msgbuf_completed(msgbuf *msg) { int flag; int count = msg->count; int i; if (msg->queue != 1) { MPI_Testall(count, msg->req, &flag, MPI_STATUSES_IGNORE); return flag; } MPI_Test(msg->req, &flag, MPI_STATUS_IGNORE); if (!flag) return flag; /* first completed, send the rest of the queued send */ mprintf3(("%d: Sending second part of queued send to %d\n", mplrs.rank, msg->target)); for (i=1; ibuf[i]) MPI_Isend(msg->buf[i], msg->sizes[i], msg->types[i], msg->target, msg->tags[i], MPI_COMM_WORLD, msg->req+i); } msg->queue = 0; return 0; } inline void free_msgbuf(msgbuf *msg) { int i; for (i=0; icount; i++) free(msg->buf[i]); free(msg->buf); free(msg->req); free(msg->tags); free(msg->sizes); free(msg->types); free(msg); return; } outlist *reverse_list(outlist* head) { outlist * last = head, * new_head = NULL; while(last) { outlist * tmp = last; last = last->next; tmp->next = new_head; new_head = tmp; } return new_head; } /* send stats on size of L, etc */ void send_master_stats(void) { unsigned long stats[4] = {master.tot_L, master.num_empty, 0, 0}; MPI_Send(stats, 4, MPI_UNSIGNED_LONG, CONSUMER, 1, MPI_COMM_WORLD); return; } /* get master stats on size of L, etc */ void recv_master_stats(void) { unsigned long stats[4] = {0,0,0,0}; MPI_Recv(stats, 4, MPI_UNSIGNED_LONG, MASTER, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); master.tot_L = stats[0]; master.num_empty = stats[1]; return; } /* send stats to target for final print */ void send_counting_stats(int target) { char *vol = NULL; if (mplrs.facets>0) vol = cprat("", mplrs.Vnum, mplrs.Vden); else { vol = (char *)malloc(sizeof(char)*2); vol[0] = '0'; vol[1] = '\0'; } unsigned long stats[6] = {mplrs.rays, mplrs.vertices, mplrs.bases, mplrs.facets, mplrs.intvertices, strlen(vol)+1}; MPI_Send(stats, 6, MPI_UNSIGNED_LONG, target, 1, MPI_COMM_WORLD); MPI_Send(vol, stats[5], MPI_CHAR, target, 1, MPI_COMM_WORLD); free(vol); return; } /* gets counting stats from target */ void recv_counting_stats(int target) { char *vol; unsigned long stats[6]; MPI_Recv(stats, 6, MPI_UNSIGNED_LONG, target, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); mplrs.rays+=stats[0]; mplrs.vertices+=stats[1]; mplrs.bases+=stats[2]; mplrs.facets+=stats[3]; mplrs.intvertices+=stats[4]; vol = (char*)malloc(sizeof(char)*stats[5]); MPI_Recv(vol, stats[5], MPI_CHAR, target, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE); plrs_readrat(mplrs.Tnum, mplrs.Tden, vol); copy(mplrs.tN, mplrs.Vnum); copy(mplrs.tD, mplrs.Vden); linrat(mplrs.tN, mplrs.tD, 1L, mplrs.Tnum, mplrs.Tden, 1L, mplrs.Vnum, mplrs.Vden); free(vol); return; } /* do the initial print */ void initial_print(void) { fprintf(consumer.output, "*mplrs:%s%s(%s)%d processes\n%s\n", TITLE,VERSION,ARITH,mplrs.size,AUTHOR); fprintf(consumer.output, "*Input taken from %s\n", mplrs.input_filename); fprintf(consumer.output, "*Starting depth of %d maxcobases=%d ", master.initdepth, master.maxcobases); fprintf(consumer.output, "maxdepth=%d lmin=%d lmax=%d scale=%d\n", master.maxdepth, master.lmin, master.lmax, master.scalec); if (mplrs.countonly) fprintf(consumer.output, "*countonly\n"); if (consumer.output==stdout) return; printf("*mplrs:%s%s(%s)%d processes\n%s\n",TITLE,VERSION,ARITH, mplrs.size,AUTHOR); printf("*Input taken from %s\n",mplrs.input_filename); printf("*Output written to: %s\n",consumer.output_filename); printf("*Starting depth of %d maxcobases=%d ", master.initdepth, master.maxcobases); printf("maxdepth=%d lmin=%d lmax=%d scale=%d\n", master.maxdepth, master.lmin, master.lmax, master.scalec); if (mplrs.countonly) printf("*countonly\n"); } /* do the "*Phase 1 time: " print */ inline void phase1_print(void) { timeval cur; gettimeofday(&cur, NULL); printf("*Phase 1 time: %ld seconds.\n",cur.tv_sec-mplrs.start.tv_sec); return; } /* do the final print */ void final_print(void) { timeval end; char *vol=NULL; gettimeofday(&end, NULL); fprintf(consumer.output, "end\n"); printf("*Total number of jobs: %lu, L became empty %lu times\n", master.tot_L, master.num_empty); if (mplrs.facets>0) { vol = cprat("*Volume=",mplrs.Vnum,mplrs.Vden); fprintf(consumer.output,"%s\n",vol); fprintf(consumer.output,"*Totals: facets=%lu bases=%lu\n", mplrs.facets, mplrs.bases); } else fprintf(consumer.output, "*Totals: vertices=%lu rays=%lu bases=%lu integer-vertices=%lu\n", mplrs.vertices,mplrs.rays,mplrs.bases,mplrs.intvertices); fprintf(consumer.output, "*Elapsed time: %ld seconds.\n", end.tv_sec - mplrs.start.tv_sec); if (consumer.output_filename == NULL) return; if (mplrs.facets>0) { printf("%s\n", vol); printf("*Totals: facets=%lu bases=%lu\n", mplrs.facets, mplrs.bases); free(vol); } else printf("*Totals: vertices=%lu rays=%lu bases=%lu integer-vertices=%lu\n", mplrs.vertices,mplrs.rays,mplrs.bases,mplrs.intvertices); printf("*Elapsed time: %ld seconds.\n", end.tv_sec - mplrs.start.tv_sec); } void post_output(const char *type, const char *data) { outlist *out = (outlist *)malloc(sizeof(outlist)); out->type = dupstr(type); out->data = dupstr(data); out->next = mplrs.output_list; mplrs.output_list = out; if (mplrs.outnum++ > mplrs.maxbuf) /* buffer #include #include #include #include #endif #ifdef LRSLONG #define ARITH "lrslong.h" /* lrs long integer arithmetic package */ #else #ifdef GMP #define ARITH "lrsgmp.h" /* lrs wrapper for gmp multiple precsion arithmetic */ #else #define ARITH "lrsmp.h" /* lrs multiple precsion arithmetic */ #define MP #endif #endif #include ARITH #ifdef SIGNALS #include #include #define errcheck(s,e) if ((long)(e)==-1L){ perror(s);exit(1);} #endif #define CALLOC(n,s) xcalloc(n,s,__LINE__,__FILE__) /*********************/ /*global constants */ /*********************/ #define MAX_LRS_GLOBALS 10000L /* number of allocated dictionaries */ #define MAXIMIZE 1L /* maximize the lp */ #define MINIMIZE 0L /* maximize the lp */ #define GE 1L /* constraint is >= */ #define EQ 0L /* constraint is linearity */ /*************/ /* typedefs */ /*************/ /******************************************************************************/ /* Indexing after initialization */ /* Basis Cobasis */ /* --------------------------------------- ----------------------------- */ /* | i |0|1| .... |lastdv|lastdv+1|...|m| | j | 0 | 1 | ... |d-1| d | */ /* |-----|+|+|++++++|++++++|--------|---|-| |----|---|---|-----|---|+++++| */ /* |B[i] |0|1| .... |lastdv|lastdv+1|...|m| |C[j]|m+1|m+2| ... |m+d|m+d+1| */ /* -----|+|+|++++++|++++++|????????|???|?| ----|???|???|-----|???|+++++| */ /* */ /* Row[i] is row location for B[i] Col[j] is column location for C[j] */ /* ----------------------------- ----------------------------- */ /* | i |0|1| ..........|m-1|m| | j | 0 | 1 | ... |d-1| d | */ /* |-------|+|-|-----------|---|-| |------|---|---|--- |---|++++| */ /* |Row[i] |0|1|...........|m-1|m| |Col[j]| 1 | 2 | ... | d | 0 | */ /* --------|+|*|***********|***|*| ------|***|***|*****|***|++++| */ /* */ /* + = remains invariant * = indices may be permuted ? = swapped by pivot */ /* */ /* m = number of input rows n= number of input columns */ /* input dimension inputd = n-1 (H-rep) or n (V-rep) */ /* lastdv = inputd-nredundcol (each redundant column removes a dec. var) */ /* working dimension d=lastdv-nlinearity (an input linearity removes a slack) */ /* obj function in row 0, index 0=B[0] col 0 has index m+d+1=C[d] */ /* H-rep: b-vector in col 0, A matrix in columns 1..n-1 */ /* V-rep: col 0 all zero, b-vector in col 1, A matrix in columns 1..n */ /******************************************************************************/ typedef struct lrs_dic_struct /* dynamic dictionary data */ { lrs_mp_matrix A; long m; /* A has m+1 rows, row 0 is cost row */ long m_A; /* =m or m-d if nonnegative flag set */ long d; /* A has d+1 columns, col 0 is b-vector */ long d_orig; /* value of d as A was allocated (E.G.) */ long lexflag; /* true if lexmin basis for this vertex */ long depth; /* depth of basis/vertex in reverse search tree */ long i, j; /* last pivot row and column pivot indices */ lrs_mp det; /* current determinant of basis */ lrs_mp objnum; /* objective numerator value */ lrs_mp objden; /* objective denominator value */ long *B, *Row; /* basis, row location indices */ long *C, *Col; /* cobasis, column location indices */ struct lrs_dic_struct *prev, *next; } lrs_dic; typedef struct lrs_dat /* global problem data */ { lrs_mp_vector Gcd; /* Gcd of each row of numerators */ lrs_mp_vector Lcm; /* Lcm for each row of input denominators */ lrs_mp sumdet; /* sum of determinants */ lrs_mp Nvolume; /* volume numerator */ lrs_mp Dvolume; /* volume denominator */ lrs_mp boundn; /* objective bound numerator */ lrs_mp boundd; /* objective bound denominator */ long unbounded; /* lp unbounded */ char fname[100]; /* input file name from line 1 of input */ long *inequality; /* indices of inequalities corr. to cobasic ind */ /* initially holds order used to find starting */ /* basis, default: m,m-1,...,2,1 */ long *facet; /* cobasic indices for restart in needed */ long *redundcol; /* holds columns which are redundant */ long *linearity; /* holds cobasic indices of input linearities */ long *minratio; /* used for lexicographic ratio test */ long *temparray; /* for sorting indices, dimensioned to d */ long *isave, *jsave; /* arrays for estimator, malloc'ed at start */ long inputd; /* input dimension: n-1 for H-rep, n for V-rep */ long m; /* number of rows in input file */ long n; /* number of columns in input file */ long lastdv; /* index of last dec. variable after preproc */ /* given by inputd-nredundcol */ long count[10]; /* count[0]=rays [1]=verts. [2]=base [3]=pivots */ /* count[4]=integer vertices */ long startcount[5]; long deepest; /* max depth ever reached in search */ long nredundcol; /* number of redundant columns */ long nlinearity; /* number of input linearities */ long totalnodes; /* count total number of tree nodes evaluated */ long runs; /* probes for estimate function */ long seed; /* seed for random number generator */ double cest[10]; /* ests: 0=rays,1=vert,2=bases,3=vol,4=int vert */ /**** flags ********** */ long allbases; /* TRUE if all bases should be printed */ long bound; /* TRUE if upper/lower bound on objective given */ long countonly; /* TRUE if only count totals should be output */ long debug; long dualdeg; /* TRUE if start dictionary is dual degenerate */ long etrace; /* turn off debug at basis # strace */ long frequency; /* frequency to print cobasis indices */ long geometric; /* TRUE if incident vertex prints after each ray */ long getvolume; /* do volume calculation */ long givenstart; /* TRUE if a starting cobasis is given */ long homogeneous; /* TRUE if all entries in column one are zero */ long hull; /* do convex hull computation if TRUE */ long incidence; /* print all tight inequalities (vertices/rays) */ long lponly; /* true if only lp solution wanted */ long maxdepth; /* max depth to search to in treee */ long maximize; /* flag for LP maximization */ long maxoutput; /* if positive, maximum number of output lines */ long maxcobases; /* if positive, after maxcobasis unexplored subtrees reported */ long minimize; /* flag for LP minimization */ long mindepth; /* do not backtrack above mindepth */ long nash; /* TRUE for computing nash equilibria */ long nonnegative; /* TRUE if last d constraints are nonnegativity */ long polytope; /* TRUE for facet computation of a polytope */ long printcobasis; /* TRUE if all cobasis should be printed */ long printslack; /* TRUE if indices of slack inequal. printed */ long truncate; /* TRUE: truncate tree when moving from opt vert*/ long verbose; /* FALSE for minimalist output */ long restart; /* TRUE if restarting from some cobasis */ long strace; /* turn on debug at basis # strace */ long voronoi; /* compute voronoi vertices by transformation */ long subtreesize; /* in estimate mode, iterates if cob_est >= subtreesize */ /* Variables for saving/restoring cobasis, db */ long id; /* numbered sequentially */ char *name; /* passed by user */ long saved_count[3]; /* How often to print out current cobasis */ long *saved_C; lrs_mp saved_det; long saved_depth; long saved_d; long saved_flag; /* There is something in the saved cobasis */ /* Variables for cacheing dictionaries, db */ lrs_dic *Qhead, *Qtail; }lrs_dat, lrs_dat_p; #ifdef PLRS /****************/ /* PLRS */ /****************/ void post_output(const char *, const char *); void plrs_read_dat (lrs_dat * Q, std::ifstream &ff); void plrs_read_dic (lrs_dic * P, lrs_dat * Q, std::ifstream &ff); void plrs_readfacets (lrs_dat * Q, long facet[], string facets); void plrs_readlinearity(lrs_dat *Q, string line); #endif /*******************************/ /* functions for external use */ /*******************************/ extern FILE *lrs_cfp; /* output file for checkpoint information */ long lrs_main (int argc, char *argv[]); /* lrs driver, argv[1]=input file, [argc-1]=output file */ long redund_main (int argc, char *argv[]); /* redund driver, argv[1]=input file, [2]=output file */ lrs_dat *lrs_alloc_dat (const char *name); /* allocate for lrs_dat structure "name" */ lrs_dic *lrs_alloc_dic (lrs_dat * Q); /* allocate for lrs_dic structure corr. to Q */ long lrs_estimate (lrs_dic * P, lrs_dat * Q); /* get estimates only and returns est number of cobases in subtree */ long lrs_read_dat (lrs_dat * Q, int argc, char *argv[]); /* read header and set up lrs_dat */ long lrs_read_dic (lrs_dic * P, lrs_dat * Q); /* read input and set up problem and lrs_dic */ long lrs_checkbound (lrs_dic *P, lrs_dat * Q); /* TRUE if current objective value exceeds specified bound */ long lrs_getfirstbasis (lrs_dic ** P_p, lrs_dat * Q, lrs_mp_matrix * Lin,long no_output); /* gets first basis, FALSE if none,P may get changed if lin. space Lin found no_output is TRUE supresses output headers P may get changed if lin. space Lin found */ void lrs_getinput(lrs_dic *P,lrs_dat *Q,long *num,long *den, long m, long d); /* reads input matrix b A in lrs/cdd format */ long lrs_getnextbasis (lrs_dic ** dict_p, lrs_dat * Q, long prune); /* gets next lrs tree basis, FALSE if none backtrack if prune is TRUE */ long lrs_getsolution (lrs_dic * P, lrs_dat * Q, lrs_mp_vector output, long col); long lrs_getray (lrs_dic * P, lrs_dat * Q, long col, long comment, lrs_mp_vector output); long lrs_getvertex (lrs_dic * P, lrs_dat * Q, lrs_mp_vector output); void lrs_close (char *name); /* close lrs lib program "name" */ long lrs_init (char *name); /* initialize lrslib and arithmetic package for prog "name" */ void lrs_lpoutput(lrs_dic * P,lrs_dat * Q, lrs_mp_vector output); /* print LP primal and dual solutions */ void lrs_printcobasis (lrs_dic * P, lrs_dat * Q, long col); /* print cobasis for column col(verted or ray) */ void lrs_printoutput (lrs_dat * Q, lrs_mp_vector output); /* print output array */ void lrs_printrow (char name[], lrs_dat * Q, lrs_mp_vector output, long rowd); /*print row of A matrix in output[0..rowd] */ void lrs_printsol (lrs_dic * P, lrs_dat * Q, long col, long comment); /* print out solution from col, comment= 0=normal,-1=geometric ray,1..inputd=linearity */ void lrs_printtotals (lrs_dic * P, lrs_dat * Q);/* print final totals for lrs */ long lrs_set_digits (long dec_digits ); /* set lrsmp digits to equiv. of decimal dec_digits */ long lrs_solvelp (lrs_dic * P, lrs_dat * Q, long maximize);/* solve primal feas LP:TRUE bounded else FALSE */ /*******************************/ /* functions for internal use */ /*******************************/ /*******************************/ /* basic dictionary functions */ /*******************************/ long getabasis (lrs_dic * P, lrs_dat * Q, long order[]); /* Try to find a starting basis */ void getnextoutput (lrs_dic * P, lrs_dat * Q, long i, long col, lrs_mp out); /* get A[B[i][col] and copy to out */ long ismin (lrs_dic * P, lrs_dat * Q, long r, long s); /* test if A[r][s] is a min ratio for col s */ long lexmin (lrs_dic * P, lrs_dat * Q, long col); /* test A to see if current basis is lexmin */ void pivot (lrs_dic * P, lrs_dat * Q, long bas, long cob); /* Qpivot routine for array A */ long primalfeasible (lrs_dic * P, lrs_dat * Q); /* Do dual pivots to get primal feasibility */ long lrs_ratio (lrs_dic * P, lrs_dat * Q, long col); /* find lex min. ratio */ long removecobasicindex (lrs_dic * P, lrs_dat * Q, long k); /* remove C[k] from problem */ long restartpivots (lrs_dic * P, lrs_dat * Q); /* restart problem from given cobasis */ long reverse (lrs_dic * P, lrs_dat * Q, long *r, long s); /* TRUE if B[*r] C[s] is a reverse lex-pos pivot */ long selectpivot (lrs_dic * P, lrs_dat * Q, long *r, long *s); /* select pivot indices using lexicographic rule */ long dan_selectpivot (lrs_dic * P, lrs_dat * Q, long *r, long *s); /* select pivot indices using dantzig-lex rule */ void update (lrs_dic * P, lrs_dat * Q, long *i, long *j); /* update the B,C, LOC arrays after a pivot */ void updatevolume (lrs_dic * P, lrs_dat * Q); /* rescale determinant and update the volume */ /*******************************/ /* other functions using P,Q */ /*******************************/ long lrs_degenerate (lrs_dic * P, lrs_dat * Q); /* TRUE if the dictionary is primal degenerate */ void print_basis (FILE * fp, lrs_dat * Q); void printA (lrs_dic * P, lrs_dat * Q); /* raw print of dictionary, bases for debugging */ void pimat (lrs_dic * P, long r, long s, lrs_mp Nt, char name[]); /* print the row r col s of A */ long readfacets (lrs_dat * Q, long facet[]); /* read and check facet list */ long readlinearity (lrs_dat * Q); /* read and check linearity list */ void rescaledet (lrs_dic * P, lrs_dat * Q, lrs_mp Vnum, lrs_mp Vden); /* rescale determinant to get its volume */ void rescalevolume (lrs_dic * P, lrs_dat * Q, lrs_mp Vnum, lrs_mp Vden); /* adjust volume for dimension */ long lrs_leaf(lrs_dic *P, lrs_dat *Q); /* true if current dictionary is leaf of reverse search tree */ /***************************************************/ /* Routines for redundancy checking */ /***************************************************/ long checkredund (lrs_dic * P, lrs_dat * Q);/* solve primal lp to check redund of obj fun. returns TRUE if redundant, else FALSE */ long checkcobasic (lrs_dic * P, lrs_dat * Q, long index); /* TRUE if index is cobasic and nondegenerate FALSE if basic, or degen. cobasic, where it will get pivoted out */ long checkindex (lrs_dic * P, lrs_dat * Q, long index); /* index=0 non-red.,1 red., 2 input linearity NOTE: row is returned all zero if redundant!! */ /***************************************************/ /* Routines for caching and restoring dictionaries */ /***************************************************/ void lrs_free_dic ( lrs_dic *P, lrs_dat *Q); void lrs_free_dic2 ( lrs_dic *P, lrs_dat *Q); /* same as lrs_free_dic but no cache*/ void lrs_free_dat ( lrs_dat *Q); void copy_dict (lrs_dat * global, lrs_dic * dest, lrs_dic * src); lrs_dic *alloc_memory (lrs_dat * Q); lrs_dic * lrs_getdic(lrs_dat *Q); lrs_dic *resize (lrs_dic * P, lrs_dat * Q); /*******************************/ /* utilities */ /*******************************/ void lprat (const char *name, long Num, long Den); /* Print Num/Den without reducing */ long lreadrat (long *Num, long *Den); /* read a rational string and convert to long integers */ void reorder (long a[], long range); /* reorder array in increasing order with one misplaced element */ void reorder1 (long a[], long b[], long newone, long range); /* reorder array a in increasing order with misplaced element newone elements of b go along for the ride */ /***************************/ /* lp_solve like functions */ /***************************/ long lrs_solve_lp(lrs_dic *P, lrs_dat *Q);/* solve lp only for given dictionary */ void lrs_set_row(lrs_dic *P, lrs_dat *Q, long row, long num[], long den[], long ineq);/* load row i of dictionary from num[]/den[] ineq=GE */ void lrs_set_row_mp(lrs_dic *P, lrs_dat *Q, long row, lrs_mp_vector num, lrs_mp_vector den, long ineq);/* same as lrs_set_row except num/den is lrs_mp type */ void lrs_set_obj(lrs_dic *P, lrs_dat *Q, long num[], long den[], long max); /* set up objective function with coeffs num[]/den[] max=MAXIMIZE or MINIMIZE */ void lrs_set_obj_mp(lrs_dic *P, lrs_dat *Q, lrs_mp_vector num, lrs_mp_vector den, long max);/* same as lrs_set_obj but num/den has lrs_mp type */ lrslib-062/lrsmp.h0000600001553200155320000002377512722006616012001 0ustar avis/* lrsmp.h (lrs extended precision arithmetic library) */ /* Copyright: David Avis 2000, avis@cs.mcgill.ca */ /* Version 4.1, February 17, 2000 */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. */ /******************************************************************************/ /* See http://cgm.cs.mcgill.ca/~avis/C/lrs.html for lrs usage instructions */ /******************************************************************************/ /* This package contains the extended precision routines used by lrs and some other miscellaneous routines. The maximum precision depends on the parameter MAX_DIGITS defined below, with usual default of 255L. This gives a maximum of 1020 decimal digits on 32 bit machines. The procedure lrs_mp_init(dec_digits) may set a smaller number of dec_digits, and this is useful if arrays or matrices will be used. */ #ifdef PLRS #include using namespace std; #endif /***********/ /* defines */ /***********/ /* this is number of longwords. Increasing this won't cost you that much since only variables other than the A matrix are allocated this size. Changing affects running time in small but not very predictable ways. */ #define MAX_DIGITS 255L /* this is in decimal digits, you pay in memory if you increase this, unless you override by a line with digits n before the begin line of your file. */ #define DEFAULT_DIGITS 100L /**********MACHINE DEPENDENT CONSTANTS***********/ /* MAXD is 2^(k-1)-1 where k=16,32,64 word size */ /* MAXD must be at least 2*BASE^2 */ /* If BASE is 10^k, use "%k.ku" for FORMAT */ /* INTSIZE is number of bytes for integer */ /* 32/64 bit machines */ /***********************************************/ #ifdef B32 /*32 bit machines */ #define FORMAT "%4.4lu" #define MAXD 2147483647L #define BASE 10000L #define BASE_DIG 4 #define INTSIZE 8L #define BIT "32bit" #else /* 64 bit machines */ #define MAXD 9223372036854775807L #define BASE 1000000000L #define FORMAT "%9.9lu" #define BASE_DIG 9 #define INTSIZE 16L #define BIT "64bit" #endif #define MAXINPUT 1000 /*max length of any input rational */ #define POS 1L #define NEG -1L #ifndef TRUE #define TRUE 1L #endif #ifndef FALSE #define FALSE 0L #endif #define ONE 1L #define TWO 2L #define ZERO 0L /**********************************/ /* MACROS */ /* dependent on mp implementation */ /**********************************/ #define exactdivint(a,b,c) divint((a),(b),(c)) /*should use special code here */ #define positive(a) (((a)[0] < 2 || ((a)[0]==2 && (a)[1]==0))?FALSE:TRUE) #define negative(a) (((a)[0] > -2 || ((a)[0]==-2 && (a)[1]==0))?FALSE:TRUE) #define zero(a) ((((a)[0]==2 || (a)[0]==-2) && (a)[1]==0)?TRUE:FALSE) #define one(a) (((a)[0]==2 && (a)[1]==1)?TRUE:FALSE) //#define length(a) (((a)[0] > 0) ? (a)[0] : -(a)[0]) #define sign(a) (((a)[0] < 0) ? NEG : POS) #define storesign(a,sa) a[0]=((a)[0] > 0) ? (sa)*((a)[0]) : -(sa)*((a)[0]) #define changesign(a) a[0]= -(a)[0] #define storelength(a,la) a[0]=((a)[0] > 0) ? (la) : -(la) /* * convert between decimal and machine (longword digits). Notice lovely * implementation of ceiling function :-) */ #define DEC2DIG(d) ( (d) % BASE_DIG ? (d)/BASE_DIG+1 : (d)/BASE_DIG) #define DIG2DEC(d) ((d)*BASE_DIG) #include #ifdef SIGNALS #include #include #define errcheck(s,e) if ((long)(e)==-1L){ perror(s);exit(1);} #endif #define CALLOC(n,s) xcalloc(n,s,__LINE__,__FILE__) extern long lrs_digits; /* max permitted no. of digits */ extern long lrs_record_digits; /* this is the biggest acheived so far. */ extern FILE* lrs_ifp; /* input file pointer */ extern FILE* lrs_ofp; /* output file pointer */ /*************/ /* typedefs */ /*************/ typedef long lrs_mp[MAX_DIGITS + 1]; /* type lrs_mp holds one multi-precision integer */ typedef long *lrs_mp_t; typedef long **lrs_mp_vector; typedef long ***lrs_mp_matrix; /*********************************************************/ /* Initialization and allocation procedures - must use! */ /******************************************************* */ /* next two functions are not used by lrsmp, but are for lrsgmp compatability */ #define lrs_alloc_mp(a) #define lrs_clear_mp(a) lrs_mp_t lrs_alloc_mp_t(); /* dynamic allocation of lrs_mp */ lrs_mp_vector lrs_alloc_mp_vector (long n); /* allocate lrs_mp_vector for n+1 lrs_mp numbers */ lrs_mp_matrix lrs_alloc_mp_matrix (long m, long n); /* allocate lrs_mp_matrix for m+1 x n+1 lrs_mp */ long lrs_mp_init (long dec_digits, FILE * lrs_ifp, FILE * lrs_ofp); /* max number of decimal digits, fps */ void lrs_clear_mp_vector (lrs_mp_vector a, long n); void lrs_clear_mp_matrix (lrs_mp_matrix a, long m, long n); /*********************************************************/ /* Core library functions - depend on mp implementation */ /******************************************************* */ long length (lrs_mp a); /* return length of lrs_mp integer */ void atomp (char s[], lrs_mp a); /* convert string to lrs_mp integer */ long compare (lrs_mp a, lrs_mp b); /* a ? b and returns -1,0,1 for <,=,> */ void copy (lrs_mp a, lrs_mp b); /* assigns a=b */ void divint (lrs_mp a, lrs_mp b, lrs_mp c); /* c=a/b, a contains remainder on return */ void gcd (lrs_mp u, lrs_mp v); /* returns u=gcd(u,v) destroying v */ long mp_greater (lrs_mp a, lrs_mp b); /* tests if a > b and returns (TRUE=POS) */ void itomp (long in, lrs_mp a); /* convert integer i to lrs_mp */ void linint (lrs_mp a, long ka, lrs_mp b, long kb); /* compute a*ka+b*kb --> a */ void mptodouble (lrs_mp a, double *x); /* convert lrs_mp to double */ long mptoi (lrs_mp a); /* convert lrs_mp to long integer */ void mulint (lrs_mp a, lrs_mp b, lrs_mp c); /* multiply two integers a*b --> c */ void normalize (lrs_mp a); /* normalize lrs_mp after computation */ #ifdef PLRS string pmp (char name[], lrs_mp a); /* print the long precision integer a */ string prat (char name[], lrs_mp Nt, lrs_mp Dt); /* reduce and print Nt/Dt */ char *cprat(char name[], lrs_mp Nt, lrs_mp Dt); /* C version of prat */ long plrs_readrat (lrs_mp Na, lrs_mp Da, const char * rat); /* take a rational number and convert to lrs_mp */ #else void pmp (char name[], lrs_mp a); /* print the long precision integer a */ void prat (char name[], lrs_mp Nt, lrs_mp Dt); /* reduce and print Nt/Dt */ #endif long readrat (lrs_mp Na, lrs_mp Da); /* read a rational or int and convert to lrs_mp */ void reduce (lrs_mp Na, lrs_mp Da); /* reduces Na Da by gcd(Na,Da) */ /*********************************************************/ /* Standard arithmetic & misc. functions */ /* should be independent of mp implementation */ /******************************************************* */ void atoaa (char in[], char num[], char den[]); /* convert rational string in to num/den strings */ void addint (lrs_mp a, lrs_mp b, lrs_mp c); /* compute c=a+b */ long atos (char s[]); /* convert s to integer */ long comprod (lrs_mp Na, lrs_mp Nb, lrs_mp Nc, lrs_mp Nd); /* +1 if Na*Nb > Nc*Nd,-1 if Na*Nb > Nc*Nd else 0 */ void decint (lrs_mp a, lrs_mp b); /* compute a=a-b */ void divrat (lrs_mp Na, lrs_mp Da, lrs_mp Nb, lrs_mp Db, lrs_mp Nc, lrs_mp Dc); /* computes Nc/Dc = (Na/Da) /( Nb/Db ) and reduce */ void getfactorial (lrs_mp factorial, long k); /* compute k factorial in lrs_mp */ /* NC/DC = ka*Na/Da + kb*Nb/Db */ void linrat (lrs_mp Na, lrs_mp Da, long ka, lrs_mp Nb, lrs_mp Db, long kb, lrs_mp Nc, lrs_mp Dc); void lcm (lrs_mp a, lrs_mp b); /* a = least common multiple of a, b; b is saved */ void mulrat (lrs_mp Na, lrs_mp Da, lrs_mp Nb, lrs_mp Db, lrs_mp Nc, lrs_mp Dc); /* computes Nc/Dc=(Na/Da)*(Nb/Db) and reduce */ long myrandom (long num, long nrange); /* return a random number in range 0..nrange-1 */ void notimpl (char s[]); /* bail out - help! */ void rattodouble (lrs_mp a, lrs_mp b, double *x); /* convert lrs_mp rational to double */ void reduceint (lrs_mp Na, lrs_mp Da); /* divide Na by Da and return it */ void reducearray (lrs_mp_vector p, long n); /* find gcd of p[0]..p[n-1] and divide through by */ void scalerat (lrs_mp Na, lrs_mp Da, long ka); /* scales rational by ka */ void subint (lrs_mp a, lrs_mp b, lrs_mp c); /* compute c=a-b */ /**********************************/ /* Miscellaneous functions */ /******************************** */ void free (void *); void lrs_getdigits (long *a, long *b); /* send digit information to user */ void stringcpy (char *s, char *t); /* copy t to s pointer version */ void *xcalloc (long n, long s, long l, char *f); void lrs_default_digits_overflow (); void digits_overflow (); /* end of lrsmp.h (vertex enumeration using lexicographic reverse search) */ lrslib-062/mp5.ine0000600001553200155320000000204112722006423011644 0ustar avismp5.ine *metric polytope on 5 points H-representation begin 40 11 integer 2 -1 -1 0 0 -1 0 0 0 0 0 0 1 1 0 0 -1 0 0 0 0 0 0 -1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 -1 0 0 0 0 0 -1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 -1 0 0 0 0 0 -1 1 0 0 0 0 1 0 0 0 0 1 -1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 -1 0 0 0 0 -1 0 1 0 0 0 0 1 0 0 0 1 0 -1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 -1 0 0 0 0 1 1 0 0 0 0 0 -1 0 0 0 1 -1 0 0 0 0 0 1 0 0 0 -1 1 0 0 0 0 0 1 2 0 0 0 0 -1 -1 0 -1 0 0 0 0 0 0 0 1 1 0 -1 0 0 0 0 0 0 0 -1 1 0 1 0 0 0 0 0 0 0 1 -1 0 1 0 0 2 0 0 0 0 -1 0 -1 0 -1 0 0 0 0 0 0 1 0 1 0 -1 0 0 0 0 0 0 -1 0 1 0 1 0 0 0 0 0 0 1 0 -1 0 1 0 2 0 0 0 0 0 -1 -1 0 0 -1 0 0 0 0 0 0 -1 1 0 0 1 0 0 0 0 0 0 1 -1 0 0 1 0 0 0 0 0 0 1 1 0 0 -1 2 0 0 0 0 0 0 0 -1 -1 -1 0 0 0 0 0 0 0 0 1 -1 1 0 0 0 0 0 0 0 0 -1 1 1 0 0 0 0 0 0 0 0 1 1 -1 0 -1 1 0 0 1 0 0 0 0 0 0 1 -1 0 0 1 0 0 0 0 0 2 -1 0 -1 0 0 -1 0 0 0 0 0 1 0 -1 0 0 1 0 0 0 0 2 -1 0 0 -1 0 0 -1 0 0 0 0 1 0 0 -1 0 0 1 0 0 0 2 0 -1 -1 0 0 0 0 -1 0 0 2 0 -1 0 -1 0 0 0 0 -1 0 2 0 0 -1 -1 0 0 0 0 0 -1 end lrslib-062/setupnash.c0000600001553200155320000000663412722006425012642 0ustar avis#include #include #include "lrslib.h" #define MAXLINE 1000 /* Usage: setupnash game game1.ine game2.ine */ /* Reads input file game containing */ /* m n */ /* A matrix (m by n rationals ) */ /* B matrix (m by n rationals ) */ /* Outputs: two files game1.ine game2.ine */ /* that are used by nash */ int main (int argc, char *argv[]) { long m,n,i,j; long Anum[100][100], Bnum[100][100]; long Aden[100][100], Bden[100][100]; if ( argc < 3 ) { printf ("\nUsage: setupnash infile outfile1 outfile2\n"); return(FALSE); } if ((lrs_ifp = fopen (argv[1], "r")) == NULL) { printf ("\nBad input file name\n"); return (FALSE); } else printf ("\n*Input taken from file %s", argv[1]); if(fscanf(lrs_ifp,"%ld %ld",&m,&n)==EOF) { printf("\nInvalid m,n"); return(FALSE); } if( m > 1000 || n > 1000) { printf ("\nm=%ld n=%ld",m,n); printf ("\nBoth m and n must at most 1000\n"); return(FALSE); } /* process input file */ /* read A matrix */ for (i=0;i #include #include "lrslib.h" int main (int argc, char *argv[]) { redund_main(argc,argv); printf("\n"); return 0; } lrslib-062/lrslong.h0000600001553200155320000002272612722006615012316 0ustar avis/* lrslong.h (lrs long integer arithmetic library */ /* Copyright: David Avis 2000, avis@cs.mcgill.ca */ /* Version 4.0, February 17, 2000 */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. */ /******************************************************************************/ /* See http://cgm.cs.mcgill.ca/~avis/C/lrs.html for lrs usage instructions */ /******************************************************************************/ /* This package contains the extended precision routines used by lrs and some other miscellaneous routines. The maximum precision depends on the parameter MAX_DIGITS defined below, with usual default of 255L. This gives a maximum of 1020 decimal digits on 32 bit machines. The procedure lrs_mp_init(dec_digits) may set a smaller number of dec_digits, and this is useful if arrays or matrices will be used. */ #ifdef PLRS #include using namespace std; #endif /***********/ /* defines */ /***********/ /* this is number of longwords. Increasing this won't cost you that much since only variables other than the A matrix are allocated this size. Changing affects running time in small but not very predictable ways. */ #define MAX_DIGITS 255L /* this is in decimal digits, you pay in memory if you increase this, unless you override by a line with digits n before the begin line of your file. */ #define DEFAULT_DIGITS 100L /**********MACHINE DEPENDENT CONSTANTS***********/ /* MAXD is 2^(k-1)-1 where k=16,32,64 word size */ /* MAXD must be at least 2*BASE^2 */ /* If BASE is 10^k, use "%k.ku" for FORMAT */ /* INTSIZE is number of bytes for integer */ /* 32/64 bit machines */ /***********************************************/ #ifdef B32 /*32 bit machines */ #define FORMAT "%4.4u" #define MAXD 2147483647L #define BASE 10000L #define BASE_DIG 4 #define INTSIZE 8L #define BIT "32bit" #else /* 64 bit machines */ #define MAXD 9223372036854775807L #define BASE 1000000000L #define FORMAT "%9.9u" #define BASE_DIG 9 #define INTSIZE 16L #define BIT "64bit" #endif #define MAXINPUT 1000 /*max length of any input rational */ #define POS 1L #define NEG -1L #ifndef TRUE #define TRUE 1L #endif #ifndef FALSE #define FALSE 0L #endif #define ONE 1L #define TWO 2L #define ZERO 0L /**********************************/ /* MACROS */ /* dependent on mp implementation */ /**********************************/ #define addint(a, b, c) *(c) = *(a) + *(b) #define changesign(a) (*(a) = - *(a)) #define copy(a, b) ((a)[0] = (b)[0]) #define decint(a, b) *(a) = *(a) - *(b) #define divint(a, b, c) *(c) = *(a) / *(b); *(a) = *(a) % *(b) #define exactdivint(a,b,c) *(c) = *(a) / *(b); #define mp_greater(a, b) (*(a) > *(b) ) #define itomp(in, a) *(a) = in #define linint(a, ka, b, kb) *(a) = *(a) * ka + *(b) * kb #define mulint(a, b, c) *(c) = *(a) * *(b) #define one(a) (*(a) == 1) #define negative(a) (*(a) < 0) #define normalize(a) (void) 0 #define positive(a) (*(a) > 0) #define sign(a) (*(a) < 0 ? NEG : POS) #define storesign(a, sa) (*(a) = labs(*(a)) * sa) #define subint(a, b, c) *(c) = *(a) - *(b) #define zero(a) (*(a) == 0) /* * convert between decimal and machine (longword digits). Notice lovely * implementation of ceiling function :-) */ #define DEC2DIG(d) ( (d) % BASE_DIG ? (d)/BASE_DIG+1 : (d)/BASE_DIG) #define DIG2DEC(d) ((d)*BASE_DIG) #ifndef OMIT_SIGNALS #include #include /* labs */ #include #define errcheck(s,e) if ((long)(e)==-1L){ perror(s);exit(1);} #endif #define CALLOC(n,s) xcalloc(n,s,__LINE__,__FILE__) /*************/ /* typedefs */ /*************/ typedef long lrs_mp[1]; /* type lrs_mp holds one long integer */ typedef long *lrs_mp_t; typedef long **lrs_mp_vector; typedef long ***lrs_mp_matrix; /*********************/ /*global variables */ /*********************/ extern long lrs_digits; /* max permitted no. of digits */ extern long lrs_record_digits; /* this is the biggest acheived so far. */ extern FILE *lrs_ifp; /* input file pointer */ extern FILE *lrs_ofp; /* output file pointer */ /*********************************************************/ /* Initialization and allocation procedures - must use! */ /******************************************************* */ long lrs_mp_init (long dec_digits, FILE * lrs_ifp, FILE * lrs_ofp); /* max number of decimal digits, fps */ #define lrs_alloc_mp(a) #define lrs_clear_mp(a) lrs_mp_t lrs_alloc_mp_t(); /* dynamic allocation of lrs_mp */ lrs_mp_vector lrs_alloc_mp_vector (long n); /* allocate lrs_mp_vector for n+1 lrs_mp numbers */ lrs_mp_matrix lrs_alloc_mp_matrix (long m, long n); /* allocate lrs_mp_matrix for m+1 x n+1 lrs_mp */ void lrs_clear_mp_vector (lrs_mp_vector a, long n); void lrs_clear_mp_matrix (lrs_mp_matrix a, long m, long n); /*********************************************************/ /* Core library functions - depend on mp implementation */ /******************************************************* */ void atomp (const char s[], lrs_mp a); /* convert string to lrs_mp integer */ long compare (lrs_mp a, lrs_mp b); /* a ? b and returns -1,0,1 for <,=,> */ void gcd (lrs_mp u, lrs_mp v); /* returns u=gcd(u,v) destroying v */ void mptodouble (lrs_mp a, double *x); /* convert lrs_mp to double */ long mptoi (lrs_mp a); /* convert lrs_mp to long integer */ #ifdef PLRS string pmp (char name[], lrs_mp a); /* print the long precision integer a */ string prat (char name[], lrs_mp Nt, lrs_mp Dt); /* reduce and print Nt/Dt */ char *cprat(char name[], lrs_mp Nt, lrs_mp Dt); /* C version of prat */ long plrs_readrat (lrs_mp Na, lrs_mp Da, const char * rat); /* take a rational number and convert to lrs_mp */ #else void pmp (char name[], lrs_mp a); /* print the long precision integer a */ void prat (char name[], lrs_mp Nt, lrs_mp Dt); /* reduce and print Nt/Dt */ #endif void readmp (lrs_mp a); /* read an integer and convert to lrs_mp */ long readrat (lrs_mp Na, lrs_mp Da); /* read a rational or int and convert to lrs_mp */ void reduce (lrs_mp Na, lrs_mp Da); /* reduces Na Da by gcd(Na,Da) */ /*********************************************************/ /* Standard arithmetic & misc. functions */ /* should be independent of mp implementation */ /******************************************************* */ void atoaa (const char in[], char num[], char den[]); /* convert rational string in to num/den strings */ long atos (char s[]); /* convert s to integer */ long comprod (lrs_mp Na, lrs_mp Nb, lrs_mp Nc, lrs_mp Nd); /* +1 if Na*Nb > Nc*Nd,-1 if Na*Nb > Nc*Nd else 0 */ void divrat (lrs_mp Na, lrs_mp Da, lrs_mp Nb, lrs_mp Db, lrs_mp Nc, lrs_mp Dc); /* computes Nc/Dc = (Na/Da) /( Nb/Db ) and reduce */ void getfactorial (lrs_mp factorial, long k); /* compute k factorial in lrs_mp */ void linrat (lrs_mp Na, lrs_mp Da, long ka, lrs_mp Nb, lrs_mp Db, long kb, lrs_mp Nc, lrs_mp Dc); void lcm (lrs_mp a, lrs_mp b); /* a = least common multiple of a, b; b is saved */ void mulrat (lrs_mp Na, lrs_mp Da, lrs_mp Nb, lrs_mp Db, lrs_mp Nc, lrs_mp Dc); /* computes Nc/Dc=(Na/Da)*(Nb/Db) and reduce */ long myrandom (long num, long nrange); /* return a random number in range 0..nrange-1 */ void notimpl (char s[]); /* bail out - help! */ void rattodouble (lrs_mp a, lrs_mp b, double *x); /* convert lrs_mp rational to double */ void reduceint (lrs_mp Na, lrs_mp Da); /* divide Na by Da and return it */ void reducearray (lrs_mp_vector p, long n); /* find gcd of p[0]..p[n-1] and divide through by */ void scalerat (lrs_mp Na, lrs_mp Da, long ka); /* scales rational by ka */ /**********************************/ /* Miscellaneous functions */ /******************************** */ void lrs_getdigits (long *a, long *b); /* send digit information to user */ void stringcpy (char *s, char *t); /* copy t to s pointer version */ void *calloc (); void *malloc (); void *xcalloc (long n, long s, long l, char *f); void lrs_default_digits_overflow (); /* end of lrs_mp.h (vertex enumeration using lexicographic reverse search) */ lrslib-062/setupnash2.c0000600001553200155320000000623412722006426012721 0ustar avis#include #include #include "lrslib.h" #define MAXLINE 1000 /* Usage: setupnash2 game game1.ine game2.ine */ /* Reads input file game containing */ /* m n */ /* A matrix (m by n rationals ) */ /* B matrix (m by n rationals ) */ /* Outputs: two files game1.ine game2.ine */ /* that are used by nash */ /* This program builds polytope form: */ /* Bx<=1, x>=0; Ay <=1, y>=0 */ /* MATRICES SHOULD HAVE POSITIVE ENTRIES */ int main (int argc, char *argv[]) { long m,n,i,j; long Anum[100][100], Bnum[100][100]; long Aden[100][100], Bden[100][100]; if ( argc < 3 ) { printf ("\nUsage: setupnash2 infile outfile1 outfile2\n"); return(FALSE); } if ((lrs_ifp = fopen (argv[1], "r")) == NULL) { printf ("\nBad input file name\n"); return (FALSE); } else printf ("\n*Input taken from file %s", argv[1]); if(fscanf(lrs_ifp,"%ld %ld",&m,&n)==EOF) { printf("\nInvalid m,n"); return(FALSE); } if( m > 1000 || n > 1000) { printf ("\nm=%ld n=%ld",m,n); printf ("\nBoth m and n must be at most 1000\n"); return(FALSE); } /* process input file */ /* read A matrix */ for (i=0;i using namespace std; #endif #include "gmp.h" /***********/ /* defines */ /***********/ /* this is number of longwords. Increasing this won't cost you that much since only variables other than the A matrix are allocated this size. Changing affects running time in small but not very predictable ways. */ #define MAX_DIGITS 255L /* this is in decimal digits, you pay in memory if you increase this, unless you override by a line with digits n before the begin line of your file. */ #define DEFAULT_DIGITS 100L #ifdef B32 /*32 bit machines */ #define FORMAT "%4.4u" #define MAXD 2147483647L #define BASE 10000L #define BASE_DIG 4 #define INTSIZE 8L #define BIT "32bit" #else /* 64 bit machines */ #define MAXD 9223372036854775807L #define BASE 1000000000L #define FORMAT "%9.9u" #define BASE_DIG 9 #define INTSIZE 16L #define BIT "64bit" #endif #define MAXINPUT 1000 /*max length of any input rational */ #define POS 1L #define NEG -1L #ifndef TRUE #define TRUE 1L #endif #ifndef FALSE #define FALSE 0L #endif #define ONE 1L #define TWO 2L #define ZERO 0L /**********************************/ /* MACROS */ /* dependent on mp implementation */ /**********************************/ #define addint(a, b, c) mpz_add((c),(a),(b)) #define changesign(a) mpz_neg((a),(a)) #define copy(a, b) mpz_set(a,b) #define decint(a, b) mpz_sub((a),(a),(b)) #define divint(a, b, c) mpz_tdiv_qr((c),(a),(a),(b)) #define exactdivint(a, b, c) mpz_divexact((c),(a),(b)) /*known there is no remainder */ #define getfactorial(a, b) mpz_fac_ui( (a), (b)) #define mp_greater(a, b) (mpz_cmp((a),(b))>0 ? ONE : ZERO) #define gcd(a,b) mpz_gcd((a),(a),(b)) #define itomp(in, a) mpz_set_si( (a) , (in) ) #define mptoi(a) mpz_get_si( (a) ) #define mptodouble(a) mpz_get_d ( (a) ) #define mulint(a, b, c) mpz_mul((c),(a),(b)) #define one(a) (mpz_cmp_si((a),ONE) == 0 ? ONE : ZERO) #define negative(a) (mpz_sgn(a) < 0 ? ONE : ZERO) #define normalize(a) (void) 0 #define positive(a) (mpz_sgn(a) > 0 ? ONE : ZERO) #define sign(a) (mpz_sgn(a) < 0 ? NEG : POS) #define subint(a, b, c) mpz_sub((c),(a),(b)) #define zero(a) (mpz_sgn(a) == 0 ? ONE : ZERO) /* * convert between decimal and machine (longword digits). Notice lovely * implementation of ceiling function :-) */ #define DEC2DIG(d) ( (d) % BASE_DIG ? (d)/BASE_DIG+1 : (d)/BASE_DIG) #define DIG2DEC(d) ((d)*BASE_DIG) #ifndef OMIT_SIGNALS #include #include /* labs */ #include #define errcheck(s,e) if ((long)(e)==-1L){ perror(s);exit(1);} #endif #define CALLOC(n,s) xcalloc(n,s,__LINE__,__FILE__) /*************/ /* typedefs */ /*************/ typedef mpz_t lrs_mp; /* type lrs_mp holds one long integer */ typedef mpz_t lrs_mp_t; /* for GMP same as lrs_mp for MP *lrs_mp */ typedef mpz_t *lrs_mp_vector; typedef mpz_t **lrs_mp_matrix; /*********************/ /*global variables */ /*********************/ extern long lrs_digits; /* max permitted no. of digits */ extern long lrs_record_digits; /* this is the biggest acheived so far. */ #include extern FILE *lrs_ifp; /* input file pointer */ extern FILE *lrs_ofp; /* output file pointer */ /*********************************************************/ /* Initialization and allocation procedures - must use! */ /******************************************************* */ long lrs_mp_init (long dec_digits, FILE * lrs_ifp, FILE * lrs_ofp); /* max number of decimal digits, fps */ #define lrs_alloc_mp(a) (mpz_init (a) ) #define lrs_clear_mp(a) (mpz_clear (a) ) lrs_mp_vector lrs_alloc_mp_vector (long n); /* allocate lrs_mp_vector for n+1 lrs_mp numbers */ lrs_mp_matrix lrs_alloc_mp_matrix (long m, long n); /* allocate lrs_mp_matrix for m+1 x n+1 lrs_mp */ void lrs_clear_mp_vector (lrs_mp_vector p, long n); /* clear lrs_mp_vector for n+1 lrs_mp numbers */ void lrs_clear_mp_matrix (lrs_mp_matrix p, long m, long n); /* clear m by n lrs_mp_matrix */ /*********************************************************/ /* Core library functions - depend on mp implementation */ /******************************************************* */ void atomp (const char s[], lrs_mp a); /* convert string to lrs_mp integer */ long compare (lrs_mp a, lrs_mp b); /* a ? b and returns -1,0,1 for <,=,> */ void linint (lrs_mp a, long ka, lrs_mp b, long kb); /* compute a*ka+b*kb --> a */ #ifdef PLRS string pmp (char name[], lrs_mp a); /* print the long precision integer a */ string prat (char name[], lrs_mp Nt, lrs_mp Dt); /* reduce and print Nt/Dt */ char *cprat(char name[], lrs_mp Nt, lrs_mp Dt); /* C version of prat */ long plrs_readrat (lrs_mp Na, lrs_mp Da, const char * rat); /* take a rational number and convert to lrs_mp */ #else void pmp (char name[], lrs_mp a); /* print the long precision integer a */ void prat (char name[], lrs_mp Nt, lrs_mp Dt); /* reduce and print Nt/Dt */ #endif void readmp (lrs_mp a); /* read an integer and convert to lrs_mp */ long readrat (lrs_mp Na, lrs_mp Da); /* read a rational or int and convert to lrs_mp */ void reduce (lrs_mp Na, lrs_mp Da); /* reduces Na Da by gcd(Na,Da) */ void storesign(lrs_mp Na, long sa); /* change sign of Na to sa=POS/NEG */ /*********************************************************/ /* Standard arithmetic & misc. functions */ /* should be independent of mp implementation */ /******************************************************* */ void atoaa (const char in[], char num[], char den[]); /* convert rational string in to num/den strings */ long atos (char s[]); /* convert s to integer */ long comprod (lrs_mp Na, lrs_mp Nb, lrs_mp Nc, lrs_mp Nd); /* +1 if Na*Nb > Nc*Nd,-1 if Na*Nb > Nc*Nd else 0 */ void divrat (lrs_mp Na, lrs_mp Da, lrs_mp Nb, lrs_mp Db, lrs_mp Nc, lrs_mp Dc); /* computes Nc/Dc = (Na/Da) /( Nb/Db ) and reduce */ void linrat (lrs_mp Na, lrs_mp Da, long ka, lrs_mp Nb, lrs_mp Db, long kb, lrs_mp Nc, lrs_mp Dc); void lcm (lrs_mp a, lrs_mp b); /* a = least common multiple of a, b; b is saved */ void mulrat (lrs_mp Na, lrs_mp Da, lrs_mp Nb, lrs_mp Db, lrs_mp Nc, lrs_mp Dc); /* computes Nc/Dc=(Na/Da)*(Nb/Db) and reduce */ long myrandom (long num, long nrange); /* return a random number in range 0..nrange-1 */ void notimpl (char s[]); /* bail out - help! */ void rattodouble (lrs_mp a, lrs_mp b, double *x); /* convert lrs_mp rational to double */ void reduceint (lrs_mp Na, lrs_mp Da); /* divide Na by Da and return it */ void reducearray (lrs_mp_vector p, long n); /* find gcd of p[0]..p[n-1] and divide through by */ void scalerat (lrs_mp Na, lrs_mp Da, long ka); /* scales rational by ka */ /**********************************/ /* Miscellaneous functions */ /******************************** */ void lrs_getdigits (long *a, long *b); /* send digit information to user */ void stringcpy (char *s, char *t); /* copy t to s pointer version */ #ifndef __STDC__ void *calloc (); void *malloc (); #endif void *xcalloc (long n, long s, long l, char *f); void lrs_default_digits_overflow (); /* end of lrs_mp.h (vertex enumeration using lexicographic reverse search) */ lrslib-062/lrsnashlib.h0000600001553200155320000000472312722006426012774 0ustar avis/*******************************************************/ /* lrsnashlib is a library of routines for computing */ /* computing all nash equilibria for two person games */ /* given by mxn payoff matrices A,B */ /* */ /* */ /* Main user callable function is */ /* lrs_solve_nash(game *g) */ /* */ /* Sample driver: lrsnash.c */ /* Derived from nash.c in lrslib-060 */ /* by Terje Lensberg, October 26, 2015: */ /*******************************************************/ /*************/ /* Games */ /*************/ #define MAXSTRAT 200 #define ROW 0 #define COL 1 typedef struct { long num; long den; } ratnum; typedef struct { long nstrats[2]; ratnum payoff[MAXSTRAT][MAXSTRAT][2]; // For auxiliary information void *aux; } game; typedef struct { char name[100]; int fwidth[MAXSTRAT][2]; // Column field widths (for output) } gInfo; int lrs_solve_nash(game * g); long nash2_main(lrs_dic * P1, lrs_dat * Q1, lrs_dic * P2orig, lrs_dat * Q2, long *numequilib, lrs_mp_vector output, long linindex[]); /* lrs driver, argv[2]= 2nd input file for nash equilibria */ long lrs_getfirstbasis2(lrs_dic ** D_p, lrs_dat * Q, lrs_dic * P2orig, lrs_mp_matrix * Lin, long no_output, long linindex[]); long getabasis2(lrs_dic * P, lrs_dat * Q, lrs_dic * P2orig, long order[], long linindex[]); long lrs_nashoutput(lrs_dat * Q, lrs_mp_vector output, long player); /* returns TRUE and prints output if not the origin */ int lrs_solve_nash_legacy (int argc, char *argv[]); void BuildRep(lrs_dic * P, lrs_dat * Q, const game * g, int p1, int p2); void FillFirstRow(lrs_dic * P, lrs_dat * Q, int n); void FillLinearityRow(lrs_dic * P, lrs_dat * Q, int m, int n); void FillConstraintRows(lrs_dic * P, lrs_dat * Q, const game * g, int p1, int p2, int firstRow); void FillNonnegativityRows(lrs_dic * P, lrs_dat * Q, int firstRow, int lastRow, int n); void printGame(game * g); void setFwidth(game *g, int len); void initFwidth(game *g); void updateFwidth(game *g, int col, int pos, char *str); long FirstTime; /* set this to true for every new game to be solved */ static long Debug_flag; static long Verbose_flag; lrslib-062/lrs.cpp0000600001553200155320000000025712722006425011763 0ustar avis#include #include #include "lrslib.h" #include int main (int argc, char *argv[]) { lrs_main(argc,argv); printf("\n"); return 0; } lrslib-062/README0000600001553200155320000003352212722006616011342 0ustar avisREADME file for lrslib : reverse search vertex enumeration program/CH package ----------------------------------------------------------------------------- Documentation is currently being maintained at the URL: http://cgm.cs.mcgill.ca/~avis/C/lrs.html ----------------------------------------------------------------------------- 2016.5.27 Several changes to mplrs: 1. New command-line options -countonly, -stopafter , -maxbuf . 2. Volume output. 3. Counting statistics on number of jobs, size of L, number of times empty changed to longs. 4. Performance improvements for problems with large outputs. ----------------------------------------------------------------------------- 2016.3.28 Changed default to 64-bit arithmetic when using lrslong and lrsmp arithmetic. For 32bit machines a -DB32 compile flag is now required for make allmp and for compiles of lrs1/mplrs1/plrs1. ----------------------------------------------------------------------------- 2016.1.18 countonly option follows the end line and suppresses output of vertices/rays/facets 2015.11.20 Current version is lrslib-061 Version 6.1 1. Contains lrsnash.c and lrsnashlib.c replacing nash.c with a library version and simpler interface that does not require setupnash. Big thanks to Terje Lensberg for this. nashdemo.c is a very basic template for setting up games and calling the library function lrs_solve_nash(game *g). To compile: % make lrsnash you get binaries lrsnash and nashdemo. % nashdemo just runs the demo, no parameters % lrsnash game finds the equlibrium for game, which is in setupnash format (recommended!) % lrsnash game1 game2 finds the equilibrium for the same game in legacy nash format The usersguide will be updated in due course 2. mplrs, plrs, lrs had some memory leaks and a few other issues that are fixed in this release (hopefully and thankfully) -------------------------------------------------------------------------------- 2015.10.10 memory leak in nash fixed 2015.10.3 OpenMPI has memory leaks in version 1.8.6. We tested mplrs with version 1.10.0 and found no leaks. 2015.9.16 Bug in nash caused by duplicated rows and columns fixed 2015.9.14 Fixed some lrs memory leaks caused by nonnegative and linearity output 2015.7.13 This a major revision of lrslib which contains mplrs.c, the MPI parallel version of lrs written by Skip Jordan and derived from plrs which was written by Gary Roumanis. Tests of mplrs on Tsubame2 with up to 1200 cores by Kazuki Yoshizoe show near linear speedups. lrs has some new options which are primarily for use by mplrs. To install mplrs see: http://cgm.cs.mcgill.ca/~avis/C/lrslib/USERGUIDE.html#mplrs You will need an MPI library and mpic++ installed. If you feel lucky try: % make mplrs Defalut usage: % mpirun -np p mplrs [ ] where p>3 is the number of core to be used. If you use openmpi the hosts available and slots on each host may be in /usr/local/etc/openmpi-default-hostfile Other options available are described in http://cgm.cs.mcgill.ca/~avis/C/lrslib/USERGUIDE.html#mplrs In particular plots can be made during the mplrs run of the job queue length, number of processors active etc. The makefile was modified by David Bremner. Please direct any complaints to bremner@unb.ca New option: maxcobases n After maxbases have been generated the cobases of the unexplored subtrees are reported. Each of these can be restarted as a separate lrs run with suitable mindepth option set ------------------------------------------------------------------------------ Older versions 2014.12.4 With gcc 4.8 plrs does not compile. Changed memory ordering (plrs.cpp line 168) from plrs_output* consume_list = output_list.exchange(0,boost::memory_order_consume); to plrs_output* consume_list = output_list.exchange(0,boost::memory_order_acquire); For more details see here: https://bitsharestalk.org/index.php?topic=15.msg14109#msg14109 To get plrsmp to compile I converted the length macro to a function call (conflict with str1.length in lrslib.c line 2792) 2014.12.2 From version 1.56.0 the boost library contains the Atomic library, so boost_atomic is no longer included in the lrs distribution. The instructions below for installing plrs are now simpler. ----------------------------------------------------------------------------- 2014.9.27 lrslib-050 released lrslib-050 contains a multi-thread version of lrs called plrs. The input/output files for plrs are the same as for lrs, however plrs is intended just for vertex or facet enumeration, and other functionality of lrs is not available. Usage is % plrs [ ] [ -mt ] [ -id ] -mt specifies the number parallel threads calling lrs (default 12) -id specifies the initial depth of the RS tree to generate before parallelization (default 5) Setup instructions for plrs. Use version 1.57.0 or later of the boost libary 1. Install boost library from http://www.boost.org/ into prefix/boost157 If you have root permission, prefix=/usr/include (or just do not specify it) However you can install boost locally wherever you like. Instructions for installing the library are located here http://www.boost.org/doc/libs/1_57_0/more/getting_started/unix-variants.html. Look at section 5 for an easy install. ***Important: make a note of the path given at the end of the install process **** 2. Update the makefile to include the paths you recorded in step 1. "make plrs" will make plrs with the gmp library (assuming the gmp library is already installed on that machine). "make plrsmp" will make plrs with the standard lrsmp arithmetic library and plrs1 with the long integer library. ------------------------------------------------------------------------------- 2013.5.22 modification to printcobasis so that the objective value is printed ------------------------------------------------------------------------------ 2012.9.27 initial release of multithread version of lrs called plrs that uses a wrapper written by Gary Roumanis. It needs the Boost libraries at http://www.boost.org plrs setup instructions are in the file readme_plrs I regret that I cannot give any additional support for the correct installation of boost libraries. Note: makefile has now changed so that make all gives gmp arithmetic library make allmp uses native mp arithmetic if gmp not available ----------------------------------------------------------------------------- 2010.5.7 incidence no longer resets printcobasis frequency to zero. If the printcobasis n option is used, the frequency will be n. Otherwise the default n=0 is used, and cobasis is printed only for lexmin bases. ----------------------------------------------------------------------------- 2010.4.26 bug when incidence and nonnegative options used together reported by Jochen Koenemannkfix was fixed. Bug in fourier reported by Laszlo David for input which is not full dimensional. I am temporarily removing fourier from distribution. ----------------------------------------------------------------------------- 2009.12.2 bug fix for redund caused problems in nash, reported by James Heather. Hopefully this new version solves both issues. ----------------------------------------------------------------------------- 2009.9.10 bug in redund reported by Alden Walker, when linearities are redundant, has been fixed. It is now under test, so please report any bugs! this bug also can cause printcobasis option to be incorrect for lrs under this condition. Problems still seem to arise in fourier from time to time, so please report any anomalities. ----------------------------------------------------------------------------- 2009.2.5 bug in fourier when using linearity option pointed out by Conor Meagher. Option disabled. 2nash driver uses two processors to run nash with input files in both orders. terminates when first process terminates. Thanks again to Conor for this. ----------------------------------------------------------------------------- 2007.6.6 printcobasis output line modified to give also in_det det= the determinant of the current basis, which is always integer. in_det= the determinant of the input rows corresponding to the current basis. lrs rescales input rows if they are rational or have a common divisor, so in these cases det and in_det are different. For V-representation, the volume will be the sum of the in_det of each basis, divided by the dimension (n-1)! ------------------------------------------------------------------- 2006.10.31 Modified code for restartpivots, to allow DB to do something. Estimator now provides estimate of running time=time*bases/tree nodes Triangulation printed if getvolume and verbose options used ----------------------------------------------------------------------------- 2006.10.11 Bug fix for nash, and inclusion of polytope version ----------------------------------------------------------------------------- available by using setupnash2 ----------------------------------------------------------------------------- 2006.3.1 incidence option now can be used compatibly with printcobasis n ----------------------------------------------------------------------------- 2006.2.14 Version 4.2b Bug fixed related to memory allocation for linearity reported by David Haws. If you use the linearity option, you should upgrade to this version. In the case of inconsistent linearities, the first inconsistent linearity is now reported before termination. ---------------------------------------------------------------------------- 2005.11.20 Version 4.2a Bug fixed relating to miscaled lp dual variables output when lponly set maxoutput n Option limits output lines to n: either rays+vertices, or facets ---------------------------------------------------------------------------- 2005.6.1 Version 4.2 with two new drivers: nash.c which computes all Nash equilibria of a two person non-cooperative game, and uses setupnash.c to create the input files. fourier.c which does Fourier elimination on an H-representation to project it to a lower dimensional space. Contributed by Tallman Nkgau. Other changes: lrs with the lponly option now provides dual variables for the optimum solution. Bug fix to mpdouble (reported by several users.) _____________________________________________________________________________ 2004.9.23 Version 4.2 updated with a patch from Bremner that has something to do with C++. 2003.10.24 Version 4.2 which appears here is a prerelease version, is not fully tested, and will be modified frequently. However you are more than welcome to try it - please report any bugs! Merci beaucoup. 2002.10.28 lrslib v.4.2 minor modifications to v.4.1 This is a pre-release for test purposes. Please report bugs! Nonnegative option was fixed to allow input where origin is not necessarily a vertex. A memory leak was fixed. A quiet mode is added - compile with LRS_QUIET set. ------------------------------------------------------------------------------ 2001.6.20 lrslib v.4.1 lpsolve like procedures to build input data added. Demo programs are: vedemo.c vertex enumeration chdemo.c facet enumeration lpdemo.c linear programs They can be build using: make demo Proper garbage collection implemented to clean up after each problem has been solved. See http://cgm.cs.mcgill.ca/~avis/C/lrslib/lrslib.html for documentation. ------------------------------------------------------------------------------- 2000.6.14 Various binaries are available in the directory binaries. Currently available: binaries/debian Debian Linux binaries/sun Sun Ultra Sparc binaries/win98 Windows 95/98 ------------------------------------------------------------------------------ 2000.6.14 lrslib v.4.0 which supercedes all previous versions of the programs lrs and redund. New Features: ------------ 1. Library version allows customization of the search function, access to the output as it is produced, and access to lrs from other programs. 2. Problems need no longer be in full dimension. This allows the input of equations, partial enumeration on facets, ridges etc. 3. Choice of arithmetic packages. Currently available are: lrsmp Extended precision arithmetic used in previous releases lrslong Fixed length long integer arithmetic. No overflow checking but 5-10 times faster. lrsgmp Requires preinstallation of GNU GMP package, available at http://www.swox.com/gmp/ The standard "make all" gives lrs/redund with lrsmp, and lrs1/redund1 with lrslong. 4. redund was completely rewritten and is faster than before. The previous version did not remove redundancy in the starting basis and should be discarded. Installation: ------------ 1. From website go to "Download" and retrieve the file lrslib-040.tar.gz 2. Unpack with: % gunzip lrslib-040.tar.gz % tar xvf lrslib-040.tar 3. Go to the new directory % cd lrslib-040 4. make binaries by typing % make all (most 32 bit unix machines) or % make all64 (64 bit integer machines such as DEC Alpha) If the make fails, it is usually due to timing and/or interrupt handling routines. In this case try: % make nosigs 5. If successful you should get binaries: lrs redund lrs1 redund1 6. Test the program lrs by typing: lrs cube.ine and you should get output resembling the file cube.ext 7. You will find additional test files in the directories: ine and ext 8. For GNU gmp library, edit the makefile to set the INCLUDE and LIB paths for the location of the gmp libarary, and type: %make gmp You should get binaries glrs and gredund lrslib-062/mit.ine0000600001553200155320000005040512722006425011745 0ustar avismit.ine begin 729 9 integer 72 0 0 -4 -4 -2 0 0 0 216 -2 -2 -10 -12 -6 0 0 0 192 -4 -2 -8 -8 -8 0 0 0 288 -12 6 8 -16 -8 0 0 0 96 -4 2 0 -4 -4 0 0 0 144 -5 1 -4 -6 -6 0 0 0 288 -8 -2 -10 -12 -12 0 0 0 96 -4 2 -4 -2 -4 0 0 0 240 -7 -1 -10 -8 -10 0 0 0 288 -8 -2 -12 -8 -12 0 0 0 288 -8 -2 -8 -16 -8 0 0 0 96 -4 2 -8 0 0 0 0 0 0 0 6 -8 4 8 0 0 0 0 4 6 -8 0 8 0 0 0 24 2 2 -4 -2 2 0 0 0 864 -24 -6 -40 -16 -32 0 0 0 24 0 0 -2 -2 2 0 0 0 0 4 10 -16 0 24 0 0 0 0 1 1 -4 0 12 0 0 0 0 0 6 -16 8 40 0 0 0 96 -4 2 -16 16 32 0 0 0 288 -8 -2 -16 0 0 0 0 0 96 -4 2 8 -8 8 0 0 0 288 -8 -2 8 -24 24 0 0 0 0 0 2 -8 8 24 0 0 0 96 -1 -1 -4 -8 8 0 0 0 576 -12 -6 -16 -40 16 0 0 0 192 -4 -2 0 -16 16 0 0 0 576 -8 -6 -24 -32 -16 0 0 0 576 -12 -6 -20 -32 -16 0 0 0 960 -16 -10 -40 -56 -16 0 0 0 160 0 0 -7 -7 -6 -1 0 -1 480 -4 -4 -21 -21 -18 -1 0 -3 192 -4 -4 -12 -4 -8 4 2 -4 640 -16 -8 -28 -28 -24 4 2 -4 640 -8 -6 -28 -28 -24 0 0 -4 192 -8 0 -8 -8 -8 4 2 0 384 -12 -4 -16 -16 -16 4 2 0 960 -20 -12 -42 -42 -36 4 2 -6 240 -9 -1 -11 -9 -10 3 2 -1 0 2 2 4 0 0 -4 -2 0 640 -22 -4 -24 -28 -24 8 4 -4 1920 -60 -20 -76 -84 -72 20 10 -12 1920 -32 -22 -84 -84 -72 4 2 -12 960 -28 -10 -44 -36 -40 8 4 -4 1152 -36 -12 -52 -44 -48 12 6 -4 720 -23 -7 -33 -27 -30 7 4 -3 1920 -48 -24 -88 -72 -80 12 6 -8 3456 -96 -40 -160 -128 -144 28 14 -16 576 -15 -7 -26 -20 -24 4 2 -4 384 -12 -4 -20 -12 -16 4 2 0 336 -11 -3 -17 -11 -14 3 2 -1 192 -8 0 -12 -4 -8 4 2 0 0 0 0 -4 4 0 4 2 0 0 0 2 -8 8 0 8 4 -2 192 -12 12 -28 12 -8 20 10 -4 192 -12 12 -20 4 -8 12 6 -2 1920 -48 -24 -92 -60 -80 12 6 -4 576 -15 -7 -28 -18 -24 4 2 -2 1536 -42 -18 -76 -40 -64 12 6 -8 384 -12 -4 -20 4 -16 4 2 -4 1920 -60 -20 -102 18 -76 14 10 -18 1920 -60 -20 -102 -46 -76 14 10 -2 672 -22 -6 -37 -17 -26 5 4 -1 640 -22 -4 -36 -16 -24 4 4 0 960 -40 0 -64 -16 -32 8 10 0 64 -4 4 -8 0 0 0 2 0 0 0 8 -6 2 4 -2 2 0 0 8 18 -8 0 8 -8 2 0 64 36 60 -28 -4 24 -28 6 -4 192 28 36 -20 -12 8 -20 2 -4 96 4 4 -5 -5 -2 -3 0 -1 64 4 6 -4 -4 0 -4 0 0 96 0 0 -5 -5 -2 -1 0 -1 16 0 0 -1 -1 0 0 0 0 192 -6 0 -8 12 -8 0 0 -4 192 -6 0 -8 -4 -8 0 0 0 960 -30 -8 -48 -20 -40 8 4 -4 960 -32 -8 -52 -20 -40 12 6 -4 960 -32 -8 -52 44 -40 12 6 -20 960 -30 -8 -48 12 -40 8 4 -12 576 -16 -6 -28 -12 -24 4 2 -4 208 -8 0 -8 -8 -8 4 2 -2 160 -7 1 -5 -7 -6 3 2 -1 192 -12 12 0 -8 -8 8 6 0 160 -9 7 -1 -7 -6 5 4 -1 640 -20 -4 -20 -28 -24 4 2 -4 96 -5 3 -2 -4 -4 2 2 0 192 -6 0 -4 -8 -8 0 0 0 480 -18 -2 -17 -21 -18 7 4 -3 528 -19 -3 -20 -22 -20 8 4 -4 960 -30 -4 -32 -36 -40 4 2 -4 1152 -36 -4 -32 -40 -48 0 2 -8 1152 -36 -12 -48 -40 -48 8 6 -8 192 -8 0 -4 -4 -8 4 2 -4 192 -6 0 0 -4 -8 0 0 -4 384 -12 -4 -8 -8 -16 4 2 -8 1920 -48 -24 -48 -40 -80 12 6 -40 384 -16 2 -20 -12 -16 4 4 0 576 -24 0 -32 -16 -24 8 6 0 432 -17 -1 -23 -13 -18 5 4 -1 576 -28 12 -36 -12 -24 12 10 -4 960 -52 36 -92 12 -40 52 26 -12 0 0 4 -14 10 4 6 6 -2 2688 -72 -32 -120 -104 -112 16 10 -8 0 0 8 -20 12 56 -12 2 -4 64 -4 4 -16 8 24 -4 2 0 192 -8 0 -16 0 0 0 2 0 64 8 16 -20 -4 24 -12 2 -4 0 2 4 -4 0 8 -4 0 0 288 -13 3 -12 -10 -12 6 4 -2 336 -14 2 -15 -11 -14 7 4 -3 96 3 1 -8 -6 4 0 0 -2 192 12 0 -20 -12 8 4 2 -4 0 4 8 -6 2 4 -2 2 -2 192 -12 12 -28 28 -8 20 10 -12 0 0 0 -4 16 0 4 2 -6 0 0 0 -4 40 0 4 2 -12 192 -8 0 -12 44 -8 4 2 -12 0 0 2 0 32 0 0 0 -8 192 -12 12 -20 300 -8 12 6 -76 960 -40 0 -64 208 -32 8 10 -56 2112 -72 -16 -120 120 -80 16 14 -48 512 -16 -4 -26 6 -20 2 2 -6 512 -16 -4 -26 -10 -20 2 2 -2 448 -16 0 -24 -8 -16 0 2 0 448 24 8 -68 -20 56 12 6 -20 192 8 2 -24 -8 16 4 2 -8 192 16 0 -36 -4 24 12 6 -12 448 -13 -5 -23 -13 -18 3 2 -1 64 -2 0 -4 0 0 0 0 0 0 2 -2 -4 4 0 4 2 -2 0 0 0 -22 22 4 14 10 0 0 0 0 -22 82 4 14 10 -30 0 0 4 -14 34 4 6 6 -14 480 -21 3 -20 -18 -20 8 6 -2 480 -19 1 -16 -18 -20 4 4 -2 1344 -52 0 -44 -52 -56 12 10 -4 576 -22 0 -12 -24 -24 4 4 0 768 -28 -4 -24 -32 -32 8 6 0 768 -28 -4 40 -32 -32 -8 6 0 576 -22 0 20 -24 -24 -4 4 0 320 -12 0 10 -14 -12 -2 2 -2 160 -7 1 3 -7 -6 1 2 -1 0 2 2 -12 8 16 4 2 -4 0 22 14 -52 16 80 12 6 -16 192 32 16 -68 -4 88 12 6 -20 128 18 10 -36 -8 48 4 2 -8 64 8 8 -20 -4 24 -4 2 -4 0 4 2 -4 4 8 0 0 -4 0 4 8 -14 2 20 -4 2 -2 0 1 7 -11 3 14 -3 2 -1 0 0 8 -12 4 16 -4 2 0 0 4 12 -20 4 32 -8 2 0 0 0 24 -44 20 64 -16 6 0 0 0 4 -10 6 12 -2 2 -2 0 14 22 -44 8 64 -12 6 -8 0 6 10 -18 2 28 -6 2 -2 192 28 36 -52 -12 72 -36 2 -12 96 3 3 -8 -6 4 -4 0 -2 0 1 1 -2 0 4 0 0 0 0 0 12 -10 6 12 -6 2 -2 48 0 0 -3 -3 2 -1 0 -1 192 16 24 -44 -12 72 -28 2 -12 0 4 12 -14 2 20 -8 2 -2 0 1 9 -11 3 14 -5 2 -1 192 32 40 -68 -4 88 -36 6 -20 16 1 1 -3 -1 6 -1 0 -1 64 4 6 -12 -4 24 -8 0 -4 0 4 12 -20 4 40 -12 2 -4 0 0 10 -16 8 24 -8 2 0 192 -12 12 -40 16 32 -8 6 0 0 0 24 -34 14 44 -14 6 -2 64 -4 4 -16 8 16 0 2 0 0 0 8 -20 12 32 0 2 0 0 0 4 -14 10 20 2 2 -2 0 0 2 -2 2 4 -2 0 0 0 0 24 -44 20 72 -20 6 -4 0 0 24 -60 36 104 -4 6 -4 0 6 10 -16 4 24 -8 2 -4 0 1 1 -1 1 2 -1 0 -1 0 6 18 -16 4 24 -12 2 -4 384 0 -2 -20 -20 -8 0 0 -4 384 -12 -4 -12 -20 -8 4 2 -4 640 -16 -8 -20 -36 -8 4 2 -4 960 -20 -12 -32 -56 -8 4 2 -4 96 -1 -1 -4 -6 0 0 0 0 1280 -6 -14 -60 -80 0 -4 2 0 1024 -2 -10 -52 -64 0 -4 2 0 1024 -12 -12 -48 -56 -16 0 2 -8 384 8 -4 -24 -24 0 0 2 0 256 4 -4 -16 -16 0 2 2 0 1024 0 -16 -56 -56 -16 8 6 -8 960 0 -16 -52 -52 -16 12 6 -8 6400 -96 -72 -280 -280 -240 8 6 -40 960 -16 -12 -42 -42 -36 2 2 -6 3840 -48 -40 -168 -168 -144 0 2 -24 4032 -72 -48 -178 -178 -148 10 6 -26 1152 -20 -14 -52 -52 -40 4 2 -8 0 2 -2 0 0 0 2 2 0 192 -6 0 12 -8 -8 -4 0 0 192 -4 -4 -8 -8 -8 4 2 0 6912 -176 -88 -288 -288 -288 40 26 0 1920 -48 -24 -80 -80 -80 10 6 0 576 -12 -10 -24 -24 -24 6 4 0 5760 -168 -64 -264 -216 -240 48 26 -24 960 -48 24 -36 -36 -40 20 18 -4 960 -44 12 -28 -36 -40 12 14 -4 192 -12 12 4 -4 -8 4 6 -4 960 -56 48 -20 -36 -40 28 26 -4 640 -20 0 -4 -28 -24 -2 0 -4 576 -24 0 -28 -12 -24 4 6 -4 0 0 0 4 8 0 -2 0 -4 192 -6 0 -4 12 -8 -4 0 -6 960 -30 0 -32 -12 -40 -8 0 -6 960 -32 0 -36 -20 -40 -4 2 -4 640 -20 0 -28 -4 -24 -4 0 -2 0 0 20 -4 12 8 -12 0 -2 16 0 0 -1 -1 6 -1 0 -1 720 -23 -3 -25 -27 -30 3 2 -3 624 -21 -1 -27 -17 -26 1 2 -1 768 -26 0 -32 -20 -32 0 2 0 1536 -62 0 -80 -44 -64 16 14 0 1344 -42 -12 -64 -44 -56 12 6 -4 2880 -90 -28 -128 -108 -120 28 14 -12 960 -30 0 -12 -32 -40 -6 0 -8 768 -30 0 -24 -28 -32 6 6 -4 576 -24 0 -20 -20 -24 8 6 -4 576 -24 0 -15 -23 -22 9 6 -5 192 -8 0 12 -4 -8 -4 2 -4 0 0 2 -4 4 8 0 0 0 0 0 0 -8 8 8 4 2 0 192 -12 12 -76 76 88 20 10 -12 0 0 6 -28 28 40 8 4 -6 576 -15 -7 -29 -15 -22 3 2 -1 448 -13 -5 -25 -7 -14 3 2 -1 512 -14 -6 -26 -14 -20 4 2 -2 448 -13 -5 -23 -5 -18 3 2 -3 384 -6 -4 -16 -20 -8 0 0 -4 0 6 8 -16 4 40 -4 0 -4 0 8 8 -24 8 48 0 2 -8 96 -1 -1 0 -6 36 -4 0 -6 192 -4 -4 12 -12 72 -4 2 -12 0 0 0 -6 6 4 2 2 0 384 -12 -4 -22 -6 -12 2 2 0 1216 -31 -15 -59 -37 -50 7 4 -3 960 -20 -16 -42 -42 -36 10 6 -6 2304 -72 -20 -112 -64 -96 16 10 -8 1344 -42 -12 -64 -36 -56 8 6 -6 1152 -36 -12 -56 -32 -48 8 6 -4 384 -12 -4 -16 -8 -16 0 2 0 192 -6 0 -4 0 -8 -4 0 0 912 -26 -10 -43 -31 -38 5 4 -1 960 -27 -11 -46 -32 -40 6 4 -2 1344 -39 -15 -66 -44 -56 10 6 -4 4224 -120 -48 -200 -152 -176 32 18 -16 4992 -132 -60 -240 -168 -208 32 18 -16 3456 -96 -40 -168 -104 -144 24 14 -16 2688 -76 -28 -128 -72 -112 16 10 -16 960 -29 -9 -46 -28 -40 6 4 -4 0 2 -2 12 0 0 -4 2 0 960 -20 -20 134 -42 -36 -38 10 -6 1920 -60 -20 148 -84 -72 -36 10 -12 1920 -68 -12 100 -84 -72 -20 14 -12 320 -12 0 -6 -14 -12 2 2 -2 960 -40 0 -26 -42 -36 18 10 -6 576 -12 -8 -22 -30 -12 2 2 -6 576 -12 -10 -8 -24 -24 -2 4 0 2304 -56 -32 -80 -96 -96 8 10 0 960 -20 -20 -38 -42 -36 20 10 -6 192 -6 0 -4 -4 -8 -2 0 -2 0 0 0 1 1 2 -1 0 -1 192 -8 0 -4 28 -8 -4 2 -12 192 -8 0 -4 60 -8 -4 2 -20 0 0 2 -4 4 16 -4 0 0 1792 -28 -20 -80 -88 -48 0 2 -16 384 -3 -3 -18 -20 -8 -2 0 -4 8064 -204 -100 -384 -264 -336 48 26 -24 1920 -48 -24 -88 -56 -80 8 6 -8 384 -12 -4 -16 8 -16 0 2 -8 192 -12 12 -12 -4 -8 4 6 0 192 -12 12 -12 12 -8 4 6 -8 192 -12 12 4 60 -8 -12 6 -28 0 0 0 -8 8 16 0 2 0 192 -4 -2 -4 -4 -8 0 0 -4 192 -4 -4 16 -12 0 -4 2 0 768 -20 -12 40 -48 0 -8 6 0 512 -14 -6 20 -32 0 -4 2 0 64 -2 0 0 -4 0 0 0 0 1344 -60 12 -68 -44 -56 20 18 -4 2112 -92 12 -116 -60 -88 28 26 -4 960 -44 12 -52 -28 -40 12 14 0 1920 -48 -24 -72 -56 -80 8 6 -24 96 -5 3 -4 -2 -4 0 2 0 0 0 2 -8 24 0 8 4 -10 0 4 4 -16 8 112 -16 2 -8 384 -12 -4 -24 0 0 0 2 0 0 2 -2 -4 16 0 4 2 -8 64 -4 4 -20 20 24 4 2 -2 128 -6 2 -20 16 16 4 2 -2 192 -8 0 -20 12 8 4 2 0 96 -4 0 -14 10 8 4 2 -2 448 -20 4 -76 60 56 20 10 -12 192 -4 -2 -4 -12 8 0 0 -4 384 -12 -4 0 -24 16 4 2 -8 192 -8 0 4 -12 8 4 2 -4 192 12 20 -20 -12 8 -12 2 -4 192 12 4 -20 -12 8 -4 2 -4 192 76 20 -84 -12 72 -4 18 -12 64 20 12 -28 -4 24 -4 6 -4 64 20 44 -28 -4 24 -20 6 -4 0 12 36 -22 2 20 -14 6 -2 0 4 10 -8 0 8 -4 2 0 0 4 6 -8 0 8 -2 2 0 0 4 0 -6 2 4 2 2 -2 0 0 4 -6 2 4 0 2 0 192 4 2 -12 -12 0 -4 0 0 0 8 8 -16 0 24 -4 2 0 64 20 4 -28 -4 24 4 6 -4 0 20 4 -24 0 24 4 6 0 0 8 0 -8 0 8 4 2 0 0 5 -1 -6 2 4 4 2 -2 64 24 0 -28 -4 24 12 6 -4 96 46 -10 -42 -6 36 18 14 -6 32 18 -6 -14 -2 12 10 6 -2 192 112 -40 -84 -12 72 76 38 -12 0 6 -2 -4 0 4 4 2 0 0 0 0 0 16 0 0 2 -8 192 -12 12 4 28 -8 4 6 -20 960 -40 0 38 -42 -36 2 10 -6 960 -40 8 -20 -36 -40 4 10 -4 192 -8 2 0 -8 -8 0 2 0 384 -18 6 -4 -16 -16 4 6 0 192 -8 0 8 -8 -8 0 2 0 320 -20 20 10 -14 -12 14 10 -2 576 -8 -6 -20 -36 24 -4 0 -12 96 -1 -1 -4 -6 4 0 0 -2 192 16 -8 -20 -12 8 12 6 -4 960 12 -20 -60 -52 -8 20 10 -12 576 -12 -8 -26 -26 -20 4 2 -4 1920 -48 -24 -68 -100 -40 12 6 -20 640 -16 -8 -32 -16 -24 4 2 0 384 -12 -4 -24 0 -8 4 2 0 192 -8 0 -36 44 24 12 6 -12 192 -8 0 -36 76 24 12 6 -20 128 -6 2 -20 40 16 4 2 -8 64 -4 4 -20 60 24 4 2 -12 0 0 2 -4 20 8 0 0 -4 624 -21 -5 -34 -16 -24 4 4 0 400 -12 -4 -20 -12 -16 2 2 0 192 1 -1 -10 -12 0 -2 0 0 640 -16 -8 -8 -40 48 0 2 -16 1920 -48 -24 -24 -120 80 8 6 -40 96 8 8 -22 -6 36 -10 2 -6 0 8 8 -16 0 32 -8 2 0 2112 -72 -16 -120 -40 -80 16 14 -8 3456 -100 -36 -160 -120 -144 24 14 -16 1152 -36 -12 -59 -27 -46 7 6 -3 1920 -48 -24 -96 -32 -64 8 6 0 640 -16 -8 -32 0 0 0 2 0 240 -2 -2 -11 -15 10 -3 0 -5 960 -20 -12 -32 -56 16 0 2 -16 1920 -48 -24 216 -80 -80 -64 6 0 384 -12 -4 32 -16 -16 -8 2 0 320 -10 0 18 -14 -12 -6 0 -2 192 -6 0 20 -4 -8 -8 0 -4 320 -10 0 -14 18 -12 -2 0 -6 32 -1 1 -4 6 20 -4 0 -2 192 -8 0 -16 32 0 0 2 -8 192 -8 0 -20 28 8 4 2 -4 0 0 0 -8 28 8 4 2 -8 0 0 0 -6 34 4 2 2 -10 384 -12 -4 -22 2 -12 2 2 -2 192 -12 12 28 -12 8 12 6 -4 576 -24 0 -8 -24 -16 8 6 -8 192 -8 0 -2 -10 -4 4 2 -2 768 0 -8 -40 -40 -16 0 2 -8 3840 0 -56 -200 -200 -80 24 18 -40 384 0 -6 -20 -20 -8 4 2 -4 768 -12 -10 -36 -36 -24 4 2 -6 192 -8 0 -20 28 88 -12 2 -4 64 -4 4 -20 52 200 -28 2 -12 0 0 8 -24 72 336 -48 2 -24 0 1 1 -2 4 40 -6 0 -4 0 0 2 -4 12 48 -8 0 -4 1792 -4 -20 -88 -112 0 -8 6 0 768 4 -12 -40 -48 0 0 6 0 192 0 -4 -10 -10 -4 2 2 -2 96 -5 3 1 -5 -2 3 2 -1 96 6 -2 -10 -6 4 2 2 -2 528 9 -11 -35 -29 -2 9 6 -7 480 38 -18 -50 -30 20 22 14 -10 640 12 -12 -40 -40 0 8 6 0 48 -3 3 -14 8 24 -4 2 0 384 2 -6 -20 -24 144 4 2 -24 192 -4 -2 -6 -10 -4 0 0 -2 1344 -24 -16 -56 -72 -16 0 2 -16 2880 -60 -36 -112 -152 -56 12 6 -28 1344 -24 -16 -56 -72 -24 4 2 -12 384 -6 -6 -12 -24 0 0 2 0 64 -4 4 4 -4 0 4 2 0 384 -12 -4 48 -8 -16 -16 2 -8 192 -6 0 12 -4 -8 -6 0 -4 576 -18 0 -23 -3 -22 -5 0 -3 0 0 0 -22 194 4 14 10 -58 64 -4 4 -8 96 0 0 2 -24 0 0 10 -2 154 4 -6 0 -38 384 -12 -4 16 -24 80 0 2 -16 64 -2 0 8 -4 24 0 0 -4 384 -12 -4 48 -24 144 0 2 -24 192 -8 0 4 -12 0 4 2 0 384 -12 -4 16 -24 16 0 2 -8 0 0 6 1 9 2 -5 0 -3 0 0 2 4 16 0 -4 0 -6 1344 -56 8 -60 -44 -56 12 14 -4 192 -4 -2 32 -4 -8 -12 0 -4 1920 -48 -24 296 -40 -80 -104 6 -40 192 -4 -2 24 -8 -8 -8 0 0 960 -20 -10 114 -42 -36 -38 0 -6 640 -16 -8 68 -28 -24 -20 2 -4 0 10 2 -12 0 160 -20 2 0 0 3 -1 -6 4 40 -2 2 -4 0 8 -8 -24 24 80 8 10 -8 0 116 -36 -80 0 80 64 38 0 0 136 -56 -120 40 80 104 58 -40 0 14 -6 -12 4 8 12 6 -4 0 10 -6 -12 8 16 12 6 -8 192 8 -8 -20 -4 88 12 6 -20 960 0 -16 -52 -52 248 12 6 -52 0 0 2 -4 20 80 -12 0 -4 64 -2 0 -4 8 24 -4 0 0 1920 -40 -20 -68 -84 -72 -2 0 -12 576 -12 -6 -19 -23 -22 -1 0 -5 1920 -48 -24 -72 -72 -80 4 6 -8 192 -4 -4 4 -4 -8 -4 2 -4 1920 -68 -12 -60 -84 -72 20 14 -12 0 1 1 -2 4 24 -4 0 -4 0 0 2 -4 12 32 -6 0 -4 64 -4 4 -20 52 72 -12 2 -12 192 -8 0 -20 28 24 -4 2 -4 448 -16 0 -36 28 56 -12 2 -4 288 -8 -4 -2 -18 12 2 2 -6 192 -4 -4 12 -12 8 -4 2 -4 192 -12 12 14 -10 -4 10 6 -2 192 -8 0 36 -12 72 4 2 -12 1344 -24 -16 -36 -84 120 -12 2 -36 960 -20 -12 -20 -60 72 -4 2 -24 640 -16 -8 -20 -36 0 4 2 -8 576 -12 -8 -18 -34 -4 2 2 -2 192 -4 -4 -4 -12 0 4 2 0 192 -4 -4 -6 -10 -4 4 2 -2 192 -4 -4 36 -4 -8 -12 2 -4 192 -4 -4 28 -8 -8 -8 2 0 192 -4 -4 4 -8 -8 -2 2 0 960 -20 -20 22 -42 -36 -10 10 -6 384 -12 -4 16 -8 -16 -8 2 -8 576 -12 -6 0 -16 -24 -10 0 -8 1920 -48 -24 -24 -56 -80 -16 6 -24 1920 -48 -24 72 -40 -80 -48 6 -40 192 -4 -2 8 -4 -8 -6 0 -4 576 -12 -6 -15 -23 -22 -3 0 -5 0 0 0 -8 24 80 -8 2 -8 64 -4 4 -20 20 72 -12 2 -4 192 -8 0 -20 12 24 -4 2 0 192 -6 0 -12 8 8 -4 0 0 0 0 0 -8 24 16 0 2 -8 0 0 2 -4 20 16 -4 0 -4 0 0 2 -4 12 24 -4 0 -4 96 -4 0 -14 10 20 -2 2 -2 64 -4 4 -20 52 40 -4 2 -12 192 -12 12 -60 188 152 -28 6 -36 192 -4 -2 -4 -12 0 0 0 0 0 16 24 -52 12 120 -12 2 -12 0 0 14 -18 6 20 -6 4 0 576 -8 -8 -20 -36 24 -4 2 -12 640 -16 -8 24 -40 48 -8 2 -16 192 -6 0 8 -12 8 0 0 -4 640 -20 -4 16 -40 48 0 2 -16 960 -20 -12 -4 -60 168 -12 2 -36 640 -16 -8 24 -40 176 -8 2 -32 640 -16 -8 56 -40 240 -8 2 -40 960 -20 -12 28 -60 296 -20 2 -52 192 -4 -2 12 -12 72 -4 0 -12 1920 -48 -24 156 -100 -40 -44 6 -20 384 -12 -4 20 -20 -8 -4 2 -4 192 -8 0 6 -10 -4 2 2 -2 0 0 0 8 4 0 -4 0 -2 192 -12 12 4 12 -8 -12 6 -4 192 -8 0 -4 4 -8 -4 2 0 192 -6 0 -4 20 -8 -4 0 -8 0 3 11 -9 1 10 -5 2 -1 576 -12 -6 -16 -16 -24 -2 0 -8 1920 -48 -24 -48 -112 32 8 6 -32 640 -16 -8 -8 -40 16 0 2 -8 1152 -12 -12 -52 -60 -24 -4 2 -12 2880 -60 -36 -112 -152 -48 8 6 -32 0 8 16 -36 12 120 -28 2 -12 0 2 4 -8 4 40 -8 0 -4 0 0 4 -16 16 48 -8 2 -4 0 4 4 -16 8 48 -8 2 -8 128 -6 2 -2 -6 -4 2 2 0 160 -7 1 1 -9 -2 3 2 -1 288 -8 -4 -2 -18 0 2 2 0 768 -20 -12 8 -48 0 0 6 0 0 8 0 0 0 96 -16 2 0 192 4 -4 12 -12 72 -20 2 -12 0 6 -2 12 0 48 -12 2 0 0 12 -4 -8 0 96 -8 6 0 192 16 -16 -12 -12 72 4 14 -12 0 14 -10 -4 0 48 4 10 0 640 -16 -8 32 -40 0 -8 2 0 1920 -48 -24 104 -120 80 -24 6 -40 1920 -48 -24 116 -108 8 -36 6 -28 640 -16 -8 24 -40 16 -8 2 -8 192 -4 -2 12 -12 8 -4 0 -4 192 -4 -2 13 -11 2 -5 0 -3 576 -12 -6 28 -36 16 -12 0 -8 192 -4 -2 12 -12 0 -4 0 0 192 -4 -2 18 -10 -4 -6 0 -2 384 -12 -4 16 -24 0 0 2 0 384 -12 -4 0 -24 0 4 2 0 1920 -48 -24 -56 -56 -80 -8 6 -8 0 20 4 -24 0 288 -40 6 0 0 2 0 4 0 8 -4 0 0 0 10 -6 -4 0 16 4 6 0 0 14 -6 -8 0 8 8 6 0 0 20 -4 -16 0 16 8 6 0 0 8 2 -8 0 8 0 2 0 0 32 0 -32 0 32 8 10 0 48 19 -1 -21 -3 18 5 6 -3 1152 -18 -14 -50 -62 -20 2 2 -10 0 2 -2 -2 2 4 2 2 -2 192 -4 -2 4 -12 40 -4 0 -8 192 -4 -2 4 -12 24 -4 0 -6 128 -3 -1 2 -8 16 -2 0 -4 64 -4 4 -20 20 40 -4 2 -4 192 -12 12 -52 36 104 -20 6 -4 0 0 6 -12 20 40 -8 0 -4 384 -12 -4 -24 32 64 -8 2 0 0 0 0 -6 18 4 2 2 -6 0 0 0 -8 20 8 4 2 -6 0 0 8 -24 40 208 -32 2 -16 0 0 8 -24 40 144 -24 2 -16 0 0 8 -24 40 112 -16 2 -16 192 -8 0 -20 60 152 -20 2 -4 64 -4 4 -20 84 264 -36 2 -12 960 -16 -12 -26 -42 -36 -6 2 -6 960 -20 -12 -34 -42 -36 0 2 -6 960 -20 -16 -18 -42 -36 -2 6 -6 576 -8 -8 -20 -36 88 -4 2 -20 192 132 -60 -84 -12 72 76 58 -12 192 20 -12 -20 -12 8 12 10 -4 96 3 -3 -6 -6 0 2 2 0 768 16 -16 -48 -48 0 8 10 0 96 -1 -1 0 -6 20 -4 0 -4 0 3 5 -10 8 72 -14 0 -8 0 4 12 -32 24 176 -32 2 -16 192 -12 12 -60 60 152 -28 6 -4 192 -12 12 -76 76 184 -28 10 -12 0 0 0 0 48 0 0 2 -16 576 -12 -8 -12 -36 24 0 2 -12 192 -4 -4 -4 -12 8 4 2 -4 0 0 12 -32 32 96 -16 2 -8 0 24 -8 -24 8 16 16 10 -8 0 52 -28 -64 40 80 48 30 -40 192 -12 12 20 156 -8 -28 6 -60 192 -12 12 20 380 -8 -28 6 -116 0 0 2 4 40 0 -4 0 -12 0 0 6 8 24 0 -8 0 -10 0 0 8 -36 28 152 -20 6 -4 32 -2 2 -12 8 32 -4 2 0 0 0 2 4 4 0 -4 0 0 0 0 6 8 8 0 -8 0 -2 0 0 6 1 5 2 -5 0 -1 1024 -16 -12 -48 -48 -32 4 2 -8 1248 -23 -15 -55 -57 -42 3 2 -9 1344 -24 -16 -58 -66 -36 2 2 -12 1056 -21 -13 -45 -51 -30 3 2 -9 960 -20 -12 -40 -48 -24 4 2 -8 0 0 8 -24 24 112 -20 2 -8 0 4 12 -32 24 144 -24 2 -16 0 0 8 -24 24 80 -12 2 -8 0 8 0 -8 24 80 -8 2 -24 0 6 -2 -4 16 48 4 2 -16 0 14 -10 -20 16 48 20 10 -16 0 20 -12 -32 24 80 16 14 -24 0 14 -2 -20 8 16 12 6 -8 0 12 -4 -16 8 16 8 6 -8 0 2 0 0 4 8 0 0 -4 192 4 -4 -12 -4 88 4 2 -20 96 1 -3 -4 -6 36 0 2 -6 192 4 -12 -4 -12 72 12 10 -12 192 -4 -4 22 -10 -4 -6 2 -2 1344 -28 -16 -54 -62 -44 2 2 -10 2688 -36 -28 -120 -144 -32 -8 2 -32 640 -8 -6 -28 -36 0 -4 0 -8 112 -1 -1 -5 -7 2 -1 0 -1 48 2 2 -7 -3 18 -5 0 -3 0 1 1 -2 0 8 -2 0 0 0 12 20 -48 24 240 -48 2 -24 4864 -80 -56 -216 -216 -176 8 6 -32 2304 -32 -24 -104 -104 -80 0 2 -16 1152 -24 -14 -44 -60 -24 4 2 -12 384 -6 -4 -12 -24 24 -4 0 -8 1728 -28 -20 -64 -104 48 -8 2 -32 1344 -24 -16 -36 -84 88 -12 2 -28 192 8 -8 -12 -12 8 4 6 -4 192 48 -32 -28 -12 72 20 30 -12 1920 -48 -24 -44 -108 8 4 6 -28 960 -20 -12 -20 -60 40 -4 2 -16 1344 -28 -16 -28 -84 40 -4 2 -20 768 -14 -8 -20 -48 24 -4 0 -12 2112 -32 -24 -68 -132 152 -20 2 -52 192 -4 -2 -3 -11 2 -1 0 -3 576 -12 -6 -4 -36 16 -4 0 -8 192 -4 -2 4 -12 16 -4 0 -4 1728 -36 -18 -59 -75 -62 -3 0 -13 192 4 -4 -12 -12 0 4 2 0 96 -1 -1 -3 -5 -2 -1 0 -1 192 0 -2 -4 -12 0 -4 0 0 2496 -36 -28 -96 -152 16 -8 2 -16 960 -12 -12 -36 -60 8 -4 2 -4 1920 -18 -26 -76 -120 0 -4 6 0 2688 -42 -34 -116 -144 -48 4 6 -24 864 -17 -11 -37 -43 -22 3 2 -7 2880 -60 -36 -118 -142 -76 10 6 -26 192 -6 0 -10 10 -4 -2 0 -2 192 -6 0 -10 2 -4 -2 0 0 0 0 2 -2 26 4 -2 0 -6 192 -12 12 -40 240 32 -8 6 -56 480 -7 -5 -12 -30 52 -8 0 -14 0 0 4 -16 16 80 -12 2 -4 0 4 6 -12 4 48 -12 0 -4 1152 -36 -12 -60 -20 -40 4 6 -4 0 2 8 -16 12 56 -12 0 -4 0 10 16 -32 12 120 -28 0 -12 96 9 -1 16 -6 36 -20 0 -6 96 1 -1 0 -6 4 -4 0 -2 416 -10 -6 -12 -24 16 4 2 -8 192 -4 -4 6 -10 -4 -2 2 -2 192 -4 -4 8 -12 0 -2 2 0 0 4 -2 -3 1 2 3 2 -1 960 -12 -12 -44 -52 -16 4 2 -8 576 -8 -8 -28 -28 -16 4 2 -4 0 3 5 -9 1 10 -1 2 -1 0 3 7 -9 1 10 -3 2 -1 1792 -16 -24 -88 -88 -48 8 6 -16 864 -15 -11 -39 -41 -26 3 2 -7 672 -11 -9 -31 -33 -18 3 2 -5 960 -16 -12 -42 -50 -20 2 2 -8 3200 -80 -40 -154 -90 -132 18 10 -6 1920 -48 -24 -94 -46 -76 10 6 -2 1056 -12 -12 -50 -58 -4 -2 2 -14 960 -12 -12 -44 -52 -8 4 2 -12 0 0 6 -20 20 56 -8 2 -6 192 8 8 -24 -8 16 -8 2 -8 0 3 1 -2 4 8 -2 0 -4 0 11 1 -2 20 40 -6 0 -20 0 0 18 -3 13 10 -13 0 -3 400 -6 -4 -16 -20 -8 -2 0 -4 3648 -64 -40 -144 -176 -96 -8 2 -32 624 -8 -6 -26 -34 -4 -4 0 -8 576 0 -6 -28 -36 0 -4 2 0 4608 -60 -52 -200 -240 -96 -8 6 -48 1152 -18 -14 -48 -60 -24 0 2 -12 1920 -34 -22 -80 -92 -56 0 2 -16 1728 -36 -22 -74 -82 -52 8 4 -14 1344 -28 -20 -40 -80 96 8 6 -32 576 -12 -8 -12 -36 56 0 2 -16 528 -13 -7 -16 -30 4 4 2 -8 192 -12 12 -48 40 80 -16 6 -8 192 -12 12 -48 200 80 -16 6 -48 0 0 6 -12 52 40 -8 0 -12 0 0 2 -3 21 10 -3 0 -5 256 -8 0 -12 12 -8 -2 0 -4 192 -6 0 -7 13 -6 -3 0 -5 512 -16 0 -24 0 -16 -4 0 -2 512 -14 -6 -4 -32 0 2 2 0 640 -16 -8 -8 -40 0 2 2 0 960 -20 -14 -20 -60 0 2 4 0 960 -20 -12 -4 -60 72 -12 2 -20 960 -20 -12 -4 -60 104 -12 2 -28 192 -12 12 20 36 -8 -28 6 0 0 0 2 -3 5 10 -3 0 -1 192 28 -4 -44 -4 24 20 10 -12 64 8 0 -12 -4 8 4 2 -2 256 14 6 -36 -16 32 4 2 -8 48 4 6 -10 -2 20 -8 0 -4 16 2 4 -4 0 8 -4 0 -2 0 12 36 -28 12 56 -28 2 -12 0 4 4 -8 0 8 0 2 0 64 4 8 -12 -4 8 -4 2 0 448 12 12 -36 -28 8 -12 2 -4 768 -10 -8 -28 -48 8 -4 0 -4 1536 -22 -16 -52 -96 56 -12 0 -28 1792 -16 -16 -88 -88 -48 0 2 -16 384 6 -10 -20 -24 0 4 6 0 2304 -12 -28 -104 -144 0 -8 6 0 3840 -48 -40 -168 -200 -80 -8 2 -40 0 0 8 -6 10 4 -2 2 -4 0 4 8 -6 18 4 -2 2 -10 768 -16 -10 -16 -48 24 -2 2 -12 2304 -56 -32 -32 -144 96 8 10 -48 1792 -48 -24 -16 -112 0 8 10 0 2304 -56 -32 -32 -144 0 8 10 0 192 -6 0 -7 5 -6 -3 0 -3 448 -14 0 -19 1 -14 -5 0 -3 576 -18 0 -24 4 -16 -8 0 -4 2880 -60 -36 -96 -168 -16 8 6 -16 192 -6 0 10 -10 -4 -2 0 -2 256 -8 0 12 -12 -8 -4 0 -2 512 -16 0 0 -24 -16 -2 0 -4 192 -6 0 2 -10 -4 0 0 -2 576 -18 0 4 -24 -16 -4 0 -8 448 -14 0 1 -19 -14 -3 0 -5 576 -18 0 -3 -23 -22 -3 0 -5 192 -6 0 5 -7 -6 -3 0 -3 192 -6 0 13 -7 -6 -5 0 -3 64 -4 4 20 -4 24 4 2 -4 2304 -56 -32 -96 -96 -96 16 10 0 768 -30 0 -32 -28 -32 8 6 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 end lrslib-062/fourier.c0000600001553200155320000006725712722006425012313 0ustar avis/*************************************************************************/ /* Author:: Tallman Zacharia Nkgau */ /* Name:: fourier.c v.1.0. (Revision 1) */ /* Requires:: lrslib.h, lrslib.c lrsmp.c lrsmp.h from lrslib v.4.1. */ /* Purpose:: To compute a projection from a higher dimension to a lower */ /* dimension using Fourier Elimination. */ /* Input Requirements:: Uses lrslib/cddlib input file format. Only input */ /* type "integer" or "rational" is accepted. Options*/ /* are restricted to "project" only. */ /* Option: */ /* project t d_1 d_2 ... d_t */ /* which projects onto the t dimensions specified */ /* */ /* Output:: Output is written to standard output if no output file is */ /* given. It may optionally include statistics. It is in */ /* lrslib/cddlib format. */ /*************************************************************************/ #define USAGE "fourier infile [outfile]" /*************************************************************************/ #include #include #include "lrslib.h" #define MAXCOL 1000 /* maximum number of variables. */ /**************************************************************************/ void fel_abort(char str[]) { printf("%s\n", str ); exit(1); } /*************************************************************************/ /*******************************************************************/ /* Function to read all lines above the "matrix" in the input file.*/ /* Adapted from Prof. Avis' function in lrslib.c. */ /*******************************************************************/ long readHfile(lrs_dat *Q) { char line[100]; char ch; long firstline = TRUE; if(fscanf(lrs_ifp, "%s", line)==EOF) exit(1); while (strcmp(line, "begin") != 0) { if (strncmp(line, "*", 1) == 0) { ch = line[0]; while ((ch != EOF) && (ch != '\n')) ch = fgetc(lrs_ifp); } else if (strcmp(line, "H-representation") == 0) { Q->hull = FALSE; } else if (strcmp(line, "linearity")==0) { /* disabled 2009.2.5 due to bug in linearity handling */ /* if (!readlinearity(Q)) */ fprintf(lrs_ofp, "\nfourier does not handle linearity option:\n replace each linearity by two inequalities\n"); return (FALSE); } else if (firstline) { stringcpy(Q->fname, line); fprintf(lrs_ofp, "%s\n", Q->fname); firstline = FALSE; } if (fscanf(lrs_ifp, "%s", line) == EOF) { fprintf(lrs_ofp, "No begin line\n"); return (FALSE); } } /* end of while */ if (fscanf(lrs_ifp, "%ld %ld %s", &Q->m, &Q->n, line) == EOF) { fprintf(lrs_ofp, "No data in file\n"); return (FALSE); } if (!((strcmp(line, "rational") == 0) || (strcmp(line, "integer") == 0))) { fprintf(lrs_ofp, "Data type must be rational\n"); return (FALSE); } if (Q->m == 0) { fprintf(lrs_ofp, "No input given\n"); return (FALSE); } return (TRUE); } /***************************************************************/ /* Function to read in the dictionary from input file. */ /***************************************************************/ long readHmat(lrs_dic *P, lrs_dat *Q, long *project) { char line[100]; char ch; long p, i; if (!lrs_read_dic(P, Q)) { fprintf(lrs_ofp, "Data matrix not properly formatted\n"); return (FALSE); } /* "lrs_read_dic" doesn't handle option "project", so improvise */ if (fseek(lrs_ifp, 0L, 0) <= 0) /* rewind file. */ { while (fscanf(lrs_ifp, "%s", line) != EOF) { if (strncmp(line, "*", 1) == 0) { ch = line[0]; while ((ch != EOF) && (ch != '\n')) ch = fgetc(lrs_ifp); } if (strcmp(line, "project") == 0) { if(fscanf(lrs_ifp, "%ld", &p)==EOF) { fprintf(lrs_ofp, "No variables to project.\n"); return (FALSE); } project[0] = p; if (p <= 0) { fprintf(lrs_ofp, "No variables to project.\n"); return (FALSE); } for(i=1; i<=project[0]; i++) { if (fscanf(lrs_ifp, "%ld", &p) == EOF) { fprintf(lrs_ofp, "Missing variables in 'project' line.\n"); return (FALSE); } project[i] = p; } } } } else { fprintf(lrs_ofp, "Can't process input file\n"); return (FALSE); } return (TRUE); } /*******************************************************************************/ void linear_dep(lrs_dic *P, lrs_dat *Q, long *Dep) { long d; long nlinearity; lrs_mp_matrix A; long i, j, k, row, col,m; d = P->d; nlinearity = Q->nlinearity; A = lrs_alloc_mp_matrix(nlinearity+1, d+2); for(i=0;iA[i][j]); itomp(ZERO, A[i][d+1]); } for(col=1;col<=d;col++) { row = -1; for(i=1;i<=nlinearity;i++) if ((zero(A[i][d+1]))&& !zero(A[i][col])) { row = i; break; } if (row > 0) for(k=1;k<=nlinearity;k++) { if ((zero(A[k][d+1]))&&(!zero(A[k][col])) && (k!=row)) { printf("row=%ld k = %ld\n", row, k); if (sign(A[k][col])*sign(A[row][col]) < 0) { copy(A[0][0], A[k][col]); copy(A[0][1], A[row][col]); storesign(A[0][0], POS); storesign(A[0][1], POS); for(i=0;i<=d;i++) { mulint(A[0][0], A[row][i], A[0][2]); mulint(A[0][1], A[k][i], A[0][3]); addint(A[0][2], A[0][3], A[k][i]); } } else { copy(A[0][0], A[k][col]); copy(A[0][1], A[row][col]); storesign(A[0][0], NEG); storesign(A[0][1], POS); for(i=0;i<=d;i++) { mulint(A[0][0], A[row][i], A[0][2]); mulint(A[0][1], A[k][i], A[0][3]); addint(A[0][2], A[0][3], A[k][i]); } } itomp(ONE, A[row][d+1]); for(i=1;i<=nlinearity; i++) { for(m=0;m<=d;m++) pmp("", A[i][m]); fprintf(lrs_ofp, "\n"); } fprintf(lrs_ofp, "\n"); } } } for(row=1,i=0;row<=nlinearity;row++) { for(k=0,i=0;k<=d;k++) if(zero(A[row][k])) i++; if (i==d+1) Dep[row] =1; } } /********************************************************************************/ /* groups[i] = +1 if A[i][col] > 0, groups[i] = -1 if A[i][col] < 0, */ /* groups[i] = 0 if A[i][col] = 0, groups[m+1] = # of rows with <0 entry */ /* in column 'col', and groups[m+2] = # of rows with > 0 entry in column 'col' */ /********************************************************************************/ void lrs_compute_groups(lrs_dat *Q, lrs_dic *P, long col, long *groups) { long i, row; long m; m = Q->m; for(i=0;i<= m+2; i++) { groups[i] = 0; } for(row = 1; row <= Q->m; row++) { if (sign(P->A[row][col]) < 0) { groups[row] = -1; groups[m+1]++; } else if (zero(P->A[row][col])) { groups[0]++; } else { groups[row] = 1; groups[m+2]++; } } } /*******************************************************************/ /* Function to copy matrix A from dictionary P to dictionary P1. */ /* The column (variable) with index 'skip' is left out. */ /* Set skip to '-1' if no column is to be left out. */ /* Adapted from Prof. Avis' function in lrslib.c. */ /*******************************************************************/ void copydicA(lrs_dic *P1, lrs_dic *P, long skip_row, long skip_col) { long i, j; long d, m_A; d = P->d; /* dimension of space of variables */ m_A = P->m_A; if (skip_col > 0) { if (skip_row > 0) { for (i = 1; i < skip_row; i++) { for(j = 0; j < skip_col; j++) copy (P1->A[i][j], P->A[i][j]); for(j = skip_col+1; j <= d; j++) copy (P1->A[i][j-1], P->A[i][j]); } for (i = skip_row+1; i <= m_A; i++) { for(j = 0; j < skip_col; j++) copy (P1->A[i-1][j], P->A[i][j]); for(j = skip_col+1; j <= d; j++) copy (P1->A[i-1][j-1], P->A[i][j]); } } else { for (i = 1; i <= m_A; i++) { for(j = 0; j < skip_col; j++) copy (P1->A[i-1][j], P->A[i][j]); for(j = skip_col+1; j <= d; j++) copy (P1->A[i-1][j-1], P->A[i][j]); } } } else { if (skip_row > 0) { for (i = 1; i < skip_row; i++) for(j = 0; j <= d; j++) copy (P1->A[i][j], P->A[i][j]); for (i = skip_row+1; i <= m_A; i++) for(j = 0; j <= d; j++) copy (P1->A[i-1][j], P->A[i][j]); } else { for (i = 1; i <= m_A; i++) for(j = 0; j <= d; j++) copy (P1->A[i][j], P->A[i][j]); } } } /***************************************************************/ /* copy linearity from iQ to Q */ /***************************************************************/ void copy_linearity(lrs_dat *Q, lrs_dat *iQ) { long nlinearity; long i; nlinearity = iQ->nlinearity; if (nlinearity > 0) { Q->linearity = CALLOC ((nlinearity +1), sizeof (long)); for(i=0; i < nlinearity; i++) Q->linearity[i] = iQ->linearity[i]; Q->nlinearity = nlinearity; Q->polytope = FALSE; } } /***************************************************************/ void put_linearities_first(lrs_dat *Q, lrs_dic *P) { long nlinearity; long i, row; lrs_mp Temp; lrs_alloc_mp(Temp); nlinearity = Q->nlinearity; for(row=1; row <= nlinearity; row++) { if (Q->linearity[row-1] != row) { for(i=0;i<=P->d; i++) { copy(Temp, P->A[row][i]); copy(P->A[row][i], P->A[Q->linearity[row-1]][i]); copy(P->A[Q->linearity[row-1]][i], Temp); } copy(Temp, Q->Gcd[row]); copy(Q->Gcd[row], Q->Gcd[Q->linearity[row-1]]); copy(Q->Gcd[Q->linearity[row-1]], Temp); copy(Temp, Q->Lcm[row]); copy(Q->Lcm[row], Q->Lcm[Q->linearity[row-1]]); copy(Q->Lcm[Q->linearity[row-1]], Temp); Q->linearity[row-1] = row; } } lrs_clear_mp(Temp); } /***************************************************************/ /* Function to compute redundancies. redineq[i] = 1 if row i */ /* is redundant. Adapted from Prof. Avis' function in lrslib.c.*/ /***************************************************************/ long compute_redundancy(long *redineq, lrs_dic *P, lrs_dat *Q) { long ineq; long d, m; long nlinearity; long lastdv, index; lrs_mp_matrix Lin; m = P->m_A; d = P->d; if (!lrs_getfirstbasis(&P, Q, &Lin, TRUE)) { return (FALSE); } m = P->m_A; d = P->d; nlinearity = Q->nlinearity; lastdv = Q->lastdv; for(index = lastdv +1;index <= m+d; index++) { ineq = Q->inequality[index-lastdv]; redineq[ineq] = checkindex(P, Q, index); } return (TRUE); } /******************************************************************/ /* Function to project original space to space of variables */ /* contained in the array 'variables'. */ /******************************************************************/ void lrs_project_var(lrs_dic **iP, lrs_dat **iQ, long *variables, long stat) { lrs_dic *P1, *P2, *tP2, *P; lrs_dat *Q1, *Q2, *tQ2, *Q; long *redineq, *tgroups; long i, j, k, l, m, n, red, col, row; long empty_set; long *var_remove; /* variables to be removed */ long count; /* could do with less of these monsters */ lrs_mp Temp, Temp1, Lcm, div1, div2, Temp2, Temp3, Temp4, Temp5; lrs_alloc_mp(Temp); lrs_alloc_mp(Temp1);lrs_alloc_mp(Temp2); lrs_alloc_mp(Temp3); lrs_alloc_mp(Temp4);lrs_alloc_mp(Temp5); lrs_alloc_mp(Lcm); lrs_alloc_mp(div1);lrs_alloc_mp(div2); if (stat) { fprintf(lrs_ofp, "*Number of\t Number after\t Number of\n"); fprintf(lrs_ofp, "*Inequalties\t Removing Var.\t Redundancies\n"); fprintf(lrs_ofp, "*============================================\n"); } /* create a copy of iP, iQ */ if( (Q = lrs_alloc_dat("LRS GLOBALS")) == NULL) fel_abort("ERROR>Can't allocate memory for structures"); Q->m = (*iQ)->m; Q->n = (*iQ)->n; n = (*iQ)->n; if (( P = lrs_alloc_dic(Q)) == NULL) fel_abort("ERROR>Can't allocate dictionary space"); copydicA(P, (*iP),-1, -1); var_remove = CALLOC ((n + 2), sizeof (long)); if (var_remove == NULL) fel_abort("ERROR>Can't allocate memory."); var_remove[0]=0; for(l=1; l<=n-1; l++) { var_remove[0]++; var_remove[l] = l; } for(l=1;l<=variables[0];l++) { var_remove[variables[l]] = 0; var_remove[0]--; } for (i = 1; i <= n-1; i++) /* main loop */ { count = 0; if (var_remove[i]) { if (stat) fprintf(lrs_ofp, "*%11ld ", Q->m); /* create a copy of P, Q */ if( (Q1 = lrs_alloc_dat("LRS GLOBALS")) == NULL) fel_abort("ERROR>Can't allocate memory for structures"); Q1->m = Q->m; Q1->n = Q->n; if (( P1 = lrs_alloc_dic(Q1)) == NULL) fel_abort("ERROR>Can't allocate dictionary space"); copydicA(P1, P, -1, -1); col = var_remove[i]; /* column to be removed */ for(l=i+1;l<=n-1;l++) /* fix variables for second round */ { if ((var_remove[l]) && (var_remove[l] > col)) var_remove[l]--; } tgroups = CALLOC ((Q1->m+4), sizeof (long)); if (tgroups == NULL) fel_abort("ERROR>Can't allocate memory."); /* compute groupings tgroups[0] = # of rows with '0' in column 'col' */ lrs_compute_groups(Q1, P1, col, tgroups); /* check for overflow */ if (tgroups[Q1->m +1] > 0) if (tgroups[Q1->m + 2] > (MAXD/tgroups[Q1->m +1])) { fel_abort("ERROR>Overflow...too many rows produced."); } /* create P2, Q2 */ if( (Q2 = lrs_alloc_dat("LRS GLOBALS")) == NULL) fel_abort("ERROR>Can't allocate memory for structures"); empty_set = (!tgroups[Q1->m +1] && tgroups[Q1->m +2]) || (tgroups[Q1->m +1] && !tgroups[Q1->m +2]) || (!(tgroups[Q1->m +1] + tgroups[Q1->m +2])); if (empty_set) /* one of the sets is empty, just remove the variable */ { Q2->m = Q1->m; Q2->n = (Q1->n) - 1; if (( P2 = lrs_alloc_dic(Q2)) == NULL) fel_abort("ERROR>Can't allocate dictionary space"); copydicA(P2, P1,-1, col); if (stat) fprintf(lrs_ofp, "%13ld", Q2->m); } else { Q2->m = (tgroups[Q1->m + 1]*tgroups[Q1->m +2]) + tgroups[0]; Q2->n = (Q1->n)-1; if (stat) fprintf(lrs_ofp, "%13ld ", Q2->m); if (( P2 = lrs_alloc_dic(Q2)) == NULL) fel_abort("ERROR>Can't allocate dictionary space"); row = 1; for(j = 1; j <= Q1->m; j++) { if (tgroups[j] < 0) for(k=1; k <= Q1->m; k++) { if (tgroups[k] > 0) { copy(div1, P1->A[j][col]); copy(div2, P1->A[k][col]); storesign(div1, POS); copy(Lcm, div1); lcm(Lcm, div2); copy(Temp, Lcm); copy(Temp1, div1); divint(Temp, Temp1, Temp2); copy(Temp, Lcm); copy(Temp1, div2); divint(Temp, Temp1, Temp3); for(l=0;l< col; l++) { copy(Temp, P1->A[j][l]); copy(Temp1, P1->A[k][l]); mulint(Temp,Temp2 ,Temp4); mulint(Temp1,Temp3,Temp5); addint(Temp4, Temp5, P2->A[row][l]); } for(l=col+1;ln; l++) { copy(Temp, P1->A[j][l]); copy(Temp1, P1->A[k][l]); mulint(Temp,Temp2 ,Temp4); mulint(Temp1,Temp3,Temp5); addint(Temp4, Temp5, P2->A[row][l-1]); } reducearray(P2->A[row], Q2->n); row++; } /* end if (tgroups[k]) */ } /* end for k */ } /* end for j*/ for(j=1;j<=Q1->m;j++) { if (tgroups[j]==0) /* just copy row, coefficient was '0' */ { for(l=0;lA[row][l], P1->A[j][l]); for(l=col+1;ln;l++) copy(P2->A[row][l-1], P1->A[j][l]); reducearray(P2->A[row], Q2->n); row++; } } } /* end else */ /* create temp P2, Q2 */ lrs_free_dic(P1, Q1); lrs_free_dat(Q1); for(row=1;row<=Q2->m;row++) { l = 0; for(j=1;jn; j++) if (zero(P2->A[row][j])) l++; if (l==Q2->n -1 ) { count++; } } if( (tQ2 = lrs_alloc_dat("LRS GLOBALS")) == NULL) fel_abort("ERROR>Can't allocate memory for structures"); tQ2->m = Q2->m; tQ2->n = Q2->n; if (( tP2 = lrs_alloc_dic(tQ2)) == NULL) fel_abort("ERROR>Can't allocate dictionary space"); copydicA(tP2, P2, -1, -1); /* find redundacies */ m = tQ2->m; redineq = CALLOC ((m+1), sizeof (long)); if (redineq == NULL) fel_abort("ERROR>Can't allocate memory."); if (!compute_redundancy(redineq, tP2, tQ2)) fel_abort("ERROR>Can't pivot in redundancy LP"); red = 0; for(row=1;row<=Q2->m; row++) if (redineq[row] == 1L) { red++; } if (stat) fprintf(lrs_ofp, "%12ld%8ld\n", red, count); /* make new P, Q */ lrs_free_dic(P , Q ); lrs_free_dat(Q ); if( (Q = lrs_alloc_dat("LRS GLOBALS")) == NULL) fel_abort("ERROR>Can't allocate memory for structures"); Q->m = Q2->m - red; Q->n = Q2->n; if (( P = lrs_alloc_dic(Q)) == NULL) fel_abort("ERROR>Can't allocate dictionary space"); /* copy to P (from P2) nonredundant rows */ k = 0; for(row=1;row<=Q2->m; row++) if (redineq[row] != 1L) { k++; for(l=0;l<=(Q2->n)-1;l++) copy(P->A[k][l], P2->A[row][l]); } free(redineq); free(tgroups); lrs_free_dic(tP2, tQ2); lrs_free_dat(tQ2); lrs_free_dic(P2, Q2); lrs_free_dat(Q2); } /* end if (var_remove[i]) */ }/* end "for i " */ *iP = P; *iQ = Q; lrs_clear_mp(Temp); lrs_clear_mp(Temp1);lrs_clear_mp(Temp2); lrs_clear_mp(Temp3); lrs_clear_mp(Temp4);lrs_clear_mp(Temp5); lrs_clear_mp(Lcm); lrs_clear_mp(div1);lrs_clear_mp(div2); } /*********************************************************************/ void full_fel(lrs_dic *iP, lrs_dat *iQ, long *variables) { lrs_dic *P1, *P2, *P; lrs_dat *Q1, *Q2, *Q; long *proj, *redineq; /* for variables to project to */ long i, j, k, l, m, n, lindep, col, row, red; long *var_remove; /* variables to be removed */ long *Dep; /*Dep[0] not used, Dep[i] = 1 if eqn lin. dep., else 0 */ long nlinearity; long eqn; long last=0; /* =1 if equation used to remove var. =2 if FME used */ /* could do with less of these monsters */ lrs_mp Temp, Temp1, div1; /* create a copy of iP, iQ */ if( (Q = lrs_alloc_dat("LRS GLOBALS")) == NULL) fel_abort("ERROR>Can't allocate memory for structures"); Q->m = iQ->m; Q->n = iQ->n; copy_linearity(Q, iQ); n = iQ->n; if (( P = lrs_alloc_dic(Q)) == NULL) fel_abort("ERROR>Can't allocate dictionary space"); copydicA(P, iP,-1, -1); var_remove = CALLOC ((n + 2), sizeof (long)); if (var_remove == NULL) fel_abort("ERROR>Can't allocate memory."); var_remove[0]=0; for(l=1; l<=n-1; l++) { var_remove[0]++; var_remove[l] = l; } for(l=1;l<=variables[0];l++) { var_remove[variables[l]] = 0; var_remove[0]--; } nlinearity = iQ->nlinearity; for (i = 1; i <= n-1; i++) /* main loop */ { if (var_remove[i]) { /* create a copy of P, Q */ if( (Q1 = lrs_alloc_dat("LRS GLOBALS")) == NULL) fel_abort("ERROR>Can't allocate memory for structures"); Q1->m = Q->m; Q1->n = Q->n; copy_linearity(Q1, Q); if (( P1 = lrs_alloc_dic(Q1)) == NULL) fel_abort("ERROR>Can't allocate dictionary space"); copydicA(P1, P,-1, -1); col = var_remove[i]; /* column to be removed */ for(l=i+1;l<=n-1;l++) /* fix variables for second round */ { if ((var_remove[l]) && (var_remove[l] > col)) var_remove[l]--; } for(l=1, eqn=-1; l <= nlinearity; l++) if (!zero(P1->A[l][col])) { eqn = l; /* use this linearity row to eliminate col */ break; } if (eqn > 0) { last = 1; for(l=eqn-1;llinearity[l] = Q1->linearity[l+1] -1; } nlinearity--; Q1->nlinearity = nlinearity; for(j=0;j<=P1->d;j++) { if ((j!=col) && !zero(P1->A[eqn][j])) changesign(P1->A[eqn][j]); } copy(div1, P1->A[eqn][col]); for(k=1;k<=P1->m;k++) { if (k!=eqn) { for(j=0;j<=P1->d;j++) { if (j!=col) { if (zero(P1->A[k][col])) break; mulint(P1->A[k][col], P1->A[eqn][j], Temp); mulint(P1->A[k][j], div1, Temp1); addint(Temp, Temp1, P1->A[k][j]); if (negative(div1)) { if (!zero(P1->A[k][j])) { changesign(P1->A[k][j]); } } } } itomp(0L, P1->A[k][col]); reducearray(P1->A[k], Q1->n); } } /* make new P, Q */ lrs_free_dic(P , Q ); lrs_free_dat(Q ); if( (Q = lrs_alloc_dat("LRS GLOBALS")) == NULL) fel_abort("ERROR>Can't allocate memory for structures"); Q->m = Q1->m -1; Q->n = Q1->n -1; copy_linearity(Q, Q1); if (( P = lrs_alloc_dic(Q)) == NULL) fel_abort("ERROR>Can't allocate dictionary space"); copydicA(P, P1, eqn, col); lrs_free_dic(P1 , Q1 ); lrs_free_dat(Q1 ); } else { last = 2; if( (Q2 = lrs_alloc_dat("LRS GLOBALS")) == NULL) fel_abort("ERROR>Can't allocate memory for structures"); Q2->m = Q1->m - Q1->nlinearity; Q2->n = Q1->n; if (( P2 = lrs_alloc_dic(Q2)) == NULL) fel_abort("ERROR>Can't allocate dictionary space"); /* copy inequalities */ for(row=Q1->nlinearity+1;row<=Q1->m; row++) { for(l=0;l<=(Q1->n)-1;l++) copy(P2->A[row-Q1->nlinearity][l], P1->A[row][l]); } proj = CALLOC ((Q1->n +2), sizeof (long)); for(l=1;ln;l++) proj[l-1] = l; proj[0] = Q1->n-2; lrs_project_var(&P2, &Q2, proj, FALSE); /* make new P, Q */ lrs_free_dic(P , Q ); lrs_free_dat(Q ); if( (Q = lrs_alloc_dat("LRS GLOBALS")) == NULL) fel_abort("ERROR>Can't allocate memory for structures"); Q->m = Q1->nlinearity + P2->m_A;; Q->n = Q1->n - 1; copy_linearity(Q, Q1); if (( P = lrs_alloc_dic(Q)) == NULL) fel_abort("ERROR>Can't allocate dictionary space"); for(row=1;row<=Q1->nlinearity; row++) { for(l=0;lA[row][l], P1->A[row][l]); for(l=col+1;l<=(Q->n)-1;l++) copy(P->A[row][l-1], P1->A[row][l]); } for(row=1;row<=P2->m_A; row++) { for(l=0;l<=(Q->n)-1;l++) copy(P->A[row][l], P2->A[row][l]); } lrs_free_dic(P1 , Q1 ); lrs_free_dat(Q1 ); lrs_free_dic(P2 , Q2 ); lrs_free_dat(Q2 ); } } } /* remove linearly dependent linearities */ Dep = CALLOC ((Q->nlinearity+2), sizeof (long)); linear_dep(P, Q, Dep); for(l=1, lindep=0; l <= Q->nlinearity; l++) if (Dep[l]) lindep++; /*if (last==1) perform one last redundancy checking */ if( (Q1 = lrs_alloc_dat("LRS GLOBALS")) == NULL) fel_abort("ERROR>Can't allocate memory for structures"); Q1->m = Q->m - Q->nlinearity; Q1->n = Q->n; if (( P1 = lrs_alloc_dic(Q1)) == NULL) fel_abort("ERROR>Can't allocate dictionary space"); for(row=Q->nlinearity+1;row<=Q->m; row++) { for(l=0;l<=(Q->n)-1;l++) copy(P1->A[row-Q->nlinearity][l], P->A[row][l]); } m = Q1->m; redineq = CALLOC ((m+1), sizeof (long)); if (redineq == NULL) fel_abort("ERROR>Can't allocate memory."); if (!compute_redundancy(redineq, P1, Q1)) fel_abort("ERROR>Can't pivot in redundancy LP"); for(row=1,red=0;row<=m; row++) if (redineq[row] == 1L) { red++; } lrs_free_dic(P1 , Q1 ); lrs_free_dat(Q1 ); /* assemble final result */ if( (Q2 = lrs_alloc_dat("LRS GLOBALS")) == NULL) fel_abort("ERROR>Can't allocate memory for structures"); Q2->m = (m-red) + (Q->nlinearity - lindep); Q2->n = Q->n; Q2->nlinearity = 0L; if (( P2 = lrs_alloc_dic(Q2)) == NULL) fel_abort("ERROR>Can't allocate dictionary space"); for(l=1, row=1;l<=Q->nlinearity;l++) if (!Dep[l]) { for(i=0;i<=Q->n-1;i++) copy(P2->A[row][i], P->A[l][i]); row++; } for(l=Q->nlinearity+1;l<=Q->m;l++) if (redineq[l-Q->nlinearity]!=1L) { for(i=0;i<=Q->n-1;i++) copy(P2->A[row][i], P->A[l][i]); row++; } Q2->nlinearity = Q->nlinearity - lindep; for(l=1;l<=Q2->nlinearity;l++) Q2->linearity[l-1] = l; lrs_free_dic(P , Q ); lrs_free_dat(Q ); fprintf(lrs_ofp, "H-representation\n"); if (Q2->nlinearity > 0) { fprintf(lrs_ofp, "linearity %ld", Q2->nlinearity); for(row=0; rownlinearity;row++) fprintf(lrs_ofp, " %ld", Q2->linearity[row]); fprintf(lrs_ofp, "\n"); } fprintf(lrs_ofp, "begin\n"); fprintf(lrs_ofp, "%ld %ld %s", Q2->m, Q2->n, "rational"); for(row=1;row<=Q2->m; row++) lrs_printrow("", Q2, P2->A[row], Q2->inputd); fprintf(lrs_ofp, "\nend\n"); } /***************************************************************/ int main(int argc, char *argv[]) { lrs_dic *P; /* holds dictionary */ lrs_dat *Q; /* holds information about dictionary */ FILE *infile, *outfile; long *proj; /* try opening files */ if (argc < 2) fel_abort(USAGE); if ((infile = fopen(argv[1], "r")) == NULL) fel_abort("ERROR>Can't open input file"); if (argc == 2) outfile = stdout; else if ((outfile = fopen(argv[2], "a")) == NULL) fel_abort("ERROR>Can't open output file"); /* initialize lrs */ if (!lrs_init("Fourier Elimination\n")) fel_abort("ERROR>Can't initialize lrs"); /* set lrs global file pointers */ lrs_ifp = infile; lrs_ofp = outfile; /* allocate space for problem */ if( (Q = lrs_alloc_dat("LRS GLOBALS")) == NULL) fel_abort("ERROR>Can't allocate memory for structures"); if (!readHfile(Q)) /* get info about data from input file */ { fprintf(stderr, "Can't read input file\n"); exit(1); } if (( P = lrs_alloc_dic(Q)) == NULL) fel_abort("ERROR>Can't allocate dictionary space"); proj = CALLOC ((MAXCOL), sizeof (long)); /* variables to project to are stored here */ if (!readHmat(P, Q, proj)) /* read in the matrix/dictionary */ { fprintf(stderr, "Can't read input file\n"); exit(1); } /* lrs_project_var(P, Q, proj, TRUE); compute projection, TRUE means print statistics */ /* clean up */ put_linearities_first(Q, P); full_fel(P, Q, proj); /* fprintf(lrs_ofp, "H-representation\n"); if (Q->nlinearity > 0) { fprintf(lrs_ofp, "linearity %ld", Q->nlinearity); for(row=0; rownlinearity;row++) fprintf(lrs_ofp, " %ld", Q->linearity[row]); fprintf(lrs_ofp, "\n"); } fprintf(lrs_ofp, "begin\n"); fprintf(lrs_ofp, "%ld %ld %s", Q->m, Q->n, "rational"); for(row=1;row<=Q->m; row++) lrs_printrow("", Q, P->A[row], Q->inputd); fprintf(lrs_ofp, "\nend\n"); */ lrs_free_dic(P, Q); lrs_free_dat(Q); lrs_close("Fourier Elimination\n"); printf("\n"); return(0); }