home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Amiga / Applications / Mathematiques / Cube.lzh / Cube / solve.h < prev    next >
Text File  |  1992-09-27  |  57KB  |  1,075 lines

  1.  
  2.  
  3. /**********************************************************************
  4.     Human solvers should try to memorize as many from the following
  5.     five arrays as possible. `CornerMoves' cycles three corners and
  6.     `corners' switches two. Both have the same result, but it's easier to
  7.     use `corners'. The rest of the stuff in this file puts two pieces at
  8.     one time in the middle layer and `all' of them in one shot in the last
  9.     layer. There are 15552 configurations for the last layer.  I don't have
  10.     nearly that number. They all exist, but I haven't found them all. Some
  11.     here are 18 moves. Shorter ones probably exist, but they are hard to
  12.     find.
  13. ***********************************************************************/
  14.  
  15. char *EdgeTwist[]={
  16.    "ar2u2ruarauar2ulfrafal",    /* only 13 moves */
  17.    "lafualfabuarfaurafbau",
  18.    "2r2b2r2uralblar2u2r2b2ru"};
  19.  
  20. /* THE FOLLOWING 8 CASES MOVE AND TWIST THREE EDGE PIECES.
  21. *
  22. *         B |\
  23. *           | \
  24. *     D     |  \ C
  25. *           |  /
  26. *           | /
  27. *         A |/
  28. *
  29. *    Edge D doesn't move.  Corners never move.
  30. */
  31.  
  32.                 /*   twist    dir  moves    code  # */
  33. char *EdgeMoves[]=        /*----------------------------------*/
  34.    {                /*  a  b  c                */
  35.    "2rufab2rafbu2r",            /*  o  o  o  clock   9      021   0 */
  36.    "2raufab2rafbau2r",          /*  o  o  o  anti    9      320   1 */
  37.    "araf2r2d2lab2l2dar",        /*  +  o  +  clock   9      e21   2 */
  38.    "r2d2lb2l2d2rfr",            /*  o  +  +  anti    9      32e   3 */
  39.    "fuafalabaraurbl",           /*  +  +  o  clock  10      e26   4 */
  40.    "alabarurblfauaf",           /*  +  o  +  anti   10      b20   5 */
  41.    "lfrauarafalabub",           /*  o  +  +  clock  10      026   6 */
  42.    "abaublfruarafal",           /*  +  +  o  anti   10      b2e   7 */
  43.  
  44. /************** switch two pairs of edges - various twists ***************/
  45. /**************     All of these leave corners intact.       ***************/
  46.  
  47.    "2f2bad2l2f2b2r2f2bd2f2b",     /* sw red-green no tw  12 210   8 */
  48.    "rbuabau2rafaufur",            /*  "    twist bl-Or   11 21e   9 */
  49.    "fbr2u2b2u2b2u2barafab",       /*  "    twist four    12 76e  10 */
  50.    "rl2uaralafab2ufb",            /* sw red-or no twist  10 301  11 */
  51.    "afaual2ulfur2uar",            /* sw red-or tw red-bl 10 3e6  12 */
  52.    "lar2fralaularafralularafral", /* sw red-gn tw bl-gn  17 71e  13 */
  53.    "fab2rbafufabrbafaufabrbaf",   /* sw red-gn tw rd-or  17 260  14 */
  54.    "ufauaruruafar2uafaufur",      /* sw red-gn tw gn-or  15 710  15 */
  55.    "arauafuf2urfauarauruafau",    /* sw red-gn tw rd-bl  15 26e  16 */
  56.    "lufauafal2ufraubuabaraf2u",   /* sw red-or tw 4      16 be6 New 6/30/92*/
  57.    "blfauafualabarafaufur",       /* cycle 3 tw 4        14 e76 New 7/1/92 */
  58.    "arauafufrblaufuafalab",       /* as above, backwards 14 b7e  19 */
  59.    };
  60.  
  61. char *corners[]={   /*     For slow solve. Switch two corners.    */
  62.             /*     These mess up edges.  Use first.    */
  63.    "alaulf2uafalul",    /* diagonal twist rb + lb */
  64.    "alaulfuafalul",     /* sw front twist rf + rb */
  65.    "araurbauabarur",    /*    front       lf + rb */
  66.    "alaulfauafalul",    /*    back        lf + rb */
  67.    "araurbuabarur",     /*    back        lf + lb */
  68.    "afaufruarafuf",     /*    right       lb + rb */
  69.    "abaublaualabub",    /*    right       lb + rf */
  70.    "abaublualabub",     /*    left        lf + rf */
  71.    "afaufrauarafuf"     /*    left        lb + rf */
  72.    };
  73. char *twistcorners[]={       /* Mess up edges.  Use corners first then this
  74.                   then edges.  */
  75.    "araurauar2ur",
  76.    "ar2uruarur",
  77.    "afaufauafufauaf2uf",   /*11 *459-231 */
  78.    "r2u2rau2rau2r2ur2u",   /*10 476-102 */
  79.    "2uab2u2bu2bu2b2uab",   /*10 *a79-231 */
  80.    };
  81. /* Following are 18 cases of moving and twisting three corner pieces.
  82. *
  83. *          d    /|b
  84. *               / |
  85. *              /  |
  86. *             /     |    Edges never move.
  87. *          a /____|c    Corner d never moves.
  88. */
  89.                   /*  twist    dir    */
  90. char *CornerMoves[]=          /* a  b  c    */
  91.    {                  /* -------------- */
  92.    "2rdar2uradar2uar",        /* +  -  0  clock  9 #0  *043-123 */
  93.    "r2urdar2urad2r",          /* +  0  -  anti   9  1  *5b3-123 */
  94.    "arulaurualau",            /* -  -  -  clock  8  2  *8a3-123 */
  95.    "ulauarualaur",            /* +  +  +  anti   8  3  *7b3-123 */
  96.    "af2uafadf2uafd2f",        /* 0  -  +  clock  9  4  *b13-123 */
  97.    "2fadf2uafdf2uf",          /* +  -  0  anti   9  5  *2b3-123 */
  98.    "rbarfrabaraf",            /* -  +  0  clock  8  6  *0a3-123 */
  99.    "frbarafrabar",            /* -  o  +  anti   8  7  *783-123 */
  100.    "f2d2bd2fad2bd2fdaf",      /* +  +  +  clock 11  8  *b43-123 */
  101.    "fad2fad2bd2fad2b2daf",    /* -  -  -  anti  11  9  *583-123 */
  102.    "arafalfraflf",            /* o  +  -  clock  8 10  *813-123 */
  103.    "afalfaraflfr",            /* -  +  o  anti   8 11  *283-123 */
  104.    "2b2lb2rab2lb2rb",         /* -  o  +  clock  9 12  *ba3-123 */
  105.    "ab2rab2lb2rab2l2b",       /* o  -  +  anti   9 13  *703-123 */
  106.    "l2fl2bal2fl2b2l",         /* +  o  -  clock  9 14  *843-123 */
  107.    "2l2bal2fl2bal2fal",       /* o  +  -  anti   9 15  *503-123 */
  108.    "aflaf2rfalaf2r2f",        /* o  o  o  clock  9 16  *013-123 */
  109.    "2f2rflaf2rfalf"           /* o  o  o  anti   9 17  *203-123 */
  110.    };
  111. /***************************************************************************
  112.     End of what might be useful to human solvers.
  113.     Look at bottom of file for explanation of codes.
  114. ***************************************************************************/
  115.  
  116. char *topedges[24]={
  117.    "2rad2f","","2ld2f","2b2d2f","auru","afauru","ualau","fauru","lf",
  118.    "f","alfl","2lf2l","auaru","bulau","ulau","adrafar","rafar","af",
  119.    "araf","2ub2u","ad2f","2d2f","d2f","2f"
  120.    };        /* average 10.16 for all four */
  121. char *topcorns[]={
  122.    "abadbfdaf","","ldalaradr","bf2dabaf","f2dafar2dr","fdaf","daradr",
  123.    "afad2f2daf","al2dlaradr","lardral","ardr","f2daf","fadaf","abfadbaf",
  124.    "bar2drab","ar2dr","dar2dr","aradr","fadafaradr","rd2r2dr","ardrf2daf",
  125.    "f2dafaradr","fdafaradr","ar2drfdaf"};   /* average 18.5 for all four */
  126. char *middle[]={
  127.    "r2uar2uafauf", "b2ldfad2lab", "b2ldafad2lab", "f2ul2fal2uaf",
  128.    "2r2u2r2uarf2rafauaraf2uf","","afarafruf","ab2rauru2rb","l2fu2fau2fal",
  129.    "2f2u2f2u2f", "", "2bauad2rdu2b","arauabrbr", "afufurauar",
  130.    "2badbuabard2b", "", "", "", "f2ulafal2uaf","2r2u2r2u2r" };
  131.  
  132. char *(quickmiddle[16][16])= /* Puts two pieces at a time in middle layer.*/
  133.    {{
  134.    "",                       /*0-0      */
  135.    "aur2uaraualaf2ufl",      /*0-1   10 */
  136.    "ruaralaf2ufl",           /*0-2    8 */
  137.    "al2daf2uf2dl",           /*0-3    7 */
  138.    "2ualauafuf2l2fal2f",     /*0-4   10 */
  139.    "farafadafdr",            /*0-5    7 */
  140.    "ar2bad2fd2br",           /*0-6    7 */
  141.    "2l2f2ual2u2f2l",         /*0-7    7 */
  142.    "2u2b2dl2d2b2ur",         /*0-8    8 */
  143.    "2ub2dafadladab",         /*0-9    8 */
  144.    "aurfadalauafld",         /*0-10   9 */
  145.    "rfuafaraualaul",         /*0-11   9 */
  146.    "u2lualdaufad2l",         /*0-12   9 */
  147.    "l2ub2lab2ual",           /*0-13   7 one */
  148.    "",                       /*0-14     */
  149.    "al2daf2r2dab2ual",},     /*0-15   8  subtotal 114*/
  150.    {
  151.    "aual2daf2uf2dl",         /*1-0    8 */
  152.    "",                       /*1-1      */
  153.    "2ur2uaraualaf2ufl",      /*1-2   10 */
  154.    "auruaralaf2ufl",         /*1-3    9 */
  155.    "ualauafuf2l2fal2f",      /*1-4   10 */
  156.    "aufarafadafdr",          /*1-5    8 */
  157.    "",                       /*1-6      */
  158.    "l2bd2fad2bal",           /*1-7    7 */
  159.    "u2b2dl2d2b2ur",          /*1-8    8 */
  160.    "ub2dafadladab",          /*1-9    8 */
  161.    "frafadalulafd",          /*1-10   9 */
  162.    "u2fl2faral2fr2f",        /*1-11   9 */
  163.    "2lualdaufad2l",          /*1-12   8 */
  164.    "f2uaf2ualaul",           /*1-13   7 one */
  165.    "urauaradaluld",          /*1-14   9 */
  166.    "aual2daf2r2dab2ual",},   /*1-15   9   sub119 */
  167.    {
  168.    "ufadalfauafld",          /*2-0    9 */
  169.    "drafaufaradf",           /*2-1    8 */
  170.    "",                       /*2-2      */
  171.    "ur2uaraualaf2ufl",       /*2-3   10 */
  172.    "alauafuf2l2fal2f",       /*2-4    9 */
  173.    "2ufarafadafdr",          /*2-5    8 */
  174.    "rauaradaluld",           /*2-6    8 */
  175.    "",                       /*2-7      */
  176.    "2b2dl2d2b2ur",           /*2-8    7 */
  177.    "b2dafadladab",           /*2-9    7 */
  178.    "urfadalauafld",          /*2-10   9 */
  179.    "ruaradalauld",           /*2-11   8 */
  180.    "2lulaudafad2l",          /*2-12   8 */
  181.    "r2bdlad2bar",            /*2-13   7 one */
  182.    "2l2f2ul2u2f2l",          /*2-14   7 */
  183.    "aflafalaufd2rad",},      /*2-15   9  sub 114 */
  184.    {
  185.    "r2uaraualaf2ufl",        /*3-0    9 */
  186.    "fadalfauafld",           /*3-1    8 */
  187.    "ual2daf2uf2dl",          /*3-2    8 */
  188.    "",                       /*3-3      */
  189.    "aualauafuf2l2fal2f",     /*3-4   10 */
  190.    "al2dafauf2dl",           /*3-5    7 */
  191.    "d2ldrau2far2dl",         /*3-6    9 */
  192.    "aurauaradaluld",         /*3-7    9 */
  193.    "au2b2dl2d2b2ur",         /*3-8    8 */
  194.    "aub2dafadladab",         /*3-9    8 */
  195.    "rfadalauafld",           /*3-10   8 */
  196.    "",                       /*3-11     */
  197.    "laualb2df2dab",          /*3-12   8 */
  198.    "r2bdalad2bar",           /*3-13   7 one */
  199.    "adalauldruar",           /*3-14   8 */
  200.    "ual2daf2r2dab2ual",},    /*3-15   9  sub 116*/
  201.    {
  202.    "aufral2uarlf",           /*4-0    8 */
  203.    "2ufral2uarlf",           /*4-1    8 */
  204.    "ufalr2ularf",            /*4-2    8 */
  205.    "fral2uarlf",             /*4-3    7 */
  206.    "",                       /*4-4      */
  207.    "fld2fadafalau2f",        /*4-5    9 */
  208.    "auar2u2b2dal2d2b",       /*4-6    8 */
  209.    "2uar2u2b2dal2d2b",       /*4-7    8 */
  210.    "2f2u2f2u2f",             /*4-8    5 */
  211.    "2ldau2fad",              /*4-9    5 */
  212.    "ful2fdradalaf",          /*4-10   9 */
  213.    "uar2u2b2dal2d2b",        /*4-11   8 */
  214.    "al2ualaualdfaufad",      /*4-12  10 */
  215.    "",                       /*4-13     */
  216.    "ar2u2b2dal2d2b",         /*4-14   7 */
  217.    "2fdau2rad",},            /*4-15   5 sub 105*/
  218.    {""},                     /* no 5s   */
  219.    {
  220.    "af2uabarafrbauf",        /*6-0    9 */
  221.    "",                       /*6-1      */
  222.    "bl2bdafdr2db",           /*6-2    9 */
  223.    "2f2uaf2u2f",             /*6-3    5 */
  224.    "afauarau2fufrf",         /*6-4    9 */
  225.    "fulafalaf",              /*6-5    6 */
  226.    "",                       /*6-6      */
  227.    "bdflafalafadab",         /*6-7    9 */
  228.    "2uafalr2ularaf",         /*6-8    8 */
  229.    "faraf2dal2dr",           /*6-9    7 */
  230.    "flafdradalaf",           /*6-10   8 */
  231.    "adafdrafufar",           /*6-11   8 */
  232.    "af2r2dab2daruar",        /*6-12   8 */
  233.    "l2ubalab2ual",           /*6-13   7 one */
  234.    "2ur2df2uaf2dar",         /*6-14   8 */
  235.    "2f2ufud2rad",},          /*6-15   7 sub 106*/
  236.    {
  237.    "u2f2uf2u2f",             /*7-0    6 */
  238.    "f2ublfalabuaf",          /*7-1    9 */
  239.    "",                       /*7-2      */
  240.    "fauafudaf2ufad",         /*7-3    9 */
  241.    "auafauarau2fufrf",       /*7-4   10 */
  242.    "aufulafalaf",            /*7-5    7 */
  243.    "ur2df2uaf2dar",          /*7-6    8 */
  244.    "",                       /*7-7      */
  245.    "uafalr2ularaf",          /*7-8    8 */
  246.    "aufaraf2dal2dr",         /*7-9    8 */
  247.    "r2fabrbafauafar",        /*7-10   9 */
  248.    "fuarlfalr2uaf",          /*7-11   9 */
  249.    "auaf2r2dab2daruar",      /*7-12   9 */
  250.    "ar2faufu2fr",            /*7-13   7 one*/
  251.    "auadafdrafufar",         /*7-14   9 */
  252.    "au2f2ufud2rad",},        /*7-15   8   sub 116 */
  253.    {
  254.    "lubd2falafadab",         /*8-0    9 */
  255.    "fulu2fauafalaf",         /*8-1    9 */
  256.    "ufrf2uafauarau2f",       /*8-2   10 */
  257.    "2ufulu2fauafalaf",       /*8-3   10 */
  258.    "alfaularfadlafdralaf",   /*8-4   13 twist two*/
  259.    "",                       /*8-5      */
  260.    "aurufauaf2r2fr2f",       /*8-6   10 */
  261.    "2urufauaf2r2fr2f",       /*8-7   10 */
  262.    "",                       /*8-8      */
  263.    "ru2radafadal2dr",        /*8-9    9 */
  264.    "abadafar2dablau2l2dafd", /*8-10  12 messes all four. */
  265.    "urufauaf2r2fr2f",        /*8-11  10 */
  266.    "aradalaflulaudrf",       /*8-12  11 */
  267.    "fauf2ul2fal2u2f",        /*8-13   9twist one*/
  268.    "rufauaf2r2fr2f",         /*8-14   9 */
  269.    "2fauruarafd2rad",},      /*8-15   9    sub 140 */
  270.    {
  271.    "ufadald2uarfr",          /*9-0    9 */
  272.    "fadald2uarfr",           /*9-1    8 */
  273.    "aufadald2uarfr",         /*9-2    9 */
  274.    "2ufadald2uarfr",         /*9-3    9 */
  275.    "bdfl2dbaru2r2dfad",      /*9-4   12 messes all four. no problem? */
  276.    "ldlafaluadal",           /*9-5    8 better than 64 */
  277.    "2ubdabal2badbrb",        /*9-6   10 */
  278.    "lubd2fadalabal",         /*9-7    9 */
  279.    "afauar2fadaldrf",        /*9-8    9 */
  280.    "",                       /*9-9      */
  281.    "rfadafalafdf",           /*9-10   8 */
  282.    "bdabal2badbrb",          /*9-11   9 */
  283.    "",                       /*9-12     */
  284.    "alafalful",              /*9-13   6 one */
  285.    "l2ulaudaf2uafad",        /*9-14   9 */
  286.    "rbraudabalabad",},       /*9-15   9    sub 124 */
  287.    {
  288.    "2uldafdr2dal",           /*10-0   8 */
  289.    "aflf2dr2dal",            /*10-1   7 */
  290.    "ldafdr2dal",             /*10-2   7 */
  291.    "auldafdr2dal",           /*10-3   8 */
  292.    "alau2ldfdr2dal",         /*10-4   9 */
  293.    "afdrau2dbalabd",         /*10-5   9 */
  294.    "arfarafadfu2fd",         /*10-6   9 */
  295.    "brdf2uafadarab",         /*10-7   9 */
  296.    "2ruad2fd",               /*10-8   5 */
  297.    "2f2baud2r2lad",          /*10-9   7 */
  298.    "",                       /*10-10    */
  299.    "urau2rdau2bdal2d",       /*10-11 10 */
  300.    "rdbadrd2uabd2l2d",       /*10-12 11 */
  301.    "2rauad2fdu2r",           /*10-13  7 one */
  302.    "ab2dfdardb",             /*10-14  7 */
  303.    "",},                     /*10-15     sub 113*/
  304.    {
  305.    "dafuf2uadfauaf",         /*11-0   9 */
  306.    "2b2df2d2b",              /*11-1   5 */
  307.    "bau2fuab2ufu2f",         /*11-2   9 */
  308.    "",                       /*11-3     */
  309.    "2uafauarau2fufrf",       /*11-4  10 */
  310.    "2ufulafalaf",            /*11-5   7 */
  311.    "2uadafdrafufar",         /*11-6   9 */
  312.    "r2df2uaf2dar",           /*11-7   7 */
  313.    "afalr2ularaf",           /*11-8   7 */
  314.    "2ufaraf2dal2dr",         /*11-9   8 */
  315.    "fl2fdradal2uaf",         /*11-10  9 */
  316.    "",                       /*11-11    */
  317.    "2uaf2r2dab2daruar",      /*11-12  9 */
  318.    "f2ur2uar2uaf",           /*11-13  7 one */
  319.    "flar2frafal2uaf",        /*11-14  9 */
  320.    "b2d2r2uf2d2l",},         /*11-15  7   sub 112 */
  321.    {
  322.    "u2f2uafauad2ld",         /*12-0   8 */
  323.    "2f2uafauad2ld",          /*12-1   7 */
  324.    "au2f2uafauad2ld",        /*12-2   8 */
  325.    "2f2ufauad2ld",           /*12-3   7 */
  326.    "2fualaulfad2ld",         /*12-4   9 */
  327.    "afar2lafralualf",        /*12-5   9 */
  328.    "ur2df2l2db2ur",          /*12-6   9 */
  329.    "r2df2l2db2ur",           /*12-7   8 */
  330.    "2fuad2ld",               /*12-8   5 */
  331.    "",                       /*12-9     */
  332.    "frfadualafald",          /*12-10  9 */
  333.    "aur2df2l2db2ur",         /*12-11  9 */
  334.    "",                       /*12-12    */
  335.    "2l2u2l2u2l",             /*12-13  5 one */
  336.    "2ur2df2l2db2ur",         /*12-14  9 */
  337.    "2l2d2u2r2d2u",},         /*12-15  6  sub 108 */
  338.    {
  339.    "uflfalauaf",             /*13-0   7 */
  340.    "flfalauaf",              /*13-1   6 usually one*/
  341.    "auflfalauaf",            /*13-2   7 */
  342.    "2uflfalauaf",            /*13-3   7 */
  343.    "",                       /*13-4     */
  344.    "ldarad2falafdrad",       /*13-5  10 */
  345.    "2ur2dfuaf2dar",          /*13-6   9 */
  346.    "flafalafalul",           /*13-7   8 */
  347.    "2fulfd2fadalaf",         /*13-8   9 */
  348.    "bau2dafaduladab",        /*13-9   9 */
  349.    "fdaufrafadaf",           /*13-10  8 */
  350.    "r2dfuaf2dar",            /*13-11  7 */
  351.    "2fadlaudafu2f",          /*13-12  8 */
  352.    "",                       /*13-13    */
  353.    "ruarafarafrf",           /*13-14  8 */
  354.    "fl2rfalrauraf",},        /*13-15  9  sub 112*/
  355.    {
  356.    "",                       /*14-0     */
  357.    "audafuf2uadfauaf",       /*14-1  10 */
  358.    "u2f2uaf2u2f",            /*14-2   6 */
  359.    "fuafd2uafaufad",         /*14-3   9 */
  360.    "uafauarau2fufrf",        /*14-4  10 */
  361.    "ufulafalaf",             /*14-5   7 */
  362.    "2ufuarlfalr2uaf",        /*14-7  10 */
  363.    "uadafdrafufar",          /*14-7   9 */
  364.    "auafalr2ularaf",         /*14-8   8 */
  365.    "f2lafalualaf",           /*14-9   7 */
  366.    "2radfdauaru2r",          /*14-10  8 */
  367.    "aur2df2uaf2dar",         /*14-11  8 */
  368.    "uaf2r2dab2daruar",       /*14-12  9 */
  369.    "alulufauaf",             /*14-13  7 one*/
  370.    "",                       /*14-14    */
  371.    "u2f2ufud2rad",},         /*14-15  8  sub 116 */
  372.    {
  373.    "uf2l2db2dlaul",          /*15-0   9 */
  374.    "f2l2db2dlaul",           /*15-1   8 */
  375.    "auf2l2db2dlaul",         /*15-2   9 */
  376.    "2uf2l2db2dlaul",         /*15-3   9 */
  377.    "ldrfarauaruadalaf",      /*15-4  11 */
  378.    "2fdaruadfau2f",          /*15-5   8 */
  379.    "2rauraduafd2r",          /*15-6   8 */
  380.    "au2rauraduafd2r",        /*15-7   9 */
  381.    "baub2dl2d2br",           /*15-8   8 */
  382.    "aladabdalad2ubad2r2d",   /*15-9  11 */
  383.    "",                       /*15-10    */
  384.    "arurab2daf2db",          /*15-11  8 */
  385.    "2ldrfdauarab2du2l",      /*15-12 11 */
  386.    "2fdarafufad2f",          /*15-13  8 one*/
  387.    "auarurab2daf2db",        /*15-14  9 */
  388.    "",}                      /*15-15 sub126  total 1741/210=8.3 average*/
  389.    };
  390.  
  391. /****** End of quick middle.  Beginning of third and last layer ***********/
  392.  
  393. char *fast[]={            /* in pairs 2nd reverse */
  394.    "r2urdal2blad2r",                  /*  9  *5b3-320-0  0 */
  395.    "2rdal2bladar2uar",                /*  9  *043-021-0  1 */
  396.    "abaububalabl",                    /*  8  *0a3-1e7-5  2 */
  397.    "alblabauabub",                    /*  8  *783-1b0-c  3 */
  398.    "fubrabaubarabaf",                 /* 10  *283-e26-3  4 */
  399.    "fbrabubarabauaf",                 /* 10  *813-b20-a  5 */
  400.    "lualaualblab",                    /*  8  *283-2b6-a  6 */
  401.    "balablulaual",                    /*  8  *813-b17-c  7 */
  402.    "arauafuafl2frafalf2u",            /* 12  *2b3-3e1-5  8 */
  403.    "lufauaf2labarblabrb",             /* 13  *0a6-063-6  9 */
  404.    "2radr2uardr2urab2ubuabub",        /* 16  *016-320-0 10 */
  405.    "abaubauab2ubar2uaradr2uard2r",    /* 16  *289-021-0 11 */
  406.    "2ufb2uafauf2uabuaf",              /* 11  *203-203-0 12 */
  407.    "faub2uafuf2uabaf2u",              /* 11  *013-013-0 13 */
  408.    "al2u2lualaual2ublab",             /* 11  *283-17b-c 14 */
  409.    "rabarbubauabal2ulualul",          /* 15  *2b6-12b-9 15 */
  410.    "arur2uaraluraulu",                /* 11  *2b6-320-0 16 */
  411.    "abub2uabafubaufau",               /* 11  *019-021-0 17 */
  412.    "alurauluarafubaufuab",            /* 15  *5b9-301-0 18 */
  413.    "al2ulualu2lauarualauru",          /* 14  *8a9-130-0 19 */
  414.    "bauafuabaufraualuaraul",          /* 15  *b46-301-0 20 */
  415.    "auarulauru2laulaual2ul",          /* 14  *786-102-0 21 */
  416.    "al2bal2fl2bal2f2l2u",             /* 10  *843-301-0 22 */
  417.    "2u2l2fl2bal2fl2bl",               /* 10  *503-301-0 23 fast*/
  418.    "ur2urdar2urad2rbauafuabauf",        /* 17  *7b6-123-0 24 */
  419.    "afubaufuab2rdar2uradar2uarau",      /* 17  *ba9-123-0 25 */
  420.    "alurauluar2fdaf2ufadaf2uafu",       /* 17  *5b6-301-0 26 */
  421.    "auf2ufdaf2ufad2fraualuaraul",       /* 17  *849-301-0 27 */
  422.    "alaulaual2ulbuabauabrbar",        /* 15  *019-12b-9 28 */
  423.    "abaububalablabarfaraf2rb2u",      /* 16  *846-b67-f 29 */
  424.    "2uabarfaraf2rblualaualblab",      /* 16  *2b6-026-a 30 */
  425.    "araflafal2frbuabauabrbar",        /* 15  *019-731-5 31 */
  426.    "auraualuarulualul",               /* 12  *789-312-0 32 */
  427.    "alaulaualaurauluaru",             /* 12  *ba6-230-0 33 */
  428.    "abaubauabaufaubuafau",            /* 12  *589-021-0 34 */
  429.    "ufauabuafubuabub",                /* 12  *846-320-0 35 */
  430.    "abrbar2uar2urb2uab2uabrbar2u",      /* 17  *7b3-76e-f 36 */
  431.    "2urabarb2ub2uabar2ur2urabarb",      /* 17  *8a3-76e-f 37 */
  432.    "al2ul2ulafalfal2ul2ulafalf",      /* 16  *ba6-703-6 38 */
  433.    "aflfal2ual2ulaflfal2ual2ul",      /* 16  *789-e63-3 39 */
  434.    "ab2ub2ubalablab2ub2ubalabl2u",      /* 17  *589-107-c 40 */
  435.    "2ualblab2uab2ubalblab2uab2ub",      /* 17  *846-1be-9 41 */
  436.    "lauarualaurabauarurbu",           /* 14  *043-2e3-3 42 */
  437.    "b2uab2uabrbarbalabl2ul2ual2u",      /* 17  *5b3-703-6 43 */
  438.    "uarfraf2uafaubaufuab",            /* 13  *5b6-e21-9 44 */
  439.    "bauafuabuf2ufarafrau",            /* 13  *849-32e-3 45 */
  440.    "auaflfal2ualaurauluar",           /* 13  *ba9-7b1-c 46 fast*/
  441.    "raualuarul2ulafalfu",             /* 13  *7b6-367-6 47 */
  442.    "afaualulflafalf2uf2uaf",          /* 14  *503-62b-a 48 */
  443.    "f2uaf2uaflfalafalauluf",          /* 14  *843-62b-a 49 */
  444.    "arauafufrfarafr2ur2uar2u",        /* 15  *ba3-3e1-5 50 */
  445.    "2ur2uar2uarfrafarafaufur",        /* 15  *703-3e1-5 51 */
  446.    "alauabub2l2far2falfraf",          /* 13  *583-370-6 52 */
  447.    "rabarbubauabal2brbarbl",          /* 15  *7b9-1b0-c 53 */
  448.    "rubauabarabrbar2uar2ur",          /* 14  *ba3-173-5 54 */
  449.    "ar2ur2urabarbrbuabauar",          /* 14  *703-173-5 55 */
  450.    "furauarafarfraf2uaf2uf2u",        /* 15  *503-b06-a 56 */
  451.    "2uaf2uf2ufarafrfruarauaf",        /* 15  *843-b06-a 57 */
  452.    "bulaual2b2rf2rbarafr",            /* 13  *b43-e1b-9 58 */
  453.    "arfrab2raf2r2blualauab",          /* 13  *583-20b-a 59 */
  454.    "lufauafalar2fl2frafalf2u",        /* 15  *2b3-362-3 60 */
  455.    "2uaflfar2falfaufur",              /* 12  *b13-3e1-5 61 */
  456.    "abauarur2b2uab2uabrbar2u",        /* 14  *043-63e-3 62 */
  457.    "2urabarb2ub2u2baraurub",          /* 14  *5b3-602-a 63 */
  458.    "2urubauabaraf2uf2ufarafr",        /* 15  *ba9-173-5 64 */
  459.    "arfraf2uaf2ufrbuabauar2u",        /* 15  *7b6-173-5 65 */
  460.    "bulaualabar2ur2urabarb",          /* 14  *5b6-b06-a 66 */
  461.    "abrbar2uar2urblualauab",          /* 14  *849-b06-a 67 */
  462.    "2uafaualulfr2uar2uarfraf",        /* 15  *5b6-62b-a 68 */
  463.    "farafr2ur2uarafalauluf2u",        /* 15  *849-62b-a 69 fast*/
  464.    "alauabublf2uaf2uaflfal",          /* 14  *ba9-3e1-5 70 */
  465.    "lafalf2uf2uafalabaubul",          /* 14  *7b6-3e1-5 71 */
  466.    "fuafauaflf2laulaual2ul",          /* 14  *0a6-71e-5 72 */
  467.    "abrbar2uar2urfruarauaf",          /* 14  *0a3-0b2-a 73 */
  468.    "2uab2rfrafrbalblabauabub",        /* 16  *589-7b6-f 74 */
  469.    "lafalf2uf2uafarafaufur",          /* 14  *283-e37-5 75 */
  470.    "furauaraflafalf2uf2uaf",          /* 14  *7b9-607-6 76 */
  471.    "f2uaf2uaflfalfruarauaf",          /* 14  *0a6-6b0-a 77 */
  472.    "2ulufauafalbalabl2ul2ual",        /* 15  *049-2e3-3 78 */
  473.    "l2ual2ualblablfuafaual2u",        /* 15  *586-e13-5 79 */
  474.    "bulaualablafalf2uf2uaf",          /* 14  *503-736-6 80 */
  475.    "f2uaf2uaflfalblualauab",          /* 14  *843-b62-a 81 */
  476.    "lufauafalfarafr2ur2uar2u",        /* 15  *ba3-362-3 82 */
  477.    "2ur2uar2uarfraflfuafaual",        /* 15  *703-731-5 83 */
  478.    "rabarbubaulualaulualauab2u",        /* 17  *7b3-0b7-c 84 */
  479.    "lafalf2uf2uaflfuafaual",          /* 14  *283-1e7-5 85 */
  480.    "furauarafl2ual2ualblab2u",        /* 15  *5b6-b2e-9 86 */
  481.    "2ubalabl2ul2ualfruarauaf",        /* 15  *849-026-a 87 */
  482.    "rubauabarf2uaf2uaflfal",          /* 14  *ba9-071-c 88 */
  483.    "lafalf2uf2uafrbuabauar",          /* 14  *7b6-e73-5 89 */
  484.    "bulau2labl2ul2ual",               /* 11  *b46-b06-a 90 */
  485.    "l2ual2ualb2lualauab",             /* 11  *5b9-b06-a 91 */
  486.    "rubau2barb2ub2uab2u",             /* 12  *786-173-5 92 fast*/
  487.    "2ub2uab2uabr2buabauar",           /* 12  *8a9-173-5 93 */
  488.    "2ubulaualulaualuabauabrbar",        /* 17  *8a3-0b7-c 94 */
  489.    "l2ual2ualblabfruarauaf",          /* 14  *283-0b2-a 95 */
  490.    "rbuabauarafaufruarafufau",        /* 16  *0a3-21e-9 96 */
  491.    "abaububalab2lfarfr2fal2u",        /* 15  *ba9-7eb-f 97 */
  492.    "2b2lbrab2lbarbr2urdar2urad2r2u",    /* 19  *016-301-0 98 */
  493.    "2ul2farafraf2lblabauabub",        /* 15  *7b6-e6b-f 99 */
  494.    };
  495. char *mirr[]={
  496.    "af2uafadb2labd2f",               /*  9  *b13-013-0  0 */
  497.    "2fadb2labdf2uf",                 /*  9  *2b3-203-0  1 */
  498.    "abauarubalabrbl",                /* 10  *283-b2e-9  2 */
  499.    "alabarblabr2blualauab",          /* 13  *ba9-2b6-a  3 */
  500.    "araururabarbaraflafal2fr",       /* 15  *789-7b6-f  4 */
  501.    "aralaflaualflur",                /* 10  *783-e13-5  5 */
  502.    "arual2urauar2ulr2u",             /* 11  *203-320-0  6 */
  503.    "2uaral2uruar2ulaur",             /* 11  *013-021-0  7 */
  504.    "b2u2baubub2ualabl",              /* 11  *0a3-17b-c  8 */
  505.    "bulaual2barbalabrbl",            /* 13  *7b6-b17-c  9 */
  506.    "aufauabuafau2blualauab",         /* 13  *016-06b-a 10 */
  507.    "afaualulaf2laf2rf2laf2raf",      /* 14  *013-736-6 11 */
  508.    "fauaf2ufbauafuabau",             /* 11  *019-013-0 12 */
  509.    "ubaufuabaf2ufuaf",               /* 11  *2b6-203-0 13 */
  510.    "2urad2rad2ld2rad2l2darabaraurub",  /* 18  *ba6-20b-a 14 */
  511.    "2uafd2fd2bad2fd2b2dflfuafaual",    /* 18  *589-e71-5 15 */
  512.    "raualuaraulafalbalab2lfu",       /* 15  *b13-1be-9 16 */
  513.    "aualurauluarfurauaraf",          /* 14  *2b3-e26-3 17 */
  514.    "arauafufrabrbar2uar2ur",         /* 14  *816-2b1-9 18 */
  515.    "ar2ur2urabarbarafaufur",         /* 14  *2b9-317-5 19 mirr*/
  516.    "bulaualabaflfalaualul",          /* 14  *816-673-6 20 */
  517.    "alaululafalfblualauab",          /* 14  *2b9-673-6 21 */
  518.    "ar2flfalfrabrbarauarur",         /* 15  *ba6-b67-f 22 */
  519.    "alaululafal2fruarauaf",          /* 13  *783-760-6 23 */
  520.    "2ulufauafalarfrafauafuf",        /* 14  *286-b01-c 24 */
  521.    "afaufufarafrlfuafaual2u",        /* 14  *b19-3e6-3 25 */
  522.    "rubauabarfarafrurauar",          /* 14  *843-3e6-3 26 */
  523.    "ruarauarfrafrbuabauar",          /* 14  *503-b01-c 27 */
  524.    "2ubulaualabrabarbubauab",        /* 15  *703-673-6 28 */
  525.    "buabauabrbarblualauab2u",        /* 15  *ba3-673-6 29 */
  526.    "f2uaf2uaflfalfurauaraf",         /* 14  *843-eb2-9 30 */
  527.    "2uaraururabarbarafaufur",        /* 15  *503-12b-9 31 */
  528.    "afaualulfarfrafauafuf",          /* 14  *703-3e6-3 32 */
  529.    "afaufufarafrafalauluf",          /* 14  *ba3-b01-c 33 */
  530.    "f2rf2laf2rf2lfalauluf",          /* 14  *203-b62-a 34 */
  531.    "rabr2balbl2b2r",                 /*  9  *203-107-c 35 */
  532.    "2ualabaubul2radr2uardr2ur",      /* 16  *013-37e-5 36 */
  533.    "abauarurabadb2uabdb2ub",         /* 14  *203-b2e-9 37 */
  534.    "rbuabauar2ldal2uladal2ual",      /* 15  *013-13e-5 38 */
  535.    "aflaf2lbalab2l2f",               /*  9  *013-7b1-c 39 */
  536.    "blualaubadb2uabdb2ub",           /* 14  *203-2b6-a 40 */
  537.    "afubaufuabr2balablabarau",       /* 15  *786-7b1-c 41 */
  538.    "urbalbl2barbauafuabauf",         /* 15  *8a9-367-6 42 mirr*/
  539.    "alurauluarbulaualabu",           /* 14  *b46-376-6 43 */
  540.    "aublaflf2lablauarualaur",        /* 15  *5b9-7b1-c 44 */
  541.    "afubaufuabf2rabarbarafau",       /* 15  *789-1be-9 45 */
  542.    "ufrabrb2rafbauafuabauf",         /* 15  *ba6-107-c 46 */
  543.    "uafubaufuabf2rabarbaraf",        /* 15  *846-107-c 47 */
  544.    "frabrb2rafbauafuabaufau",        /* 15  *589-1be-9 48 */
  545.    "arulauru2farafrafalu",           /* 13  *b43-e63-3 49 */
  546.    "2uafalablfalb2lfuafaual",        /* 14  *5b6-e71-5 50 */
  547.    "fauabuafau2rfrafrbau",           /* 13  *583-32e-3 51 */
  548.    "lufauaf2lablafalblf2u",          /* 14  *849-370-6 52 */
  549.    "arulaurualf2rabarbarafu",        /* 15  *ba6-e21-9 53 */
  550.    "aufrabrb2raflauarualaur",        /* 15  *789-32e-3 54 */
  551.    "afubaufuabl2farafrafalau",       /* 15  *589-32e-3 55 */
  552.    "ulfarfr2falbauafuabauf",         /* 15  *846-e21-9 56 */
  553.    "arulaurualaraflafal2fru",        /* 15  *b46-e63-3 57 */
  554.    "auar2flfalfrlauarualaur",        /* 15  *5b9-703-6 58 */
  555.    "afubaufuabafalbalab2lfau",       /* 15  *786-703-6 59 */
  556.    "uaf2lblablfbauafuabauf",         /* 15  *8a9-e63-3 60 */
  557.    "arulaurualafalbalab2lfu",        /* 15  *846-367-6 61 */
  558.    "auaf2lblablflauarualaur",        /* 15  *589-7b1-c 62 */
  559.    "afubaufuabalabrabar2blau",       /* 15  *789-7b1-c 63 */
  560.    "ual2brbarblbauafuabauf",         /* 15  *ba6-367-6 64 */
  561.    "2ub2uab2uabrbarlufauafal",       /* 15  *8a9-b67-f 65 mirr*/
  562.    "lfuafaualrabarb2ub2uab2u",       /* 15  *786-7b6-f 66 */
  563.    "l2ual2ualblabfurauaraf",         /* 14  *5b9-7b6-f 67 */
  564.    "fruarauafbalabl2ul2ual",         /* 14  *b46-b67-f 68 */
  565.    "alabarblabrbfurauaraf",          /* 14  *ba9-e26-3 69 */
  566.    "2ulfarfr2f2l2ul2ulafalf",        /* 15  *7b6-e21-9 70 */
  567.    "alblab2uab2u2b2lafalfalab",      /* 14  *5b6-367-6 71 */
  568.    "blaflf2l2b2ub2ubalabl",          /* 14  *849-7b1-c 72 */
  569.    "abauarur2blfalablafal",          /* 13  *2b9-b2e-9 73 */
  570.    "2uaf2uafadf2uafd2frbuabauar",    /* 16  *816-317-5 74 */
  571.    "alauabub2lfrafalfaraf2u",        /* 14  *b19-071-c 75 */
  572.    "blaualul2ualauabu",              /* 11  *286-2b1-9 76 */
  573.    "afubaufuabaf2lblablfau",         /* 15  *5b3-e63-3 77 */
  574.    "ubauafuabauflufauafal",          /* 14  *043-063-6 78 */
  575.    "raualuaraulr2balablabaru",       /* 15  *b13-32e-3 79 */
  576.    "aurbalbl2baralurauluar",         /* 15  *2b3-e21-9 80 */
  577.    "afubaufu2b2ubuabubau",           /* 14  *5b3-130-0 81 */
  578.    "uabaubauab2u2bauafuabauf",       /* 14  *043-102-0 82 */
  579.    "raualuarau2l2ualaulaualu",       /* 14  *b13-312-0 83 */
  580.    "aulualul2u2lurauluar",           /* 14  *2b3-231-0 84 */
  581.    "2fdaf2ufadaf2u2f2ufuafuf",       /* 15  *5b3-231-0 85 */
  582.    "afaufauaf2u2f2ufdaf2ufad2f",     /* 15  *043-312-0 86 */
  583.    "2radr2uardr2u2r2uaraurauar",     /* 15  *b13-102-0 87 */
  584.    "ruarur2u2r2uaradr2uard2r",       /* 15  *2b3-130-0 88 mirr*/
  585.    "2fdaf2ufadaf2uafar2uruarur",     /* 16  *5b6-203-0 89 */
  586.    "araurauar2urf2ufdaf2ufad2f",     /* 16  *849-013-0 90 */
  587.    "2rdar2uradar2uarab2ubuabub2u",     /* 17  *b19-013-0 91 */
  588.    "2uabaubauab2ubr2urdar2urad2r",     /* 17  *7b6-203-0 92 */
  589.    "2fdaf2ufadaf2uafab2ubuabub",     /* 16  *503-320-0 93 */
  590.    "abaubauab2ubf2ufdaf2ufad2f",     /* 16  *843-021-0 94 */
  591.    "2rdar2uradar2uaral2ulualul2u",     /* 17  *ba3-021-0 95 */
  592.    "2ualaulaual2ulr2urdar2urad2r",     /* 17  *703-320-0 96 */
  593.    "2fdaf2ufadaf2uafal2ulualul",     /* 16  *7b3-130-0 97 */
  594.    "alaulaual2ulf2ufdaf2ufad2f",     /* 16  *8a3-102-0 98 */
  595.    };
  596. char *misc[]={
  597.    "aflfal2ual2ul",                   /*  8  *816-703-6  0 */
  598.    "ar2fl2frafalf",                   /*  8  *2b9-e63-3  1 */
  599.    "2uab2ub2ubalabl",                 /*  9  *b19-1be-9  2 */
  600.    "balabl2ul2ual2u",                 /*  9  *049-7b1-c  3 */
  601.    "b2uab2uabrbar",                   /*  8  *0a6-32e-3  4 */
  602.    "rabarb2ub2uab",                   /*  8  *7b9-e21-9  5 */
  603.    "2ul2ual2ualblab",                 /*  9  *586-367-6  6 */
  604.    "2uarfraf2uaf2uf",                 /*  9  *286-107-c  7 */
  605.    "aluraulauar2uarfrafu",            /* 13  *7b6-e63-3  8 */
  606.    "aufarafr2urualuaraul",            /* 13  *ba9-703-6  9 */
  607.    "afubaufauab2uabrbarau",           /* 13  *849-1be-9 10 */
  608.    "urabarb2ubuafuabauf",             /* 13  *5b6-107-c 11 */
  609.    "alblab2uab2ubar2ur2urabarb2u",      /* 17  *813-367-6 12 */
  610.    "2uabrbar2uar2urab2ub2ubalabl",      /* 17  *283-7b1-c 13 */
  611.    "farafr2ur2uarabrbar2uar2ur",      /* 16  *503-eb7-f 14 */
  612.    "ar2ur2urabarbr2uar2uarfraf",      /* 16  *843-eb7-f 15 */
  613.    "2ulafalf2uf2uafarfraf2uaf2uf",      /* 17  *ba3-eb7-f 16 */
  614.    "af2uf2ufarafrf2uaf2uaflfal2u",      /* 17  *703-eb7-f 17 */
  615.    "ab2ub2ubalablfarafr2ur2uar2u",      /* 17  *583-76e-f 18 */
  616.    "2ur2uar2uarfrafalblab2uab2ub",      /* 17  *b43-76e-f 19 */
  617.    "rabarb2ub2uabrabarb2ub2uab",      /* 16  *846-32e-3 20 */
  618.    "b2uab2uabrbarb2uab2uabrbar",      /* 16  *589-e21-9 21 */
  619.    "farafr2ur2uarfarafr2ur2uar2u",      /* 17  *789-367-6 22 misc*/
  620.    "2ur2uar2uarfrafr2uar2uarfraf",      /* 17  *ba6-7b1-c 23 */
  621.    "afaualulfarfraf2uaf2uf2u",        /* 15  *286-e26-3 24 */
  622.    "blfalablafalrubauabar",           /* 14  *783-1e2-9 25 */
  623.    "r2uar2uarfrafarfraf2uaf2uf",      /* 16  *8a9-301-0 26 */
  624.    "2ul2ualaulaualaflfar2fal2fr",     /* 16  *8a9-b01-c 27 */
  625.    "f2uaf2uaflfalaflfal2ual2ul2u",      /* 17  *5b9-123-0 28 */
  626.    "2ual2ul2ulafalflafalf2uf2uaf",      /* 17  *b46-123-0 29 */
  627.    "rubauab2uar2uarfraf",             /* 12  *583-0b2-a 30 */
  628.    "farafr2ur2ubuabauar",             /* 12  *b43-e37-5 31 */
  629.    "furauarafb2uab2uabrbar2u",        /* 15  *043-b06-a 32 */
  630.    "2urabarb2ub2uabfruarauaf",        /* 15  *5b3-b06-a 33 */
  631.    "rubauabaralblab2uab2ub",          /* 14  *5b9-071-c 34 */
  632.    "ab2ub2ubal2baubul",               /* 11  *b46-3e1-5 35 */
  633.    "bulaualabaflfal2ual2ul2u",        /* 15  *8a9-736-6 36 */
  634.    "ar2ur2urab2raurub2u",             /* 12  *786-62b-a 37 */
  635.    "2ulufauaf2uldar2frad2l",          /* 14  *283-b12-9 38 */
  636.    "2ldar2fradal2ufuafaual2u",        /* 14  *813-236-3 39 */
  637.    "2uaf2uf2ufarafrafalauluf",        /* 15  *b19-b20-a 40 */
  638.    "2u2fadb2labdf2ualauluf",          /* 14  *783-6e2-3 41 */
  639.    "lauarualaurbulaualabu",           /* 14  *8a9-1e2-9 42 */
  640.    "2ual2ul2ulafal2furauaraf",        /* 14  *786-eb2-9 43 */
  641.    "bauafuabaufrubauabarau",          /* 14  *5b9-63e-3 44 */
  642.    "ab2ub2ubalab2lufauafal",          /* 13  *b46-0b7-c 45 misc*/
  643.    "ab2rf2rbarafrfuafuf2uaf",         /* 15  *b46-12b-9 46 */
  644.    "",                   /* duplicate 14  *2b9-317-5 47 */
  645.    "furauarafalaululafalf2u",         /* 15  *7b6-231-0 48 */
  646.    "2uaflfalaualulfruarauaf",         /* 15  *ba9-312-0 49 */
  647.    "rubauabarafaufufarafr",           /* 14  *849-312-0 50 */
  648.    "arfrafauafufrbuabauar",           /* 14  *5b6-231-0 51 */
  649.    "2urubauabarbuflafaufalafab",        /* 17  *5b3-e32-3 52 */
  650.    "raualuarauabrabar2blu",           /* 14  *043-32e-3 53 */
  651.    "lufauafalbflafufalafauab",        /* 16  *0a6-6be-f 54 */
  652.    "buflafaufalafablfuafaual",        /* 16  *7b9-6e7-f 55 */
  653.    "bulaualabrlbalulabalauar2u",        /* 17  *586-e6b-f 56 */
  654.    "2urulbalaulabalarblualauab",        /* 17  *049-7eb-f 57 */
  655.    "2uaf2uf2ufarafrbulaualab",        /* 15  *843-b7e-f 58 */
  656.    "blualauabarfraf2uaf2uf2u",        /* 15  *503-e76-f 59 */
  657.    "ar2ur2urabarblufauafal",          /* 14  *703-b67-f 60 */
  658.    "lfuafaualabrbar2uar2ur",          /* 14  *ba3-7b6-f 61 */
  659.    "bulaualabfuafauaflfal",           /* 14  *813-6e7-f 62 */
  660.    "lafalfufauafblualauab",           /* 14  *283-6be-f 63 */
  661.    "2urubauabuarauarfraf",            /* 13  *5b3-e76-f 64 */
  662.    "farafruraubuabauar2u",            /* 13  *043-b7e-f 65 */
  663.    "2uafaualulaufufarafr",            /* 13  *b13-7eb-f 66 */
  664.    "arfrafauafualauluf2u",            /* 13  *2b3-e6b-f 67 */
  665.    "alauabublaraururabarb",           /* 14  *783-7b6-f 68 misc*/
  666.    "abrbarauaruralabaubul",           /* 14  *0a3-b67-f 69 */
  667.    "lufauafalfarafrurauar",           /* 14  *0a6-26e-3 70 */
  668.    "ruarauarfraflfuafaual",           /* 14  *7b9-710-c 71 */
  669.    "abauarurbarfrafauafuf",           /* 14  *2b9-26e-3 72 */
  670.    "lfauafuf2uafaualau",              /* 11  *816-b17-c 73 */
  671.    "alauabublabrbarauarur2u",         /* 15  *b19-21e-9 74 */
  672.    "2uaraururabarbalabaubul",         /* 15  *286-21e-9 75 */
  673.    "bulaualablafalfufauaf2u",         /* 15  *586-760-6 76 */
  674.    "2ufuafauaflfalblualauab",         /* 15  *049-760-6 77 */
  675.    "ar2fl2frafalflualul2ual2u",       /* 16  *786-3e6-3 78 */
  676.    "",                   /* 16 duplicate *8a9-b01-c 79 */
  677.    "2uruarur2uarabaububalabl",        /* 16  *019-3e6-3 80 */
  678.    "buabub2uabalaululafalf",          /* 15  *2b6-673-6 81 */
  679.    "afaufufarafrbulaualab",           /* 14  *816-be6-f 82 */
  680.    "blualauabarfrafauafuf",           /* 14  *2b9-be6-f 83 */
  681.    "2uaraururabarblufauafal",         /* 15  *286-67b-f 84 */
  682.    "lfuafaualabrbarauarur2u",         /* 15  *b19-67b-f 85 */
  683.    "bulaualulaual2baububalabl",         /* 17  *816-2e3-3 86 */
  684.    "2ulufauafufauaf2laululafalf",       /* 18  *286-607-6 87 */
  685.    "lfuafaualafubaufuabau",           /* 14  *5b3-7e3-5 88 */
  686.    "2urubauabubauabaralaululafalf",     /* 19  *7b3-2b1-9 89 */
  687.    "lualaualbl2baubauab2ub2u",        /* 15  *586-260-a 90 */
  688.    "2uab2ubuabu2balablulaual",        /* 15  *049-71e-5 91 misc*/
  689.    "",                      /* duplicate 14  *0a6-71e-5 92 */
  690.    "al2ulualu2lafalfufauaf",          /* 14  *7b9-260-a 93 */
  691.    "ual2ul2ulafalfbauafuabauf",       /* 16  *586-e21-9 94 */
  692.    "2uafau2faraf2rauarbalablulaual",    /* 17  *049-317-5 95 */
  693.    "fuafauaflfalbu2brb2rur",          /* 16  *0a6-b17-c 96 */
  694.    "arau2rabar2bauablafalfufauaf",    /* 16  *7b9-2b6-a 97 */
  695.    "fruarauafraualuaraulu",           /* 14  *b13-b20-a 98 */
  696.    "b2lafalfalabarfrab2raf2rb",       /* 15  *5b9-1be-9 99 */
  697.    };
  698. char *sept12[]={
  699.    "2fadf2uafdf2ufl2ualaulaual2u",     /* 17  *5b6-320-0  0 */
  700.    "2ulualul2ualaf2uafadf2uafd2f",     /* 17  *849-021-0  1 */
  701.    "2radr2uardr2urf2uafaufauaf",     /* 16  *ba9-021-0  2 */
  702.    "fuafuf2uafar2uaradr2uard2r",     /* 16  *7b6-320-0  3 */
  703.    "2radr2uardr2url2ualaulaual",     /* 16  *ba3-013-0  4 */
  704.    "lualul2ualar2uaradr2uard2r",     /* 16  *703-203-0  5 */
  705.    "2fadf2uafdf2ufb2uabaubauab2u",     /* 17  *503-203-0  6 */
  706.    "2ubuabub2uabaf2uafadf2uafd2f",     /* 17  *843-013-0  7 */
  707.    "2radr2uardr2urb2uabaubauab",     /* 16  *8a3-312-0  8 */
  708.    "buabub2uabar2uaradr2uard2r",     /* 16  *7b3-231-0  9 */
  709.    "uarulaur2ufauafal",              /* 11  *289-2b1-9 10 */
  710.    "b2urauluar2ualab",               /* 10  *016-b17-c 11 */
  711.    "arfraf2uaf2u2furauaraf",         /* 13  *583-12b-9 12 */
  712.    "rbalbl2baralablafalblf",         /* 15  *b43-107-c 13 */
  713.    "rblabarbalabaf2lblablf",         /* 15  *b43-367-6 14 */
  714.    "afalbalab2lfblabrbalabar",       /* 15  *583-7b1-c 15 */
  715.    "afalablfalblf2rabarbaraf",       /* 15  *283-32e-3 16 */
  716.    "alablafalblfrubauabar",          /* 14  *813-1e2-9 17 */
  717.    "araururabar2blaflf2lab",         /* 14  *5b6-6e7-f 18 */
  718.    "b2lafalfal2brbarauarur",         /* 14  *849-6be-f 19 */
  719.    "arafalfrafl2f2rabarbaraf2u",     /* 15  *ba3-e63-3 20 */
  720.    "2ufrabrb2r2falfaraflfr",         /* 15  *703-703-6 21 */
  721.    "afalablfalb2l2farafrafal",       /* 14  *503-703-6 22 sept12*/
  722.    "lfarfr2f2lablafalblf",           /* 14  *843-e63-3 23 */
  723.    "rblabarbal2b2rfrafrb",           /* 14  *ba3-e21-9 24 */
  724.    "abarfaraf2r2blabrbalabar",       /* 14  *703-32e-3 25 */
  725.    "frbarafrab2r2flfalfr2u",         /* 15  *503-32e-3 26 */
  726.    "2uaraflafal2f2rbarfrabaraf",     /* 15  *843-e21-9 27 */
  727.    "arafalfraflfab2ubuabub2u",       /* 16  *049-013-0 28 */
  728.    "2uabaubauab2ubafalfaraflfr",     /* 16  *586-203-0 29 */
  729.    "afalablfalblar2uruarur",         /* 15  *7b9-203-0 30 */
  730.    "araurauar2uralablafalblf",       /* 15  *0a6-013-0 31 */
  731.    "fruarauafarfraf2uaf2uf2u",       /* 15  *286-130-0 32 */
  732.    "2uaf2uf2ufarafrfurauaraf",       /* 15  *b19-1b0-0 33 */
  733.    "rbuabauarabrbar2uar2ur",         /* 14  *816-102-0 34 */
  734.    "ar2ur2urabarbrubauabar",         /* 14  *2b9-130-0 35 */
  735.    "alaulaual2u2lfrafalfaraf",       /* 14  *849-102-0 36 */
  736.    "fraflfaraf2l2ulualul",           /* 14  *5b6-130-0 37 */
  737.    "afalablfalb2ulualul",            /* 13  *2b6-130-0 38 */
  738.    "alaulaual2uablafalblf",          /* 13  *019-102-0 39 */
  739.    "rblabarbal2uabaubauab",          /* 13  *019-312-0 40 */
  740.    "buabub2ulabrbalabar",            /* 13  *2b6-231-0 41 */
  741.    "arafalfraflfabarfaraf2rb2u",     /* 16  *ba6-e63-3 42 */
  742.    "2uab2rfrafrbafalfaraflfr",       /* 16  *789-703-6 43 */
  743.    "afalablfalblaraflafal2fr",       /* 15  *589-703-6 44 */
  744.    "ar2flfalfralablafalblf",         /* 15  *846-e63-3 45 sept12*/
  745.    "afalablfalrabar2bl",             /* 11  *283-1be-9 46 */
  746.    "bulaualabraualuaraulu",          /* 14  *b13-b17-c 47 */
  747.    "lufaualblafalab",                /* 10  *0a3-063-6 48 */
  748.    "alblabauabubafaufauaf2uf2u",     /* 16  *2b6-b70-c 49 */
  749.    "afaualulfruarauarfraf",          /* 14  *7b6-130-0 50 */
  750.    "farafrurauarafalauluf",          /* 14  *ba9-102-0 51 */
  751.    "balablulau2labrabar2bl2u",       /* 15  *ba3-e1b-9 52 */
  752.    "2ual2brbarb2lualaualblab",       /* 15  *703-20b-a 53 */
  753.    "rabarbubau2barfaraf2rb",         /* 14  *503-2e3-3 54 */
  754.    "lfuafau2labarblabrb",            /* 13  *843-7e3-5 55 */
  755.    "aflfalaualu2lfarfr2fal",         /* 14  *ba3-e26-3 56 */
  756.    "l2farafraf2laululafalf",         /* 14  *703-b20-a 57 */
  757.    "abarbalabrb2lufauafal",          /* 13  *503-063-6 58 */
  758.    "f2rabarbar2faufufarafr2u",       /* 15  *843-e71-5 59 */
  759.    "rabarbubauabalabrabar2bl",       /* 15  *283-173-5 60 */
  760.    "lufauafalab2uabadb2uabd2b",      /* 15  *019-063-6 61 */
  761.    "2ualaulaual2ulabaububalabl",     /* 16  *843-367-6 62 */
  762.    "bulaufalablafal",                /* 10  *703-b17-c 63 */
  763.    "rub2uabaubuabarau",              /* 11  *b19-317-5 64 */
  764.    "fur2uarauruarafu",               /* 11  *2b9-2b6-a 65 */
  765.    "ar2fl2frafalfalaulaual2ul2u",    /* 16  *203-62e-3 66 */
  766.    "ab2uabadb2uabdbaraurub",         /* 14  *013-026-a 67 */
  767.    "balablulaualabarfaraf2rb2u",     /* 16  *ba6-e37-5 68 sept12*/
  768.    "2uab2rfrafrblualaualblab",       /* 16  *789-0b2-a 69 */
  769.    "rabarbubauabaraflafal2fr",       /* 15  *589-0b2-a 70 */
  770.    "ar2flfalfrbuabauabrbar",         /* 15  *846-e37-5 71 */
  771.    "balablulaualf2rabarbaraf2u",     /* 16  *ba3-e37-5 72 */
  772.    "2ufruarau2falablfalbl",          /* 14  *703-602-a 73 */
  773.    "rabarbubauabl2farafrafal",       /* 15  *503-0b2-a 74 */
  774.    "lfarfr2falbuabauabrbar",         /* 15  *843-e37-5 75 */
  775.    "2r2balabl2barbar",               /*  9  *013-1be-9 76 */
  776.    "af2ufuafufarfrab2raf2rb",        /* 15  *203-13e-5 77 */
  777.    "rabarbubauabr2balablabar",       /* 15  *583-173-5 78 */
  778.    "2ufuafuf2u2flfar2fal2fr",        /* 15  *013-e32-3 79 */
  779.    "aflfalaualulaf2lblablf",         /* 15  *b43-62b-a 80 */
  780.    "2f2lblab2lfalf",                 /*  9  *203-367-6 81 */
  781.    "rabarbubau2lafalfalab",          /* 13  *589-071-c 82 */
  782.    "blaflf2luabauabrbar",            /* 13  *846-37e-5 83 */
  783.    "2ufarafrurau2balablabar",        /* 14  *ba6-736-6 84 */
  784.    "rbalbl2buarauarfraf2u",          /* 14  *789-b62-a 85 */
  785.    "abaububalablf2rabarbaraf2u",     /* 16  *843-b67-f 86 */
  786.    "2ufrabrb2rafalblabauabub",       /* 16  *503-7b6-f 87 */
  787.    "araururabarbl2farafrafal",       /* 15  *703-7b6-f 88 */
  788.    "lfarfr2falabrbarauarur",         /* 15  *ba3-b67-f 89 */
  789.    "balablulau2l2ulualul2u",         /* 15  *043-01b-c 90 */
  790.    "ab2rfrafrufaubuafau",            /* 13  *5b3-e21-9 91 sept12*/
  791.    "alblabauabu2b2uabaubauab2u",     /* 15  *2b3-b70-c 92 */
  792.    "2ubuabub2u2baububalabl",         /* 15  *b13-076-6 93 */
  793.    "afaualulfbalablulaual2u",        /* 15  *049-b01-c 94 */
  794.    "bulaual2barafrbarfr2u",          /* 14  *586-70b-c 95 */
  795.    "balablulaualaf2ufuafuf2u",       /* 16  *019-b01-c 96 */
  796.    "2uafaufauaf2uflualaualblab",     /* 16  *2b6-3e6-3 97 */
  797.    "",                   /* 15  duplicate   043-01b-c 98 */
  798.    "2ufuafuf2uafabaububalabl",       /* 16  *ba9-1be-9 99 */
  799.    };
  800.  
  801. char *sept19[]={
  802.    "2uarafrabarfr2blualauab",        /* 14  *049-06b-a  0 */
  803.    "lfalblafal2baraurub",            /* 13  *816-026-a  1 */
  804.    "2ufraflfaraf2labaubul",          /* 14  *286-37e-5  2 */
  805.    "ru2rfr2fufarfrab2raf2rb",        /* 16  *2b9-1e7-5  3 */
  806.    "aufauabuaf2uarurb",              /* 11  *016-607-6  4 */
  807.    "uraualuar2uabubl",               /* 11  *289-1b0-c  5 */
  808.    "ab2rab2lb2rab2lbaublfruarafal",    /* 18  *703-b2e-9  6 */
  809.    "lfalblafualauab",                /* 10  *ba3-2b6-a  7 */
  810.    "2ulualaualblabafalauluf",        /* 15  *586-3e6-3  8 */
  811.    "rabarb2ub2uabr2urdar2urad2r",      /* 17  *049-e21-9  9 */
  812.    "b2uab2uabrbrdar2uradar2uar",     /* 16  *5b6-32e-3 10 */
  813.    "blualubdab2ubad2b",              /* 12  *8a3-2b6-a 11 */
  814.    "2bdab2ubadabaulaualab",          /* 12  *7b3-b17-c 12 */
  815.    "lfuaf2uarualaurau",              /* 11  *016-037-5 13 */
  816.    "bl2uraualuar2uab",               /* 10  *289-2b6-a 14 */
  817.    "alauabu2blab2uab2ub",            /* 11  *5b9-3e1-5 15 */
  818.    "2uabauaru2rbar2uar2ur",          /* 12  *8a9-62b-a 16 */
  819.    "uraualuarau2lufauafal",          /* 13  *7b3-063-6 17 */
  820.    "fruarauafabarbalabrbl",          /* 14  *7b6-b20-a 18 */
  821.    "abarbalabrb2lfuafaual",          /* 13  *7b9-7e3-5 19 */
  822.    "rbuabauarafalablfalbl",          /* 14  *283-13e-5 20 */
  823.    "lfuafau2lblab2uab2ub",           /* 13  *5b9-0b7-c 21 */
  824.    "fruarau2flfal2ual2ul2u",         /* 14  *8a9-037-6 22 sept19*/
  825.    "uraualuarau2lfuafaual",          /* 13  *289-7e3-5 23 */
  826.    "ubauafuabaufrbuabauar",          /* 14  *043-13e-5 24 */
  827.    "rubauabaralurauluarau",          /* 14  *8a3-1e2-9 25 */
  828.    "uraualuaraulrbuabauar",          /* 14  *7b3-13e-5 26 */
  829.    "aualurauluarblualauab",          /* 14  *2b3-2b6-a 27 */
  830.    "ar2uaradr2uard2rblualauab",      /* 15  *286-2b6-a 28 */
  831.    "2u2radr2uardr2urblualauab",      /* 16  *019-06b-a 29 */
  832.    "2badb2uabdb2ublfuafaual",        /* 15  *2b6-7e3-5 30 */
  833.    "abarbalabrblrbuabauar",          /* 14  *503-13e-5 31 */
  834.    "2ul2fl2bal2fl2balfuafaual",      /* 15  *849-e71-5 32 */
  835.    "2ufurauaraf2l2farafr2falfal",    /* 16  *016-e1b-9 33 */
  836.    "rubauabar2f2rabarb2rafraf",      /* 15  *289-2e3-3 34 sept19*/
  837.    };
  838. char *newer[]={
  839.    "aufabauarurbuaf",                 /* 10  *283-2e3-3  0 */
  840.    "fauabaraurubafu",                 /* 10  *813-e13-5  1 */
  841.    "uarlufauafalaur",                 /* 10  *0a3-e26-3  2 */
  842.    "arulfuafaualrau",                 /* 10  *783-b20-a  3 */
  843.    "barauafurabarfr",                 /* 10  *7b3-2e3-3  4 */
  844.    "arafrbaraufurab",                 /* 10  *8a3-e13-5  5 */
  845.    "alfurauaflfaraf",                 /* 10  *8a3-e26-3  6 */
  846.    "frafalfuarauafl",                 /* 10  *7b3-b20-a  7 */
  847.    };
  848. char *diag[]=
  849.    {
  850.    "araurauar2u2rubauabarau",         /* 13  *183-71b-c  0 */
  851.    "ufruarauaf",                      /*  7  *403-713-5  1 */
  852.    "lufauafalu",                      /*  7  *403-706-6  2 */
  853.    "urbuabau2r2uruarur",              /* 13  *183-26b-a  3 */
  854.    "rbuab2rfr2fufau",                 /* 11  *183-213-0 same backwards */
  855.    "ul2farafraf2lauabubl",            /* 13  *403-67e-f  5 */
  856.    "faub2dabuaf2ufaub2dabuafau",      /* 16  *103-012-0  6 */
  857.    "ufaub2dabuaf2ufaub2dabuaf",       /* 16  *103-230-0  7 */
  858.    "rubauab2raflafal2frau",           /* 13  *a83-b26-a  8 */
  859.    "raul2daluaraur2ul2dal2uar",       /* 15  *a03-230-0  9 */
  860.    "auabaraurublu2lbl2bub",           /* 15  *a83-7e6-f 10 */
  861.    "uar2flfalf2rbuabauar",            /* 13  *4b3-b26-a 11 */
  862.    "abau2balab2laualabauarurbu",      /* 14  *4b3-b60-f 12 */
  863.    "uruaruraubauabar",                /* 11  *a89-062-a 13 */
  864.    "aulfuafaufuafau2lauabubl",        /* 16  *489-1eb-9 14 */
  865.    "l2u2lblabl2ualu",                 /* 10  *183-2e6-3 15 */
  866.    "aul2ualbalab2l2ual",              /* 10  *183-b10-c 16 */
  867.    "uaf2ufuafufalauabubl",            /* 14  *a89-1e3-5 17 */
  868.    "abauarurbrbalbl2baru",            /* 14  *183-0b1-c 18 */
  869.    "arauafufru",                      /*  7  *403-62e-3 19 */
  870.    "aur2balablabarabaraurub",         /* 14  *183-3e7-5 20 */
  871.    "blualaulualaulualauabau",         /* 15  *489-230-0 21 */
  872.    "afaualul2frabrb2rafu",            /* 13  *4b3-1e3-5 22 diag*/
  873.    "fraubuabarafu",                   /*  9  *403-b02-a 23 */
  874.    "auf2rabarbar2falauluf",           /* 13  *a83-1e3-5 24 */
  875.    "aurbuabaubuabau2rauafufr",        /* 16  *489-603-6 25 */
  876.    "auarafaufuafaufu2rubauabar",      /* 16  *489-326-3 26 */
  877.    "aualabaubuabaubu2lufauafal",      /* 16  *489-b71-c 27 */
  878.    "ual2ul2ulafalfabrbal2bar2bl",       /* 17  *a03-b76-f 28 */
  879.    "l2ual2ualblablauarualaur",        /* 15  *103-be2-9 29 */
  880.    "abufaubuaflafalf2uf2uaf2u",       /* 16  *103-632-3 30 */
  881.    "arulaurualbalabl2ul2ual",         /* 15  *103-036-6 31 */
  882.    "afubaufuabrabarb2ub2uab2u",       /* 16  *103-07b-c 32 */
  883.    "balablulau2laululafalfau",        /* 16  *103-310-0 33 */
  884.    "aurauaf2dfuar2urauaf2dfuar",      /* 16  *489-012-0 34 */
  885.    "uabarbaf2labrb2larfr",            /* 13  *403-012-0 35 */
  886.    "furauar2f2lblablfu",              /* 13  *183-360-6 36 */
  887.    "uaflfalaualu2lualaualblab",       /* 15  *103-201-0 37 */
  888.    "ulfarfr2falrubauabar",            /* 14  *a89-b6e-f 38 */
  889.    "aur2urdar2urad2rab2ub2ubalabl",     /* 18  *a03-07b-c 39 */
  890.    "2fdab2rbadaf2uafarulaurual",      /* 16  *a89-201-0 40 */
  891.    "aualblabauabu2buabauabrbar",      /* 16  *103-213-0 41 */
  892.    "duplicate",      /* 16  *103-102-0 42 */
  893.    "auarfrafauafu2fuafauaflfal",      /* 16  *103-120-0 43 */
  894.    "auar2uaradr2uard2rf2uaf2uaflfal",   /* 18  *a03-be2-9 44 */
  895.    "fruaraurabrb2rafu",               /* 12  *4b3-e12-9 45 diag*/
  896.    "uaf2ufuafufarafaufur",            /* 14  *a89-b10-c 46 */
  897.    "al2ulbaualauluab",                /* 10  *403-201-0 47 */
  898.    "f2u2fau2fau2f2u2furauarafu",      /* 15  *a83-073-6 48 */
  899.    "arafrabarfrbfauabuafaub",         /* 15  *4b3-230-0 49 */
  900.    "abufaubuafabarafrbarfr",          /* 15  *a83-012-0 50 */
  901.    "auafalbalab2l2fruarauaf",         /* 13  *183-7e1-5 51 */
  902.    "ur2uaraurau2rafaufur",            /* 13  *403-701-c 52 */
  903.    "furauarafab2rfrafrbu",            /* 14  *a89-1b2-9 53 */
  904.    "uar2uruaru2rbuabauar",            /* 13  *403-12e-9 54 */
  905.    "rubauabaralaulaual2ulau",         /* 14  *a83-be2-9 55 */
  906.    "ual2ulualuabaubul",               /* 12  *4b3-067-6 56 */
  907.    "ulualul2ufuafaual",               /* 12  *183-be2-9 57 */
  908.    "lufauafalabaubauab2ubau",         /* 14  *183-603-6 58 diag*/
  909.    "uab2ubuabublfuafaual",            /* 14  *183-6e3-3 59 */
  910.    "lufauaf2ualaulaualau",            /* 12  *183-036-6 60 */
  911.    "uaraurauar2u2rbuabauar",          /* 13  *a89-326-3 61 */
  912.    "uruarur2u2rafaufur",              /* 13  *a89-603-6 62 */
  913.    "furauarafab2ubuabubu",            /* 14  *183-e62-3 63 */
  914.    "auabaubauab2ubfruarauaf",         /* 14  *183-730-6 64 */
  915.    "bulaualabar2uruaruru",            /* 14  *4b3-b10-c 65 */
  916.    "auf2rabarbarurauaraf",            /* 12  *a83-23e-3 66 */
  917.    "alauabubaulaual2ulau",            /* 12  *a83-7b0-c 67 */
  918.    "ruarur2uarafalaulufu",            /* 14  *4b3-2e6-3 68 */
  919.    "fu2flf2labublau",                 /* 11  *183-120-0 69 */
  920.    "araurauarurauar2uafaufuru",       /* 16  *a03-e62-3 70 */
  921.    "uabauarur2ubuabaubuabub",         /* 16  *a03-017-c 71 */
  922.    "ul2ualaulualaulaualafalauluf",      /* 18  *a03-763-6 72 diag*/
  923.    "uafl2fal2ual2ulafarafaufur",      /* 16  *489-062-a 73 */
  924.    "urubauabaraf2u2fu2fu2f2uaf",      /* 16  *489-07b-c 74 */
  925.    "fal2dlaf2ufal2dlurauarafu",       /* 16  *a03-170-c 75 */
  926.    "blualauar2drab2ubar2drabu",       /* 16  *a03-b60-a 76 */
  927.    "afr2darf2uafr2daraualulfu",       /* 16  *a03-2e1-9 77 */
  928.    "abaraurul2dalb2uabl2dalbu",       /* 16  *a03-26b-a 78 */
  929.    };
  930. char *corntwist[]={        /* twist corners & cycle edges */
  931.    "araurauar2ur2u",                  /* 8   *a53-320-0  0 */
  932.    "2uar2uruarur",                    /* 8   *473-021-0  1 */
  933.    "2uaraflafal2fr",                  /* 8   *a53-e21-9  2 */
  934.    "ar2flfalfr2u",                    /* 8   *473-32e-3  3 */
  935.    "2uf2uafaufauaf",                  /* 8   *a53-203-0  4 */
  936.    "fuafuf2uaf2u",                    /* 8   *473-013-0  5 */
  937.    "2ub2lafalfalab",                  /* 8   *a53-e63-3  6 */
  938.    "blaflf2lab2u",                    /* 8   *473-703-6  7 */
  939.    "2ubu2brb2rur",                    /* 9   *a53-623-3  8 */
  940.    "arau2rabar2bauab2u",              /* 9   *473-623-3  9 */
  941.    "rubauabubauabar",                 /* 10  *a79-13e-5 10 */
  942.    "lfuafaufuafaual",                 /* 10  *a79-063-6 11 */
  943.    "blualauabarauafufr2u",            /* 13  *473-67b-f 12 */
  944.    "2uarafaufurbulaualab",            /* 13  *a53-67b-f 13 */
  945.    "lualau2f2lbalflafab2l2f",         /* 14  *a73-673-6 14 */
  946.    "2f2lbfalaflab2l2fulaual",         /* 14  *453-673-6 15 */
  947.    "2ubal2blbal2bl2urbarab",          /* 14  *473-123-0 16 */
  948.    "brabar2ual2blabal2blab2u",        /* 14  *a53-123-0 17 */
  949.    "rubauabarlfuafaual",              /* 12  *a79-032-0 18 */
  950.    "l2ualaulualaulaual",              /* 11  *459-203-0 19 */
  951.    "buabubauabub2uab",                /* 11  *459-312-0 20 */
  952.    "r2uarauruaraurauar",              /* 11  *459-130-0 21 */
  953.    "fuafufauafuf2uaf",                /* 11  *459-021-0 22 corntwist*/
  954.    "abaubauabubauab2ub",              /* 11  *459-320-0 23 */
  955.    "afaufauafufauaf2uf",              /* 11  *459-231-0 24 */
  956.    "ar2uruarauruarur",                /* 11  *459-013-0 25 */
  957.    "al2ulualaulualul",                /* 11  *459-102-0 26 */
  958.    "bulaufauafualulaufauafualab",       /* 18  *459-123-0 27 */
  959.    "b2u2bau2bauabuabub",              /* 11  *a53-301-0 28 */
  960.    "afaufauaf2ufabarfaraf2rb",        /* 14  *459-21e-9 29 */
  961.    "2uruarauarfr2ufdaf2ufad2f",       /* 16  *459-602-a 30 */
  962.    "abaubauab2ubafalbalab2lf",        /* 14  *459-760-6 31 */
  963.    "aualf2daflaualf2dafl",            /* 12  *a79-301-0 32 */
  964.    "abaubaubu2bu2b2uab",              /* 11  *473-301-0 33 */
  965.    "2rdar2uradar2uabarbubauab2u",     /* 16  *459-2b1-9 34 */
  966.    "2uaf2ufuafaufuafaufuafuf",        /* 16  *153-301-0 35 */
  967.    "uraf2uf2uf2rafr",                 /* 10  *a79-7b1-c 36 */
  968.    "2uraf2dfar2uraf2dfar",            /* 12  *153-123-0 37 */
  969.    "abarbalabrbaladl2ualdl2ul2u",       /* 17  *453-301-0 38 */
  970.    "2ual2ualadl2ualdlabarblabrb",       /* 17  *a73-301-0 39 */
  971.    "abr2bar2uar2urab2u",              /* 10  *a79-e21-9 40 */
  972.    "alblaf2lab2l2f2ufdaf2ufad2f",     /* 16  *a53-7b1-c 41 */
  973.    "r2uraf2dfar2uraf2df2r",           /* 13  *453-123-0 42 */
  974.    "2raf2dfar2uraf2dfar2uar",         /* 13  *a73-123-0 43 */
  975.    "afr2df2radr2uard2raf2darf2u",     /* 16  *a79-123-0 44 */
  976.    "aflfal2ual2ularaururabarb2u",       /* 17  *a53-2b6-a 45 corntwist*/
  977.    "2ulfauruaruafaual",               /* 11  *473-b01-c 46 */
  978.    "alauabublarafaufur",              /* 12  *a79-210-0 47 */
  979.    "l2ual2ualbl2ubdab2ubad2b",        /* 15  *153-1be-9 48 */
  980.    "2fdaf2ufadaf2uarafr2ur2uar",      /* 15  *153-e63-3 49 */
  981.    "afaluabaubauluf2u",               /* 11  *a53-b01-c 50 */
  982.    "lualaualblab2rdar2uradar2uar",      /* 17  *473-2b6-a 51 */
  983.    "abaubl2ualabublfuafaual",         /* 15  *473-b12-9 52 */
  984.    "lualab2ublaualabaraurub",         /* 15  *a53-703-6 53 */
  985.    "2ur2uar2uarfraf2ldal2uladal2ual",   /* 18  *a73-e21-9 54 */
  986.    "b2ubdab2ubad2bl2ual2ualblab",       /* 17  *453-1be-9 55 */
  987.    "arulaurualbuabauabrbarau",        /* 16  *a73-2b6-a 56 */
  988.    "urabarbubauablauarualaur",        /* 16  *453-b17-c 57 */
  989.    "frbauabuarafrubauabar",           /* 14  *a79-b62-a 58 */
  990.    "ul2ual2ualblabraualuaraul",       /* 16  *a73-7b1-c 59 */
  991.    "frbauabuaraflfuafaual",           /* 14  *a79-76e-f 60 */
  992.    "2f2rabafrfarb2r2fauarur",         /* 14  *453-623-3 61 */
  993.    "arauru2f2rabrafarfb2r2f",         /* 14  *a73-623-3 62 */
  994.    "alauabubauabubl",                 /* 10  *a79-1e7-5 63 */
  995.    "arafaufuafaufur",                 /* 10  *a79-2e3-3 64 */
  996.    "2uafalabublfrau2r2uruarur",       /* 17  *473-1e7-5 65 */
  997.    "2ublabfuafaubalab",               /* 11  *a53-e71-5 66 */
  998.    "buabub2uabfrabrb2raf",            /* 14  *459-e32-3 67 corntwist*/
  999.    "al2brbarblar2uruarur",            /* 14  *459-0b7-c 68 */
  1000.    "blfalablafl2farafr2falfal",       /* 16  *153-703-6 69 */
  1001.    "rabr2balbl2barbarfrabaraf",       /* 16  *153-107-c 70 */
  1002.    "2uab2u2bu2bu2b2uab",              /* 10  *a79-231-0 71 */
  1003.    };
  1004.  
  1005.  
  1006. char *(first[4][4])={{"","au","2u","u"},
  1007.              {"u","","au","2u"},
  1008.              {"2u","u","","au"},
  1009.              {"au","2u","u",""}};
  1010.  
  1011. /*     Labeling used for solving top layer:
  1012. *      Each side is labeled clockwise.    It doesn't matter where you start
  1013. *      as long as you start in a corner.   (Hexadecimal numbers)
  1014. *
  1015. *                 side 3
  1016. *                 back
  1017. *             -------------
  1018. *             | f | f | c |
  1019. *             -------------
  1020. *             | e |or | c |
  1021. *             -------------     side 4     side 5
  1022. *             | e | d | d |     right        bottom
  1023. *         -------------------------------------------------
  1024. *         | b | b | 8 | 3 | 3 | 0 | 13| 13| 10| 15| 15| 16|
  1025. *         ------------------------------------------------
  1026. *     left   | a |gn | 8 | 2 |top| 0 | 12|blu| 10| 14|yel| 16|
  1027. *    side 2  -------------------------------------------------
  1028. *         | a | 9 | 9 | 2 | 1 | 1 | 12| 11| 11| 14| 17| 17|
  1029. *         -------------------------------------------------
  1030. *             | 7 | 7 | 4 |
  1031. *             -------------
  1032. *             | 6 |red| 4 |      top is side 0
  1033. *             -------------      for turning and orienting.
  1034. *             | 6 | 5 | 5 |
  1035. *             -------------
  1036. *                 front
  1037. *                 side 1
  1038. *
  1039. *   Cube labeling for middle and last layer:
  1040. *
  1041. *   For codes such as "813-320" the first three indicate the SOURCE of
  1042. *   the corner belonging in positions 1,2 and 3 respectively.  The second
  1043. *   three indicate the SOURCE of the edge belonging in positions 1,2 & 3.
  1044. *   When everything is in place the code will be 123-123.  "813" means move
  1045. *   corner piece who's upper color is in box 8 into position 1, 1 into 2 and
  1046. *   3 is already where it belongs.  In other words use string #10 from the
  1047. *   array CornerMoves. "320" means cycle three edge pieces counterclockwise
  1048. *   without twisting them.  Use string #1 from EdgeMoves.  This way position
  1049. *   and twist can be denoted by a single digit.  This system is for the
  1050. *   convenience of the computer, not anyone else.  It takes up a little less
  1051. *   memory.
  1052. *
  1053. *                   back
  1054. *                   -------------
  1055. *                   |   |   |   |
  1056. *                   -------------
  1057. *                   | c |   | a |
  1058. *                   -------------
  1059. *                   | 9 | b | 8 |
  1060. *           -------------------------------------
  1061. *           |   | 9 | 6 | 3 | 3 | 0 | b | f |   |
  1062. *           -------------------------------------
  1063. *          left |   |   | 7 | 2 |top| 0 | e |   |   | right
  1064. *           -------------------------------------
  1065. *           |   | 8 | 7 | 2 | 1 | 1 | a | d |   |
  1066. *           -------------------------------------
  1067. *                   | 5 | 6 | 4 |
  1068. *                   -------------
  1069. *                   | 5 |   | 4 |
  1070. *                   -------------
  1071. *                   |   |   |   |
  1072. *                   -------------
  1073. *                   front
  1074. */
  1075.