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
13 ***********************************************************************/
16 "ar2u2ruarauar2ulfrafal", /* only 13 moves */
17 "lafualfabuarfaurafbau",
18 "2r2b2r2uralblar2u2r2b2ru"};
20 /* THE FOLLOWING 8 CASES MOVE AND TWIST THREE EDGE PIECES.
29 * Edge D doesn't move. Corners never move.
32 /* twist dir moves code # */
33 char *EdgeMoves
[]= /*----------------------------------*/
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 */
44 /************** switch two pairs of edges - various twists ***************/
45 /************** All of these leave corners intact. ***************/
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 */
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 */
73 char *twistcorners
[]={ /* Mess up edges. Use corners first then this
77 "afaufauafufauaf2uf", /*11 *459-231 */
78 "r2u2rau2rau2r2ur2u", /*10 476-102 */
79 "2uab2u2bu2bu2b2uab", /*10 *a79-231 */
81 /* Following are 18 cases of moving and twisting three corner pieces.
86 * / | Edges never move.
87 * a /____|c Corner d never moves.
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 */
111 /***************************************************************************
112 End of what might be useful to human solvers.
113 Look at bottom of file for explanation of codes.
114 ***************************************************************************/
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 */
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 */
127 "r2uar2uafauf", "b2ldfad2lab", "b2ldafad2lab", "f2ul2fal2uaf",
128 "2r2u2r2uarf2rafauaraf2uf","","afarafruf","ab2rauru2rb","l2fu2fau2fal",
129 "2f2u2f2u2f", "", "2bauad2rdu2b","arauabrbr", "afufurauar",
130 "2badbuabard2b", "", "", "", "f2ulafal2uaf","2r2u2r2u2r" };
132 char *(quickmiddle
[16][16])= /* Puts two pieces at a time in middle layer.*/
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 */
149 "al2daf2r2dab2ual",}, /*0-15 8 subtotal 114*/
151 "aual2daf2uf2dl", /*1-0 8 */
153 "2ur2uaraualaf2ufl", /*1-2 10 */
154 "auruaralaf2ufl", /*1-3 9 */
155 "ualauafuf2l2fal2f", /*1-4 10 */
156 "aufarafadafdr", /*1-5 8 */
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 */
168 "ufadalfauafld", /*2-0 9 */
169 "drafaufaradf", /*2-1 8 */
171 "ur2uaraualaf2ufl", /*2-3 10 */
172 "alauafuf2l2fal2f", /*2-4 9 */
173 "2ufarafadafdr", /*2-5 8 */
174 "rauaradaluld", /*2-6 8 */
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 */
185 "r2uaraualaf2ufl", /*3-0 9 */
186 "fadalfauafld", /*3-1 8 */
187 "ual2daf2uf2dl", /*3-2 8 */
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 */
197 "laualb2df2dab", /*3-12 8 */
198 "r2bdalad2bar", /*3-13 7 one */
199 "adalauldruar", /*3-14 8 */
200 "ual2daf2r2dab2ual",}, /*3-15 9 sub 116*/
202 "aufral2uarlf", /*4-0 8 */
203 "2ufral2uarlf", /*4-1 8 */
204 "ufalr2ularf", /*4-2 8 */
205 "fral2uarlf", /*4-3 7 */
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 */
216 "ar2u2b2dal2d2b", /*4-14 7 */
217 "2fdau2rad",}, /*4-15 5 sub 105*/
220 "af2uabarafrbauf", /*6-0 9 */
222 "bl2bdafdr2db", /*6-2 9 */
223 "2f2uaf2u2f", /*6-3 5 */
224 "afauarau2fufrf", /*6-4 9 */
225 "fulafalaf", /*6-5 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*/
237 "u2f2uf2u2f", /*7-0 6 */
238 "f2ublfalabuaf", /*7-1 9 */
240 "fauafudaf2ufad", /*7-3 9 */
241 "auafauarau2fufrf", /*7-4 10 */
242 "aufulafalaf", /*7-5 7 */
243 "ur2df2uaf2dar", /*7-6 8 */
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 */
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*/
260 "aurufauaf2r2fr2f", /*8-6 10 */
261 "2urufauaf2r2fr2f", /*8-7 10 */
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 */
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 */
281 "rfadafalafdf", /*9-10 8 */
282 "bdabal2badbrb", /*9-11 9 */
284 "alafalful", /*9-13 6 one */
285 "l2ulaudaf2uafad", /*9-14 9 */
286 "rbraudabalabad",}, /*9-15 9 sub 124 */
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 */
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*/
305 "dafuf2uadfauaf", /*11-0 9 */
306 "2b2df2d2b", /*11-1 5 */
307 "bau2fuab2ufu2f", /*11-2 9 */
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 */
317 "2uaf2r2dab2daruar", /*11-12 9 */
318 "f2ur2uar2uaf", /*11-13 7 one */
319 "flar2frafal2uaf", /*11-14 9 */
320 "b2d2r2uf2d2l",}, /*11-15 7 sub 112 */
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 */
332 "frfadualafald", /*12-10 9 */
333 "aur2df2l2db2ur", /*12-11 9 */
335 "2l2u2l2u2l", /*12-13 5 one */
336 "2ur2df2l2db2ur", /*12-14 9 */
337 "2l2d2u2r2d2u",}, /*12-15 6 sub 108 */
339 "uflfalauaf", /*13-0 7 */
340 "flfalauaf", /*13-1 6 usually one*/
341 "auflfalauaf", /*13-2 7 */
342 "2uflfalauaf", /*13-3 7 */
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 */
353 "ruarafarafrf", /*13-14 8 */
354 "fl2rfalrauraf",}, /*13-15 9 sub 112*/
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*/
371 "u2f2ufud2rad",}, /*14-15 8 sub 116 */
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 */
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*/
391 /****** End of quick middle. Beginning of third and last layer ***********/
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 */
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 */
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 */
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 */
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*/
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 */
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 */
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 */
1006 char *(first
[4][4])={{"","au","2u","u"},
1009 {"au","2u","u",""}};
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)
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 * -------------------------------------------------
1032 * | 6 |red| 4 | top is side 0
1033 * ------------- for turning and orienting.
1039 * Cube labeling for middle and last layer:
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
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 * -------------------------------------