# line 1 "/tmp/act.mt" #include #include #include #include "dat.h" typedef struct Cost { int gate; int pin; } Cost; Cost gatecost = {1,0}; Cost pincost = {0,1}; Cost zerocost = {0,0}; Cost infinity = {1000000,0}; Cost bigcost = {1000,0}; #define COST Cost #define INFINITY infinity #define ZEROCOST gatecost /* default cost of a rule */ #define ADDCOST(x,y) (x.gate += y.gate, x.pin += y.pin) #define COSTLESS(x,y) ((x.gate)<(y.gate) || (x.gate==y.gate && x.pin... -1 [FAIL ] -1 * or * TABLE2 ... -1 [FAIL ] -1 * or * ACCEPT -1 * * The accept table is in the form: * * ... -1 * */ #define FASTLIM 0 #define TABLE 1 #define FAIL 2 #define ACCEPT 3 #define TABLE2 4 #define EOT -1 /* special machine state */ #define HANG -1 /* used by the evaluator to interpret path table */ #define eSTOP 0 #define ePOP -1 #define eEVAL -2 #define eNEXT -3 #define ePUSH -4 /* Tags that indicate the type of a value */ #define M_BRANCH 010000 #define M_NODE 0 #define M_LABEL 01000 #define MAX_NODE_VALUE 00777 #define MTAG_SHIFT 9 #define M_DETAG(x) ((x)&~(M_BRANCH|M_LABEL|M_NODE)) /* predicates to tell whether a value x is of type NODE, BRANCH, or LABEL */ #define MI_NODE(x) (((x)&(M_BRANCH|M_LABEL))==0) #define MI_DEFINED(x) ((x)!=-1) #define MI_LABEL(x) (((x)&M_LABEL)!=0) #define MI_BRANCH(x) (((x)&M_BRANCH)!=0) /* build a tagged value */ #define MV_NODE(x) (x) #define MV_BRANCH(x) ((x)|M_BRANCH) #define MV_LABEL(x) ((x)|M_LABEL) #include "symbols.h" /* limits */ /* * The depth of a pattern must be 7 or less. Otherwise the type of he * partial mask in skeleton must be changed */ #define MAXDEPTH 7 /* modes */ #define xTOPDOWN 3 #define xABORT 2 #define xREWRITE 1 #define xDEFER 0 /* macros */ #define tDO(m) _do((m)->skel, (m), 1) #define REWRITE return(_m->cost = cost, xREWRITE) #define TOPDOWN return(_m->cost = cost, xTOPDOWN) #define ABORT return(xABORT) /* * REORDER macro allows a knowledgeable user to change the order * of evaluation of the leaves. */ #ifndef REORDER #define REORDER(list) _evalleaves(list) #endif #define EVAL REORDER(_ll) #define mpush(s,m) (m)->next = s, s = m /* skeleton structure */ typedef struct skeleton skeleton; typedef struct __match __match; typedef struct __partial __partial; typedef int labelset; /* a bit vector of labels */ struct __partial { unsigned char treeno; char bits; }; struct skeleton { skeleton *sibling; skeleton *leftchild; /* leftmost child */ skeleton *rightchild; /* rightmost child */ NODEPTR root; NODEPTR parent; /* our parent */ int nson; int treecnt; __match *succ[MAXLABELS]; __partial *partial; __match *winner; COST mincost; }; struct __match { __match **lleaves; /* labelled leaves */ skeleton *skel; /* back pointer to skeleton node */ COST cost; short tree; short mode; }; /* ZEROCOST, and ADDCOST allows easy implementation of the common * operation of just equating the cost of a match to be the sum * of the costs of the labelled leaves. */ #ifdef ADDCOST #define DEFAULT_COST sumleaves(_ll) COST sumleaves(__match **list) { COST cost; cost = ZEROCOST; for(; *list; list++) ADDCOST((cost),(*list)->cost); return cost; } #endif /* * See Aho, Corasick Comm ACM 18:6, and Hoffman and O'Donell JACM 29:1 * for detail of the matching algorithm */ #ifndef va_start #include #endif /* from libc.h */ extern void* malloc(long); extern void free(void*); extern void abort(void); #define _twig_assert(a,str) \ do{if(!(a)){\ fprintf(stderr, "twig internal error %s\n", (str));\ abort();\ }}while(0) /* these are user defined, so can be macros */ #ifndef mtValue int mtValue(NODEPTR); #endif #ifndef mtSetNodes void mtSetNodes(NODEPTR, int, NODEPTR); #endif #ifndef mtGetNodes NODEPTR mtGetNodes(NODEPTR, int); #endif /* made by twig proper */ NODEPTR mtAction(int, __match **, skeleton *); short mtEvalCost(__match *, __match **, skeleton *); /* stuff defined here */ void _addmatches(int, skeleton *, __match *); void _closure(int, int, skeleton *); void _do(skeleton *, __match *, int); void _evalleaves(__match **); __match **_getleaves(__match *, skeleton *); int _machstep(short, short); void _match(void); void _matchinit(void); void _merge(skeleton *, skeleton *); NODEPTR _mtG(NODEPTR, ...); skeleton *_walk(skeleton *, int); __match *_allocmatch(void); skeleton *_allocskel(void); __partial *_allocpartial(void); void _freematch(__match *); void _freeskel(skeleton *); void _freepartial(__partial *); void _prskel(skeleton *, int); int mtDebug = 0; int treedebug = 0; extern short mtStart; extern short mtTable[], mtAccept[], mtMap[], mtPaths[], mtPathStart[]; #ifdef LINE_XREF extern short mtLine[]; #endif #ifndef MPBLOCKSIZ #define MPBLOCKSIZ 3000 #endif __match *_mpblock[MPBLOCKSIZ], **_mpbtop; /* * See sym.h in the preprocessor for details * Basically used to support eh $%n$ construct. */ __match ** _getleaves(register __match *mp, register skeleton *skp) { skeleton *stack[MAXDEPTH]; skeleton **stp = stack; register short *sip = &mtPaths[mtPathStart[mp->tree]]; register __match **mmp = _mpbtop; __match **mmp2 = mmp; _mpbtop += *sip++ + 1; _twig_assert(_mpbtop <= &_mpblock[MPBLOCKSIZ], "match block overflow"); for(;;) switch(*sip++){ case ePUSH: *stp++ = skp; skp = skp->leftchild; break; case eNEXT: skp = skp->sibling; break; case eEVAL: mp = skp->succ[M_DETAG(*sip++)]; _twig_assert(mp != 0, "bad eEVAL"); *mmp++ = mp; break; case ePOP: skp = *--stp; break; case eSTOP: *mmp = 0; return mmp2; } } void _do(skeleton *sp, register __match *winner, int evalall) { register skeleton *skel; if(winner == 0) { _prskel(sp, 0); fprintf(stderr, "no winner"); return; } skel = winner->skel; if(winner->mode == xDEFER || evalall && winner->mode != xTOPDOWN) REORDER(winner->lleaves); skel->root = mtAction(winner->tree, winner->lleaves, sp); mtSetNodes(skel->parent, skel->nson, skel->root); } void _evalleaves(register __match **mpp) { register __match *mp; while(*mpp){ mp = *mpp++; _do(mp->skel, mp, 1); } } skeleton * _walk(register skeleton *sp, int ostate) { int state, nstate, nson; register __partial *pp; register __match *mp; register skeleton *nsp, *lastchild = 0; NODEPTR son, root; root = sp->root; nson = 1; sp->mincost = INFINITY; state = _machstep(ostate, mtValue(root)); while(son = mtGetNodes(root, nson)){ nstate = _machstep(state, MV_BRANCH(nson)); nsp = _allocskel(); nsp->root = son; nsp->parent = root; nsp->nson = nson; _walk(nsp, nstate); if(COSTLESS(nsp->mincost, INFINITY)){ _twig_assert(nsp->winner->mode == xREWRITE, "bad mode"); if(mtDebug || treedebug) { fprintf(stderr, "rewrite\n"); _prskel(nsp, 0); } _do(nsp, nsp->winner, 0); _freeskel(nsp); continue; } _merge(sp, nsp); if(lastchild == 0) sp->leftchild = nsp; else lastchild->sibling = nsp; lastchild = nsp; nson++; } for(pp = sp->partial; pp < &sp->partial[sp->treecnt]; pp++) if(pp->bits & 01){ mp = _allocmatch(); mp->tree = pp->treeno; _addmatches(ostate, sp, mp); } if(son == 0 && nson == 1) _closure(state, ostate, sp); sp->rightchild = lastchild; if(root == 0){ COST c; __match *win; int i; nsp = sp->leftchild; c = INFINITY; win = 0; for(i = 0; i < MAXLABELS; i++){ mp = nsp->succ[i]; if(mp != 0 && COSTLESS(mp->cost, c)){ c = mp->cost; win = mp; } } if(mtDebug || treedebug) _prskel(nsp, 0); _do(nsp, win, 0); } if(mtDebug) _prskel(sp, 0); return sp; } static short _nodetab[MAXNDVAL], _labeltab[MAXLABELS]; /* * Convert the start state which has a large branching factor into * a index table. This must be called before the matcher is used. */ void _matchinit(void) { short *sp; for(sp = _nodetab; sp < &_nodetab[MAXNDVAL]; sp++) *sp = HANG; for(sp = _labeltab; sp < &_labeltab[MAXLABELS]; sp++) *sp = HANG; sp = &mtTable[mtStart]; _twig_assert(*sp == TABLE, "mtTable[mtStart]!=TABLE"); for(++sp; *sp != -1; sp += 2){ if(MI_NODE(*sp)) _nodetab[M_DETAG(*sp)] = sp[1]; else if(MI_LABEL(*sp)) _labeltab[M_DETAG(*sp)] = sp[1]; } } int _machstep(short state, short input) { register short *stp = &mtTable[state]; int start = 0; if(state == HANG) return input == MV_BRANCH(1) ? mtStart : HANG; rescan: if(stp == &mtTable[mtStart]){ if(MI_NODE(input)) return _nodetab[M_DETAG(input)]; if(MI_LABEL(input)) return _labeltab[M_DETAG(input)]; } for(;;){ if(*stp == ACCEPT) stp += 2; if(*stp == TABLE){ stp++; while(*stp != -1) if(input == *stp) return stp[1]; else stp += 2; stp++; } if(*stp != FAIL){ if(start) return HANG; else{ stp = &mtTable[mtStart]; start = 1; goto rescan; } }else{ stp = &mtTable[stp[1]]; goto rescan; } } } void _addmatches(int ostate, register skeleton *sp, register __match *np) { int label; int state; register __match *mp; label = mtMap[np->tree]; /* * this is a very poor substitute for good design of the DFA. * What we need is a special case that allows any label to be accepted * by the start state but we don't want the start state to recognize * them after a failure. */ state = _machstep(ostate, MV_LABEL(label)); if(ostate != mtStart && state == HANG){ _freematch(np); return; } np->lleaves = _getleaves(np, sp); np->skel = sp; if((np->mode = mtEvalCost(np, np->lleaves, sp)) == xABORT){ _freematch(np); return; } if(mp = sp->succ[label]){ if(!COSTLESS(np->cost, mp->cost)){ _freematch(np); return; } _freematch(mp); } if(COSTLESS(np->cost, sp->mincost)){ if(np->mode == xREWRITE){ sp->mincost = np->cost; sp->winner = np; }else{ sp->mincost = INFINITY; sp->winner = 0; } } sp->succ[label] = np; _closure(state, ostate, sp); } void _closure(int state, int ostate, skeleton *skp) { register short *sp = &mtTable[state]; register __match *mp; if(state == HANG || *sp != ACCEPT) return; for(sp = &mtAccept[sp[1]]; *sp != -1; sp += 2) if(sp[1] == 0){ mp = _allocmatch(); mp->tree = *sp; _addmatches(ostate, skp, mp); }else{ register __partial *pp; register __partial *lim = &skp->partial[skp->treecnt]; for(pp = skp->partial; pp < lim; pp++) if(pp->treeno == *sp) break; if(pp == lim){ skp->treecnt++; pp->treeno = *sp; pp->bits = 1 << sp[1]; }else pp->bits |= 1 << sp[1]; } } void _merge(skeleton *old, skeleton *new) { register __partial *op = old->partial, *np = new->partial; int nson = new->nson; register __partial *lim = np + new->treecnt; if(nson == 1){ old->treecnt = new->treecnt; for(; np < lim; op++, np++) { op->treeno = np->treeno; op->bits = np->bits / 2; } }else{ __partial *newer = _allocpartial(); register __partial *newerp = newer; register int cnt; lim = op + old->treecnt; for(cnt = new->treecnt; cnt-- ; np++){ for(op = old->partial; op < lim; op++) if(op->treeno == np->treeno){ newerp->treeno = op->treeno; newerp++->bits = op->bits & np->bits / 2; break; } } _freepartial(old->partial); old->partial = newer; old->treecnt = newerp-newer; } } /* memory management */ #define BLKF 100 typedef union __matchalloc{ __match it; union __matchalloc *next; }__matchalloc; static __matchalloc *__matchfree = 0; #ifdef CHECKMEM staic int a_matches; #endif __match * _allocmatch(void) { static int count = 0; static __matchalloc *block = 0; __matchalloc *m; if(__matchfree){ m = __matchfree; __matchfree = __matchfree->next; }else{ if(count == 0){ block = (void *)malloc(BLKF * sizeof *block); count = BLKF; } m = block++; count--; } #ifdef CHECKMEM a_matches++; #endif return (__match *)m; } void _freematch(__match *mp) { __matchalloc *m = (__matchalloc *)mp; m->next = __matchfree; __matchfree = m; #ifdef CHECKMEM a_matches--; #endif } typedef union __partalloc{ __partial it[MAXTREES]; union __partalloc *next; }__partalloc; static __partalloc *__partfree = 0; #ifdef CHECKMEM static int a_partials; #endif __partial * _allocpartial(void) { static int count = 0; static __partalloc *block = 0; __partalloc *p; if(__partfree != 0){ p = __partfree; __partfree = __partfree->next; }else{ if(count == 0){ block = (void *)malloc(BLKF * sizeof *block); count = BLKF; } p = block++; count--; } #ifdef CHECKMEM a_partials++; #endif return (__partial *)p; } void _freepartial(__partial *pp) { __partalloc *p = (__partalloc *)pp; p->next = __partfree; __partfree = p; #ifdef CHECKMEM a_partials--; #endif } typedef union __skelalloc{ skeleton it; union __skelalloc *next; }__skelalloc; static __skelalloc *__skelfree = 0; skeleton * _allocskel(void) { static int count = 0; static __skelalloc *block = 0; __skelalloc *sf; skeleton *s; int i; if(__skelfree){ sf = __skelfree; __skelfree = sf->next; }else{ if(count == 0){ block = (void *)malloc(BLKF * sizeof *block); count = BLKF; } sf = block++; count--; } s = (skeleton *)sf; s->sibling = 0; s->leftchild = 0; i = 0; while(i < MAXLABELS) s->succ[i++] = 0; s->treecnt = 0; s->partial = _allocpartial(); return s; } void _freeskel(skeleton *s) { int i; __match *mp; __skelalloc *sf; if(s == 0) return; if(s->leftchild) _freeskel(s->leftchild); if(s->sibling) _freeskel(s->sibling); _freepartial(s->partial); i = 0; while(i < MAXLABELS) if(mp = s->succ[i++]) _freematch(mp); sf = (__skelalloc *)s; sf->next = __skelfree; __skelfree = sf; } void _match(void) { skeleton *sp; sp = _allocskel(); sp->root = 0; _mpbtop = _mpblock; _freeskel(_walk(sp, HANG)); #ifdef CHECKMEM _twig_assert(a_matches == 0, "__match memory leak"); _twig_assert(a_partials == 0, "__partial memory leak"); #endif } NODEPTR _mtG(NODEPTR root, ...) { va_list a; int i; va_start(a, root); while((i = va_arg(a, int)) != -1) root = mtGetNodes(root, i); va_end(a); return root; } /* diagnostic routines */ void _prskel(skeleton *skp, int lvl) { int i; __match *mp; __partial *pp; if(skp==0) return; for(i = lvl; i > 0; i--) fprintf(stderr, " "); fprintf(stderr, "###\n"); for(i = lvl; i > 0; i--) fprintf(stderr, " "); for(i = 0; i < MAXLABELS; i++) if(mp = skp->succ[i]) #ifdef LINE_XREF fprintf(stderr, "[%d<%d> %d]", mp->tree, mtLine[mp->tree], mp->cost); #else fprintf(stderr, "[%d %d]", mp->tree, mp->cost); #endif fprintf(stderr, "\n"); for(i = lvl; i > 0; i--) fprintf(stderr, " "); for(i = 0, pp=skp->partial; i < skp->treecnt; i++, pp++) #ifdef LINE_XREF fprintf(stderr, "(%d<%d> %x)", pp->treeno, mtLine[pp->treeno], pp->bits); #else fprintf(stderr, "(%d %x)", pp->treeno, pp->bits); #endif fprintf(stderr, "\n"); _prskel(skp->leftchild, lvl + 2); _prskel(skp->sibling, lvl); } short mtTable[] = { 3,0,-1,3,3,-1,3,6,-1,3 ,9,-1,3,12,-1,3,15,2,9,-1 ,3,20,2,12,-1,3,25,2,171,-1 ,1,01000,25,-1,2,791,-1,1,010001,30 ,-1,2,814,-1,3,32,-1,3,35,2 ,2956,-1,1,01000,47,-1,2,3095,-1,3 ,74,2,3106,-1,3,117,2,3109,-1,1 ,01001,64,-1,2,3114,-1,1,010001,69,-1 ,2,3121,-1,1,01001,59,04,76,-1,2 ,3133,-1,3,134,2,3142,-1,1,01,92 ,-1,2,3171,-1,3,183,2,3180,-1,3 ,216,2,3204,-1,3,231,2,3185,-1,1 ,01000,114,-1,2,3190,-1,1,010001,119,-1 ,2,3197,-1,1,00,104,01000,109,04,126 ,-1,2,3209,-1,3,252,2,3218,-1,1 ,00,144,-1,2,3228,-1,1,010001,52,010002 ,83,010003,97,010004,133,010005,149,-1,2,3235 ,-1,3,297,2,3,-1,3,302,2,1762 ,-1,3,327,2,1770,-1,1,01000,181,-1 ,2,1813,-1,1,010001,186,-1,2,1824,-1 ,1,01000,176,04,193,-1,2,1918,-1,3 ,364,2,1934,-1,3,385,2,1944,-1,1 ,01000,214,-1,2,1982,-1,1,010001,219,-1 ,2,1993,-1,3,400,2,2000,-1,3,433 ,2,2005,-1,1,01000,238,-1,2,2010,-1 ,1,010001,243,-1,2,2017,-1,1,01000,233 ,04,250,-1,2,2024,-1,3,476,2,2033 ,-1,3,509,2,2038,-1,1,01000,271,-1 ,2,2043,-1,1,010001,276,-1,2,2050,-1 ,3,526,2,2062,-1,1,01000,290,-1,2 ,2067,-1,1,010001,295,-1,2,2074,-1,1 ,04,302,-1,2,2081,-1,3,567,2,2090 ,-1,3,602,2,2038,-1,1,01000,321,-1 ,2,2043,-1,1,010001,326,-1,2,2050,-1 ,1,01000,316,04,333,-1,2,2095,-1,1 ,010001,309,010002,340,-1,2,2102,-1,1,01000 ,266,04,283,05,349,-1,2,2144,-1,1 ,010001,257,010002,358,-1,2,2157,-1,1,01000 ,209,04,226,05,369,-1,2,2321,-1,1 ,010001,200,010002,378,-1,2,2338,-1,3,619 ,2,1092,-1,3,640,2,1100,-1,1,01000 ,403,-1,2,1138,-1,1,010001,408,-1,2 ,1147,-1,3,669,2,987,-1,1,01000,422 ,-1,2,992,-1,1,010001,427,-1,2,999 ,-1,3,722,2,982,-1,1,04,434,01000 ,441,-1,2,1006,-1,3,765,2,1015,-1 ,1,01000,455,-1,2,1072,-1,1,010001,446 ,010002,460,-1,2,1083,-1,1,01000,398,04 ,415,05,467,-1,2,1187,-1,3,828,2 ,1341,-1,3,851,2,1505,-1,1,01000,492 ,-1,2,1543,-1,1,010001,497,-1,2,1552 ,-1,3,866,2,1379,-1,3,903,2,1384 ,-1,1,01000,516,-1,2,1389,-1,1,010001 ,521,-1,2,1396,-1,1,01000,511,04,528 ,-1,2,1403,-1,3,928,2,1447,-1,3 ,967,2,1505,-1,1,01000,549,-1,2,1543 ,-1,1,010001,554,-1,2,1552,-1,3,980 ,2,1452,-1,1,01000,568,-1,2,1457,-1 ,3,1017,2,1464,-1,1,01000,580,-1,2 ,1469,-1,1,010001,573,010002,585,-1,2,1476 ,-1,1,01000,544,04,561,06,592,-1,2 ,1485,-1,1,010001,535,010002,601,-1,2,1496 ,-1,1,01000,487,04,504,06,612,-1,2 ,1639,-1,1,010001,476,010002,621,-1,2,1656 ,-1,3,1054,2,838,-1,3,1065,2,856 ,-1,1,01000,646,-1,2,861,-1,1,010001 ,651,-1,2,868,-1,1,04,658,-1,2 ,875,-1,3,1094,2,882,-1,1,01000,672 ,-1,2,906,-1,1,010001,665,010002,677,-1 ,2,915,-1,1,01000,641,05,684,-1,2 ,924,-1,3,1115,2,939,-1,1,01000,702 ,-1,2,966,-1,1,010001,693,010002,707,-1 ,2,975,-1,3,1136,2,2374,-1,3,1173 ,2,2345,-1,1,01000,728,-1,2,2355,-1 ,1,010001,733,-1,2,2364,-1,1,01000,723 ,04,740,-1,2,2426,-1,3,1190,2,2538 ,-1,1,01000,756,-1,2,2597,-1,3,1211 ,2,2688,-1,1,01000,768,-1,2,2766,-1 ,1,010001,747,010002,761,010003,773,-1,2,2779 ,-1,1,00,15,01,20,04,37,01001,44 ,010,156,01000,171,05,389,06,632,07,714 ,017,780,-1,-1,1,010001,791,-1,-1,3 ,1232,2,171,-1,1,01000,819,-1,2,791 ,-1,1,010001,824,-1,2,814,-1,3,1239 ,2,3,-1,3,1248,2,9,-1,3,1253 ,2,12,-1,3,1258,-1,3,1261,2,1770 ,-1,1,01000,856,-1,2,1813,-1,1,010001 ,861,-1,2,1824,-1,1,04,868,-1,2 ,1918,-1,3,1288,2,1934,-1,3,1307,2 ,1944,-1,1,01000,887,-1,2,1982,-1,1 ,010001,892,-1,2,1993,-1,1,01000,882,04 ,899,-1,2,2321,-1,1,010001,875,010002,906 ,-1,2,2338,-1,1,04,831,01000,838,00 ,843,01,848,01001,853,05,915,-1,-1,3 ,1322,2,3,-1,3,1339,2,171,-1,1 ,01000,944,-1,2,791,-1,1,010001,949,-1 ,2,814,-1,3,1346,-1,1,01000,939,04 ,956,01001,963,-1,-1,1,010001,924,010002,966 ,-1,-1,3,1349,2,1762,-1,3,1390,2 ,1770,-1,1,01000,987,-1,2,1813,-1,1 ,010001,992,-1,2,1824,-1,1,01000,982,04 ,999,-1,2,1918,-1,3,1437,2,1934,-1 ,3,1492,2,2000,-1,1,01000,1020,-1,2 ,2024,-1,3,1525,2,2033,-1,1,01000,1032 ,-1,2,2144,-1,1,010001,1025,010002,1037,-1 ,2,2157,-1,3,1556,2,1944,-1,1,01000 ,1053,-1,2,1982,-1,1,010001,1058,-1,2 ,1993,-1,1,01000,1015,05,1044,04,1065,-1 ,2,2321,-1,1,010001,1006,010002,1072,-1,2 ,2338,-1,3,1571,2,3,-1,3,1588,-1 ,3,1591,2,171,-1,3,1606,2,641,-1 ,1,01000,1105,-1,2,693,-1,3,1619,2 ,702,-1,1,01000,1117,-1,2,707,-1,1 ,010001,1110,010002,1122,-1,2,714,-1,1,01000 ,1100,07,1129,-1,2,791,-1,1,010001,1138 ,-1,2,814,-1,3,1642,2,838,-1,1 ,01000,1154,-1,2,924,-1,3,1653,2,939 ,-1,1,01000,1166,-1,2,966,-1,1,010001 ,1159,010002,1171,-1,2,975,-1,1,05,1083 ,01000,1092,01001,1097,04,1147,07,1178,-1,-1 ,3,1672,2,1770,-1,1,01000,1200,-1,2 ,1813,-1,1,010001,1205,-1,2,1824,-1,3 ,1703,2,1762,-1,1,04,1212,01000,1219,-1 ,2,1918,-1,3,1742,2,1934,-1,3,1777 ,2,2000,-1,1,01000,1238,-1,2,2024,-1 ,3,1810,2,2033,-1,1,01000,1250,-1,2 ,2144,-1,1,010001,1243,010002,1255,-1,2,2157 ,-1,3,1841,2,2166,-1,1,01000,1271,-1 ,2,2171,-1,3,1884,2,2178,-1,1,01000 ,1283,-1,2,2183,-1,3,1909,2,2608,-1 ,1,01,1295,-1,2,2214,-1,1,010001,1276 ,010002,1288,010003,1300,-1,2,2223,-1,1,01000 ,1233,05,1262,017,1307,-1,2,2321,-1,1 ,010001,1224,010002,1318,-1,2,2338,-1,3,1920 ,-1,3,1923,2,3,-1,3,1940,2,982 ,-1,1,01000,1346,-1,2,1006,-1,3,1987 ,2,1015,-1,1,01000,1358,-1,2,1072,-1 ,1,010001,1351,010002,1363,-1,2,1083,-1,3 ,2048,2,1092,-1,3,2077,2,1100,-1,1 ,01000,1384,-1,2,1138,-1,1,010001,1389,-1 ,2,1147,-1,1,05,1370,01000,1379,04,1396 ,-1,2,1187,-1,3,2094,2,1219,-1,1 ,01000,1414,-1,2,1224,-1,3,2137,2,1233 ,-1,1,01000,1426,-1,2,1318,-1,1,010001 ,1419,010002,1431,-1,2,1329,-1,3,2176,2 ,1341,-1,3,2205,2,1379,-1,1,01000,1452 ,-1,2,1403,-1,3,2238,2,1447,-1,1 ,01000,1464,-1,2,1485,-1,1,010001,1457,010002 ,1469,-1,2,1496,-1,1,05,1438,01000,1447 ,06,1476,-1,2,1639,-1,1,010001,1403,010002 ,1485,-1,2,1656,-1,3,2271,2,171,-1 ,3,2282,2,641,-1,1,01000,1510,-1,2 ,693,-1,3,2295,2,702,-1,1,01000,1522 ,-1,2,707,-1,1,010001,1515,010002,1527,-1 ,2,714,-1,1,01000,1505,07,1534,-1,2 ,791,-1,1,010001,1543,-1,2,814,-1,3 ,2318,2,838,-1,1,01000,1559,-1,2,924 ,-1,3,2329,2,939,-1,1,01000,1571,-1 ,2,966,-1,1,010001,1564,010002,1576,-1,2 ,975,-1,3,2348,2,2374,-1,1,01000,1592 ,-1,2,2426,-1,3,2385,2,2538,-1,1 ,01000,1604,-1,2,2597,-1,3,2404,2,2688 ,-1,1,01000,1616,-1,2,2766,-1,1,010001 ,1597,010002,1609,010003,1621,-1,2,2779,-1,1 ,05,1329,01001,1338,01000,1341,06,1496,04,1552 ,07,1583,017,1628,-1,-1,1,010001,1187,010002 ,1639,-1,-1,3,2423,2,3,-1,1,01000 ,1663,-1,-1,1,010001,1668,-1,-1,3,2428 ,2,3,-1,1,01000,1678,-1,-1,1,010001 ,1683,-1,-1,3,2433,2,3,-1,1,01000 ,1693,-1,-1,1,010001,1698,-1,-1,3,2438 ,2,3,-1,1,01000,1708,-1,-1,3,2443 ,2,3,-1,1,01000,1718,-1,-1,1,010001 ,1713,010002,1723,-1,-1,3,2448,2,3,-1 ,1,01000,1735,-1,-1,3,2453,2,3,-1 ,1,01000,1745,-1,-1,1,010001,1740,010002,1750 ,-1,-1,3,2458,2,3,-1,3,2481,-1 ,3,2484,2,171,-1,3,2507,2,44,-1 ,3,2512,2,641,-1,1,01000,1780,-1,2 ,693,-1,3,2525,2,702,-1,1,01000,1792 ,-1,2,707,-1,1,010001,1785,010002,1797,-1 ,2,714,-1,1,01000,1770,01001,1775,07,1804 ,-1,2,791,-1,1,010001,1813,-1,2,814 ,-1,3,2548,2,838,-1,1,01000,1831,-1 ,2,924,-1,3,2559,2,939,-1,1,01000 ,1843,-1,2,966,-1,1,010001,1836,010002,1848 ,-1,2,975,-1,3,2578,2,1092,-1,3 ,2605,2,1100,-1,1,01000,1869,-1,2,1138 ,-1,1,010001,1874,-1,2,1147,-1,1,01000 ,1864,04,1881,-1,2,1187,-1,3,2628,2 ,1341,-1,1,01000,1897,-1,2,1639,-1,1 ,010001,1888,010002,1902,-1,2,1656,-1,1,01000 ,1762,01001,1767,04,1824,07,1855,06,1909,-1 ,-1,3,2663,-1,3,2666,2,3,-1,3 ,2683,2,44,-1,3,2688,2,171,-1,3 ,2701,2,641,-1,1,01000,1949,-1,2,693 ,-1,3,2714,2,702,-1,1,01000,1961,-1 ,2,707,-1,1,010001,1954,010002,1966,-1,2 ,714,-1,1,01001,1939,01000,1944,07,1973,-1 ,2,791,-1,1,010001,1982,-1,2,814,-1 ,3,2737,2,1762,-1,3,2768,2,1770,-1 ,1,01000,2005,-1,2,1813,-1,1,010001,2010 ,-1,2,1824,-1,1,01000,2000,04,2017,-1 ,2,1918,-1,3,2803,2,1934,-1,3,2832 ,2,1944,-1,1,01000,2038,-1,2,1982,-1 ,1,010001,2043,-1,2,1993,-1,3,2847,2 ,2000,-1,3,2880,2,2005,-1,1,01000,2062 ,-1,2,2010,-1,1,010001,2067,-1,2,2017 ,-1,1,01000,2057,04,2074,-1,2,2024,-1 ,3,2917,2,2033,-1,1,01000,2090,-1,2 ,2144,-1,1,010001,2081,010002,2095,-1,2,2157 ,-1,3,2950,2,2267,-1,1,01000,2111,-1 ,2,2291,-1,3,2977,2,2300,-1,1,01000 ,2123,-1,2,2305,-1,1,010001,2116,010002,2128 ,-1,2,2312,-1,1,01000,2033,04,2050,05 ,2102,06,2135,-1,2,2321,-1,1,010001,2024 ,010002,2144,-1,2,2338,-1,3,3006,2,2374 ,-1,1,01000,2166,-1,2,2426,-1,3,3045 ,2,2538,-1,1,01000,2178,-1,2,2597,-1 ,3,3066,2,2747,-1,1,01000,2190,-1,2 ,2752,-1,1,010001,2195,-1,2,2759,-1,3 ,3083,2,2688,-1,1,04,2202,01000,2209,-1 ,2,2766,-1,1,010001,2171,010002,2183,010003,2214 ,-1,2,2779,-1,3,3102,2,838,-1,1 ,01000,2234,-1,2,924,-1,3,3113,2,939 ,-1,1,01000,2246,-1,2,966,-1,1,010001 ,2239,010002,2251,-1,2,975,-1,3,3132,2 ,1092,-1,3,3157,2,1100,-1,1,01000,2272 ,-1,2,1138,-1,1,010001,2277,-1,2,1147 ,-1,1,01000,2267,04,2284,-1,2,1187,-1 ,3,3174,2,1341,-1,1,01000,2300,-1,2 ,1639,-1,1,010001,2291,010002,2305,-1,2,1656 ,-1,1,01001,1931,01000,1934,04,1993,05,2157 ,017,2223,07,2258,06,2312,-1,-1,1,010001 ,1918,010002,2321,-1,-1,3,3201,2,171,-1 ,3,3216,2,44,-1,1,01000,2345,01001,2350 ,-1,2,791,-1,1,010001,2355,-1,2,814 ,-1,3,3221,-1,3,3224,2,3,-1,3 ,3259,2,2374,-1,1,01000,2379,-1,2,2426 ,-1,3,3296,2,2538,-1,1,01000,2391,-1 ,2,2597,-1,3,3315,2,2688,-1,1,01000 ,2403,-1,2,2766,-1,1,010001,2384,010002,2396 ,010003,2408,-1,2,2779,-1,1,04,2364,01001 ,2371,01000,2374,017,2415,-1,-1,3,3334,2 ,44,-1,3,3339,2,171,-1,1,01001,2437 ,01000,2442,-1,2,791,-1,1,010001,2447,-1 ,2,814,-1,3,3354,2,2374,-1,3,3401 ,2,2371,-1,1,01000,2463,01001,2468,-1,2 ,2426,-1,3,3406,2,2538,-1,1,01000,2482 ,-1,2,2597,-1,3,3437,2,2688,-1,3 ,3466,2,2747,-1,1,01000,2499,-1,2,2752 ,-1,1,010001,2504,-1,2,2759,-1,1,01000 ,2494,04,2511,-1,2,2766,-1,1,010001,2473 ,010002,2487,010003,2518,-1,2,2779,-1,3,3483 ,2,3,-1,3,3500,2,1762,-1,3,3527 ,2,1770,-1,1,01000,2548,-1,2,1813,-1 ,1,010001,2553,-1,2,1824,-1,1,01000,2543 ,04,2560,-1,2,1918,-1,3,3554,2,1934 ,-1,1,01000,2576,-1,2,2321,-1,1,010001 ,2567,010002,2581,-1,2,2338,-1,1,04,2456 ,017,2527,01000,2538,05,2588,-1,-1,3,3579 ,2,12,-1,3,3586,2,2374,-1,3,3631 ,2,2371,-1,1,01000,2613,01001,2618,-1,2 ,2426,-1,3,3636,2,2538,-1,3,3663,2 ,2442,-1,1,01000,2637,-1,2,2447,-1,1 ,010001,2642,-1,2,2456,-1,1,01000,2632,04 ,2649,-1,2,2597,-1,3,3680,2,2688,-1 ,1,01000,2665,-1,2,2766,-1,1,010001,2623 ,010002,2656,010003,2670,-1,2,2779,-1,3,3709 ,2,3,-1,3,3726,2,1762,-1,3,3753 ,2,1770,-1,1,01000,2698,-1,2,1813,-1 ,1,010001,2703,-1,2,1824,-1,1,01000,2693 ,04,2710,-1,2,1918,-1,3,3780,2,1934 ,-1,1,01000,2726,-1,2,2321,-1,1,010001 ,2717,010002,2731,-1,2,2338,-1,3,3805,2 ,171,-1,1,01000,2747,-1,2,791,-1,1 ,010001,2752,-1,2,814,-1,1,01,2608,017 ,2677,01000,2688,05,2738,04,2759,-1,-1,1 ,010001,2426,010002,2597,010003,2766,-1,-1,3,3820 ,2,3,-1,3,3839,2,2374,-1,1,01000 ,2793,-1,2,2426,-1,3,3880,2,2538,-1 ,1,01000,2805,-1,2,2597,-1,3,3903,2 ,2688,-1,1,01000,2817,-1,2,2766,-1,1 ,010001,2798,010002,2810,010003,2822,-1,2,2779,-1 ,1,01000,2788,017,2829,-1,-1,3,3926,-1 ,3,3937,2,44,-1,1,01001,2850,-1,2 ,791,-1,1,010001,2855,-1,2,814,-1,1 ,01001,2847,04,2862,-1,-1,3,3952,2,12 ,-1,3,3967,2,3,-1,3,3974,2,171 ,-1,1,01000,2886,-1,2,791,-1,1,010001 ,2891,-1,2,814,-1,1,01,2876,01000,2881 ,04,2898,-1,-1,3,3985,2,9,-1,3 ,4006,2,171,-1,1,01000,2919,-1,2,791 ,-1,1,010001,2924,-1,2,814,-1,1,00 ,2914,04,2931,-1,-1,1,010001,2840,010002,2869 ,010003,2905,010004,2938,-1,-1,3,4015,2,3 ,-1,3,4042,2,1770,-1,1,01000,2961,-1 ,2,1813,-1,1,010001,2966,-1,2,1824,-1 ,3,4069,2,1762,-1,1,04,2973,01000,2980 ,-1,2,1918,-1,3,4096,2,1934,-1,1 ,01000,2994,-1,2,2321,-1,1,010001,2985,010002 ,2999,-1,2,2338,-1,3,4121,2,1092,-1 ,1,01000,3015,-1,2,1187,-1,3,4140,2 ,1341,-1,1,01000,3027,-1,2,1639,-1,1 ,010001,3020,010002,3032,-1,2,1656,-1,3,4159 ,2,2374,-1,1,01000,3048,-1,2,2426,-1 ,3,4206,2,2538,-1,1,01000,3060,-1,2 ,2597,-1,3,4235,2,2688,-1,1,01000,3072 ,-1,2,2766,-1,1,010001,3053,010002,3065,010003 ,3077,-1,2,2779,-1,1,01000,2956,05,3006 ,06,3039,017,3084,-1,-1,3,4264,-1,3 ,4301,2,44,-1,1,01001,3109,-1,2,791 ,-1,1,010001,3114,-1,2,814,-1,3,4312 ,2,3,-1,1,01001,3106,04,3121,01000,3128 ,-1,-1,3,4317,2,12,-1,3,4354,2 ,3,-1,3,4363,2,171,-1,1,01000,3152 ,-1,2,791,-1,1,010001,3157,-1,2,814 ,-1,1,01,3142,01000,3147,04,3164,-1,-1 ,3,4374,2,9,-1,3,4403,2,171,-1 ,1,01000,3185,-1,2,791,-1,1,010001,3190 ,-1,2,814,-1,3,4420,2,3,-1,1 ,00,3180,04,3197,01000,3204,-1,-1,3,4431 ,2,9,-1,3,4464,2,3,-1,1,00 ,3218,01000,3223,-1,-1,1,010001,3095,010002,3133 ,010003,3171,010004,3209,010005,3228,-1,-1,3,4483 ,2,3,-1,1,01000,3248,-1,-1,1,010001 ,3253,-1,-1,1,03,0,01000,3,02,6 ,00,9,01,12,04,814,07,975,06,1656 ,012,1673,020,1688,013,1703,014,1728,015,1755 ,05,2338,017,2779,011,2945,010,3235,016,3258 ,-1,-1}; short mtAccept[] = { 0,0,-1,1,0,-1,2,0,-1,3 ,0,-1,4,0,-1,3,0,5,1,-1 ,4,0,6,1,-1,76,1,1,0,7 ,2,-1,18,1,-1,48,1,49,1,52 ,1,53,1,54,1,55,1,56,1,58 ,1,60,1,62,1,64,1,65,1,1 ,0,63,2,61,2,59,2,57,2,51 ,2,50,2,-1,48,1,52,1,53,1 ,54,1,55,1,56,1,60,1,64,1 ,66,1,67,1,68,1,69,1,70,1 ,71,1,72,1,73,1,74,1,75,1 ,61,2,57,2,50,2,-1,49,2,58 ,2,62,2,65,2,18,1,63,3,59 ,3,51,3,-1,48,1,49,1,55,1 ,56,1,58,1,60,1,62,1,64,1 ,65,1,67,1,68,1,69,1,70,1 ,71,1,72,1,73,1,75,1,4,0 ,63,2,61,2,59,2,57,2,51,2 ,50,2,-1,48,1,49,1,52,1,53 ,1,55,1,66,1,68,1,69,1,70 ,1,71,1,74,1,75,1,179,1,3 ,0,51,2,50,2,-1,56,1,58,1 ,67,1,73,1,1,0,59,2,57,2 ,-1,54,2,60,2,62,2,64,2,65 ,2,72,2,1,0,76,1,63,3,61 ,3,-1,48,1,49,1,52,1,54,1 ,56,1,58,1,60,1,62,1,66,1 ,67,1,72,1,73,1,74,1,75,1 ,179,1,3,0,63,2,61,2,59,2 ,57,2,51,2,50,2,-1,1,0,76 ,1,-1,19,1,78,1,90,1,119,1 ,121,1,122,1,141,1,146,1,147,1 ,180,1,1,0,84,2,-1,25,2,79 ,2,80,2,91,2,92,2,93,2,104 ,2,105,2,148,2,1,0,76,1,109 ,3,108,3,99,3,98,3,97,3,86 ,3,85,3,-1,20,1,78,1,79,1 ,118,1,120,1,136,1,137,1,1,0 ,85,2,84,2,-1,26,2,80,2,138 ,2,139,2,1,0,76,1,86,3,-1 ,90,2,91,2,140,2,141,2,1,0 ,180,1,147,1,146,1,141,1,122,1 ,121,1,119,1,90,1,78,1,19,1 ,97,3,-1,92,3,93,3,104,3,105 ,3,142,3,143,3,76,1,1,0,148 ,2,105,2,104,2,93,2,92,2,91 ,2,80,2,79,2,25,2,109,4,108 ,4,99,4,98,4,-1,90,2,91,2 ,92,2,140,2,142,2,143,2,1,0 ,137,1,136,1,120,1,118,1,79,1 ,78,1,20,1,98,3,97,3,-1,93 ,3,76,1,1,0,139,2,138,2,80 ,2,26,2,99,4,-1,105,4,25,2 ,79,2,80,2,91,2,92,2,93,2 ,104,2,105,2,148,2,1,0,76,1 ,143,3,142,3,105,3,104,3,93,3 ,92,3,109,5,108,5,-1,104,3,105 ,3,20,1,78,1,79,1,118,1,120 ,1,136,1,137,1,1,0,143,2,142 ,2,140,2,92,2,91,2,90,2,108 ,4,-1,93,3,76,1,1,0,139,2 ,138,2,80,2,26,2,109,5,-1,23 ,1,81,1,94,1,106,1,116,1,117 ,1,181,1,1,0,100,2,87,2,-1 ,82,2,83,2,95,2,96,2,107,2 ,1,0,76,1,111,3,110,3,103,3 ,102,3,101,3,89,3,88,3,-1,33 ,3,34,3,127,3,129,3,133,3,150 ,3,151,3,174,3,175,3,176,3,177 ,3,178,3,76,1,1,0,148,2,105 ,2,104,2,93,2,92,2,91,2,80 ,2,79,2,25,2,135,4,134,4,130 ,4,-1,12,2,31,2,32,2,35,2 ,36,2,126,2,128,2,132,2,149,2 ,1,0,180,1,147,1,146,1,141,1 ,122,1,121,1,119,1,90,1,78,1 ,19,1,131,3,-1,12,2,31,2,32 ,2,34,2,35,2,36,2,126,2,127 ,2,128,2,129,2,132,2,133,2,149 ,2,150,2,151,2,174,2,175,2,177 ,2,178,2,1,0,137,1,136,1,120 ,1,118,1,79,1,78,1,20,1,135 ,3,134,3,131,3,130,3,-1,24,1 ,81,1,82,1,114,1,115,1,126,1 ,127,1,1,0,130,2,88,2,87,2 ,-1,83,2,128,2,129,2,1,0,76 ,1,131,3,89,3,-1,94,2,95,2 ,106,2,107,2,132,2,133,2,1,0 ,181,1,117,1,116,1,106,1,94,1 ,81,1,23,1,134,3,110,3,101,3 ,100,3,-1,96,3,76,1,1,0,107 ,2,96,2,95,2,83,2,82,2,135 ,4,111,4,103,4,102,4,-1,34,2 ,94,2,95,2,96,2,132,2,133,2 ,1,0,127,1,126,1,115,1,114,1 ,82,1,81,1,24,1,135,3,134,3 ,102,3,101,3,100,3,-1,83,2,128 ,2,129,2,1,0,76,1,103,4,-1 ,106,3,107,3,23,1,81,1,94,1 ,106,1,116,1,117,1,181,1,1,0 ,133,2,132,2,107,2,106,2,95,2 ,94,2,111,4,110,4,-1,106,3,107 ,3,24,1,81,1,82,1,114,1,115 ,1,126,1,127,1,1,0,133,2,132 ,2,96,2,95,2,94,2,34,2,111 ,4,110,4,-1,9,1,27,1,112,1 ,1,0,113,2,-1,124,3,125,3,76 ,1,1,0,148,2,105,2,104,2,93 ,2,92,2,91,2,80,2,79,2,25 ,2,123,4,-1,124,2,1,0,137,1 ,136,1,120,1,118,1,79,1,78,1 ,20,1,123,3,-1,8,1,10,1,11 ,1,28,1,112,1,124,1,125,1,1 ,0,123,2,113,2,-1,30,1,152,1 ,153,1,154,1,155,1,156,1,157,1 ,158,1,160,1,162,1,163,1,166,1 ,169,1,170,1,171,1,173,1,1,0 ,165,2,-1,21,2,159,2,161,2,164 ,2,168,2,1,0,76,1,167,3,-1 ,153,1,158,1,159,1,162,1,163,1 ,164,1,172,1,1,0,167,2,165,2 ,-1,152,1,158,1,159,1,160,1,161 ,1,172,1,173,1,1,0,167,2,165 ,2,-1,76,1,1,0,8,2,-1,1 ,0,112,1,27,1,9,1,-1,3,0 ,10,1,-1,4,0,11,1,-1,28,1 ,-1,25,2,79,2,80,2,91,2,92 ,2,93,2,104,2,105,2,148,2,1 ,0,76,1,125,3,124,3,-1,20,1 ,78,1,79,1,118,1,120,1,136,1 ,137,1,1,0,124,2,-1,26,2,80 ,2,138,2,139,2,1,0,76,1,125 ,3,-1,1,0,125,1,124,1,112,1 ,28,1,11,1,10,1,8,1,-1,76 ,1,1,0,9,2,-1,27,1,-1,19 ,1,78,1,90,1,119,1,121,1,122 ,1,141,1,146,1,147,1,180,1,1 ,0,149,2,132,2,128,2,126,2,36 ,2,35,2,32,2,31,2,12,2,-1 ,25,2,79,2,80,2,91,2,92,2 ,93,2,104,2,105,2,148,2,1,0 ,76,1,178,3,177,3,176,3,175,3 ,174,3,151,3,150,3,133,3,129,3 ,127,3,34,3,33,3,-1,20,1,78 ,1,79,1,118,1,120,1,136,1,137 ,1,1,0,178,2,177,2,175,2,174 ,2,151,2,150,2,149,2,133,2,132 ,2,129,2,128,2,127,2,126,2,36 ,2,35,2,34,2,32,2,31,2,12 ,2,-1,90,2,91,2,140,2,141,2 ,1,0,180,1,147,1,146,1,141,1 ,122,1,121,1,119,1,90,1,78,1 ,19,1,33,3,-1,90,2,91,2,92 ,2,140,2,142,2,143,2,1,0,137 ,1,136,1,120,1,118,1,79,1,78 ,1,20,1,33,3,-1,26,2,80,2 ,138,2,139,2,1,0,76,1,176,3 ,-1,1,0,181,1,117,1,116,1,106 ,1,94,1,81,1,23,1,-1,24,1 ,-1,76,1,1,0,107,2,96,2,95 ,2,83,2,82,2,-1,113,2,1,0 ,112,1,27,1,9,1,115,3,-1,113 ,2,123,2,1,0,125,1,124,1,112 ,1,28,1,11,1,10,1,8,1,115 ,3,-1,9,1,27,1,112,1,1,0 ,114,2,-1,8,1,10,1,11,1,28 ,1,112,1,124,1,125,1,1,0,114 ,2,-1,25,2,79,2,80,2,91,2 ,92,2,93,2,104,2,105,2,148,2 ,1,0,76,1,178,3,177,3,151,3 ,12,3,-1,19,1,78,1,90,1,119 ,1,121,1,122,1,141,1,146,1,147 ,1,180,1,1,0,176,2,175,2,174 ,2,150,2,149,2,36,2,35,2,33 ,2,-1,20,1,78,1,79,1,118,1 ,120,1,136,1,137,1,1,0,178,2 ,177,2,176,2,175,2,174,2,151,2 ,150,2,149,2,12,2,-1,90,2,91 ,2,140,2,141,2,1,0,180,1,147 ,1,146,1,141,1,122,1,121,1,119 ,1,90,1,78,1,19,1,33,3,-1 ,90,2,91,2,92,2,140,2,142,2 ,143,2,1,0,137,1,136,1,120,1 ,118,1,79,1,78,1,20,1,33,3 ,-1,119,2,180,2,1,0,173,1,171 ,1,170,1,169,1,166,1,163,1,162 ,1,160,1,158,1,157,1,156,1,155 ,1,154,1,153,1,152,1,30,1,36 ,3,35,3,-1,119,2,180,2,1,0 ,172,1,164,1,163,1,162,1,159,1 ,158,1,153,1,36,3,35,3,-1,21 ,1,22,1,4,0,36,3,35,3,-1 ,23,1,-1,1,0,127,1,126,1,115 ,1,114,1,82,1,81,1,24,1,-1 ,12,2,31,2,32,2,35,2,36,2 ,126,2,128,2,132,2,149,2,1,0 ,180,1,147,1,146,1,141,1,122,1 ,121,1,119,1,90,1,78,1,19,1 ,34,3,32,3,31,3,-1,12,2,31 ,2,32,2,34,2,35,2,36,2,126 ,2,127,2,128,2,129,2,132,2,133 ,2,149,2,150,2,151,2,174,2,175 ,2,177,2,178,2,1,0,137,1,136 ,1,120,1,118,1,79,1,78,1,20 ,1,34,3,32,3,31,3,-1,23,1 ,81,1,94,1,106,1,116,1,117,1 ,181,1,1,0,133,2,132,2,107,2 ,106,2,95,2,94,2,-1,82,2,83 ,2,95,2,96,2,107,2,1,0,76 ,1,96,3,-1,33,2,35,2,36,2 ,149,2,150,2,174,2,175,2,176,2 ,1,0,180,1,147,1,146,1,141,1 ,122,1,121,1,119,1,90,1,78,1 ,19,1,32,3,31,3,-1,12,2,149 ,2,150,2,151,2,174,2,175,2,176 ,2,177,2,178,2,1,0,137,1,136 ,1,120,1,118,1,79,1,78,1,20 ,1,32,3,31,3,-1,24,1,81,1 ,82,1,114,1,115,1,126,1,127,1 ,1,0,133,2,132,2,96,2,95,2 ,94,2,34,2,-1,94,2,95,2,106 ,2,107,2,132,2,133,2,1,0,181 ,1,117,1,116,1,106,1,94,1,81 ,1,23,1,107,3,106,3,-1,34,2 ,94,2,95,2,96,2,132,2,133,2 ,1,0,127,1,126,1,115,1,114,1 ,82,1,81,1,24,1,107,3,106,3 ,-1,76,1,1,0,129,2,128,2,83 ,2,-1,113,2,1,0,112,1,27,1 ,9,1,117,3,-1,113,2,123,2,1 ,0,125,1,124,1,112,1,28,1,11 ,1,10,1,8,1,117,3,-1,9,1 ,27,1,112,1,1,0,116,2,-1,8 ,1,10,1,11,1,28,1,112,1,124 ,1,125,1,1,0,116,2,-1,30,1 ,152,1,153,1,154,1,155,1,156,1 ,157,1,158,1,160,1,162,1,163,1 ,166,1,169,1,170,1,171,1,173,1 ,1,0,181,2,-1,153,1,158,1,159 ,1,162,1,163,1,164,1,172,1,1 ,0,181,2,-1,152,1,158,1,159,1 ,160,1,161,1,172,1,173,1,1,0 ,181,2,-1,1,0,13,1,-1,1,0 ,14,1,-1,1,0,15,1,-1,1,0 ,16,1,-1,1,0,16,1,-1,1,0 ,17,1,-1,1,0,17,1,-1,1,0 ,180,1,147,1,146,1,141,1,122,1 ,121,1,119,1,90,1,78,1,19,1 ,-1,20,1,-1,76,1,1,0,148,2 ,105,2,104,2,93,2,92,2,91,2 ,80,2,79,2,25,2,-1,18,1,26 ,2,-1,113,2,1,0,112,1,27,1 ,9,1,120,3,-1,113,2,123,2,1 ,0,125,1,124,1,112,1,28,1,11 ,1,10,1,8,1,120,3,-1,9,1 ,27,1,112,1,1,0,118,2,-1,8 ,1,10,1,11,1,28,1,112,1,124 ,1,125,1,1,0,118,2,-1,23,1 ,81,1,94,1,106,1,116,1,117,1 ,181,1,1,0,144,2,142,2,140,2 ,138,2,136,2,-1,82,2,83,2,95 ,2,96,2,107,2,1,0,76,1,145 ,3,143,3,139,3,137,3,-1,24,1 ,81,1,82,1,114,1,115,1,126,1 ,127,1,1,0,145,2,144,2,143,2 ,142,2,140,2,139,2,138,2,137,2 ,136,2,-1,19,1,-1,1,0,137,1 ,136,1,120,1,118,1,79,1,78,1 ,20,1,-1,18,1,25,2,-1,76,1 ,1,0,139,2,138,2,80,2,26,2 ,-1,113,2,1,0,112,1,27,1,9 ,1,122,3,-1,113,2,123,2,1,0 ,125,1,124,1,112,1,28,1,11,1 ,10,1,8,1,122,3,-1,19,1,78 ,1,90,1,119,1,121,1,122,1,141 ,1,146,1,147,1,180,1,1,0,141 ,2,140,2,91,2,90,2,-1,25,2 ,79,2,80,2,91,2,92,2,93,2 ,104,2,105,2,148,2,1,0,76,1 ,143,3,142,3,105,3,104,3,93,3 ,92,3,-1,20,1,78,1,79,1,118 ,1,120,1,136,1,137,1,1,0,143 ,2,142,2,140,2,92,2,91,2,90 ,2,-1,26,2,80,2,138,2,139,2 ,1,0,76,1,93,3,-1,90,2,91 ,2,140,2,141,2,1,0,180,1,147 ,1,146,1,141,1,122,1,121,1,119 ,1,90,1,78,1,19,1,104,3,-1 ,92,3,93,3,104,3,105,3,142,3 ,143,3,76,1,1,0,148,2,105,2 ,104,2,93,2,92,2,91,2,80,2 ,79,2,25,2,105,4,-1,90,2,91 ,2,92,2,140,2,142,2,143,2,1 ,0,137,1,136,1,120,1,118,1,79 ,1,78,1,20,1,105,3,104,3,-1 ,144,2,145,2,146,2,148,2,1,0 ,181,1,117,1,116,1,106,1,94,1 ,81,1,23,1,141,3,-1,144,2,145 ,2,146,2,147,2,148,2,1,0,127 ,1,126,1,115,1,114,1,82,1,81 ,1,24,1,141,3,-1,30,1,152,1 ,153,1,154,1,155,1,156,1,157,1 ,158,1,160,1,162,1,163,1,166,1 ,169,1,170,1,171,1,173,1,1,0 ,180,2,119,2,-1,153,1,158,1,159 ,1,162,1,163,1,164,1,172,1,1 ,0,180,2,119,2,-1,162,2,163,2 ,164,2,166,2,168,2,1,0,76,1 ,119,3,-1,152,1,158,1,159,1,160 ,1,161,1,172,1,173,1,1,0,180 ,2,-1,9,1,27,1,112,1,1,0 ,121,2,-1,8,1,10,1,11,1,28 ,1,112,1,124,1,125,1,1,0,121 ,2,-1,23,1,81,1,94,1,106,1 ,116,1,117,1,181,1,1,0,148,2 ,146,2,145,2,144,2,-1,82,2,83 ,2,95,2,96,2,107,2,1,0,76 ,1,147,3,-1,24,1,81,1,82,1 ,114,1,115,1,126,1,127,1,1,0 ,148,2,147,2,146,2,145,2,144,2 ,-1,76,1,1,0,168,2,164,2,161 ,2,159,2,21,2,-1,18,1,22,2 ,-1,29,1,-1,1,0,173,1,171,1 ,170,1,169,1,166,1,163,1,162,1 ,160,1,158,1,157,1,156,1,155,1 ,154,1,153,1,152,1,30,1,-1,30 ,1,152,1,153,1,154,1,155,1,156 ,1,157,1,158,1,160,1,162,1,163 ,1,166,1,169,1,170,1,171,1,173 ,1,1,0,172,2,-1,153,1,158,1 ,159,1,162,1,163,1,164,1,172,1 ,1,0,172,2,-1,152,1,158,1,159 ,1,160,1,161,1,172,1,173,1,1 ,0,172,2,-1,18,1,21,2,-1,76 ,1,1,0,168,2,166,2,161,2,160 ,2,22,2,-1,30,1,152,1,153,1 ,154,1,155,1,156,1,157,1,158,1 ,160,1,162,1,163,1,166,1,169,1 ,170,1,171,1,173,1,1,0,173,2 ,171,2,170,2,169,2,152,2,29,2 ,-1,29,1,30,2,-1,153,1,158,1 ,159,1,162,1,163,1,164,1,172,1 ,1,0,173,2,171,2,170,2,169,2 ,152,2,30,2,29,2,-1,152,1,158 ,1,159,1,160,1,161,1,172,1,173 ,1,1,0,173,2,170,2,169,2,152 ,2,30,2,29,2,-1,162,2,163,2 ,164,2,166,2,168,2,1,0,76,1 ,171,3,-1,1,0,172,1,164,1,163 ,1,162,1,159,1,158,1,153,1,-1 ,19,1,78,1,90,1,119,1,121,1 ,122,1,141,1,146,1,147,1,180,1 ,1,0,156,2,154,2,-1,25,2,79 ,2,80,2,91,2,92,2,93,2,104 ,2,105,2,148,2,1,0,76,1,157 ,3,155,3,-1,20,1,78,1,79,1 ,118,1,120,1,136,1,137,1,1,0 ,157,2,156,2,155,2,154,2,-1,4 ,0,22,1,21,1,-1,30,1,152,1 ,153,1,154,1,155,1,156,1,157,1 ,158,1,160,1,162,1,163,1,166,1 ,169,1,170,1,171,1,173,1,1,0 ,171,2,170,2,169,2,153,2,29,2 ,-1,29,1,30,2,-1,153,1,158,1 ,159,1,162,1,163,1,164,1,172,1 ,1,0,170,2,169,2,153,2,30,2 ,29,2,-1,22,2,160,2,161,2,166 ,2,168,2,1,0,76,1,171,3,-1 ,152,1,158,1,159,1,160,1,161,1 ,172,1,173,1,1,0,171,2,170,2 ,169,2,153,2,30,2,29,2,-1,1 ,0,173,1,172,1,161,1,160,1,159 ,1,158,1,152,1,-1,19,1,78,1 ,90,1,119,1,121,1,122,1,141,1 ,146,1,147,1,180,1,1,0,155,2 ,154,2,-1,25,2,79,2,80,2,91 ,2,92,2,93,2,104,2,105,2,148 ,2,1,0,76,1,157,3,156,3,-1 ,20,1,78,1,79,1,118,1,120,1 ,136,1,137,1,1,0,157,2,156,2 ,155,2,154,2,-1,76,1,1,0,168 ,2,166,2,164,2,163,2,162,2,-1 ,1,0,44,1,43,1,42,1,41,1 ,40,1,39,1,38,1,37,1,-1,30 ,1,152,1,153,1,154,1,155,1,156 ,1,157,1,158,1,160,1,162,1,163 ,1,166,1,169,1,170,1,171,1,173 ,1,1,0,47,2,46,2,45,2,-1 ,153,1,158,1,159,1,162,1,163,1 ,164,1,172,1,1,0,47,2,46,2 ,45,2,-1,152,1,158,1,159,1,160 ,1,161,1,172,1,173,1,1,0,47 ,2,46,2,45,2,-1,45,1,43,1 ,40,1,39,1,37,1,-1,18,1,47 ,2,46,2,44,2,42,2,41,2,38 ,2,-1,4,0,46,1,45,1,44,1 ,43,1,38,1,37,1,-1,1,0,41 ,1,39,1,-1,76,1,1,0,47,2 ,42,2,40,2,-1,3,0,47,1,46 ,1,45,1,42,1,41,1,40,1,39 ,1,38,1,37,1,-1,76,1,1,0 ,44,2,43,2,-1,1,0,65,1,64 ,1,62,1,60,1,58,1,56,1,55 ,1,54,1,53,1,52,1,49,1,48 ,1,-1,25,2,79,2,80,2,91,2 ,92,2,93,2,104,2,105,2,148,2 ,1,0,76,1,69,3,66,3,-1,19 ,1,78,1,90,1,119,1,121,1,122 ,1,141,1,146,1,147,1,180,1,1 ,0,68,2,67,2,-1,20,1,78,1 ,79,1,118,1,120,1,136,1,137,1 ,1,0,69,2,68,2,67,2,66,2 ,-1,23,1,81,1,94,1,106,1,116 ,1,117,1,181,1,1,0,70,2,-1 ,24,1,81,1,82,1,114,1,115,1 ,126,1,127,1,1,0,70,2,-1,30 ,1,152,1,153,1,154,1,155,1,156 ,1,157,1,158,1,160,1,162,1,163 ,1,166,1,169,1,170,1,171,1,173 ,1,1,0,179,2,75,2,74,2,73 ,2,72,2,71,2,-1,153,1,158,1 ,159,1,162,1,163,1,164,1,172,1 ,1,0,179,2,75,2,74,2,73,2 ,72,2,71,2,-1,152,1,158,1,159 ,1,160,1,161,1,172,1,173,1,1 ,0,179,2,75,2,74,2,73,2,72 ,2,71,2,-1,75,1,74,1,73,1 ,72,1,71,1,70,1,69,1,68,1 ,67,1,66,1,64,1,60,1,56,1 ,55,1,54,1,53,1,52,1,48,1 ,-1,18,1,65,2,62,2,58,2,49 ,2,-1,1,0,179,1,-1,4,0,75 ,1,73,1,72,1,71,1,70,1,69 ,1,68,1,67,1,65,1,64,1,62 ,1,60,1,58,1,56,1,55,1,49 ,1,48,1,-1,1,0,54,1,53,1 ,52,1,-1,76,1,1,0,179,2,74 ,2,66,2,-1,3,0,179,1,75,1 ,74,1,71,1,70,1,69,1,68,1 ,66,1,55,1,53,1,52,1,49,1 ,48,1,-1,76,1,1,0,72,2,65 ,2,64,2,62,2,60,2,54,2,-1 ,1,0,73,1,67,1,58,1,56,1 ,-1,3,0,179,1,75,1,74,1,73 ,1,72,1,67,1,66,1,62,1,60 ,1,58,1,56,1,54,1,52,1,49 ,1,48,1,-1,1,0,71,1,70,1 ,69,1,68,1,65,1,64,1,55,1 ,53,1,-1,1,0,77,1,-1}; short mtStart = 3263; short int mtMap[] = { 01,01,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,00,00,00 ,00,00}; short int mtPaths[] = { 4,-4,-2,01000,-3,-4,-2,01000,-3,-2 ,01000,-3,-2,01000,-1,-1,0,4,-4,-2 ,01000,-3,-4,-2,01000,-3,-2,01000,-3,-2 ,01000,-1,-1,0,5,-4,-4,-2,01000,-3 ,-2,01000,-3,-2,01000,-1,-3,-2,01000,-3 ,-4,-2,01000,-1,-3,-3,-1,0,4,-4 ,-4,-4,-2,01000,-1,-3,-2,01000,-1,-3 ,-4,-4,-2,01000,-1,-3,-2,01000,-1,-1 ,0,4,-4,-4,-4,-2,01000,-1,-3,-2 ,01000,-1,-3,-4,-4,-2,01000,-1,-3,-2 ,01000,-1,-1,0,4,-4,-4,-4,-2,01000 ,-1,-3,-4,-2,01000,-1,-1,-3,-4,-2 ,01000,-3,-2,01000,-1,-1,0,4,-4,-4 ,-4,-2,01000,-1,-3,-2,01000,-1,-3,-4 ,-2,01000,-3,-2,01000,-1,-1,0,4,-4 ,-4,-4,-2,01000,-1,-3,-2,01000,-1,-3 ,-4,-2,01000,-3,-2,01000,-1,-1,0,5 ,-4,-2,01000,-3,-4,-2,01000,-3,-2,01000 ,-3,-2,01000,-1,-3,-2,01000,-1,0,5 ,-4,-4,-2,01000,-3,-2,01000,-3,-2,01000 ,-1,-3,-2,01000,-3,-2,01000,-1,0,7 ,-4,-2,01000,-3,-4,-2,01000,-3,-2,01000 ,-3,-4,-2,01000,-1,-1,-3,-4,-2,01000 ,-3,-4,-2,01000,-1,-3,-2,01000,-1,-1 ,0,7,-4,-2,01000,-3,-4,-2,01000,-3 ,-2,01000,-3,-2,01000,-1,-3,-4,-2,01000 ,-3,-2,01000,-3,-2,01000,-1,-1,0,7 ,-4,-2,01000,-3,-4,-2,01000,-3,-2,01000 ,-3,-2,01000,-1,-3,-4,-2,01000,-3,-2 ,01000,-3,-2,01000,-1,-1,0,3,-4,-4 ,-2,01000,-1,-3,-4,-2,01000,-1,-3,-4 ,-2,01000,-1,-1,0,3,-4,-4,-4,-2 ,01000,-1,-3,-2,01000,-3,-2,01000,-1,-1 ,0,3,-4,-2,01000,-3,-4,-2,01000,-1 ,-3,-4,-2,01000,-1,-1,0,3,-4,-4 ,-2,01000,-3,-2,01000,-3,-2,01000,-1,-1 ,0,3,-4,-4,-2,01000,-1,-3,-2,01000 ,-3,-4,-2,01000,-1,-1,0,3,-4,-2 ,01000,-3,-2,01000,-3,-4,-2,01000,-1,-1 ,0,3,-4,-2,01000,-3,-2,01000,-3,-4 ,-2,01000,-1,-1,0,3,-4,-4,-2,01000 ,-1,-3,-4,-2,01000,-1,-3,-2,01000,-1 ,0,3,-4,-2,01000,-3,-4,-2,01000,-1 ,-3,-2,01000,-1,0,3,-4,-4,-2,01000 ,-1,-3,-2,01000,-3,-2,01000,-1,0,3 ,-4,-2,01000,-3,-2,01000,-3,-2,01000,-1 ,0,5,-4,-2,01000,-3,-4,-4,-2,01000 ,-1,-3,-2,01000,-1,-3,-4,-4,-2,01000 ,-1,-3,-2,01000,-1,-1,0,5,-4,-2 ,01000,-3,-4,-2,01000,-3,-2,01000,-1,-3 ,-4,-4,-2,01000,-1,-3,-2,01000,-1,-1 ,0,5,-4,-2,01000,-3,-4,-4,-2,01000 ,-1,-3,-2,01000,-1,-3,-4,-2,01000,-3 ,-2,01000,-1,-1,0,5,-4,-2,01000,-3 ,-4,-2,01000,-3,-2,01000,-1,-3,-4,-2 ,01000,-3,-2,01000,-1,-1,0,5,-4,-2 ,01000,-3,-2,01000,-3,-4,-2,01000,-3,-2 ,01000,-3,-2,01000,-1,-1,0,5,-4,-2 ,01000,-3,-4,-2,01000,-3,-2,01000,-3,-2 ,01000,-1,-3,-2,01000,-1,0,4,-4,-4 ,-4,-2,01000,-1,-3,-2,01000,-1,-3,-4 ,-4,-2,01000,-1,-3,-2,01000,-1,-1,0 ,4,-4,-4,-4,-2,01000,-1,-3,-2,01000 ,-1,-3,-4,-2,01000,-3,-2,01000,-1,-1 ,0,4,-4,-4,-2,01000,-3,-2,01000,-1 ,-3,-4,-2,01000,-3,-2,01000,-1,-1,0 ,3,-4,-4,-2,01000,-1,-3,-4,-2,01000 ,-3,-2,01000,-1,-1,0,3,-4,-2,01000 ,-3,-4,-4,-2,01000,-1,-3,-2,01000,-1 ,-1,0,3,-4,-2,01000,-3,-4,-2,01000 ,-3,-2,01000,-1,-1,0,4,-4,-4,-4 ,-2,01000,-1,-3,-2,01000,-1,-3,-4,-2 ,01000,-3,-2,01000,-1,-1,0,4,-4,-4 ,-2,01000,-3,-2,01000,-1,-3,-4,-2,01000 ,-3,-2,01000,-1,-1,0,4,-4,-4,-4 ,-2,01000,-1,-3,-2,01000,-1,-3,-4,-4 ,-2,01000,-1,-3,-2,01000,-1,-1,0,4 ,-4,-4,-2,01000,-3,-2,01000,-1,-3,-4 ,-4,-2,01000,-1,-3,-2,01000,-1,-1,0 ,4,-4,-2,01000,-3,-4,-2,01000,-3,-4 ,-2,01000,-3,-2,01000,-1,-1,-1,0,4 ,-4,-4,-2,01000,-3,-2,01000,-1,-3,-4 ,-2,01000,-3,-2,01000,-1,-1,0,3,-4 ,-4,-4,-2,01000,-1,-3,-2,01000,-1,-3 ,-4,-2,01000,-1,-1,0,3,-4,-4,-2 ,01000,-3,-2,01000,-1,-3,-4,-2,01000,-1 ,-1,0,3,-4,-4,-4,-2,01000,-1,-3 ,-2,01000,-1,-3,-2,01000,-1,0,3,-4 ,-4,-2,01000,-3,-2,01000,-1,-3,-2,01000 ,-1,0,4,-4,-4,-4,-4,-2,01000,-1 ,-3,-2,01000,-1,-3,-4,-4,-2,01000,-1 ,-3,-2,01000,-1,-1,-1,0,4,-4,-4 ,-4,-4,-2,01000,-1,-3,-2,01000,-1,-3 ,-4,-2,01000,-3,-2,01000,-1,-1,-1,0 ,4,-4,-4,-4,-2,01000,-1,-3,-2,01000 ,-1,-3,-4,-2,01000,-3,-2,01000,-1,-1 ,0,4,-4,-4,-2,01000,-3,-2,01000,-1 ,-3,-4,-2,01000,-3,-2,01000,-1,-1,0 ,3,-4,-4,-4,-2,01000,-3,-2,01000,-1 ,-3,-4,-2,01000,-1,-1,-1,0,3,-4 ,-4,-4,-4,-2,01000,-1,-3,-2,01000,-1 ,-3,-2,01000,-1,-1,0,3,-4,-4,-4 ,-2,01000,-1,-3,-2,01000,-1,-3,-4,-2 ,01000,-1,-1,0,3,-4,-4,-2,01000,-3 ,-2,01000,-1,-3,-4,-2,01000,-1,-1,0 ,3,-4,-4,-4,-2,01000,-1,-3,-2,01000 ,-1,-3,-2,01000,-1,0,3,-4,-4,-2 ,01000,-3,-2,01000,-1,-3,-2,01000,-1,0 ,3,-4,-4,-4,-2,01000,-1,-3,-4,-2 ,01000,-1,-1,-3,-2,01000,-1,0,3,-4 ,-4,-4,-2,01000,-1,-3,-2,01000,-1,-3 ,-2,01000,-1,0,3,-4,-4,-4,-4,-2 ,01000,-1,-3,-2,01000,-1,-3,-2,01000,-1 ,-1,0,3,-4,-2,01000,-3,-4,-4,-2 ,01000,-3,-2,01000,-1,-1,-1,0,3,-4 ,-2,01000,-3,-4,-2,01000,-3,-2,01000,-1 ,-1,0,3,-4,-4,-4,-2,01000,-3,-2 ,01000,-1,-1,-3,-2,01000,-1,0,4,-4 ,-2,01000,-3,-4,-2,01000,-3,-2,01000,-3 ,-4,-2,01000,-1,-1,-1,0,3,-4,-4 ,-2,01000,-3,-2,01000,-1,-3,-2,01000,-1 ,0,3,-4,-2,01000,-3,-4,-4,-2,01000 ,-3,-2,01000,-1,-1,-1,0,3,-4,-2 ,01000,-3,-4,-2,01000,-3,-2,01000,-1,-1 ,0,3,-4,-4,-4,-2,01000,-3,-2,01000 ,-1,-1,-3,-2,01000,-1,0,3,-4,-4 ,-2,01000,-3,-2,01000,-1,-3,-2,01000,-1 ,0,2,-4,-4,-2,01000,-3,-2,01000,-1 ,-1,0,2,-4,-2,01000,-3,-2,01000,-1 ,0,4,-4,-4,-4,-2,01000,-1,-3,-4 ,-4,-2,01000,-1,-3,-4,-2,01000,-3,-2 ,01000,-1,-1,-1,-1,0,4,-4,-4,-4 ,-2,01000,-1,-3,-4,-2,01000,-3,-4,-2 ,01000,-3,-2,01000,-1,-1,-1,-1,0,4 ,-4,-4,-4,-2,01000,-1,-3,-4,-4,-2 ,01000,-1,-3,-4,-4,-2,01000,-1,-3,-4 ,-2,01000,-1,-1,-1,-1,-1,0,4,-4 ,-4,-4,-2,01000,-1,-3,-4,-4,-2,01000 ,-1,-3,-4,-4,-2,01000,-1,-3,-2,01000 ,-1,-1,-1,-1,0,4,-4,-4,-2,01000 ,-1,-3,-4,-2,01000,-3,-4,-2,01000,-3 ,-2,01000,-1,-1,-1,0,4,-4,-2,01000 ,-3,-4,-2,01000,-3,-4,-2,01000,-3,-2 ,01000,-1,-1,-1,0,4,-4,-4,-2,01000 ,-1,-3,-4,-4,-2,01000,-1,-3,-4,-4 ,-2,01000,-1,-3,-2,01000,-1,-1,-1,0 ,4,-4,-4,-2,01000,-1,-3,-4,-4,-2 ,01000,-1,-3,-4,-2,01000,-3,-2,01000,-1 ,-1,-1,0,3,-4,-4,-4,-2,01000,-1 ,-3,-4,-4,-2,01000,-1,-3,-4,-2,01000 ,-1,-1,-1,-1,0,3,-4,-4,-4,-2 ,01000,-1,-3,-4,-4,-2,01000,-1,-3,-2 ,01000,-1,-1,-1,0,3,-4,-4,-4,-2 ,01000,-1,-3,-4,-2,01000,-3,-2,01000,-1 ,-1,-1,0,3,-4,-4,-2,01000,-3,-4 ,-2,01000,-3,-2,01000,-1,-1,-1,0,3 ,-4,-4,-4,-2,01000,-1,-3,-4,-4,-2 ,01000,-1,-3,-4,-2,01000,-1,-1,-1,-1 ,0,3,-4,-4,-4,-2,01000,-1,-3,-4 ,-4,-2,01000,-1,-3,-2,01000,-1,-1,-1 ,0,3,-4,-4,-4,-2,01000,-1,-3,-4 ,-2,01000,-3,-2,01000,-1,-1,-1,0,3 ,-4,-4,-2,01000,-1,-3,-4,-4,-2,01000 ,-1,-3,-2,01000,-1,-1,0,3,-4,-4 ,-2,01000,-1,-3,-4,-2,01000,-3,-2,01000 ,-1,-1,0,3,-4,-2,01000,-3,-4,-2 ,01000,-3,-2,01000,-1,-1,0,3,-4,-4 ,-2,01000,-1,-3,-4,-4,-2,01000,-1,-3 ,-4,-2,01000,-1,-1,-1,0,3,-4,-4 ,-2,01000,-1,-3,-4,-4,-2,01000,-1,-3 ,-2,01000,-1,-1,0,3,-4,-4,-2,01000 ,-1,-3,-4,-2,01000,-3,-2,01000,-1,-1 ,0,3,-4,-2,01000,-3,-4,-2,01000,-3 ,-2,01000,-1,-1,0,2,-4,-4,-4,-2 ,01000,-1,-3,-4,-2,01000,-1,-1,-1,0 ,2,-4,-4,-4,-2,01000,-1,-3,-2,01000 ,-1,-1,0,2,-4,-4,-2,01000,-3,-2 ,01000,-1,-1,0,2,-4,-4,-4,-2,01000 ,-1,-3,-4,-2,01000,-1,-1,-1,0,2 ,-4,-4,-4,-2,01000,-1,-3,-2,01000,-1 ,-1,0,2,-4,-4,-2,01000,-3,-2,01000 ,-1,-1,0,2,-4,-4,-2,01000,-1,-3 ,-4,-2,01000,-1,-1,0,2,-4,-4,-2 ,01000,-1,-3,-2,01000,-1,0,2,-4,-2 ,01000,-3,-2,01000,-1,0,2,-4,-4,-2 ,01000,-1,-3,-4,-2,01000,-1,-1,0,2 ,-4,-4,-2,01000,-1,-3,-2,01000,-1,0 ,2,-4,-2,01000,-3,-2,01000,-1,0,1 ,-4,-2,01000,-1,0,1,-4,-2,01000,-1 ,0,4,-4,-4,-2,01000,-3,-2,01000,-3 ,-2,01000,-1,-3,-2,01001,-3,-3,-3,-1 ,0,5,-4,-4,-2,01000,-3,-2,01000,-3 ,-2,01000,-1,-3,-2,01001,-3,-4,-2,01000 ,-1,-3,-3,-1,0,5,-4,-4,-2,01000 ,-3,-2,01000,-3,-2,01000,-1,-3,-2,01001 ,-3,-3,-2,01000,-3,-1,0,5,-4,-4 ,-2,01000,-3,-2,01000,-3,-2,01000,-1,-3 ,-2,01001,-3,-3,-4,-2,01000,-1,-3,-1 ,0,5,-4,-4,-2,01000,-3,-2,01000,-3 ,-2,01000,-1,-3,-2,01001,-3,-3,-3,-2 ,01000,-1,0,4,-4,-4,-2,01000,-3,-2 ,01000,-1,-3,-2,01001,-3,-3,-3,-2,01000 ,-1,0,4,-4,-4,-4,-2,01000,-1,-3 ,-2,01000,-1,-3,-2,01001,-3,-3,-3,-2 ,01000,-1,0,4,-4,-4,-2,01000,-3,-2 ,01000,-1,-3,-2,01001,-3,-3,-3,-2,01000 ,-1,0,4,-4,-4,-2,01000,-3,-2,01000 ,-1,-3,-2,01001,-3,-3,-2,01000,-3,-1 ,0,4,-4,-4,-4,-2,01000,-1,-3,-2 ,01000,-1,-3,-2,01001,-3,-4,-2,01000,-1 ,-3,-3,-1,0,4,-4,-2,01000,-3,-4 ,-2,01001,-1,-3,-3,-4,-2,01000,-1,-3 ,-2,01000,-1,0,4,-4,-2,01000,-3,-2 ,01001,-3,-3,-4,-2,01000,-1,-3,-2,01000 ,-1,0,3,-4,-4,-2,01000,-3,-4,-2 ,01001,-1,-3,-3,-4,-2,01000,-1,-3,-1 ,-1,0,3,-4,-2,01000,-3,-4,-2,01001 ,-1,-3,-3,-4,-2,01000,-1,-3,-1,0 ,3,-4,-4,-2,01000,-3,-2,01001,-3,-3 ,-4,-2,01000,-1,-3,-1,-1,0,3,-4 ,-2,01000,-3,-2,01001,-3,-3,-4,-2,01000 ,-1,-3,-1,0,3,-4,-4,-2,01000,-3 ,-4,-2,01001,-1,-3,-3,-2,01000,-3,-1 ,-1,0,3,-4,-2,01000,-3,-4,-2,01001 ,-1,-3,-3,-2,01000,-3,-1,0,3,-4 ,-4,-2,01000,-3,-2,01001,-3,-3,-2,01000 ,-3,-1,-1,0,3,-4,-2,01000,-3,-2 ,01001,-3,-3,-2,01000,-3,-1,0,3,-4 ,-2,01000,-3,-2,01001,-3,-3,-3,-2,01000 ,-1,0,4,-4,-2,01000,-3,-2,01001,-3 ,-2,01000,-3,-4,-2,01000,-1,-3,-1,0 ,4,-4,-2,01000,-3,-2,01001,-3,-2,01000 ,-3,-3,-2,01000,-1,0,3,-4,-2,01000 ,-3,-2,01001,-3,-2,01000,-3,-3,-1,0 ,2,-4,-4,-2,01000,-3,-4,-2,01001,-1 ,-3,-3,-3,-1,-1,0,2,-4,-4,-2 ,01000,-3,-2,01001,-3,-3,-3,-1,-1,0 ,2,-4,-2,01000,-3,-4,-2,01001,-1,-3 ,-3,-3,-1,0,2,-4,-2,01000,-3,-2 ,01001,-3,-3,-3,-1,0,5,-4,-4,-2 ,01000,-3,-2,01000,-3,-2,01000,-1,-3,-4 ,-2,01001,-1,-3,-4,-2,01000,-1,-3,-1 ,0,4,-4,-4,-2,01000,-3,-2,01000,-3 ,-2,01000,-1,-3,-4,-2,01001,-1,-3,-3 ,-1,0,4,-4,-4,-2,01000,-3,-2,01000 ,-3,-2,01000,-1,-3,-2,01001,-3,-3,-1 ,0,3,-4,-2,01000,-3,-4,-2,01001,-1 ,-3,-3,-4,-2,01000,-1,-1,0,3,-4 ,-2,01000,-3,-2,01001,-3,-3,-4,-2,01000 ,-1,-1,0,3,-4,-2,01000,-3,-4,-2 ,01001,-1,-3,-4,-2,01000,-1,-3,-1,0 ,3,-4,-2,01000,-3,-4,-2,01001,-1,-3 ,-2,01000,-3,-1,0,3,-4,-2,01000,-3 ,-2,01001,-3,-4,-2,01000,-1,-3,-1,0 ,3,-4,-2,01000,-3,-2,01001,-3,-2,01000 ,-3,-1,0,2,-4,-2,01000,-3,-4,-2 ,01001,-1,-3,-3,-1,0,2,-4,-2,01000 ,-3,-2,01001,-3,-3,-1,0,5,-4,-4 ,-2,01000,-3,-2,01000,-1,-3,-4,-2,01000 ,-3,-4,-2,01000,-3,-2,01000,-3,-1,-1 ,-1,0,5,-4,-4,-2,01000,-3,-2,01000 ,-1,-3,-4,-2,01000,-3,-4,-2,01000,-3 ,-2,01000,-3,-1,-1,-1,0,5,-4,-4 ,-4,-2,01000,-1,-3,-2,01000,-1,-3,-4 ,-4,-2,01000,-3,-2,01000,-1,-3,-2,01000 ,-1,-1,0,6,-4,-4,-4,-2,01000,-1 ,-3,-4,-2,01000,-3,-2,01000,-1,-1,-3 ,-4,-2,01000,-3,-4,-2,01000,-3,-2,01000 ,-1,-1,-1,0,6,-4,-4,-2,01000,-3 ,-2,01000,-1,-3,-4,-4,-2,01000,-3,-2 ,01000,-1,-3,-4,-2,01000,-3,-2,01000,-1 ,-1,-1,0,6,-4,-4,-2,01000,-3,-2 ,01000,-1,-3,-4,-4,-2,01000,-3,-2,01000 ,-1,-3,-4,-2,01000,-3,-2,01000,-1,-1 ,-1,0,7,-4,-2,01000,-3,-4,-2,01001 ,-3,-2,01000,-3,-2,01000,-1,-3,-4,-2 ,01001,-3,-2,01000,-3,-2,01000,-1,-1,0 ,7,-4,-2,01001,-3,-4,-2,01000,-3,-2 ,01000,-3,-2,01000,-1,-3,-4,-2,01000,-3 ,-2,01000,-3,-2,01000,-1,-1,0,2,-4 ,-2,01001,-3,-2,01000,-1,0,2,-4,-2 ,01000,-3,-2,01001,-1,0,2,-4,-4,-2 ,01001,-1,-3,-4,-2,01000,-1,-1,0,2 ,-4,-4,-2,01000,-1,-3,-4,-2,01001,-1 ,-1,0,2,-4,-2,01001,-3,-2,01000,-1 ,0,2,-4,-2,01000,-3,-2,01001,-1,0 ,2,-4,-4,-2,01001,-1,-3,-4,-2,01000 ,-1,-3,-1,0,2,-4,-4,-2,01000,-1 ,-3,-4,-2,01001,-1,-3,-1,0,2,-4 ,-2,01001,-3,-2,01000,-1,0,2,-4,-2 ,01000,-3,-2,01001,-1,0,1,-4,-2,01001 ,-1,0,2,-4,-2,01000,-3,-2,01000,-1 ,0,2,-4,-2,01000,-3,-2,01000,-1,0 ,1,-4,-2,01000,-1,0,1,-4,-2,01000 ,-1,0,1,-4,-2,01000,-1,0,4,-4 ,-4,-2,01000,-3,-2,01000,-1,-3,-4,-4 ,-2,01000,-1,-3,-2,01000,-1,-1,0,1 ,-4,-3,-2,01000,-1,0,1,-4,-3,-2 ,01000,-1,0,2,-4,-2,01000,-3,-4,-2 ,01000,-1,-1,0,2,-4,-4,-2,01000,-1 ,-3,-2,01000,-1,0,1,-4,-4,-2,01000 ,-1,-1,0,0,0,0,0,0,0,0 ,0,0,0,1,-2,01000,0,0,0 }; short int mtPathStart[] = { 3027,3023,3021,3019,3017,3015,3013,3005,2994,2983 ,2976,2969,2948,2942,2936,2930,2921,2912,2906,2897 ,2888,2874,2860,2851,2842,2829,2816,2807,2798,2770 ,2742,2713,2684,2653,2627,2602,2577,2566,2553,2540 ,2525,2510,2493,2478,2461,2442,2421,2396,2384,2370 ,2356,2340,2326,2310,2292,2278,2264,2248,2232,2214 ,2198,2180,2162,2142,2124,2104,2081,2062,2043,2022 ,2003,1981,1957,1935,1911,1891,1885,1879,1870,1859 ,1846,1837,1826,1813,1802,1789,1774,1763,1750,1735 ,1721,1705,1687,1667,1653,1637,1619,1601,1581,1559 ,1543,1525,1505,1483,1460,1435,1416,1395,1368,1339 ,1316,1291,1282,1271,1257,1241,1227,1211,1197,1178 ,1162,1148,1132,1114,1098,1080,1066,1050,1034,1016 ,998,980,961,940,917,892,878,862,846,828 ,809,790,769,746,727,706,692,676,660,641 ,620,597,577,557,535,511,487,461,449,435 ,421,405,391,377,361,347,331,315,297,269 ,241,209,189,169,148,127,104,81,58,34 ,17,0}; NODEPTR mtAction (int _t, __match **_ll, skeleton *_s) { NODEPTR root = _s->root; switch (_t) { case 0:{ # line 28 "/tmp/act.mt" push(root); } break; case 1:{ # line 34 "/tmp/act.mt" } break; case 2:{ # line 39 "/tmp/act.mt" push(root); } break; case 3:{ # line 45 "/tmp/act.mt" push(root); } break; case 4:{ # line 51 "/tmp/act.mt" push(root); } break; case 5:{ # line 57 "/tmp/act.mt" push(ONE); } break; case 6:{ # line 63 "/tmp/act.mt" push(ZERO); } break; case 7:{ # line 69 "/tmp/act.mt" tDO(_ll[(1)-1]); } break; case 8:{ # line 78 "/tmp/act.mt" return nameit(root->id,notnode(xornode(_mtG(root,1,1, -1),_mtG(root,2, -1)))); } break; case 9:{ # line 84 "/tmp/act.mt" return nameit(root->id,notnode(xornode(_mtG(root,1, -1),_mtG(root,2,1, -1)))); } break; case 10:{ # line 93 "/tmp/act.mt" return _mtG(root,2, -1); } break; case 11:{ # line 99 "/tmp/act.mt" return notnode(_mtG(root,2, -1)); } break; case 12:{ # line 113 "/tmp/act.mt" return nameit(root->id,ornode(andnode(notnode(_mtG(root,2,1,1, -1)),_mtG(root,2,2, -1)),andnode(_mtG(root,1,1, -1),_mtG(root,1,2, -1)))); } break; case 13:{ # line 120 "/tmp/act.mt" tDO(_ll[(1)-1]); namepin("PAD", 0); func(root,"INBUF",1,"Y","PAD"); } break; case 14:{ # line 127 "/tmp/act.mt" tDO(_ll[(1)-1]); namepin("PAD", 0); func(root,"CLKBUF",1,"Y","PAD"); } break; case 15:{ # line 134 "/tmp/act.mt" tDO(_ll[(1)-1]); namepin("D", 0); func(root,"OUTBUF",1,"PAD","D"); } break; case 16:{ # line 141 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("E", 0); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"BIBUF",2,"PADY","D","E"); } break; case 17:{ # line 149 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("E", 0); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"TRIBUFF",2,"PAD","D","E"); } break; case 18:{ # line 157 "/tmp/act.mt" push(ONE); namepin("A", 0); tDO(_ll[(1)-1]); namepin("G", 0); func(root,"GNAND2",2,"Y","G","A"); } break; case 19:{ # line 165 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("G", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"GAND2",2,"Y","A","G"); } break; case 20:{ # line 173 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("G", 0); func(root,"GAND2",2,"Y","G","A"); } break; case 21:{ # line 181 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("G", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"GNAND2",2,"Y","A","G"); } break; case 22:{ # line 189 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("G", 0); func(root,"GNAND2",2,"Y","G","A"); } break; case 23:{ # line 197 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("G", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"GOR2",2,"Y","A","G"); } break; case 24:{ # line 205 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("G", 0); func(root,"GOR2",2,"Y","G","A"); } break; case 25:{ # line 213 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("G", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"GNOR2",2,"Y","A","G"); } break; case 26:{ # line 221 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("G", 0); func(root,"GNOR2",2,"Y","G","A"); } break; case 27:{ # line 229 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("G", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"GXOR2",2,"Y","A","G"); } break; case 28:{ # line 237 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("G", 0); func(root,"GXOR2",2,"Y","G","A"); } break; case 29:{ # line 250 "/tmp/act.mt" tDO(_ll[(7)-1]); namepin("D3", 0); tDO(_ll[(6)-1]); namepin("D2", 0); tDO(_ll[(4)-1]); namepin("D1", 0); tDO(_ll[(3)-1]); namepin("D0", 0); tDO(_ll[(2)-1]); namepin("S0", 0); tDO(_ll[(1)-1]); namepin("G", 0); func(root,"GMX4",6,"Y","G","S0","D0","D1","D2","D3"); } break; case 30:{ # line 267 "/tmp/act.mt" tDO(_ll[(7)-1]); namepin("D3", 0); tDO(_ll[(6)-1]); namepin("D1", 0); tDO(_ll[(4)-1]); namepin("D2", 0); tDO(_ll[(3)-1]); namepin("D0", 0); tDO(_ll[(2)-1]); namepin("G", 0); tDO(_ll[(1)-1]); namepin("S0", 0); func(root,"GMX4",6,"Y","S0","G","D0","D2","D1","D3"); } break; case 31:{ # line 285 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"MAJ3",3,"Y","A","B","C"); } break; case 32:{ # line 300 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("A", 0); tDO(_ll[(2)-1]); namepin("C", 0); tDO(_ll[(1)-1]); namepin("B", 0); func(root,"MAJ3",3,"Y","B","C","A"); } break; case 33:{ # line 314 "/tmp/act.mt" tDO(_ll[(6)-1]); namepin("D", 0); tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("C", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AO4A",4,"Y","A","C","B","D"); } break; case 34:{ # line 328 "/tmp/act.mt" tDO(_ll[(5)-1]); namepin("D", 0); tDO(_ll[(4)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AO5A",4,"Y","A","B","C","D"); } break; case 35:{ # line 343 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"MAJ3",3,"Y","A","B","C"); } break; case 36:{ # line 357 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"MAJ3",3,"Y","A","B","C"); } break; case 37:{ # line 366 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("G", 0); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DL1",2,"Q","D","G"); } break; case 38:{ # line 374 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("G", 0); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DL1B",2,"Q","D","G"); } break; case 39:{ # line 382 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("E", 0); tDO(_ll[(2)-1]); namepin("G", 0); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DLE",3,"Q","D","G","E"); } break; case 40:{ # line 391 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("E", 0); tDO(_ll[(2)-1]); namepin("G", 0); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DLEA",3,"Q","D","G","E"); } break; case 41:{ # line 400 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("E", 0); tDO(_ll[(2)-1]); namepin("G", 0); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DLEB",3,"Q","D","G","E"); } break; case 42:{ # line 409 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("E", 0); tDO(_ll[(2)-1]); namepin("G", 0); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DLEC",3,"Q","D","G","E"); } break; case 43:{ # line 418 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("CLR", 0); tDO(_ll[(2)-1]); namepin("G", 0); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DLC",3,"Q","D","G","CLR"); } break; case 44:{ # line 427 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("CLR", 0); tDO(_ll[(2)-1]); namepin("G", 0); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DLCA",3,"Q","D","G","CLR"); } break; case 45:{ # line 436 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("G", 0); tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"DLM",4,"Q","S","A","B","G"); } break; case 46:{ # line 446 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("G", 0); tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"DLMA",4,"Q","S","A","B","G"); } break; case 47:{ # line 456 "/tmp/act.mt" tDO(_ll[(5)-1]); namepin("E", 0); tDO(_ll[(4)-1]); namepin("G", 0); tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"DLME1A",5,"Q","S","A","B","G","E"); } break; case 48:{ # line 467 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("CLK", 1); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DF1",2,"Q","D","CLK"); } break; case 49:{ # line 475 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("CLK", 1); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DF1B",2,"Q","D","CLK"); } break; case 50:{ # line 483 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("CLK", 1); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DF1A",2,"QN","D","CLK"); } break; case 51:{ # line 491 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("CLK", 1); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DF1C",2,"QN","D","CLK"); } break; case 52:{ # line 499 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("E", 0); tDO(_ll[(2)-1]); namepin("CLK", 1); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DFE",3,"Q","D","CLK","E"); } break; case 53:{ # line 508 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("PRE", 0); tDO(_ll[(3)-1]); namepin("E", 0); tDO(_ll[(2)-1]); namepin("CLK", 1); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DFE4",4,"Q","D","CLK","E","PRE"); } break; case 54:{ # line 518 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("CLR", 0); tDO(_ll[(3)-1]); namepin("E", 0); tDO(_ll[(2)-1]); namepin("CLK", 1); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DFE3A",4,"Q","D","CLK","E","CLR"); } break; case 55:{ # line 528 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("PRE", 0); tDO(_ll[(2)-1]); namepin("CLK", 1); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DFP1",3,"Q","D","CLK","PRE"); } break; case 56:{ # line 537 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("CLR", 0); tDO(_ll[(2)-1]); namepin("CLK", 1); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DFC1",3,"Q","D","CLK","CLR"); } break; case 57:{ # line 546 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("CLR", 0); tDO(_ll[(2)-1]); namepin("CLK", 1); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DFC1C",3,"QN","D","CLK","CLR"); } break; case 58:{ # line 555 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("CLR", 0); tDO(_ll[(2)-1]); namepin("CLK", 1); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DFC1A",3,"Q","D","CLK","CLR"); } break; case 59:{ # line 564 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("CLR", 0); tDO(_ll[(2)-1]); namepin("CLK", 1); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DFC1F",3,"QN","D","CLK","CLR"); } break; case 60:{ # line 573 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("CLR", 0); tDO(_ll[(2)-1]); namepin("CLK", 1); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DFC1B",3,"Q","D","CLK","CLR"); } break; case 61:{ # line 582 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("CLR", 0); tDO(_ll[(2)-1]); namepin("CLK", 1); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DFC1E",3,"QN","D","CLK","CLR"); } break; case 62:{ # line 591 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("CLR", 0); tDO(_ll[(2)-1]); namepin("CLK", 1); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DFC1D",3,"Q","D","CLK","CLR"); } break; case 63:{ # line 600 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("CLR", 0); tDO(_ll[(2)-1]); namepin("CLK", 1); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DFC1G",3,"QN","D","CLK","CLR"); } break; case 64:{ # line 609 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("PRE", 0); tDO(_ll[(3)-1]); namepin("CLR", 0); tDO(_ll[(2)-1]); namepin("CLK", 1); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DFPC",4,"Q","D","CLK","CLR","PRE"); } break; case 65:{ # line 619 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("PRE", 0); tDO(_ll[(3)-1]); namepin("CLR", 0); tDO(_ll[(2)-1]); namepin("CLK", 1); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"DFPCA",4,"Q","D","CLK","CLR","PRE"); } break; case 66:{ # line 629 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("E", 0); tDO(_ll[(3)-1]); namepin("CLK", 1); push(ZERO); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"DFME1A",5,"Q","S","A","B","CLK","E"); } break; case 67:{ # line 640 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("CLR", 0); tDO(_ll[(3)-1]); namepin("CLK", 1); tDO(_ll[(2)-1]); namepin("B", 0); push(ZERO); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"DFM3",5,"Q","S","A","B","CLK","CLR"); } break; case 68:{ # line 651 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("PRE", 0); tDO(_ll[(3)-1]); namepin("CLK", 1); tDO(_ll[(2)-1]); namepin("B", 0); push(ZERO); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"DFM4",5,"Q","S","A","B","CLK","PRE"); } break; case 69:{ # line 662 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("PRE", 0); tDO(_ll[(3)-1]); namepin("CLK", 1); push(ZERO); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"DFM4",5,"Q","S","A","B","CLK","PRE"); } break; case 70:{ # line 673 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("PRE", 0); tDO(_ll[(3)-1]); namepin("CLK", 1); push(ONE); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"DFM4",5,"Q","S","A","B","CLK","PRE"); } break; case 71:{ # line 684 "/tmp/act.mt" tDO(_ll[(5)-1]); namepin("PRE", 0); tDO(_ll[(4)-1]); namepin("CLK", 1); tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"DFM4",5,"Q","S","A","B","CLK","PRE"); } break; case 72:{ # line 695 "/tmp/act.mt" tDO(_ll[(5)-1]); namepin("CLR", 0); tDO(_ll[(4)-1]); namepin("CLK", 1); tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"DFMB",5,"Q","S","A","B","CLK","CLR"); } break; case 73:{ # line 706 "/tmp/act.mt" tDO(_ll[(5)-1]); namepin("CLR", 0); tDO(_ll[(4)-1]); namepin("CLK", 1); tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"DFM3",5,"Q","S","A","B","CLK","CLR"); } break; case 74:{ # line 717 "/tmp/act.mt" tDO(_ll[(5)-1]); namepin("E", 0); tDO(_ll[(4)-1]); namepin("CLK", 1); tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"DFME1A",5,"Q","S","A","B","CLK","E"); } break; case 75:{ # line 728 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("CLK", 1); tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"DFM",4,"Q","S","A","B","CLK"); } break; case 76:{ # line 738 "/tmp/act.mt" tDO(_ll[(1)-1]); namepin("A", 0); func(root,"INV",1,"Y","A"); } break; case 77:{ # line 745 "/tmp/act.mt" tDO(_ll[(1)-1]); namepin("A", 0); func(root,"BUF",1,"Y","A"); } break; case 78:{ # line 752 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AND2",2,"Y","A","B"); } break; case 79:{ # line 760 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AND2A",2,"Y","A","B"); } break; case 80:{ # line 768 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AND2B",2,"Y","A","B"); } break; case 81:{ # line 776 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OR2",2,"Y","A","B"); } break; case 82:{ # line 784 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OR2A",2,"Y","A","B"); } break; case 83:{ # line 792 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OR2B",2,"Y","A","B"); } break; case 84:{ # line 800 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"NAND2",2,"Y","A","B"); } break; case 85:{ # line 808 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"NAND2A",2,"Y","A","B"); } break; case 86:{ # line 816 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"NAND2B",2,"Y","A","B"); } break; case 87:{ # line 824 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"NOR2",2,"Y","A","B"); } break; case 88:{ # line 832 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"NOR2A",2,"Y","A","B"); } break; case 89:{ # line 840 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"NOR2B",2,"Y","A","B"); } break; case 90:{ # line 848 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AND3",3,"Y","A","B","C"); } break; case 91:{ # line 857 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AND3A",3,"Y","A","B","C"); } break; case 92:{ # line 866 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AND3B",3,"Y","A","B","C"); } break; case 93:{ # line 875 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AND3C",3,"Y","A","B","C"); } break; case 94:{ # line 884 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OR3",3,"Y","A","B","C"); } break; case 95:{ # line 893 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OR3A",3,"Y","A","B","C"); } break; case 96:{ # line 902 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OR3B",3,"Y","A","B","C"); } break; case 97:{ # line 911 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"NAND3A",3,"Y","A","B","C"); } break; case 98:{ # line 920 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"NAND3B",3,"Y","A","B","C"); } break; case 99:{ # line 929 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"NAND3C",3,"Y","A","B","C"); } break; case 100:{ # line 938 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"NOR3",3,"Y","A","B","C"); } break; case 101:{ # line 947 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"NOR3A",3,"Y","A","B","C"); } break; case 102:{ # line 956 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"NOR3B",3,"Y","A","B","C"); } break; case 103:{ # line 965 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"NOR3C",3,"Y","A","B","C"); } break; case 104:{ # line 974 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("D", 0); tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AND4B",4,"Y","A","B","C","D"); } break; case 105:{ # line 984 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("D", 0); tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AND4C",4,"Y","A","B","C","D"); } break; case 106:{ # line 994 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("D", 0); tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OR4",4,"Y","A","B","C","D"); } break; case 107:{ # line 1004 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("D", 0); tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OR4A",4,"Y","A","B","C","D"); } break; case 108:{ # line 1014 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("D", 0); tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"NAND4C",4,"Y","A","B","C","D"); } break; case 109:{ # line 1024 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("D", 0); tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"NAND4D",4,"Y","A","B","C","D"); } break; case 110:{ # line 1034 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("D", 0); tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"NOR4A",4,"Y","A","B","C","D"); } break; case 111:{ # line 1044 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("D", 0); tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"NOR4B",4,"Y","A","B","C","D"); } break; case 112:{ # line 1054 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"XOR",2,"Y","A","B"); } break; case 113:{ # line 1062 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"XNOR",2,"Y","A","B"); } break; case 114:{ # line 1070 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"XO1",3,"Y","A","B","C"); } break; case 115:{ # line 1079 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"XO1A",3,"Y","A","B","C"); } break; case 116:{ # line 1088 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("C", 0); func(root,"XO1",3,"Y","C","A","B"); } break; case 117:{ # line 1097 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("C", 0); func(root,"XO1A",3,"Y","C","A","B"); } break; case 118:{ # line 1106 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"XA1",3,"Y","A","B","C"); } break; case 119:{ # line 1119 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("C", 0); func(root,"XA1",3,"Y","C","A","B"); } break; case 120:{ # line 1128 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"XA1A",3,"Y","A","B","C"); } break; case 121:{ # line 1137 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("C", 0); func(root,"XA1",3,"Y","C","A","B"); } break; case 122:{ # line 1146 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("C", 0); func(root,"XA1A",3,"Y","C","A","B"); } break; case 123:{ # line 1155 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AX1A",3,"Y","A","B","C"); } break; case 124:{ # line 1164 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AX1",3,"Y","A","B","C"); } break; case 125:{ # line 1173 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AX1B",3,"Y","A","B","C"); } break; case 126:{ # line 1182 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AO1",3,"Y","A","B","C"); } break; case 127:{ # line 1191 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AO1A",3,"Y","A","B","C"); } break; case 128:{ # line 1200 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AO1B",3,"Y","A","B","C"); } break; case 129:{ # line 1209 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AO1C",3,"Y","A","B","C"); } break; case 130:{ # line 1218 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AOI1A",3,"Y","A","B","C"); } break; case 131:{ # line 1227 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AOI1B",3,"Y","A","B","C"); } break; case 132:{ # line 1236 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("D", 0); tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AO2",4,"Y","A","B","C","D"); } break; case 133:{ # line 1246 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("D", 0); tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AO2A",4,"Y","A","B","C","D"); } break; case 134:{ # line 1256 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("D", 0); tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AOI2A",4,"Y","A","B","C","D"); } break; case 135:{ # line 1266 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("D", 0); tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"AOI2B",4,"Y","A","B","C","D"); } break; case 136:{ # line 1276 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OA1",3,"Y","A","B","C"); } break; case 137:{ # line 1285 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OA1A",3,"Y","A","B","C"); } break; case 138:{ # line 1294 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OA1B",3,"Y","A","B","C"); } break; case 139:{ # line 1303 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OA1C",3,"Y","A","B","C"); } break; case 140:{ # line 1312 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("D", 0); tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OA3",4,"Y","A","B","C","D"); } break; case 141:{ # line 1322 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("B", 0); tDO(_ll[(3)-1]); namepin("A", 0); tDO(_ll[(2)-1]); namepin("D", 0); tDO(_ll[(1)-1]); namepin("C", 0); func(root,"OA3",4,"Y","C","D","A","B"); } break; case 142:{ # line 1332 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("D", 0); tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OA3A",4,"Y","A","B","C","D"); } break; case 143:{ # line 1342 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("D", 0); tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OA3B",4,"Y","A","B","C","D"); } break; case 144:{ # line 1352 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("D", 0); tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OA2",4,"Y","A","B","C","D"); } break; case 145:{ # line 1362 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("D", 0); tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OA2A",4,"Y","A","B","C","D"); } break; case 146:{ # line 1372 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("C", 0); func(root,"OA1",3,"Y","C","A","B"); } break; case 147:{ # line 1381 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("C", 0); func(root,"OA1A",3,"Y","C","A","B"); } break; case 148:{ # line 1390 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("C", 0); func(root,"OA1B",3,"Y","C","A","B"); } break; case 149:{ # line 1403 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("C", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OA1",3,"Y","A","C","B"); } break; case 150:{ # line 1416 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("C", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"OA1A",3,"Y","A","C","B"); } break; case 151:{ # line 1429 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("C", 0); func(root,"OA1B",3,"Y","C","A","B"); } break; case 152:{ # line 1438 "/tmp/act.mt" tDO(_ll[(5)-1]); namepin("D2", 0); tDO(_ll[(5)-1]); namepin("D2", 0); tDO(_ll[(4)-1]); namepin("D1", 0); tDO(_ll[(3)-1]); namepin("D0", 0); tDO(_ll[(2)-1]); namepin("S0", 0); tDO(_ll[(1)-1]); namepin("S1", 0); func(root,"MX4",6,"Y","S1","S0","D0","D1","D2","D3"); } break; case 153:{ # line 1450 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("D0", 0); tDO(_ll[(5)-1]); namepin("D3", 0); tDO(_ll[(4)-1]); namepin("D2", 0); tDO(_ll[(3)-1]); namepin("S0", 0); tDO(_ll[(2)-1]); namepin("D0", 0); tDO(_ll[(1)-1]); namepin("S1", 0); func(root,"MX4",6,"Y","S1","D0","S0","D2","D3","D1"); } break; case 154:{ # line 1462 "/tmp/act.mt" tDO(_ll[(5)-1]); namepin("D3", 0); push(ZERO); namepin("D2", 0); tDO(_ll[(4)-1]); namepin("S0B", 0); tDO(_ll[(3)-1]); namepin("D1", 0); push(ZERO); namepin("D0", 0); tDO(_ll[(2)-1]); namepin("S0A", 0); tDO(_ll[(1)-1]); namepin("S1", 0); func(root,"MXT",7,"Y","S1","S0A","D0","D1","S0B","D2","D3"); } break; case 155:{ # line 1475 "/tmp/act.mt" tDO(_ll[(5)-1]); namepin("D3", 0); push(ZERO); namepin("D2", 0); tDO(_ll[(4)-1]); namepin("S0B", 0); push(ZERO); namepin("D1", 0); tDO(_ll[(3)-1]); namepin("D0", 0); tDO(_ll[(2)-1]); namepin("S0A", 0); tDO(_ll[(1)-1]); namepin("S1", 0); func(root,"MXT",7,"Y","S1","S0A","D0","D1","S0B","D2","D3"); } break; case 156:{ # line 1488 "/tmp/act.mt" push(ZERO); namepin("D3", 0); tDO(_ll[(5)-1]); namepin("D2", 0); tDO(_ll[(4)-1]); namepin("S0B", 0); tDO(_ll[(3)-1]); namepin("D1", 0); push(ZERO); namepin("D0", 0); tDO(_ll[(2)-1]); namepin("S0A", 0); tDO(_ll[(1)-1]); namepin("S1", 0); func(root,"MXT",7,"Y","S1","S0A","D0","D1","S0B","D2","D3"); } break; case 157:{ # line 1501 "/tmp/act.mt" push(ZERO); namepin("D3", 0); tDO(_ll[(5)-1]); namepin("D2", 0); tDO(_ll[(4)-1]); namepin("S0B", 0); push(ZERO); namepin("D1", 0); tDO(_ll[(3)-1]); namepin("D0", 0); tDO(_ll[(2)-1]); namepin("S0A", 0); tDO(_ll[(1)-1]); namepin("S1", 0); func(root,"MXT",7,"Y","S1","S0A","D0","D1","S0B","D2","D3"); } break; case 158:{ # line 1514 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"MX2",3,"Y","S","A","B"); } break; case 159:{ # line 1523 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("A", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"MX2",3,"Y","S","B","A"); } break; case 160:{ # line 1532 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"MX2A",3,"Y","S","A","B"); } break; case 161:{ # line 1541 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("A", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"MX2B",3,"Y","S","B","A"); } break; case 162:{ # line 1550 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"MX2B",3,"Y","S","A","B"); } break; case 163:{ # line 1563 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"XOR",2,"Y","A","B"); } break; case 164:{ # line 1571 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("A", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"MX2A",3,"Y","S","B","A"); } break; case 165:{ # line 1580 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"MX2C",3,"Y","S","A","B"); } break; case 166:{ # line 1589 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"MX2C",3,"Y","S","A","B"); } break; case 167:{ # line 1598 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("A", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"MX2C",3,"Y","S","B","A"); } break; case 168:{ # line 1607 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("A", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"MX2C",3,"Y","S","B","A"); } break; case 169:{ # line 1616 "/tmp/act.mt" tDO(_ll[(7)-1]); namepin("D3", 0); tDO(_ll[(6)-1]); namepin("D2", 0); tDO(_ll[(5)-1]); namepin("S0B", 0); tDO(_ll[(4)-1]); namepin("D1", 0); tDO(_ll[(3)-1]); namepin("D0", 0); tDO(_ll[(2)-1]); namepin("S0A", 0); tDO(_ll[(1)-1]); namepin("S1", 0); func(root,"MXT",7,"Y","S1","S0A","D0","D1","S0B","D2","D3"); } break; case 170:{ # line 1633 "/tmp/act.mt" tDO(_ll[(7)-1]); namepin("D3", 0); tDO(_ll[(6)-1]); namepin("D2", 0); tDO(_ll[(4)-1]); namepin("D1", 0); tDO(_ll[(3)-1]); namepin("D0", 0); tDO(_ll[(2)-1]); namepin("S0", 0); tDO(_ll[(1)-1]); namepin("S1", 0); func(root,"MX4",6,"Y","S1","S0","D0","D1","D2","D3"); } break; case 171:{ # line 1652 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("C", 0); tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"XOR3",3,"Y","A","B","C"); } break; case 172:{ # line 1661 "/tmp/act.mt" tDO(_ll[(5)-1]); namepin("D", 0); tDO(_ll[(4)-1]); namepin("C", 0); tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"MXC1",5,"Y","S","A","B","C","D"); } break; case 173:{ # line 1672 "/tmp/act.mt" push(ONE); namepin("D3", 0); push(ZERO); namepin("D2", 0); tDO(_ll[(5)-1]); namepin("S0B", 0); tDO(_ll[(4)-1]); namepin("D1", 0); tDO(_ll[(3)-1]); namepin("D0", 0); tDO(_ll[(2)-1]); namepin("S0A", 0); tDO(_ll[(1)-1]); namepin("S1", 0); func(root,"MXT",7,"Y","S1","S0A","D0","D1","S0B","D2","D3"); } break; case 174:{ # line 1689 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"MX2",3,"Y","S","A","B"); } break; case 175:{ # line 1702 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"MX2",3,"Y","S","A","B"); } break; case 176:{ # line 1715 "/tmp/act.mt" tDO(_ll[(4)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"MX2A",3,"Y","S","A","B"); } break; case 177:{ # line 1728 "/tmp/act.mt" tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"MX2B",3,"Y","S","A","B"); } break; case 178:{ # line 1742 "/tmp/act.mt" tDO(_ll[(2)-1]); namepin("B", 0); tDO(_ll[(1)-1]); namepin("A", 0); func(root,"XOR",2,"Y","A","B"); } break; case 179:{ # line 1750 "/tmp/act.mt" tDO(_ll[(5)-1]); namepin("E", 0); tDO(_ll[(4)-1]); namepin("CLK", 1); tDO(_ll[(3)-1]); namepin("B", 0); tDO(_ll[(2)-1]); namepin("A", 0); tDO(_ll[(1)-1]); namepin("S", 0); func(root,"DFME1A",5,"Q","S","A","B","CLK","E"); } break; case 180:{ # line 1761 "/tmp/act.mt" push(ZERO); namepin("C", 0); tDO(_ll[(4)-1]); namepin("B", 0); tDO(_ll[(3)-1]); namepin("A", 0); tDO(_ll[(2)-1]); namepin("S", 0); tDO(_ll[(1)-1]); namepin("D", 0); func(root,"MXC1",5,"Y","D","S","A","B","C"); } break; case 181:{ # line 1772 "/tmp/act.mt" push(ONE); namepin("D", 0); tDO(_ll[(4)-1]); namepin("B", 0); tDO(_ll[(3)-1]); namepin("A", 0); tDO(_ll[(2)-1]); namepin("S", 0); tDO(_ll[(1)-1]); namepin("C", 0); func(root,"MXC1",5,"Y","C","S","A","B","D"); } break; } return(_s->root);} short mtEvalCost(__match *_m, __match **_ll, skeleton *_s) { NODEPTR root = _s->root; COST cost; cost = DEFAULT_COST; switch(_m->tree) { case 0:{ # line 27 "/tmp/act.mt" cost = pincost;} break; case 1:{ # line 33 "/tmp/act.mt" } break; case 2:{ # line 38 "/tmp/act.mt" cost = pincost;} break; case 3:{ # line 44 "/tmp/act.mt" cost = zerocost;} break; case 4:{ # line 50 "/tmp/act.mt" cost = zerocost;} break; case 5:{ # line 56 "/tmp/act.mt" cost = zerocost;} break; case 6:{ # line 62 "/tmp/act.mt" cost = zerocost;} break; case 7:{ # line 68 "/tmp/act.mt" cost.gate -= 1; TOPDOWN;} break; case 8:{ # line 77 "/tmp/act.mt" REWRITE;} break; case 9:{ # line 83 "/tmp/act.mt" REWRITE;} break; case 10:{ # line 92 "/tmp/act.mt" REWRITE;} break; case 11:{ # line 98 "/tmp/act.mt" REWRITE;} break; case 12:{ # line 108 "/tmp/act.mt" if (_mtG(root,1,1, -1)->op == not) ABORT; REWRITE; } break; case 13:{ # line 119 "/tmp/act.mt" TOPDOWN;} break; case 14:{ # line 126 "/tmp/act.mt" TOPDOWN;} break; case 15:{ # line 133 "/tmp/act.mt" TOPDOWN;} break; case 16:{ # line 140 "/tmp/act.mt" TOPDOWN;} break; case 17:{ # line 148 "/tmp/act.mt" TOPDOWN;} break; case 18:{ # line 156 "/tmp/act.mt" cost.gate += 1000; TOPDOWN;} break; case 19:{ # line 164 "/tmp/act.mt" cost.gate += 1000; TOPDOWN;} break; case 20:{ # line 172 "/tmp/act.mt" cost.gate += 1000; TOPDOWN;} break; case 21:{ # line 180 "/tmp/act.mt" cost.gate += 1000; TOPDOWN;} break; case 22:{ # line 188 "/tmp/act.mt" cost.gate += 1000; TOPDOWN;} break; case 23:{ # line 196 "/tmp/act.mt" cost.gate += 1000; TOPDOWN;} break; case 24:{ # line 204 "/tmp/act.mt" cost.gate += 1000; TOPDOWN;} break; case 25:{ # line 212 "/tmp/act.mt" cost.gate += 1000; TOPDOWN;} break; case 26:{ # line 220 "/tmp/act.mt" cost.gate += 1000; TOPDOWN;} break; case 27:{ # line 228 "/tmp/act.mt" cost.gate += 1000; TOPDOWN;} break; case 28:{ # line 236 "/tmp/act.mt" cost.gate += 1000; TOPDOWN;} break; case 29:{ # line 244 "/tmp/act.mt" cost.gate += 1000; if (!eq(_mtG(root,2,1, -1),_mtG(root,3,1, -1))) ABORT; TOPDOWN; } break; case 30:{ # line 261 "/tmp/act.mt" cost.gate += 1000; if (!eq(_mtG(root,2,1, -1),_mtG(root,3,1, -1))) ABORT; TOPDOWN; } break; case 31:{ # line 278 "/tmp/act.mt" if (!eq(_mtG(root,1,1, -1),_mtG(root,2,1,1, -1)) || !eq(_mtG(root,1,2, -1),_mtG(root,2,2,1, -1)) || !eq(_mtG(root,2,1,2, -1),_mtG(root,2,2,2, -1))) ABORT; TOPDOWN; } break; case 32:{ # line 293 "/tmp/act.mt" if (!eq(_mtG(root,1,1, -1),_mtG(root,2,2,2, -1)) || !eq(_mtG(root,2,1,1, -1),_mtG(root,2,2,1, -1)) || !eq(_mtG(root,1,2, -1),_mtG(root,2,1,2, -1))) ABORT; TOPDOWN; } break; case 33:{ # line 308 "/tmp/act.mt" if (!eq(_mtG(root,1,1,1, -1),_mtG(root,2,1, -1)) || !eq(_mtG(root,1,2,1, -1),_mtG(root,2,2,1, -1))) ABORT; TOPDOWN; } break; case 34:{ # line 323 "/tmp/act.mt" if (!eq(_mtG(root,1,1,1, -1),_mtG(root,2,1,1, -1))) ABORT; TOPDOWN; } break; case 35:{ # line 337 "/tmp/act.mt" if (!eq(_mtG(root,1,1, -1),_mtG(root,2,2,2, -1)) || !eq(_mtG(root,1,2, -1),_mtG(root,2,2,1, -1))) ABORT; TOPDOWN; } break; case 36:{ # line 351 "/tmp/act.mt" if (!eq(_mtG(root,1,1, -1),_mtG(root,2,2,1, -1)) || !eq(_mtG(root,1,2, -1),_mtG(root,2,2,2, -1))) ABORT; TOPDOWN; } break; case 37:{ # line 365 "/tmp/act.mt" TOPDOWN;} break; case 38:{ # line 373 "/tmp/act.mt" TOPDOWN;} break; case 39:{ # line 381 "/tmp/act.mt" TOPDOWN;} break; case 40:{ # line 390 "/tmp/act.mt" TOPDOWN;} break; case 41:{ # line 399 "/tmp/act.mt" TOPDOWN;} break; case 42:{ # line 408 "/tmp/act.mt" TOPDOWN;} break; case 43:{ # line 417 "/tmp/act.mt" TOPDOWN;} break; case 44:{ # line 426 "/tmp/act.mt" TOPDOWN;} break; case 45:{ # line 435 "/tmp/act.mt" TOPDOWN;} break; case 46:{ # line 445 "/tmp/act.mt" TOPDOWN;} break; case 47:{ # line 455 "/tmp/act.mt" TOPDOWN;} break; case 48:{ # line 466 "/tmp/act.mt" TOPDOWN;} break; case 49:{ # line 474 "/tmp/act.mt" TOPDOWN;} break; case 50:{ # line 482 "/tmp/act.mt" TOPDOWN;} break; case 51:{ # line 490 "/tmp/act.mt" TOPDOWN;} break; case 52:{ # line 498 "/tmp/act.mt" TOPDOWN;} break; case 53:{ # line 507 "/tmp/act.mt" TOPDOWN;} break; case 54:{ # line 517 "/tmp/act.mt" TOPDOWN;} break; case 55:{ # line 527 "/tmp/act.mt" TOPDOWN;} break; case 56:{ # line 536 "/tmp/act.mt" TOPDOWN;} break; case 57:{ # line 545 "/tmp/act.mt" TOPDOWN;} break; case 58:{ # line 554 "/tmp/act.mt" TOPDOWN;} break; case 59:{ # line 563 "/tmp/act.mt" TOPDOWN;} break; case 60:{ # line 572 "/tmp/act.mt" TOPDOWN;} break; case 61:{ # line 581 "/tmp/act.mt" TOPDOWN;} break; case 62:{ # line 590 "/tmp/act.mt" TOPDOWN;} break; case 63:{ # line 599 "/tmp/act.mt" TOPDOWN;} break; case 64:{ # line 608 "/tmp/act.mt" TOPDOWN;} break; case 65:{ # line 618 "/tmp/act.mt" TOPDOWN;} break; case 66:{ # line 628 "/tmp/act.mt" TOPDOWN;} break; case 67:{ # line 639 "/tmp/act.mt" TOPDOWN;} break; case 68:{ # line 650 "/tmp/act.mt" TOPDOWN;} break; case 69:{ # line 661 "/tmp/act.mt" TOPDOWN;} break; case 70:{ # line 672 "/tmp/act.mt" TOPDOWN;} break; case 71:{ # line 683 "/tmp/act.mt" TOPDOWN;} break; case 72:{ # line 694 "/tmp/act.mt" TOPDOWN;} break; case 73:{ # line 705 "/tmp/act.mt" TOPDOWN;} break; case 74:{ # line 716 "/tmp/act.mt" TOPDOWN;} break; case 75:{ # line 727 "/tmp/act.mt" TOPDOWN;} break; case 76:{ # line 737 "/tmp/act.mt" TOPDOWN;} break; case 77:{ # line 744 "/tmp/act.mt" TOPDOWN;} break; case 78:{ # line 751 "/tmp/act.mt" TOPDOWN;} break; case 79:{ # line 759 "/tmp/act.mt" TOPDOWN;} break; case 80:{ # line 767 "/tmp/act.mt" TOPDOWN;} break; case 81:{ # line 775 "/tmp/act.mt" TOPDOWN;} break; case 82:{ # line 783 "/tmp/act.mt" TOPDOWN;} break; case 83:{ # line 791 "/tmp/act.mt" TOPDOWN;} break; case 84:{ # line 799 "/tmp/act.mt" TOPDOWN;} break; case 85:{ # line 807 "/tmp/act.mt" TOPDOWN;} break; case 86:{ # line 815 "/tmp/act.mt" TOPDOWN;} break; case 87:{ # line 823 "/tmp/act.mt" TOPDOWN;} break; case 88:{ # line 831 "/tmp/act.mt" TOPDOWN;} break; case 89:{ # line 839 "/tmp/act.mt" TOPDOWN;} break; case 90:{ # line 847 "/tmp/act.mt" TOPDOWN;} break; case 91:{ # line 856 "/tmp/act.mt" TOPDOWN;} break; case 92:{ # line 865 "/tmp/act.mt" TOPDOWN;} break; case 93:{ # line 874 "/tmp/act.mt" TOPDOWN;} break; case 94:{ # line 883 "/tmp/act.mt" TOPDOWN;} break; case 95:{ # line 892 "/tmp/act.mt" TOPDOWN;} break; case 96:{ # line 901 "/tmp/act.mt" TOPDOWN;} break; case 97:{ # line 910 "/tmp/act.mt" TOPDOWN;} break; case 98:{ # line 919 "/tmp/act.mt" TOPDOWN;} break; case 99:{ # line 928 "/tmp/act.mt" TOPDOWN;} break; case 100:{ # line 937 "/tmp/act.mt" TOPDOWN;} break; case 101:{ # line 946 "/tmp/act.mt" TOPDOWN;} break; case 102:{ # line 955 "/tmp/act.mt" TOPDOWN;} break; case 103:{ # line 964 "/tmp/act.mt" TOPDOWN;} break; case 104:{ # line 973 "/tmp/act.mt" TOPDOWN;} break; case 105:{ # line 983 "/tmp/act.mt" TOPDOWN;} break; case 106:{ # line 993 "/tmp/act.mt" TOPDOWN;} break; case 107:{ # line 1003 "/tmp/act.mt" TOPDOWN;} break; case 108:{ # line 1013 "/tmp/act.mt" TOPDOWN;} break; case 109:{ # line 1023 "/tmp/act.mt" TOPDOWN;} break; case 110:{ # line 1033 "/tmp/act.mt" TOPDOWN;} break; case 111:{ # line 1043 "/tmp/act.mt" TOPDOWN;} break; case 112:{ # line 1053 "/tmp/act.mt" TOPDOWN;} break; case 113:{ # line 1061 "/tmp/act.mt" TOPDOWN;} break; case 114:{ # line 1069 "/tmp/act.mt" TOPDOWN;} break; case 115:{ # line 1078 "/tmp/act.mt" TOPDOWN;} break; case 116:{ # line 1087 "/tmp/act.mt" TOPDOWN;} break; case 117:{ # line 1096 "/tmp/act.mt" TOPDOWN;} break; case 118:{ # line 1105 "/tmp/act.mt" TOPDOWN;} break; case 119:{ # line 1114 "/tmp/act.mt" if (!eq(_mtG(root,2,2, -1),_mtG(root,2,3,1, -1))) ABORT; TOPDOWN; } break; case 120:{ # line 1127 "/tmp/act.mt" TOPDOWN;} break; case 121:{ # line 1136 "/tmp/act.mt" TOPDOWN;} break; case 122:{ # line 1145 "/tmp/act.mt" TOPDOWN;} break; case 123:{ # line 1154 "/tmp/act.mt" TOPDOWN;} break; case 124:{ # line 1163 "/tmp/act.mt" TOPDOWN;} break; case 125:{ # line 1172 "/tmp/act.mt" TOPDOWN;} break; case 126:{ # line 1181 "/tmp/act.mt" TOPDOWN;} break; case 127:{ # line 1190 "/tmp/act.mt" TOPDOWN;} break; case 128:{ # line 1199 "/tmp/act.mt" TOPDOWN;} break; case 129:{ # line 1208 "/tmp/act.mt" TOPDOWN;} break; case 130:{ # line 1217 "/tmp/act.mt" TOPDOWN;} break; case 131:{ # line 1226 "/tmp/act.mt" TOPDOWN;} break; case 132:{ # line 1235 "/tmp/act.mt" TOPDOWN;} break; case 133:{ # line 1245 "/tmp/act.mt" TOPDOWN;} break; case 134:{ # line 1255 "/tmp/act.mt" TOPDOWN;} break; case 135:{ # line 1265 "/tmp/act.mt" TOPDOWN;} break; case 136:{ # line 1275 "/tmp/act.mt" TOPDOWN;} break; case 137:{ # line 1284 "/tmp/act.mt" TOPDOWN;} break; case 138:{ # line 1293 "/tmp/act.mt" TOPDOWN;} break; case 139:{ # line 1302 "/tmp/act.mt" TOPDOWN;} break; case 140:{ # line 1311 "/tmp/act.mt" TOPDOWN;} break; case 141:{ # line 1321 "/tmp/act.mt" TOPDOWN;} break; case 142:{ # line 1331 "/tmp/act.mt" TOPDOWN;} break; case 143:{ # line 1341 "/tmp/act.mt" TOPDOWN;} break; case 144:{ # line 1351 "/tmp/act.mt" TOPDOWN;} break; case 145:{ # line 1361 "/tmp/act.mt" TOPDOWN;} break; case 146:{ # line 1371 "/tmp/act.mt" TOPDOWN;} break; case 147:{ # line 1380 "/tmp/act.mt" TOPDOWN;} break; case 148:{ # line 1389 "/tmp/act.mt" TOPDOWN;} break; case 149:{ # line 1398 "/tmp/act.mt" if (!eq(_mtG(root,1,2, -1),_mtG(root,2,2, -1))) ABORT; TOPDOWN; } break; case 150:{ # line 1411 "/tmp/act.mt" if (!eq(_mtG(root,1,2, -1),_mtG(root,2,2, -1))) ABORT; TOPDOWN; } break; case 151:{ # line 1424 "/tmp/act.mt" if (!eq(_mtG(root,1,1,1, -1),_mtG(root,2,1,1, -1))) ABORT; TOPDOWN; } break; case 152:{ # line 1437 "/tmp/act.mt" TOPDOWN;} break; case 153:{ # line 1449 "/tmp/act.mt" TOPDOWN;} break; case 154:{ # line 1461 "/tmp/act.mt" TOPDOWN;} break; case 155:{ # line 1474 "/tmp/act.mt" TOPDOWN;} break; case 156:{ # line 1487 "/tmp/act.mt" TOPDOWN;} break; case 157:{ # line 1500 "/tmp/act.mt" TOPDOWN;} break; case 158:{ # line 1513 "/tmp/act.mt" TOPDOWN;} break; case 159:{ # line 1522 "/tmp/act.mt" TOPDOWN;} break; case 160:{ # line 1531 "/tmp/act.mt" TOPDOWN;} break; case 161:{ # line 1540 "/tmp/act.mt" TOPDOWN;} break; case 162:{ # line 1549 "/tmp/act.mt" TOPDOWN;} break; case 163:{ # line 1558 "/tmp/act.mt" if (!eq(_mtG(root,2, -1),_mtG(root,3,1, -1))) ABORT; TOPDOWN; } break; case 164:{ # line 1570 "/tmp/act.mt" TOPDOWN;} break; case 165:{ # line 1579 "/tmp/act.mt" TOPDOWN;} break; case 166:{ # line 1588 "/tmp/act.mt" TOPDOWN;} break; case 167:{ # line 1597 "/tmp/act.mt" TOPDOWN;} break; case 168:{ # line 1606 "/tmp/act.mt" TOPDOWN;} break; case 169:{ # line 1615 "/tmp/act.mt" TOPDOWN;} break; case 170:{ # line 1628 "/tmp/act.mt" if (!eq(_mtG(root,2,1, -1),_mtG(root,3,1, -1))) ABORT; TOPDOWN; } break; case 171:{ # line 1644 "/tmp/act.mt" if (!eq(_mtG(root,2,1, -1),_mtG(root,3,1, -1)) || !eq(_mtG(root,2,2, -1),_mtG(root,3,3, -1)) || !eq(_mtG(root,2,2, -1),_mtG(root,2,3,1, -1)) || !eq(_mtG(root,3,2,1, -1),_mtG(root,3,3, -1))) ABORT; TOPDOWN; } break; case 172:{ # line 1660 "/tmp/act.mt" TOPDOWN;} break; case 173:{ # line 1671 "/tmp/act.mt" TOPDOWN;} break; case 174:{ # line 1684 "/tmp/act.mt" if (!eq(_mtG(root,1,1,1, -1),_mtG(root,2,1, -1))) ABORT; TOPDOWN; } break; case 175:{ # line 1697 "/tmp/act.mt" if (!eq(_mtG(root,1,1,1, -1),_mtG(root,2,2, -1))) ABORT; TOPDOWN; } break; case 176:{ # line 1710 "/tmp/act.mt" if (!eq(_mtG(root,1,1,1, -1),_mtG(root,2,1, -1))) ABORT; TOPDOWN; } break; case 177:{ # line 1723 "/tmp/act.mt" if (!eq(_mtG(root,1,1,1, -1),_mtG(root,2,2, -1))) ABORT; TOPDOWN; } break; case 178:{ # line 1736 "/tmp/act.mt" if (!eq(_mtG(root,1,1,1, -1),_mtG(root,2,2, -1)) || !eq(_mtG(root,1,2, -1),_mtG(root,2,1,1, -1))) ABORT; TOPDOWN; } break; case 179:{ # line 1749 "/tmp/act.mt" TOPDOWN;} break; case 180:{ # line 1760 "/tmp/act.mt" TOPDOWN;} break; case 181:{ # line 1771 "/tmp/act.mt" TOPDOWN;} break; } _m->cost = cost; return(xDEFER);}