00001
00021 #include "extra.h"
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 static unsigned s_Truths3[256];
00040 static char s_Phases3[256][9];
00041
00042
00043
00044
00045
00046
00049
00050
00051
00052
00053 static int Extra_TruthCanonN_rec( int nVars, unsigned char * pt, unsigned ** pptRes, char ** ppfRes, int Flag );
00054
00057
00058
00059
00060
00076 int Extra_TruthCanonFastN( int nVarsMax, int nVarsReal, unsigned * pt, unsigned ** pptRes, char ** ppfRes )
00077 {
00078 static unsigned uTruthStore6[2];
00079 int RetValue;
00080 assert( nVarsMax <= 6 );
00081 assert( nVarsReal <= nVarsMax );
00082 RetValue = Extra_TruthCanonN_rec( nVarsReal <= 3? 3: nVarsReal, (unsigned char *)pt, pptRes, ppfRes, 0 );
00083 if ( nVarsMax == 6 && nVarsReal < nVarsMax )
00084 {
00085 uTruthStore6[0] = **pptRes;
00086 uTruthStore6[1] = **pptRes;
00087 *pptRes = uTruthStore6;
00088 }
00089 return RetValue;
00090 }
00091
00092
00093
00094
00095
00108 int Extra_TruthCanonN_rec( int nVars, unsigned char * pt, unsigned ** pptRes, char ** ppfRes, int Flag )
00109 {
00110 static unsigned uTruthStore[7][2][2];
00111 static char uPhaseStore[7][2][64];
00112
00113 unsigned char * pt0, * pt1;
00114 unsigned * ptRes0, * ptRes1, * ptRes;
00115 unsigned uInit0, uInit1, uTruth0, uTruth1, uTemp;
00116 char * pfRes0, * pfRes1, * pfRes;
00117 int nf0, nf1, nfRes, i, nVarsN;
00118
00119
00120 if ( nVars == 3 )
00121 {
00122 *pptRes = &s_Truths3[*pt];
00123 *ppfRes = s_Phases3[*pt]+1;
00124 return s_Phases3[*pt][0];
00125 }
00126
00127
00128 nVarsN = nVars-1;
00129
00130 pt0 = pt;
00131 pt1 = pt + (1 << nVarsN) / 8;
00132
00133
00134
00135 if ( nVarsN == 3 )
00136 {
00137 uInit0 = (pt0[0] << 24) | (pt0[0] << 16) | (pt0[0] << 8) | pt0[0];
00138 uInit1 = (pt1[0] << 24) | (pt1[0] << 16) | (pt1[0] << 8) | pt1[0];
00139 }
00140 else if ( nVarsN == 4 )
00141 {
00142 uInit0 = (pt0[1] << 24) | (pt0[0] << 16) | (pt0[1] << 8) | pt0[0];
00143 uInit1 = (pt1[1] << 24) | (pt1[0] << 16) | (pt1[1] << 8) | pt1[0];
00144 }
00145 else
00146 {
00147 uInit0 = (pt0[3] << 24) | (pt0[2] << 16) | (pt0[1] << 8) | pt0[0];
00148 uInit1 = (pt1[3] << 24) | (pt1[2] << 16) | (pt1[1] << 8) | pt1[0];
00149 }
00150
00151
00152 ptRes = uTruthStore[nVars][Flag];
00153 pfRes = uPhaseStore[nVars][Flag];
00154
00155
00156 if ( uInit1 == 0 )
00157 {
00158 nf0 = Extra_TruthCanonN_rec( nVarsN, pt0, &ptRes0, &pfRes0, 0 );
00159 uTruth1 = uInit1;
00160 uTruth0 = *ptRes0;
00161 nfRes = 0;
00162 for ( i = 0; i < nf0; i++ )
00163 pfRes[nfRes++] = pfRes0[i];
00164 goto finish;
00165 }
00166 if ( uInit0 == 0 )
00167 {
00168 nf1 = Extra_TruthCanonN_rec( nVarsN, pt1, &ptRes1, &pfRes1, 1 );
00169 uTruth1 = uInit0;
00170 uTruth0 = *ptRes1;
00171 nfRes = 0;
00172 for ( i = 0; i < nf1; i++ )
00173 pfRes[nfRes++] = pfRes1[i] | (1<<nVarsN);
00174 goto finish;
00175 }
00176
00177 if ( uInit1 == 0xFFFFFFFF )
00178 {
00179 nf0 = Extra_TruthCanonN_rec( nVarsN, pt0, &ptRes0, &pfRes0, 0 );
00180 uTruth1 = *ptRes0;
00181 uTruth0 = uInit1;
00182 nfRes = 0;
00183 for ( i = 0; i < nf0; i++ )
00184 pfRes[nfRes++] = pfRes0[i] | (1<<nVarsN);
00185 goto finish;
00186 }
00187 if ( uInit0 == 0xFFFFFFFF )
00188 {
00189 nf1 = Extra_TruthCanonN_rec( nVarsN, pt1, &ptRes1, &pfRes1, 1 );
00190 uTruth1 = *ptRes1;
00191 uTruth0 = uInit0;
00192 nfRes = 0;
00193 for ( i = 0; i < nf1; i++ )
00194 pfRes[nfRes++] = pfRes1[i];
00195 goto finish;
00196 }
00197
00198
00199 nf0 = Extra_TruthCanonN_rec( nVarsN, pt0, &ptRes0, &pfRes0, 0 );
00200 nf1 = Extra_TruthCanonN_rec( nVarsN, pt1, &ptRes1, &pfRes1, 1 );
00201
00202
00203 if ( *ptRes1 < *ptRes0 )
00204 {
00205 uTruth0 = 0xFFFFFFFF;
00206 nfRes = 0;
00207 for ( i = 0; i < nf1; i++ )
00208 {
00209 uTemp = Extra_TruthPolarize( uInit0, pfRes1[i], nVarsN );
00210 if ( uTruth0 > uTemp )
00211 {
00212 nfRes = 0;
00213 uTruth0 = uTemp;
00214 pfRes[nfRes++] = pfRes1[i];
00215 }
00216 else if ( uTruth0 == uTemp )
00217 pfRes[nfRes++] = pfRes1[i];
00218 }
00219 uTruth1 = *ptRes1;
00220 }
00221 else if ( *ptRes1 > *ptRes0 )
00222 {
00223 uTruth0 = 0xFFFFFFFF;
00224 nfRes = 0;
00225 for ( i = 0; i < nf0; i++ )
00226 {
00227 uTemp = Extra_TruthPolarize( uInit1, pfRes0[i], nVarsN );
00228 if ( uTruth0 > uTemp )
00229 {
00230 nfRes = 0;
00231 uTruth0 = uTemp;
00232 pfRes[nfRes++] = pfRes0[i] | (1<<nVarsN);
00233 }
00234 else if ( uTruth0 == uTemp )
00235 pfRes[nfRes++] = pfRes0[i] | (1<<nVarsN);
00236 }
00237 uTruth1 = *ptRes0;
00238 }
00239 else
00240 {
00241 assert( nf0 == nf1 );
00242 nfRes = 0;
00243 for ( i = 0; i < nf1; i++ )
00244 pfRes[nfRes++] = pfRes1[i];
00245 for ( i = 0; i < nf0; i++ )
00246 pfRes[nfRes++] = pfRes0[i] | (1<<nVarsN);
00247 uTruth0 = Extra_TruthPolarize( uInit0, pfRes1[0], nVarsN );
00248 uTruth1 = *ptRes0;
00249 }
00250
00251 finish :
00252 if ( nVarsN == 3 )
00253 {
00254 uTruth0 &= 0xFF;
00255 uTruth1 &= 0xFF;
00256 uTemp = (uTruth1 << 8) | uTruth0;
00257 *ptRes = (uTemp << 16) | uTemp;
00258 }
00259 else if ( nVarsN == 4 )
00260 {
00261 uTruth0 &= 0xFFFF;
00262 uTruth1 &= 0xFFFF;
00263 *ptRes = (uTruth1 << 16) | uTruth0;
00264 }
00265 else if ( nVarsN == 5 )
00266 {
00267 *(ptRes+0) = uTruth0;
00268 *(ptRes+1) = uTruth1;
00269 }
00270
00271 *pptRes = ptRes;
00272 *ppfRes = pfRes;
00273 return nfRes;
00274 }
00275
00287 void Map_Var3Print()
00288 {
00289 extern void Extra_Truth3VarN( unsigned ** puCanons, char *** puPhases, char ** ppCounters );
00290
00291 unsigned * uCanons;
00292 char ** uPhases;
00293 char * pCounters;
00294 int i, k;
00295
00296 Extra_Truth3VarN( &uCanons, &uPhases, &pCounters );
00297
00298 for ( i = 0; i < 256; i++ )
00299 {
00300 if ( i % 8 == 0 )
00301 printf( "\n" );
00302 Extra_PrintHex( stdout, uCanons[i], 5 );
00303 printf( ", " );
00304 }
00305 printf( "\n" );
00306
00307 for ( i = 0; i < 256; i++ )
00308 {
00309 printf( "%3d */ { %2d, ", i, pCounters[i] );
00310 for ( k = 0; k < pCounters[i]; k++ )
00311 printf( "%s%d", k? ", ":"", uPhases[i][k] );
00312 printf( " }\n" );
00313 }
00314 printf( "\n" );
00315 }
00316
00328 void Map_Var3Test()
00329 {
00330 extern void Extra_Truth3VarN( unsigned ** puCanons, char *** puPhases, char ** ppCounters );
00331
00332 unsigned * uCanons;
00333 char ** uPhases;
00334 char * pCounters;
00335 int i;
00336 unsigned * ptRes;
00337 char * pfRes;
00338 unsigned uTruth;
00339 int Count;
00340
00341 Extra_Truth3VarN( &uCanons, &uPhases, &pCounters );
00342
00343 for ( i = 0; i < 256; i++ )
00344 {
00345 uTruth = i;
00346 Count = Extra_TruthCanonFastN( 5, 3, &uTruth, &ptRes, &pfRes );
00347 if ( *ptRes != uCanons[i] || Count != pCounters[i] )
00348 {
00349 int k = 0;
00350 }
00351 }
00352 }
00353
00365 void Map_Var4Test()
00366 {
00367 extern void Extra_Truth4VarN( unsigned short ** puCanons, char *** puPhases, char ** ppCounters, int PhaseMax );
00368
00369 unsigned short * uCanons;
00370 char ** uPhases;
00371 char * pCounters;
00372 int i, k;
00373 unsigned * ptRes;
00374 char * pfRes;
00375 unsigned uTruth;
00376 int Count;
00377
00378 Extra_Truth4VarN( &uCanons, &uPhases, &pCounters, 16 );
00379
00380 for ( i = 0; i < 256*256; i++ )
00381 {
00382 uTruth = i;
00383 Count = Extra_TruthCanonFastN( 5, 4, &uTruth, &ptRes, &pfRes );
00384 if ( (*ptRes & 0xFFFF) != uCanons[i] || Count != pCounters[i] )
00385 {
00386 int k = 0;
00387 }
00388 for ( k = 0; k < Count; k++ )
00389 if ( uPhases[i][k] != pfRes[k] )
00390 {
00391 int v = 0;
00392 }
00393 }
00394 }
00395
00396
00397
00398
00399
00400 static unsigned s_Truths3[256] =
00401 {
00402 0x00000000, 0x01010101, 0x01010101, 0x03030303, 0x01010101, 0x05050505, 0x06060606, 0x07070707,
00403 0x01010101, 0x06060606, 0x05050505, 0x07070707, 0x03030303, 0x07070707, 0x07070707, 0x0f0f0f0f,
00404 0x01010101, 0x11111111, 0x12121212, 0x13131313, 0x14141414, 0x15151515, 0x16161616, 0x17171717,
00405 0x18181818, 0x19191919, 0x1a1a1a1a, 0x1b1b1b1b, 0x1c1c1c1c, 0x1d1d1d1d, 0x1e1e1e1e, 0x1f1f1f1f,
00406 0x01010101, 0x12121212, 0x11111111, 0x13131313, 0x18181818, 0x1a1a1a1a, 0x19191919, 0x1b1b1b1b,
00407 0x14141414, 0x16161616, 0x15151515, 0x17171717, 0x1c1c1c1c, 0x1e1e1e1e, 0x1d1d1d1d, 0x1f1f1f1f,
00408 0x03030303, 0x13131313, 0x13131313, 0x33333333, 0x1c1c1c1c, 0x35353535, 0x36363636, 0x37373737,
00409 0x1c1c1c1c, 0x36363636, 0x35353535, 0x37373737, 0x3c3c3c3c, 0x3d3d3d3d, 0x3d3d3d3d, 0x3f3f3f3f,
00410 0x01010101, 0x14141414, 0x18181818, 0x1c1c1c1c, 0x11111111, 0x15151515, 0x19191919, 0x1d1d1d1d,
00411 0x12121212, 0x16161616, 0x1a1a1a1a, 0x1e1e1e1e, 0x13131313, 0x17171717, 0x1b1b1b1b, 0x1f1f1f1f,
00412 0x05050505, 0x15151515, 0x1a1a1a1a, 0x35353535, 0x15151515, 0x55555555, 0x56565656, 0x57575757,
00413 0x1a1a1a1a, 0x56565656, 0x5a5a5a5a, 0x5b5b5b5b, 0x35353535, 0x57575757, 0x5b5b5b5b, 0x5f5f5f5f,
00414 0x06060606, 0x16161616, 0x19191919, 0x36363636, 0x19191919, 0x56565656, 0x66666666, 0x67676767,
00415 0x16161616, 0x69696969, 0x56565656, 0x6b6b6b6b, 0x36363636, 0x6b6b6b6b, 0x67676767, 0x6f6f6f6f,
00416 0x07070707, 0x17171717, 0x1b1b1b1b, 0x37373737, 0x1d1d1d1d, 0x57575757, 0x67676767, 0x77777777,
00417 0x1e1e1e1e, 0x6b6b6b6b, 0x5b5b5b5b, 0x7b7b7b7b, 0x3d3d3d3d, 0x7d7d7d7d, 0x7e7e7e7e, 0x7f7f7f7f,
00418 0x01010101, 0x18181818, 0x14141414, 0x1c1c1c1c, 0x12121212, 0x1a1a1a1a, 0x16161616, 0x1e1e1e1e,
00419 0x11111111, 0x19191919, 0x15151515, 0x1d1d1d1d, 0x13131313, 0x1b1b1b1b, 0x17171717, 0x1f1f1f1f,
00420 0x06060606, 0x19191919, 0x16161616, 0x36363636, 0x16161616, 0x56565656, 0x69696969, 0x6b6b6b6b,
00421 0x19191919, 0x66666666, 0x56565656, 0x67676767, 0x36363636, 0x67676767, 0x6b6b6b6b, 0x6f6f6f6f,
00422 0x05050505, 0x1a1a1a1a, 0x15151515, 0x35353535, 0x1a1a1a1a, 0x5a5a5a5a, 0x56565656, 0x5b5b5b5b,
00423 0x15151515, 0x56565656, 0x55555555, 0x57575757, 0x35353535, 0x5b5b5b5b, 0x57575757, 0x5f5f5f5f,
00424 0x07070707, 0x1b1b1b1b, 0x17171717, 0x37373737, 0x1e1e1e1e, 0x5b5b5b5b, 0x6b6b6b6b, 0x7b7b7b7b,
00425 0x1d1d1d1d, 0x67676767, 0x57575757, 0x77777777, 0x3d3d3d3d, 0x7e7e7e7e, 0x7d7d7d7d, 0x7f7f7f7f,
00426 0x03030303, 0x1c1c1c1c, 0x1c1c1c1c, 0x3c3c3c3c, 0x13131313, 0x35353535, 0x36363636, 0x3d3d3d3d,
00427 0x13131313, 0x36363636, 0x35353535, 0x3d3d3d3d, 0x33333333, 0x37373737, 0x37373737, 0x3f3f3f3f,
00428 0x07070707, 0x1d1d1d1d, 0x1e1e1e1e, 0x3d3d3d3d, 0x17171717, 0x57575757, 0x6b6b6b6b, 0x7d7d7d7d,
00429 0x1b1b1b1b, 0x67676767, 0x5b5b5b5b, 0x7e7e7e7e, 0x37373737, 0x77777777, 0x7b7b7b7b, 0x7f7f7f7f,
00430 0x07070707, 0x1e1e1e1e, 0x1d1d1d1d, 0x3d3d3d3d, 0x1b1b1b1b, 0x5b5b5b5b, 0x67676767, 0x7e7e7e7e,
00431 0x17171717, 0x6b6b6b6b, 0x57575757, 0x7d7d7d7d, 0x37373737, 0x7b7b7b7b, 0x77777777, 0x7f7f7f7f,
00432 0x0f0f0f0f, 0x1f1f1f1f, 0x1f1f1f1f, 0x3f3f3f3f, 0x1f1f1f1f, 0x5f5f5f5f, 0x6f6f6f6f, 0x7f7f7f7f,
00433 0x1f1f1f1f, 0x6f6f6f6f, 0x5f5f5f5f, 0x7f7f7f7f, 0x3f3f3f3f, 0x7f7f7f7f, 0x7f7f7f7f, 0xffffffff
00434 };
00435
00436 static char s_Phases3[256][9] =
00437 {
00438 { 8, 0, 1, 2, 3, 4, 5, 6, 7 },
00439 { 1, 0 },
00440 { 1, 1 },
00441 { 2, 0, 1 },
00442 { 1, 2 },
00443 { 2, 0, 2 },
00444 { 2, 0, 3 },
00445 { 1, 0 },
00446 { 1, 3 },
00447 { 2, 1, 2 },
00448 { 2, 1, 3 },
00449 { 1, 1 },
00450 { 2, 2, 3 },
00451 { 1, 2 },
00452 { 1, 3 },
00453 { 4, 0, 1, 2, 3 },
00454 { 1, 4 },
00455 { 2, 0, 4 },
00456 { 2, 0, 5 },
00457 { 1, 0 },
00458 { 2, 0, 6 },
00459 { 1, 0 },
00460 { 1, 0 },
00461 { 1, 0 },
00462 { 2, 0, 7 },
00463 { 1, 0 },
00464 { 1, 0 },
00465 { 1, 0 },
00466 { 1, 0 },
00467 { 1, 0 },
00468 { 1, 0 },
00469 { 1, 0 },
00470 { 1, 5 },
00471 { 2, 1, 4 },
00472 { 2, 1, 5 },
00473 { 1, 1 },
00474 { 2, 1, 6 },
00475 { 1, 1 },
00476 { 1, 1 },
00477 { 1, 1 },
00478 { 2, 1, 7 },
00479 { 1, 1 },
00480 { 1, 1 },
00481 { 1, 1 },
00482 { 1, 1 },
00483 { 1, 1 },
00484 { 1, 1 },
00485 { 1, 1 },
00486 { 2, 4, 5 },
00487 { 1, 4 },
00488 { 1, 5 },
00489 { 4, 0, 1, 4, 5 },
00490 { 1, 6 },
00491 { 1, 0 },
00492 { 1, 0 },
00493 { 1, 0 },
00494 { 1, 7 },
00495 { 1, 1 },
00496 { 1, 1 },
00497 { 1, 1 },
00498 { 4, 0, 1, 6, 7 },
00499 { 1, 0 },
00500 { 1, 1 },
00501 { 2, 0, 1 },
00502 { 1, 6 },
00503 { 2, 2, 4 },
00504 { 2, 2, 5 },
00505 { 1, 2 },
00506 { 2, 2, 6 },
00507 { 1, 2 },
00508 { 1, 2 },
00509 { 1, 2 },
00510 { 2, 2, 7 },
00511 { 1, 2 },
00512 { 1, 2 },
00513 { 1, 2 },
00514 { 1, 2 },
00515 { 1, 2 },
00516 { 1, 2 },
00517 { 1, 2 },
00518 { 2, 4, 6 },
00519 { 1, 4 },
00520 { 1, 5 },
00521 { 1, 4 },
00522 { 1, 6 },
00523 { 4, 0, 2, 4, 6 },
00524 { 1, 0 },
00525 { 1, 0 },
00526 { 1, 7 },
00527 { 1, 2 },
00528 { 4, 0, 2, 5, 7 },
00529 { 1, 0 },
00530 { 1, 6 },
00531 { 1, 2 },
00532 { 1, 2 },
00533 { 2, 0, 2 },
00534 { 2, 4, 7 },
00535 { 1, 4 },
00536 { 1, 5 },
00537 { 1, 4 },
00538 { 1, 6 },
00539 { 1, 4 },
00540 { 4, 0, 3, 4, 7 },
00541 { 1, 0 },
00542 { 1, 7 },
00543 { 4, 0, 3, 5, 6 },
00544 { 1, 7 },
00545 { 1, 0 },
00546 { 1, 7 },
00547 { 1, 3 },
00548 { 1, 3 },
00549 { 2, 0, 3 },
00550 { 1, 4 },
00551 { 1, 4 },
00552 { 1, 5 },
00553 { 1, 4 },
00554 { 1, 6 },
00555 { 1, 4 },
00556 { 1, 4 },
00557 { 2, 0, 4 },
00558 { 1, 7 },
00559 { 1, 5 },
00560 { 1, 5 },
00561 { 2, 0, 5 },
00562 { 1, 6 },
00563 { 2, 0, 6 },
00564 { 2, 0, 7 },
00565 { 1, 0 },
00566 { 1, 7 },
00567 { 2, 3, 4 },
00568 { 2, 3, 5 },
00569 { 1, 3 },
00570 { 2, 3, 6 },
00571 { 1, 3 },
00572 { 1, 3 },
00573 { 1, 3 },
00574 { 2, 3, 7 },
00575 { 1, 3 },
00576 { 1, 3 },
00577 { 1, 3 },
00578 { 1, 3 },
00579 { 1, 3 },
00580 { 1, 3 },
00581 { 1, 3 },
00582 { 2, 5, 6 },
00583 { 1, 4 },
00584 { 1, 5 },
00585 { 1, 5 },
00586 { 1, 6 },
00587 { 1, 6 },
00588 { 4, 1, 2, 4, 7 },
00589 { 1, 1 },
00590 { 1, 7 },
00591 { 4, 1, 2, 5, 6 },
00592 { 1, 5 },
00593 { 1, 1 },
00594 { 1, 6 },
00595 { 1, 2 },
00596 { 1, 2 },
00597 { 2, 1, 2 },
00598 { 2, 5, 7 },
00599 { 1, 4 },
00600 { 1, 5 },
00601 { 1, 5 },
00602 { 1, 6 },
00603 { 4, 1, 3, 4, 6 },
00604 { 1, 3 },
00605 { 1, 1 },
00606 { 1, 7 },
00607 { 1, 1 },
00608 { 4, 1, 3, 5, 7 },
00609 { 1, 1 },
00610 { 1, 7 },
00611 { 1, 3 },
00612 { 1, 3 },
00613 { 2, 1, 3 },
00614 { 1, 5 },
00615 { 1, 4 },
00616 { 1, 5 },
00617 { 1, 5 },
00618 { 1, 6 },
00619 { 1, 4 },
00620 { 1, 4 },
00621 { 2, 1, 4 },
00622 { 1, 7 },
00623 { 1, 5 },
00624 { 1, 5 },
00625 { 2, 1, 5 },
00626 { 1, 7 },
00627 { 2, 1, 6 },
00628 { 2, 1, 7 },
00629 { 1, 1 },
00630 { 2, 6, 7 },
00631 { 1, 4 },
00632 { 1, 5 },
00633 { 4, 2, 3, 4, 5 },
00634 { 1, 6 },
00635 { 1, 2 },
00636 { 1, 3 },
00637 { 1, 2 },
00638 { 1, 7 },
00639 { 1, 2 },
00640 { 1, 3 },
00641 { 1, 3 },
00642 { 4, 2, 3, 6, 7 },
00643 { 1, 2 },
00644 { 1, 3 },
00645 { 2, 2, 3 },
00646 { 1, 6 },
00647 { 1, 4 },
00648 { 1, 5 },
00649 { 1, 4 },
00650 { 1, 6 },
00651 { 1, 6 },
00652 { 1, 7 },
00653 { 2, 2, 4 },
00654 { 1, 7 },
00655 { 1, 6 },
00656 { 1, 7 },
00657 { 2, 2, 5 },
00658 { 1, 6 },
00659 { 2, 2, 6 },
00660 { 2, 2, 7 },
00661 { 1, 2 },
00662 { 1, 7 },
00663 { 1, 4 },
00664 { 1, 5 },
00665 { 1, 5 },
00666 { 1, 6 },
00667 { 1, 6 },
00668 { 1, 7 },
00669 { 2, 3, 4 },
00670 { 1, 7 },
00671 { 1, 6 },
00672 { 1, 7 },
00673 { 2, 3, 5 },
00674 { 1, 7 },
00675 { 2, 3, 6 },
00676 { 2, 3, 7 },
00677 { 1, 3 },
00678 { 4, 4, 5, 6, 7 },
00679 { 1, 4 },
00680 { 1, 5 },
00681 { 2, 4, 5 },
00682 { 1, 6 },
00683 { 2, 4, 6 },
00684 { 2, 4, 7 },
00685 { 1, 4 },
00686 { 1, 7 },
00687 { 2, 5, 6 },
00688 { 2, 5, 7 },
00689 { 1, 5 },
00690 { 2, 6, 7 },
00691 { 1, 6 },
00692 { 1, 7 },
00693 { 8, 0, 1, 2, 3, 4, 5, 6, 7 }
00694 };
00695
00696
00700
00701