#include bool verbose = 0; static const struct { const char *name; int crossing_ar[3][4]; } rolfsen3[] = { { "3_{1}", { { 1, 5, 2, 4 }, { 3, 1, 4, 6 }, { 5, 3, 6, 2 } } } }; static const struct { const char *name; int crossing_ar[4][4]; } rolfsen4[] = { { "4_{1}", { { 4, 2, 5, 1 }, { 8, 6, 1, 5 }, { 6, 3, 7, 4 }, { 2, 7, 3, 8 } } } }; static const struct { const char *name; int crossing_ar[5][4]; } rolfsen5[] = { { "5_{1}", { { 2, 8, 3, 7 }, { 4, 10, 5, 9 }, { 6, 2, 7, 1 }, { 8, 4, 9, 3 }, { 10, 6, 1, 5 } } }, { "5_{2}", { { 1, 5, 2, 4 }, { 3, 9, 4, 8 }, { 5, 1, 6, 10 }, { 7, 3, 8, 2 }, { 9, 7, 10, 6 } } } }; static const struct { const char *name; int crossing_ar[6][4]; } rolfsen6[] = { { "6_{1}", { { 1, 7, 2, 6 }, { 3, 10, 4, 11 }, { 5, 3, 6, 2 }, { 7, 1, 8, 12 }, { 9, 4, 10, 5 }, { 11, 9, 12, 8 } } }, { "6_{2}", { { 1, 8, 2, 9 }, { 3, 11, 4, 10 }, { 5, 1, 6, 12 }, { 7, 2, 8, 3 }, { 9, 7, 10, 6 }, { 11, 5, 12, 4 } } }, { "6_{3}", { { 4, 2, 5, 1 }, { 8, 4, 9, 3 }, { 12, 9, 1, 10 }, { 10, 5, 11, 6 }, { 6, 11, 7, 12 }, { 2, 8, 3, 7 } } } }; static const struct { const char *name; int crossing_ar[7][4]; } rolfsen7[] = { { "7_{1}", { { 1, 9, 2, 8 }, { 3, 11, 4, 10 }, { 5, 13, 6, 12 }, { 7, 1, 8, 14 }, { 9, 3, 10, 2 }, { 11, 5, 12, 4 }, { 13, 7, 14, 6 } } }, { "7_{2}", { { 2, 10, 3, 9 }, { 4, 14, 5, 13 }, { 6, 12, 7, 11 }, { 8, 2, 9, 1 }, { 10, 8, 11, 7 }, { 12, 6, 13, 5 }, { 14, 4, 1, 3 } } }, { "7_{3}", { { 1, 9, 2, 8 }, { 3, 11, 4, 10 }, { 5, 1, 6, 14 }, { 7, 13, 8, 12 }, { 9, 3, 10, 2 }, { 11, 5, 12, 4 }, { 13, 7, 14, 6 } } }, { "7_{4}", { { 2, 10, 3, 9 }, { 4, 12, 5, 11 }, { 6, 14, 7, 13 }, { 8, 4, 9, 3 }, { 10, 2, 11, 1 }, { 12, 8, 13, 7 }, { 14, 6, 1, 5 } } }, { "7_{5}", { { 2, 10, 3, 9 }, { 4, 2, 5, 1 }, { 6, 14, 7, 13 }, { 8, 12, 9, 11 }, { 10, 4, 11, 3 }, { 12, 6, 13, 5 }, { 14, 8, 1, 7 } } }, { "7_{6}", { { 1, 13, 2, 12 }, { 3, 9, 4, 8 }, { 5, 1, 6, 14 }, { 7, 10, 8, 11 }, { 9, 3, 10, 2 }, { 11, 6, 12, 7 }, { 13, 5, 14, 4 } } }, { "7_{7}", { { 1, 10, 2, 11 }, { 3, 13, 4, 12 }, { 5, 14, 6, 1 }, { 7, 5, 8, 4 }, { 9, 2, 10, 3 }, { 11, 9, 12, 8 }, { 13, 6, 14, 7 } } } }; static const struct { const char *name; int crossing_ar[8][4]; } rolfsen8[] = { { "8_{1}", { { 1, 9, 2, 8 }, { 3, 7, 4, 6 }, { 5, 12, 6, 13 }, { 7, 3, 8, 2 }, { 9, 1, 10, 16 }, { 11, 15, 12, 14 }, { 13, 4, 14, 5 }, { 15, 11, 16, 10 } } }, { "8_{2}", { { 1, 10, 2, 11 }, { 3, 13, 4, 12 }, { 5, 15, 6, 14 }, { 7, 1, 8, 16 }, { 9, 2, 10, 3 }, { 11, 9, 12, 8 }, { 13, 5, 14, 4 }, { 15, 7, 16, 6 } } }, { "8_{3}", { { 6, 2, 7, 1 }, { 14, 10, 15, 9 }, { 10, 5, 11, 6 }, { 12, 3, 13, 4 }, { 4, 11, 5, 12 }, { 2, 13, 3, 14 }, { 16, 8, 1, 7 }, { 8, 16, 9, 15 } } }, { "8_{4}", { { 2, 11, 3, 12 }, { 4, 9, 5, 10 }, { 6, 16, 7, 15 }, { 8, 14, 9, 13 }, { 10, 1, 11, 2 }, { 12, 3, 13, 4 }, { 14, 8, 15, 7 }, { 16, 6, 1, 5 } } }, { "8_{5}", { { 1, 7, 2, 6 }, { 3, 9, 4, 8 }, { 5, 12, 6, 13 }, { 7, 3, 8, 2 }, { 9, 15, 10, 14 }, { 11, 1, 12, 16 }, { 13, 4, 14, 5 }, { 15, 11, 16, 10 } } }, { "8_{6}", { { 2, 9, 3, 10 }, { 4, 14, 5, 13 }, { 6, 16, 7, 15 }, { 8, 12, 9, 11 }, { 10, 1, 11, 2 }, { 12, 8, 13, 7 }, { 14, 6, 15, 5 }, { 16, 4, 1, 3 } } }, { "8_{7}", { { 2, 9, 3, 10 }, { 4, 14, 5, 13 }, { 6, 15, 7, 16 }, { 8, 1, 9, 2 }, { 10, 5, 11, 6 }, { 12, 4, 13, 3 }, { 14, 12, 15, 11 }, { 16, 7, 1, 8 } } }, { "8_{8}", { { 1, 7, 2, 6 }, { 3, 12, 4, 13 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 16, 10, 1 }, { 11, 14, 12, 15 }, { 13, 4, 14, 5 }, { 15, 10, 16, 11 } } }, { "8_{9}", { { 6, 2, 7, 1 }, { 14, 8, 15, 7 }, { 10, 3, 11, 4 }, { 2, 13, 3, 14 }, { 12, 5, 13, 6 }, { 4, 11, 5, 12 }, { 16, 10, 1, 9 }, { 8, 16, 9, 15 } } }, { "8_{10}", { { 2, 14, 3, 13 }, { 4, 9, 5, 10 }, { 6, 11, 7, 12 }, { 8, 15, 9, 16 }, { 10, 5, 11, 6 }, { 12, 2, 13, 1 }, { 14, 7, 15, 8 }, { 16, 4, 1, 3 } } }, { "8_{11}", { { 1, 10, 2, 11 }, { 3, 13, 4, 12 }, { 5, 15, 6, 14 }, { 7, 1, 8, 16 }, { 9, 2, 10, 3 }, { 11, 9, 12, 8 }, { 13, 7, 14, 6 }, { 15, 5, 16, 4 } } }, { "8_{12}", { { 4, 2, 5, 1 }, { 10, 8, 11, 7 }, { 8, 3, 9, 4 }, { 2, 9, 3, 10 }, { 14, 6, 15, 5 }, { 16, 11, 1, 12 }, { 12, 15, 13, 16 }, { 6, 14, 7, 13 } } }, { "8_{13}", { { 1, 9, 2, 8 }, { 3, 14, 4, 15 }, { 5, 12, 6, 13 }, { 7, 11, 8, 10 }, { 9, 3, 10, 2 }, { 11, 16, 12, 1 }, { 13, 4, 14, 5 }, { 15, 6, 16, 7 } } }, { "8_{14}", { { 2, 12, 3, 11 }, { 4, 8, 5, 7 }, { 6, 15, 7, 16 }, { 8, 14, 9, 13 }, { 10, 2, 11, 1 }, { 12, 10, 13, 9 }, { 14, 4, 15, 3 }, { 16, 5, 1, 6 } } }, { "8_{15}", { { 1, 7, 2, 6 }, { 3, 15, 4, 14 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 13, 10, 12 }, { 11, 1, 12, 16 }, { 13, 5, 14, 4 }, { 15, 11, 16, 10 } } }, { "8_{16}", { { 2, 7, 3, 8 }, { 4, 10, 5, 9 }, { 6, 1, 7, 2 }, { 8, 14, 9, 13 }, { 10, 15, 11, 16 }, { 12, 6, 13, 5 }, { 14, 3, 15, 4 }, { 16, 11, 1, 12 } } }, { "8_{17}", { { 6, 2, 7, 1 }, { 14, 8, 15, 7 }, { 8, 3, 9, 4 }, { 2, 13, 3, 14 }, { 12, 5, 13, 6 }, { 4, 9, 5, 10 }, { 16, 12, 1, 11 }, { 10, 16, 11, 15 } } }, { "8_{18}", { { 6, 2, 7, 1 }, { 8, 3, 9, 4 }, { 16, 11, 1, 12 }, { 2, 14, 3, 13 }, { 4, 15, 5, 16 }, { 10, 6, 11, 5 }, { 12, 7, 13, 8 }, { 14, 10, 15, 9 } } }, { "8_{19}", { { 2, 14, 3, 13 }, { 5, 11, 6, 10 }, { 7, 15, 8, 14 }, { 9, 5, 10, 4 }, { 11, 7, 12, 6 }, { 12, 2, 13, 1 }, { 15, 9, 16, 8 }, { 16, 4, 1, 3 } } }, { "8_{20}", { { 1, 7, 2, 6 }, { 4, 13, 5, 14 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 10, 15, 11, 16 }, { 12, 9, 13, 10 }, { 14, 3, 15, 4 }, { 16, 11, 1, 12 } } }, { "8_{21}", { { 1, 7, 2, 6 }, { 4, 13, 5, 14 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 13, 10, 12 }, { 11, 1, 12, 16 }, { 14, 3, 15, 4 }, { 15, 11, 16, 10 } } } }; static const struct { const char *name; int crossing_ar[9][4]; } rolfsen9[] = { { "9_{1}", { { 1, 11, 2, 10 }, { 3, 13, 4, 12 }, { 5, 15, 6, 14 }, { 7, 17, 8, 16 }, { 9, 1, 10, 18 }, { 11, 3, 12, 2 }, { 13, 5, 14, 4 }, { 15, 7, 16, 6 }, { 17, 9, 18, 8 } } }, { "9_{2}", { { 2, 8, 3, 7 }, { 4, 14, 5, 13 }, { 6, 4, 7, 3 }, { 8, 2, 9, 1 }, { 10, 18, 11, 17 }, { 12, 16, 13, 15 }, { 14, 6, 15, 5 }, { 16, 12, 17, 11 }, { 18, 10, 1, 9 } } }, { "9_{3}", { { 1, 11, 2, 10 }, { 3, 15, 4, 14 }, { 5, 13, 6, 12 }, { 7, 17, 8, 16 }, { 9, 1, 10, 18 }, { 11, 3, 12, 2 }, { 13, 5, 14, 4 }, { 15, 7, 16, 6 }, { 17, 9, 18, 8 } } }, { "9_{4}", { { 2, 14, 3, 13 }, { 4, 12, 5, 11 }, { 6, 16, 7, 15 }, { 8, 18, 9, 17 }, { 10, 6, 11, 5 }, { 12, 4, 13, 3 }, { 14, 2, 15, 1 }, { 16, 8, 17, 7 }, { 18, 10, 1, 9 } } }, { "9_{5}", { { 2, 14, 3, 13 }, { 4, 12, 5, 11 }, { 6, 16, 7, 15 }, { 8, 18, 9, 17 }, { 10, 6, 11, 5 }, { 12, 4, 13, 3 }, { 14, 2, 15, 1 }, { 16, 10, 17, 9 }, { 18, 8, 1, 7 } } }, { "9_{6}", { { 1, 13, 2, 12 }, { 3, 7, 4, 6 }, { 5, 15, 6, 14 }, { 7, 3, 8, 2 }, { 9, 17, 10, 16 }, { 11, 1, 12, 18 }, { 13, 5, 14, 4 }, { 15, 9, 16, 8 }, { 17, 11, 18, 10 } } }, { "9_{7}", { { 2, 10, 3, 9 }, { 4, 12, 5, 11 }, { 6, 16, 7, 15 }, { 8, 6, 9, 5 }, { 10, 4, 11, 3 }, { 12, 2, 13, 1 }, { 14, 18, 15, 17 }, { 16, 8, 17, 7 }, { 18, 14, 1, 13 } } }, { "9_{8}", { { 1, 16, 2, 17 }, { 3, 14, 4, 15 }, { 5, 11, 6, 10 }, { 7, 1, 8, 18 }, { 9, 13, 10, 12 }, { 11, 7, 12, 6 }, { 13, 4, 14, 5 }, { 15, 2, 16, 3 }, { 17, 9, 18, 8 } } }, { "9_{9}", { { 1, 13, 2, 12 }, { 3, 9, 4, 8 }, { 5, 15, 6, 14 }, { 7, 17, 8, 16 }, { 9, 3, 10, 2 }, { 11, 1, 12, 18 }, { 13, 5, 14, 4 }, { 15, 7, 16, 6 }, { 17, 11, 18, 10 } } }, { "9_{10}", { { 1, 13, 2, 12 }, { 3, 11, 4, 10 }, { 5, 17, 6, 16 }, { 7, 15, 8, 14 }, { 9, 1, 10, 18 }, { 11, 3, 12, 2 }, { 13, 5, 14, 4 }, { 15, 7, 16, 6 }, { 17, 9, 18, 8 } } }, { "9_{11}", { { 2, 7, 3, 8 }, { 4, 13, 5, 14 }, { 6, 15, 7, 16 }, { 8, 12, 9, 11 }, { 10, 17, 11, 18 }, { 12, 3, 13, 4 }, { 14, 5, 15, 6 }, { 16, 2, 17, 1 }, { 18, 9, 1, 10 } } }, { "9_{12}", { { 2, 9, 3, 10 }, { 4, 16, 5, 15 }, { 6, 14, 7, 13 }, { 8, 3, 9, 4 }, { 10, 18, 11, 17 }, { 12, 8, 13, 7 }, { 14, 6, 15, 5 }, { 16, 2, 17, 1 }, { 18, 12, 1, 11 } } }, { "9_{13}", { { 2, 12, 3, 11 }, { 4, 14, 5, 13 }, { 6, 16, 7, 15 }, { 8, 18, 9, 17 }, { 10, 6, 11, 5 }, { 12, 4, 13, 3 }, { 14, 2, 15, 1 }, { 16, 10, 17, 9 }, { 18, 8, 1, 7 } } }, { "9_{14}", { { 1, 12, 2, 13 }, { 3, 10, 4, 11 }, { 5, 16, 6, 17 }, { 7, 1, 8, 18 }, { 9, 4, 10, 5 }, { 11, 2, 12, 3 }, { 13, 9, 14, 8 }, { 15, 6, 16, 7 }, { 17, 15, 18, 14 } } }, { "9_{15}", { { 2, 9, 3, 10 }, { 4, 7, 5, 8 }, { 6, 15, 7, 16 }, { 8, 3, 9, 4 }, { 10, 14, 11, 13 }, { 12, 17, 13, 18 }, { 14, 5, 15, 6 }, { 16, 2, 17, 1 }, { 18, 11, 1, 12 } } }, { "9_{16}", { { 1, 9, 2, 8 }, { 3, 11, 4, 10 }, { 5, 15, 6, 14 }, { 7, 5, 8, 4 }, { 9, 3, 10, 2 }, { 11, 17, 12, 16 }, { 13, 1, 14, 18 }, { 15, 7, 16, 6 }, { 17, 13, 18, 12 } } }, { "9_{17}", { { 1, 9, 2, 8 }, { 3, 12, 4, 13 }, { 5, 16, 6, 17 }, { 7, 1, 8, 18 }, { 9, 3, 10, 2 }, { 11, 4, 12, 5 }, { 13, 11, 14, 10 }, { 15, 6, 16, 7 }, { 17, 15, 18, 14 } } }, { "9_{18}", { { 2, 12, 3, 11 }, { 4, 2, 5, 1 }, { 6, 16, 7, 15 }, { 8, 14, 9, 13 }, { 10, 18, 11, 17 }, { 12, 4, 13, 3 }, { 14, 8, 15, 7 }, { 16, 10, 17, 9 }, { 18, 6, 1, 5 } } }, { "9_{19}", { { 2, 14, 3, 13 }, { 4, 11, 5, 12 }, { 6, 4, 7, 3 }, { 8, 17, 9, 18 }, { 10, 5, 11, 6 }, { 12, 8, 13, 7 }, { 14, 2, 15, 1 }, { 16, 9, 17, 10 }, { 18, 16, 1, 15 } } }, { "9_{20}", { { 1, 11, 2, 10 }, { 3, 16, 4, 17 }, { 5, 13, 6, 12 }, { 7, 3, 8, 2 }, { 9, 1, 10, 18 }, { 11, 15, 12, 14 }, { 13, 7, 14, 6 }, { 15, 4, 16, 5 }, { 17, 9, 18, 8 } } }, { "9_{21}", { { 2, 7, 3, 8 }, { 4, 13, 5, 14 }, { 6, 15, 7, 16 }, { 8, 12, 9, 11 }, { 10, 17, 11, 18 }, { 12, 5, 13, 6 }, { 14, 3, 15, 4 }, { 16, 2, 17, 1 }, { 18, 9, 1, 10 } } }, { "9_{22}", { { 1, 7, 2, 6 }, { 3, 8, 4, 9 }, { 5, 14, 6, 15 }, { 7, 11, 8, 10 }, { 9, 2, 10, 3 }, { 11, 17, 12, 16 }, { 13, 1, 14, 18 }, { 15, 4, 16, 5 }, { 17, 13, 18, 12 } } }, { "9_{23}", { { 2, 16, 3, 15 }, { 4, 12, 5, 11 }, { 6, 4, 7, 3 }, { 8, 18, 9, 17 }, { 10, 14, 11, 13 }, { 12, 6, 13, 5 }, { 14, 8, 15, 7 }, { 16, 2, 17, 1 }, { 18, 10, 1, 9 } } }, { "9_{24}", { { 1, 13, 2, 12 }, { 3, 7, 4, 6 }, { 5, 1, 6, 18 }, { 7, 14, 8, 15 }, { 9, 16, 10, 17 }, { 11, 3, 12, 2 }, { 13, 10, 14, 11 }, { 15, 8, 16, 9 }, { 17, 5, 18, 4 } } }, { "9_{25}", { { 2, 10, 3, 9 }, { 4, 17, 5, 18 }, { 6, 12, 7, 11 }, { 8, 4, 9, 3 }, { 10, 14, 11, 13 }, { 12, 8, 13, 7 }, { 14, 2, 15, 1 }, { 16, 5, 17, 6 }, { 18, 16, 1, 15 } } }, { "9_{26}", { { 2, 10, 3, 9 }, { 4, 11, 5, 12 }, { 6, 17, 7, 18 }, { 8, 15, 9, 16 }, { 10, 14, 11, 13 }, { 12, 3, 13, 4 }, { 14, 2, 15, 1 }, { 16, 5, 17, 6 }, { 18, 7, 1, 8 } } }, { "9_{27}", { { 2, 9, 3, 10 }, { 4, 7, 5, 8 }, { 6, 14, 7, 13 }, { 8, 15, 9, 16 }, { 10, 18, 11, 17 }, { 12, 3, 13, 4 }, { 14, 6, 15, 5 }, { 16, 2, 17, 1 }, { 18, 12, 1, 11 } } }, { "9_{28}", { { 1, 16, 2, 17 }, { 3, 15, 4, 14 }, { 5, 3, 6, 2 }, { 7, 13, 8, 12 }, { 9, 7, 10, 6 }, { 11, 18, 12, 1 }, { 13, 9, 14, 8 }, { 15, 5, 16, 4 }, { 17, 10, 18, 11 } } }, { "9_{29}", { { 2, 10, 3, 9 }, { 4, 17, 5, 18 }, { 6, 12, 7, 11 }, { 8, 4, 9, 3 }, { 10, 15, 11, 16 }, { 12, 6, 13, 5 }, { 14, 1, 15, 2 }, { 16, 7, 17, 8 }, { 18, 13, 1, 14 } } }, { "9_{30}", { { 1, 9, 2, 8 }, { 3, 16, 4, 17 }, { 5, 1, 6, 18 }, { 7, 12, 8, 13 }, { 9, 3, 10, 2 }, { 11, 6, 12, 7 }, { 13, 10, 14, 11 }, { 15, 4, 16, 5 }, { 17, 15, 18, 14 } } }, { "9_{31}", { { 1, 9, 2, 8 }, { 3, 10, 4, 11 }, { 5, 13, 6, 12 }, { 7, 1, 8, 18 }, { 9, 16, 10, 17 }, { 11, 15, 12, 14 }, { 13, 7, 14, 6 }, { 15, 4, 16, 5 }, { 17, 3, 18, 2 } } }, { "9_{32}", { { 2, 8, 3, 7 }, { 4, 9, 5, 10 }, { 6, 13, 7, 14 }, { 8, 16, 9, 15 }, { 10, 5, 11, 6 }, { 12, 17, 13, 18 }, { 14, 3, 15, 4 }, { 16, 2, 17, 1 }, { 18, 11, 1, 12 } } }, { "9_{33}", { { 1, 15, 2, 14 }, { 3, 16, 4, 17 }, { 5, 12, 6, 13 }, { 7, 5, 8, 4 }, { 9, 2, 10, 3 }, { 11, 6, 12, 7 }, { 13, 1, 14, 18 }, { 15, 11, 16, 10 }, { 17, 8, 18, 9 } } }, { "9_{34}", { { 2, 13, 3, 14 }, { 4, 17, 5, 18 }, { 6, 16, 7, 15 }, { 8, 4, 9, 3 }, { 10, 5, 11, 6 }, { 12, 8, 13, 7 }, { 14, 1, 15, 2 }, { 16, 11, 17, 12 }, { 18, 10, 1, 9 } } }, { "9_{35}", { { 2, 12, 3, 11 }, { 4, 16, 5, 15 }, { 6, 14, 7, 13 }, { 8, 18, 9, 17 }, { 10, 4, 11, 3 }, { 12, 2, 13, 1 }, { 14, 6, 15, 5 }, { 16, 10, 17, 9 }, { 18, 8, 1, 7 } } }, { "9_{36}", { { 2, 15, 3, 16 }, { 4, 11, 5, 12 }, { 6, 4, 7, 3 }, { 8, 17, 9, 18 }, { 10, 5, 11, 6 }, { 12, 10, 13, 9 }, { 14, 1, 15, 2 }, { 16, 7, 17, 8 }, { 18, 13, 1, 14 } } }, { "9_{37}", { { 1, 10, 2, 11 }, { 3, 14, 4, 15 }, { 5, 1, 6, 18 }, { 7, 17, 8, 16 }, { 9, 2, 10, 3 }, { 11, 9, 12, 8 }, { 13, 4, 14, 5 }, { 15, 13, 16, 12 }, { 17, 7, 18, 6 } } }, { "9_{38}", { { 2, 14, 3, 13 }, { 4, 10, 5, 9 }, { 6, 16, 7, 15 }, { 8, 4, 9, 3 }, { 10, 18, 11, 17 }, { 12, 6, 13, 5 }, { 14, 2, 15, 1 }, { 16, 12, 17, 11 }, { 18, 8, 1, 7 } } }, { "9_{39}", { { 1, 12, 2, 13 }, { 3, 17, 4, 16 }, { 5, 10, 6, 11 }, { 7, 18, 8, 1 }, { 9, 14, 10, 15 }, { 11, 2, 12, 3 }, { 13, 6, 14, 7 }, { 15, 5, 16, 4 }, { 17, 8, 18, 9 } } }, { "9_{40}", { { 1, 15, 2, 14 }, { 3, 12, 4, 13 }, { 5, 11, 6, 10 }, { 7, 3, 8, 2 }, { 9, 18, 10, 1 }, { 11, 17, 12, 16 }, { 13, 9, 14, 8 }, { 15, 6, 16, 7 }, { 17, 5, 18, 4 } } }, { "9_{41}", { { 1, 15, 2, 14 }, { 3, 12, 4, 13 }, { 5, 16, 6, 17 }, { 7, 3, 8, 2 }, { 9, 18, 10, 1 }, { 11, 4, 12, 5 }, { 13, 9, 14, 8 }, { 15, 6, 16, 7 }, { 17, 10, 18, 11 } } }, { "9_{42}", { { 1, 4, 2, 5 }, { 5, 10, 6, 11 }, { 3, 9, 4, 8 }, { 9, 3, 10, 2 }, { 16, 12, 17, 11 }, { 14, 7, 15, 8 }, { 6, 15, 7, 16 }, { 18, 14, 1, 13 }, { 12, 18, 13, 17 } } }, { "9_{43}", { { 1, 9, 2, 8 }, { 3, 16, 4, 17 }, { 5, 1, 6, 18 }, { 6, 12, 7, 11 }, { 9, 3, 10, 2 }, { 10, 14, 11, 13 }, { 12, 8, 13, 7 }, { 15, 4, 16, 5 }, { 17, 15, 18, 14 } } }, { "9_{44}", { { 2, 9, 3, 10 }, { 3, 16, 4, 17 }, { 5, 1, 6, 18 }, { 6, 12, 7, 11 }, { 8, 1, 9, 2 }, { 10, 14, 11, 13 }, { 12, 8, 13, 7 }, { 15, 4, 16, 5 }, { 17, 15, 18, 14 } } }, { "9_{45}", { { 2, 9, 3, 10 }, { 3, 16, 4, 17 }, { 5, 1, 6, 18 }, { 7, 12, 8, 13 }, { 8, 1, 9, 2 }, { 11, 6, 12, 7 }, { 13, 10, 14, 11 }, { 15, 4, 16, 5 }, { 17, 15, 18, 14 } } }, { "9_{46}", { { 2, 10, 3, 9 }, { 3, 14, 4, 15 }, { 6, 17, 7, 18 }, { 8, 11, 9, 12 }, { 10, 2, 11, 1 }, { 13, 4, 14, 5 }, { 15, 13, 16, 12 }, { 16, 7, 17, 8 }, { 18, 5, 1, 6 } } }, { "9_{47}", { { 1, 15, 2, 14 }, { 4, 17, 5, 18 }, { 6, 16, 7, 15 }, { 8, 4, 9, 3 }, { 10, 5, 11, 6 }, { 12, 8, 13, 7 }, { 13, 3, 14, 2 }, { 16, 11, 17, 12 }, { 18, 10, 1, 9 } } }, { "9_{48}", { { 1, 10, 2, 11 }, { 3, 14, 4, 15 }, { 6, 17, 7, 18 }, { 9, 2, 10, 3 }, { 11, 9, 12, 8 }, { 13, 4, 14, 5 }, { 15, 13, 16, 12 }, { 16, 7, 17, 8 }, { 18, 5, 1, 6 } } }, { "9_{49}", { { 1, 15, 2, 14 }, { 4, 12, 5, 11 }, { 6, 16, 7, 15 }, { 7, 3, 8, 2 }, { 10, 18, 11, 17 }, { 12, 4, 13, 3 }, { 13, 9, 14, 8 }, { 16, 6, 17, 5 }, { 18, 10, 1, 9 } } } }; static const struct { const char *name; int crossing_ar[10][4]; } rolfsen10[] = { { "10_{1}", { { 2, 11, 3, 12 }, { 4, 20, 5, 19 }, { 6, 18, 7, 17 }, { 8, 16, 9, 15 }, { 10, 14, 11, 13 }, { 12, 1, 13, 2 }, { 14, 10, 15, 9 }, { 16, 8, 17, 7 }, { 18, 6, 19, 5 }, { 20, 4, 1, 3 } } }, { "10_{2}", { { 1, 13, 2, 12 }, { 3, 14, 4, 15 }, { 5, 3, 6, 2 }, { 7, 17, 8, 16 }, { 9, 19, 10, 18 }, { 11, 1, 12, 20 }, { 13, 4, 14, 5 }, { 15, 7, 16, 6 }, { 17, 9, 18, 8 }, { 19, 11, 20, 10 } } }, { "10_{3}", { { 2, 10, 3, 9 }, { 4, 17, 5, 18 }, { 6, 15, 7, 16 }, { 8, 4, 9, 3 }, { 10, 2, 11, 1 }, { 12, 20, 13, 19 }, { 14, 7, 15, 8 }, { 16, 5, 17, 6 }, { 18, 14, 19, 13 }, { 20, 12, 1, 11 } } }, { "10_{4}", { { 2, 13, 3, 14 }, { 4, 11, 5, 12 }, { 6, 20, 7, 19 }, { 8, 18, 9, 17 }, { 10, 16, 11, 15 }, { 12, 1, 13, 2 }, { 14, 3, 15, 4 }, { 16, 10, 17, 9 }, { 18, 8, 19, 7 }, { 20, 6, 1, 5 } } }, { "10_{5}", { { 2, 13, 3, 14 }, { 4, 17, 5, 18 }, { 6, 16, 7, 15 }, { 8, 6, 9, 5 }, { 10, 19, 11, 20 }, { 12, 1, 13, 2 }, { 14, 3, 15, 4 }, { 16, 8, 17, 7 }, { 18, 9, 19, 10 }, { 20, 11, 1, 12 } } }, { "10_{6}", { { 2, 11, 3, 12 }, { 4, 16, 5, 15 }, { 6, 18, 7, 17 }, { 8, 20, 9, 19 }, { 10, 14, 11, 13 }, { 12, 1, 13, 2 }, { 14, 10, 15, 9 }, { 16, 6, 17, 5 }, { 18, 8, 19, 7 }, { 20, 4, 1, 3 } } }, { "10_{7}", { { 1, 12, 2, 13 }, { 3, 15, 4, 14 }, { 5, 19, 6, 18 }, { 7, 17, 8, 16 }, { 9, 1, 10, 20 }, { 11, 2, 12, 3 }, { 13, 11, 14, 10 }, { 15, 9, 16, 8 }, { 17, 7, 18, 6 }, { 19, 5, 20, 4 } } }, { "10_{8}", { { 1, 12, 2, 13 }, { 3, 10, 4, 11 }, { 5, 15, 6, 14 }, { 7, 17, 8, 16 }, { 9, 19, 10, 18 }, { 11, 2, 12, 3 }, { 13, 20, 14, 1 }, { 15, 7, 16, 6 }, { 17, 9, 18, 8 }, { 19, 5, 20, 4 } } }, { "10_{9}", { { 1, 13, 2, 12 }, { 3, 16, 4, 17 }, { 5, 14, 6, 15 }, { 7, 3, 8, 2 }, { 9, 19, 10, 18 }, { 11, 1, 12, 20 }, { 13, 4, 14, 5 }, { 15, 6, 16, 7 }, { 17, 9, 18, 8 }, { 19, 11, 20, 10 } } }, { "10_{10}", { { 1, 11, 2, 10 }, { 3, 18, 4, 19 }, { 5, 16, 6, 17 }, { 7, 14, 8, 15 }, { 9, 13, 10, 12 }, { 11, 3, 12, 2 }, { 13, 20, 14, 1 }, { 15, 6, 16, 7 }, { 17, 4, 18, 5 }, { 19, 8, 20, 9 } } }, { "10_{11}", { { 2, 15, 3, 16 }, { 4, 13, 5, 14 }, { 6, 2, 7, 1 }, { 8, 18, 9, 17 }, { 10, 20, 11, 19 }, { 12, 5, 13, 6 }, { 14, 3, 15, 4 }, { 16, 12, 17, 11 }, { 18, 10, 19, 9 }, { 20, 8, 1, 7 } } }, { "10_{12}", { { 2, 11, 3, 12 }, { 4, 18, 5, 17 }, { 6, 13, 7, 14 }, { 8, 19, 9, 20 }, { 10, 1, 11, 2 }, { 12, 7, 13, 8 }, { 14, 5, 15, 6 }, { 16, 4, 17, 3 }, { 18, 16, 19, 15 }, { 20, 9, 1, 10 } } }, { "10_{13}", { { 2, 17, 3, 18 }, { 4, 8, 5, 7 }, { 6, 13, 7, 14 }, { 8, 2, 9, 1 }, { 10, 20, 11, 19 }, { 12, 16, 13, 15 }, { 14, 5, 15, 6 }, { 16, 3, 17, 4 }, { 18, 12, 19, 11 }, { 20, 10, 1, 9 } } }, { "10_{14}", { { 1, 14, 2, 15 }, { 3, 17, 4, 16 }, { 5, 11, 6, 10 }, { 7, 19, 8, 18 }, { 9, 1, 10, 20 }, { 11, 5, 12, 4 }, { 13, 2, 14, 3 }, { 15, 13, 16, 12 }, { 17, 7, 18, 6 }, { 19, 9, 20, 8 } } }, { "10_{15}", { { 2, 6, 3, 5 }, { 4, 16, 5, 15 }, { 6, 2, 7, 1 }, { 8, 17, 9, 18 }, { 10, 19, 11, 20 }, { 12, 7, 13, 8 }, { 14, 4, 15, 3 }, { 16, 14, 17, 13 }, { 18, 9, 19, 10 }, { 20, 11, 1, 12 } } }, { "10_{16}", { { 1, 10, 2, 11 }, { 3, 15, 4, 14 }, { 5, 17, 6, 16 }, { 7, 19, 8, 18 }, { 9, 2, 10, 3 }, { 11, 20, 12, 1 }, { 13, 9, 14, 8 }, { 15, 7, 16, 6 }, { 17, 5, 18, 4 }, { 19, 12, 20, 13 } } }, { "10_{17}", { { 6, 2, 7, 1 }, { 12, 4, 13, 3 }, { 20, 15, 1, 16 }, { 16, 7, 17, 8 }, { 18, 9, 19, 10 }, { 8, 17, 9, 18 }, { 10, 19, 11, 20 }, { 14, 6, 15, 5 }, { 2, 12, 3, 11 }, { 4, 14, 5, 13 } } }, { "10_{18}", { { 2, 14, 3, 13 }, { 4, 10, 5, 9 }, { 6, 17, 7, 18 }, { 8, 15, 9, 16 }, { 10, 20, 11, 19 }, { 12, 2, 13, 1 }, { 14, 12, 15, 11 }, { 16, 7, 17, 8 }, { 18, 5, 19, 6 }, { 20, 4, 1, 3 } } }, { "10_{19}", { { 1, 13, 2, 12 }, { 3, 15, 4, 14 }, { 5, 10, 6, 11 }, { 7, 16, 8, 17 }, { 9, 18, 10, 19 }, { 11, 1, 12, 20 }, { 13, 3, 14, 2 }, { 15, 8, 16, 9 }, { 17, 6, 18, 7 }, { 19, 5, 20, 4 } } }, { "10_{20}", { { 2, 8, 3, 7 }, { 4, 15, 5, 16 }, { 6, 4, 7, 3 }, { 8, 2, 9, 1 }, { 10, 18, 11, 17 }, { 12, 20, 13, 19 }, { 14, 5, 15, 6 }, { 16, 14, 17, 13 }, { 18, 12, 19, 11 }, { 20, 10, 1, 9 } } }, { "10_{21}", { { 1, 15, 2, 14 }, { 3, 13, 4, 12 }, { 5, 17, 6, 16 }, { 7, 11, 8, 10 }, { 9, 18, 10, 19 }, { 11, 1, 12, 20 }, { 13, 3, 14, 2 }, { 15, 5, 16, 4 }, { 17, 7, 18, 6 }, { 19, 8, 20, 9 } } }, { "10_{22}", { { 2, 11, 3, 12 }, { 4, 18, 5, 17 }, { 6, 16, 7, 15 }, { 8, 14, 9, 13 }, { 10, 1, 11, 2 }, { 12, 19, 13, 20 }, { 14, 6, 15, 5 }, { 16, 8, 17, 7 }, { 18, 4, 19, 3 }, { 20, 9, 1, 10 } } }, { "10_{23}", { { 2, 13, 3, 14 }, { 4, 11, 5, 12 }, { 6, 18, 7, 17 }, { 8, 19, 9, 20 }, { 10, 1, 11, 2 }, { 12, 3, 13, 4 }, { 14, 7, 15, 8 }, { 16, 6, 17, 5 }, { 18, 16, 19, 15 }, { 20, 9, 1, 10 } } }, { "10_{24}", { { 2, 14, 3, 13 }, { 4, 10, 5, 9 }, { 6, 17, 7, 18 }, { 8, 6, 9, 5 }, { 10, 4, 11, 3 }, { 12, 20, 13, 19 }, { 14, 2, 15, 1 }, { 16, 7, 17, 8 }, { 18, 12, 19, 11 }, { 20, 16, 1, 15 } } }, { "10_{25}", { { 1, 11, 2, 10 }, { 3, 15, 4, 14 }, { 5, 13, 6, 12 }, { 7, 18, 8, 19 }, { 9, 1, 10, 20 }, { 11, 5, 12, 4 }, { 13, 7, 14, 6 }, { 15, 3, 16, 2 }, { 17, 8, 18, 9 }, { 19, 17, 20, 16 } } }, { "10_{26}", { { 1, 12, 2, 13 }, { 3, 14, 4, 15 }, { 5, 17, 6, 16 }, { 7, 19, 8, 18 }, { 9, 1, 10, 20 }, { 11, 4, 12, 5 }, { 13, 2, 14, 3 }, { 15, 11, 16, 10 }, { 17, 9, 18, 8 }, { 19, 7, 20, 6 } } }, { "10_{27}", { { 1, 11, 2, 10 }, { 3, 18, 4, 19 }, { 5, 16, 6, 17 }, { 7, 14, 8, 15 }, { 9, 13, 10, 12 }, { 11, 3, 12, 2 }, { 13, 20, 14, 1 }, { 15, 4, 16, 5 }, { 17, 6, 18, 7 }, { 19, 8, 20, 9 } } }, { "10_{28}", { { 1, 9, 2, 8 }, { 3, 16, 4, 17 }, { 5, 14, 6, 15 }, { 7, 11, 8, 10 }, { 9, 3, 10, 2 }, { 11, 20, 12, 1 }, { 13, 18, 14, 19 }, { 15, 4, 16, 5 }, { 17, 6, 18, 7 }, { 19, 12, 20, 13 } } }, { "10_{29}", { { 2, 15, 3, 16 }, { 4, 2, 5, 1 }, { 6, 11, 7, 12 }, { 8, 18, 9, 17 }, { 10, 20, 11, 19 }, { 12, 5, 13, 6 }, { 14, 3, 15, 4 }, { 16, 14, 17, 13 }, { 18, 10, 19, 9 }, { 20, 8, 1, 7 } } }, { "10_{30}", { { 1, 14, 2, 15 }, { 3, 17, 4, 16 }, { 5, 11, 6, 10 }, { 7, 19, 8, 18 }, { 9, 1, 10, 20 }, { 11, 5, 12, 4 }, { 13, 2, 14, 3 }, { 15, 13, 16, 12 }, { 17, 9, 18, 8 }, { 19, 7, 20, 6 } } }, { "10_{31}", { { 2, 6, 3, 5 }, { 4, 16, 5, 15 }, { 6, 2, 7, 1 }, { 8, 17, 9, 18 }, { 10, 19, 11, 20 }, { 12, 7, 13, 8 }, { 14, 4, 15, 3 }, { 16, 14, 17, 13 }, { 18, 11, 19, 12 }, { 20, 9, 1, 10 } } }, { "10_{32}", { { 2, 14, 3, 13 }, { 4, 10, 5, 9 }, { 6, 15, 7, 16 }, { 8, 17, 9, 18 }, { 10, 20, 11, 19 }, { 12, 2, 13, 1 }, { 14, 12, 15, 11 }, { 16, 7, 17, 8 }, { 18, 5, 19, 6 }, { 20, 4, 1, 3 } } }, { "10_{33}", { { 6, 2, 7, 1 }, { 14, 6, 15, 5 }, { 20, 15, 1, 16 }, { 16, 7, 17, 8 }, { 8, 19, 9, 20 }, { 18, 9, 19, 10 }, { 10, 17, 11, 18 }, { 2, 14, 3, 13 }, { 12, 4, 13, 3 }, { 4, 12, 5, 11 } } }, { "10_{34}", { { 1, 7, 2, 6 }, { 3, 14, 4, 15 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 20, 10, 1 }, { 11, 18, 12, 19 }, { 13, 16, 14, 17 }, { 15, 4, 16, 5 }, { 17, 12, 18, 13 }, { 19, 10, 20, 11 } } }, { "10_{35}", { { 1, 11, 2, 10 }, { 3, 18, 4, 19 }, { 5, 3, 6, 2 }, { 7, 14, 8, 15 }, { 9, 12, 10, 13 }, { 11, 1, 12, 20 }, { 13, 8, 14, 9 }, { 15, 6, 16, 7 }, { 17, 4, 18, 5 }, { 19, 17, 20, 16 } } }, { "10_{36}", { { 2, 15, 3, 16 }, { 4, 14, 5, 13 }, { 6, 12, 7, 11 }, { 8, 18, 9, 17 }, { 10, 8, 11, 7 }, { 12, 6, 13, 5 }, { 14, 20, 15, 19 }, { 16, 1, 17, 2 }, { 18, 10, 19, 9 }, { 20, 4, 1, 3 } } }, { "10_{37}", { { 4, 2, 5, 1 }, { 10, 4, 11, 3 }, { 12, 8, 13, 7 }, { 8, 12, 9, 11 }, { 18, 15, 19, 16 }, { 16, 5, 17, 6 }, { 6, 17, 7, 18 }, { 20, 13, 1, 14 }, { 14, 19, 15, 20 }, { 2, 10, 3, 9 } } }, { "10_{38}", { { 2, 16, 3, 15 }, { 4, 12, 5, 11 }, { 6, 10, 7, 9 }, { 8, 17, 9, 18 }, { 10, 6, 11, 5 }, { 12, 20, 13, 19 }, { 14, 2, 15, 1 }, { 16, 14, 17, 13 }, { 18, 7, 19, 8 }, { 20, 4, 1, 3 } } }, { "10_{39}", { { 1, 14, 2, 15 }, { 3, 17, 4, 16 }, { 5, 19, 6, 18 }, { 7, 11, 8, 10 }, { 9, 1, 10, 20 }, { 11, 7, 12, 6 }, { 13, 2, 14, 3 }, { 15, 13, 16, 12 }, { 17, 5, 18, 4 }, { 19, 9, 20, 8 } } }, { "10_{40}", { { 2, 11, 3, 12 }, { 4, 18, 5, 17 }, { 6, 19, 7, 20 }, { 8, 13, 9, 14 }, { 10, 1, 11, 2 }, { 12, 9, 13, 10 }, { 14, 5, 15, 6 }, { 16, 4, 17, 3 }, { 18, 16, 19, 15 }, { 20, 7, 1, 8 } } }, { "10_{41}", { { 1, 14, 2, 15 }, { 3, 17, 4, 16 }, { 5, 10, 6, 11 }, { 7, 19, 8, 18 }, { 9, 6, 10, 7 }, { 11, 1, 12, 20 }, { 13, 2, 14, 3 }, { 15, 13, 16, 12 }, { 17, 9, 18, 8 }, { 19, 5, 20, 4 } } }, { "10_{42}", { { 1, 9, 2, 8 }, { 3, 18, 4, 19 }, { 5, 14, 6, 15 }, { 7, 11, 8, 10 }, { 9, 3, 10, 2 }, { 11, 20, 12, 1 }, { 13, 17, 14, 16 }, { 15, 4, 16, 5 }, { 17, 13, 18, 12 }, { 19, 6, 20, 7 } } }, { "10_{43}", { { 4, 2, 5, 1 }, { 10, 4, 11, 3 }, { 14, 8, 15, 7 }, { 20, 11, 1, 12 }, { 12, 19, 13, 20 }, { 8, 14, 9, 13 }, { 18, 15, 19, 16 }, { 16, 5, 17, 6 }, { 6, 17, 7, 18 }, { 2, 10, 3, 9 } } }, { "10_{44}", { { 1, 14, 2, 15 }, { 3, 17, 4, 16 }, { 5, 20, 6, 1 }, { 7, 19, 8, 18 }, { 9, 7, 10, 6 }, { 11, 5, 12, 4 }, { 13, 2, 14, 3 }, { 15, 13, 16, 12 }, { 17, 10, 18, 11 }, { 19, 9, 20, 8 } } }, { "10_{45}", { { 4, 2, 5, 1 }, { 12, 6, 13, 5 }, { 10, 3, 11, 4 }, { 2, 11, 3, 12 }, { 20, 14, 1, 13 }, { 14, 7, 15, 8 }, { 6, 19, 7, 20 }, { 18, 15, 19, 16 }, { 16, 10, 17, 9 }, { 8, 18, 9, 17 } } }, { "10_{46}", { { 1, 15, 2, 14 }, { 3, 9, 4, 8 }, { 5, 11, 6, 10 }, { 7, 16, 8, 17 }, { 9, 5, 10, 4 }, { 11, 19, 12, 18 }, { 13, 1, 14, 20 }, { 15, 3, 16, 2 }, { 17, 6, 18, 7 }, { 19, 13, 20, 12 } } }, { "10_{47}", { { 2, 9, 3, 10 }, { 4, 11, 5, 12 }, { 6, 17, 7, 18 }, { 8, 1, 9, 2 }, { 10, 3, 11, 4 }, { 12, 5, 13, 6 }, { 14, 20, 15, 19 }, { 16, 14, 17, 13 }, { 18, 7, 19, 8 }, { 20, 16, 1, 15 } } }, { "10_{48}", { { 6, 2, 7, 1 }, { 8, 4, 9, 3 }, { 14, 6, 15, 5 }, { 20, 15, 1, 16 }, { 16, 9, 17, 10 }, { 18, 11, 19, 12 }, { 10, 17, 11, 18 }, { 12, 19, 13, 20 }, { 2, 8, 3, 7 }, { 4, 14, 5, 13 } } }, { "10_{49}", { { 1, 7, 2, 6 }, { 3, 17, 4, 16 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 15, 10, 14 }, { 11, 19, 12, 18 }, { 13, 1, 14, 20 }, { 15, 5, 16, 4 }, { 17, 11, 18, 10 }, { 19, 13, 20, 12 } } }, { "10_{50}", { { 1, 10, 2, 11 }, { 3, 19, 4, 18 }, { 5, 13, 6, 12 }, { 7, 15, 8, 14 }, { 9, 17, 10, 16 }, { 11, 20, 12, 1 }, { 13, 9, 14, 8 }, { 15, 7, 16, 6 }, { 17, 3, 18, 2 }, { 19, 5, 20, 4 } } }, { "10_{51}", { { 2, 18, 3, 17 }, { 4, 11, 5, 12 }, { 6, 13, 7, 14 }, { 8, 15, 9, 16 }, { 10, 19, 11, 20 }, { 12, 7, 13, 8 }, { 14, 5, 15, 6 }, { 16, 2, 17, 1 }, { 18, 9, 19, 10 }, { 20, 4, 1, 3 } } }, { "10_{52}", { { 1, 13, 2, 12 }, { 3, 19, 4, 18 }, { 5, 10, 6, 11 }, { 7, 14, 8, 15 }, { 9, 16, 10, 17 }, { 11, 1, 12, 20 }, { 13, 8, 14, 9 }, { 15, 6, 16, 7 }, { 17, 3, 18, 2 }, { 19, 5, 20, 4 } } }, { "10_{53}", { { 1, 7, 2, 6 }, { 3, 17, 4, 16 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 15, 10, 14 }, { 11, 19, 12, 18 }, { 13, 1, 14, 20 }, { 15, 5, 16, 4 }, { 17, 13, 18, 12 }, { 19, 11, 20, 10 } } }, { "10_{54}", { { 2, 16, 3, 15 }, { 4, 9, 5, 10 }, { 6, 11, 7, 12 }, { 8, 19, 9, 20 }, { 10, 5, 11, 6 }, { 12, 18, 13, 17 }, { 14, 2, 15, 1 }, { 16, 14, 17, 13 }, { 18, 7, 19, 8 }, { 20, 4, 1, 3 } } }, { "10_{55}", { { 2, 10, 3, 9 }, { 4, 18, 5, 17 }, { 6, 12, 7, 11 }, { 8, 2, 9, 1 }, { 10, 8, 11, 7 }, { 12, 6, 13, 5 }, { 14, 20, 15, 19 }, { 16, 14, 17, 13 }, { 18, 4, 19, 3 }, { 20, 16, 1, 15 } } }, { "10_{56}", { { 2, 16, 3, 15 }, { 4, 10, 5, 9 }, { 6, 12, 7, 11 }, { 8, 17, 9, 18 }, { 10, 6, 11, 5 }, { 12, 20, 13, 19 }, { 14, 2, 15, 1 }, { 16, 14, 17, 13 }, { 18, 7, 19, 8 }, { 20, 4, 1, 3 } } }, { "10_{57}", { { 1, 4, 2, 5 }, { 3, 16, 4, 17 }, { 5, 20, 6, 1 }, { 7, 13, 8, 12 }, { 9, 7, 10, 6 }, { 11, 18, 12, 19 }, { 13, 9, 14, 8 }, { 15, 2, 16, 3 }, { 17, 10, 18, 11 }, { 19, 14, 20, 15 } } }, { "10_{58}", { { 2, 15, 3, 16 }, { 4, 10, 5, 9 }, { 6, 13, 7, 14 }, { 8, 6, 9, 5 }, { 10, 20, 11, 19 }, { 12, 7, 13, 8 }, { 14, 18, 15, 17 }, { 16, 1, 17, 2 }, { 18, 12, 19, 11 }, { 20, 4, 1, 3 } } }, { "10_{59}", { { 1, 4, 2, 5 }, { 3, 17, 4, 16 }, { 5, 20, 6, 1 }, { 7, 14, 8, 15 }, { 9, 7, 10, 6 }, { 11, 19, 12, 18 }, { 13, 8, 14, 9 }, { 15, 11, 16, 10 }, { 17, 3, 18, 2 }, { 19, 13, 20, 12 } } }, { "10_{60}", { { 2, 15, 3, 16 }, { 4, 8, 5, 7 }, { 6, 11, 7, 12 }, { 8, 14, 9, 13 }, { 10, 17, 11, 18 }, { 12, 5, 13, 6 }, { 14, 20, 15, 19 }, { 16, 1, 17, 2 }, { 18, 9, 19, 10 }, { 20, 4, 1, 3 } } }, { "10_{61}", { { 1, 9, 2, 8 }, { 3, 16, 4, 17 }, { 5, 14, 6, 15 }, { 7, 1, 8, 20 }, { 9, 3, 10, 2 }, { 11, 19, 12, 18 }, { 13, 6, 14, 7 }, { 15, 4, 16, 5 }, { 17, 11, 18, 10 }, { 19, 13, 20, 12 } } }, { "10_{62}", { { 2, 11, 3, 12 }, { 4, 18, 5, 17 }, { 6, 13, 7, 14 }, { 8, 19, 9, 20 }, { 10, 1, 11, 2 }, { 12, 5, 13, 6 }, { 14, 7, 15, 8 }, { 16, 4, 17, 3 }, { 18, 16, 19, 15 }, { 20, 9, 1, 10 } } }, { "10_{63}", { { 1, 9, 2, 8 }, { 3, 19, 4, 18 }, { 5, 17, 6, 16 }, { 7, 11, 8, 10 }, { 9, 3, 10, 2 }, { 11, 15, 12, 14 }, { 13, 1, 14, 20 }, { 15, 7, 16, 6 }, { 17, 5, 18, 4 }, { 19, 13, 20, 12 } } }, { "10_{64}", { { 2, 11, 3, 12 }, { 4, 18, 5, 17 }, { 6, 14, 7, 13 }, { 8, 16, 9, 15 }, { 10, 1, 11, 2 }, { 12, 19, 13, 20 }, { 14, 8, 15, 7 }, { 16, 4, 17, 3 }, { 18, 6, 19, 5 }, { 20, 9, 1, 10 } } }, { "10_{65}", { { 1, 9, 2, 8 }, { 3, 16, 4, 17 }, { 5, 14, 6, 15 }, { 7, 11, 8, 10 }, { 9, 3, 10, 2 }, { 11, 18, 12, 19 }, { 13, 20, 14, 1 }, { 15, 4, 16, 5 }, { 17, 6, 18, 7 }, { 19, 12, 20, 13 } } }, { "10_{66}", { { 1, 11, 2, 10 }, { 3, 13, 4, 12 }, { 5, 19, 6, 18 }, { 7, 15, 8, 14 }, { 9, 5, 10, 4 }, { 11, 3, 12, 2 }, { 13, 17, 14, 16 }, { 15, 9, 16, 8 }, { 17, 1, 18, 20 }, { 19, 7, 20, 6 } } }, { "10_{67}", { { 1, 14, 2, 15 }, { 3, 19, 4, 18 }, { 5, 17, 6, 16 }, { 7, 11, 8, 10 }, { 9, 1, 10, 20 }, { 11, 7, 12, 6 }, { 13, 2, 14, 3 }, { 15, 13, 16, 12 }, { 17, 5, 18, 4 }, { 19, 9, 20, 8 } } }, { "10_{68}", { { 1, 11, 2, 10 }, { 3, 16, 4, 17 }, { 5, 14, 6, 15 }, { 7, 18, 8, 19 }, { 9, 13, 10, 12 }, { 11, 3, 12, 2 }, { 13, 20, 14, 1 }, { 15, 4, 16, 5 }, { 17, 8, 18, 9 }, { 19, 6, 20, 7 } } }, { "10_{69}", { { 2, 13, 3, 14 }, { 4, 17, 5, 18 }, { 6, 2, 7, 1 }, { 8, 19, 9, 20 }, { 10, 7, 11, 8 }, { 12, 3, 13, 4 }, { 14, 12, 15, 11 }, { 16, 5, 17, 6 }, { 18, 16, 19, 15 }, { 20, 9, 1, 10 } } }, { "10_{70}", { { 2, 15, 3, 16 }, { 4, 11, 5, 12 }, { 6, 13, 7, 14 }, { 8, 20, 9, 19 }, { 10, 7, 11, 8 }, { 12, 5, 13, 6 }, { 14, 18, 15, 17 }, { 16, 1, 17, 2 }, { 18, 10, 19, 9 }, { 20, 4, 1, 3 } } }, { "10_{71}", { { 1, 4, 2, 5 }, { 3, 8, 4, 9 }, { 11, 15, 12, 14 }, { 5, 13, 6, 12 }, { 13, 7, 14, 6 }, { 9, 19, 10, 18 }, { 15, 20, 16, 1 }, { 19, 16, 20, 17 }, { 17, 11, 18, 10 }, { 7, 2, 8, 3 } } }, { "10_{72}", { { 2, 15, 3, 16 }, { 4, 12, 5, 11 }, { 6, 14, 7, 13 }, { 8, 18, 9, 17 }, { 10, 8, 11, 7 }, { 12, 6, 13, 5 }, { 14, 20, 15, 19 }, { 16, 1, 17, 2 }, { 18, 10, 19, 9 }, { 20, 4, 1, 3 } } }, { "10_{73}", { { 2, 15, 3, 16 }, { 4, 7, 5, 8 }, { 6, 13, 7, 14 }, { 8, 12, 9, 11 }, { 10, 17, 11, 18 }, { 12, 5, 13, 6 }, { 14, 20, 15, 19 }, { 16, 1, 17, 2 }, { 18, 9, 19, 10 }, { 20, 4, 1, 3 } } }, { "10_{74}", { { 1, 12, 2, 13 }, { 3, 15, 4, 14 }, { 5, 17, 6, 16 }, { 7, 1, 8, 20 }, { 9, 19, 10, 18 }, { 11, 2, 12, 3 }, { 13, 11, 14, 10 }, { 15, 7, 16, 6 }, { 17, 5, 18, 4 }, { 19, 9, 20, 8 } } }, { "10_{75}", { { 1, 14, 2, 15 }, { 3, 17, 4, 16 }, { 5, 18, 6, 19 }, { 7, 5, 8, 4 }, { 9, 20, 10, 1 }, { 11, 9, 12, 8 }, { 13, 2, 14, 3 }, { 15, 13, 16, 12 }, { 17, 6, 18, 7 }, { 19, 10, 20, 11 } } }, { "10_{76}", { { 2, 11, 3, 12 }, { 4, 18, 5, 17 }, { 6, 20, 7, 19 }, { 8, 14, 9, 13 }, { 10, 16, 11, 15 }, { 12, 1, 13, 2 }, { 14, 10, 15, 9 }, { 16, 8, 17, 7 }, { 18, 6, 19, 5 }, { 20, 4, 1, 3 } } }, { "10_{77}", { { 1, 7, 2, 6 }, { 3, 14, 4, 15 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 18, 10, 19 }, { 11, 20, 12, 1 }, { 13, 16, 14, 17 }, { 15, 4, 16, 5 }, { 17, 12, 18, 13 }, { 19, 10, 20, 11 } } }, { "10_{78}", { { 1, 7, 2, 6 }, { 3, 17, 4, 16 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 13, 10, 12 }, { 11, 1, 12, 20 }, { 13, 18, 14, 19 }, { 15, 5, 16, 4 }, { 17, 14, 18, 15 }, { 19, 11, 20, 10 } } }, { "10_{79}", { { 6, 2, 7, 1 }, { 8, 4, 9, 3 }, { 12, 6, 13, 5 }, { 18, 13, 19, 14 }, { 16, 9, 17, 10 }, { 10, 17, 11, 18 }, { 20, 15, 1, 16 }, { 14, 19, 15, 20 }, { 2, 8, 3, 7 }, { 4, 12, 5, 11 } } }, { "10_{80}", { { 1, 17, 2, 16 }, { 3, 11, 4, 10 }, { 5, 19, 6, 18 }, { 7, 13, 8, 12 }, { 9, 5, 10, 4 }, { 11, 15, 12, 14 }, { 13, 9, 14, 8 }, { 15, 1, 16, 20 }, { 17, 3, 18, 2 }, { 19, 7, 20, 6 } } }, { "10_{81}", { { 4, 2, 5, 1 }, { 8, 4, 9, 3 }, { 12, 6, 13, 5 }, { 16, 9, 17, 10 }, { 20, 17, 1, 18 }, { 18, 13, 19, 14 }, { 14, 19, 15, 20 }, { 10, 15, 11, 16 }, { 6, 12, 7, 11 }, { 2, 8, 3, 7 } } }, { "10_{82}", { { 1, 12, 2, 13 }, { 3, 15, 4, 14 }, { 5, 19, 6, 18 }, { 7, 1, 8, 20 }, { 9, 2, 10, 3 }, { 11, 16, 12, 17 }, { 13, 9, 14, 8 }, { 15, 10, 16, 11 }, { 17, 5, 18, 4 }, { 19, 7, 20, 6 } } }, { "10_{83}", { { 2, 7, 3, 8 }, { 4, 10, 5, 9 }, { 6, 1, 7, 2 }, { 8, 16, 9, 15 }, { 10, 17, 11, 18 }, { 12, 19, 13, 20 }, { 14, 6, 15, 5 }, { 16, 3, 17, 4 }, { 18, 13, 19, 14 }, { 20, 11, 1, 12 } } }, { "10_{84}", { { 2, 10, 3, 9 }, { 4, 2, 5, 1 }, { 6, 13, 7, 14 }, { 8, 12, 9, 11 }, { 10, 4, 11, 3 }, { 12, 17, 13, 18 }, { 14, 20, 15, 19 }, { 16, 7, 17, 8 }, { 18, 6, 19, 5 }, { 20, 16, 1, 15 } } }, { "10_{85}", { { 2, 7, 3, 8 }, { 4, 10, 5, 9 }, { 6, 1, 7, 2 }, { 8, 16, 9, 15 }, { 10, 17, 11, 18 }, { 12, 19, 13, 20 }, { 14, 6, 15, 5 }, { 16, 3, 17, 4 }, { 18, 11, 19, 12 }, { 20, 13, 1, 14 } } }, { "10_{86}", { { 2, 7, 3, 8 }, { 4, 10, 5, 9 }, { 6, 1, 7, 2 }, { 8, 15, 9, 16 }, { 10, 18, 11, 17 }, { 12, 20, 13, 19 }, { 14, 4, 15, 3 }, { 16, 5, 17, 6 }, { 18, 14, 19, 13 }, { 20, 12, 1, 11 } } }, { "10_{87}", { { 2, 11, 3, 12 }, { 4, 14, 5, 13 }, { 6, 1, 7, 2 }, { 8, 16, 9, 15 }, { 10, 8, 11, 7 }, { 12, 19, 13, 20 }, { 14, 18, 15, 17 }, { 16, 10, 17, 9 }, { 18, 4, 19, 3 }, { 20, 5, 1, 6 } } }, { "10_{88}", { { 4, 2, 5, 1 }, { 20, 14, 1, 13 }, { 8, 3, 9, 4 }, { 2, 9, 3, 10 }, { 14, 7, 15, 8 }, { 18, 15, 19, 16 }, { 12, 6, 13, 5 }, { 10, 18, 11, 17 }, { 16, 12, 17, 11 }, { 6, 19, 7, 20 } } }, { "10_{89}", { { 2, 7, 3, 8 }, { 4, 13, 5, 14 }, { 6, 12, 7, 11 }, { 8, 1, 9, 2 }, { 10, 15, 11, 16 }, { 12, 19, 13, 20 }, { 14, 18, 15, 17 }, { 16, 9, 17, 10 }, { 18, 5, 19, 6 }, { 20, 4, 1, 3 } } }, { "10_{90}", { { 2, 9, 3, 10 }, { 4, 13, 5, 14 }, { 6, 20, 7, 19 }, { 8, 16, 9, 15 }, { 10, 3, 11, 4 }, { 12, 18, 13, 17 }, { 14, 1, 15, 2 }, { 16, 12, 17, 11 }, { 18, 8, 19, 7 }, { 20, 6, 1, 5 } } }, { "10_{91}", { { 6, 2, 7, 1 }, { 20, 6, 1, 5 }, { 16, 9, 17, 10 }, { 10, 3, 11, 4 }, { 2, 18, 3, 17 }, { 14, 7, 15, 8 }, { 8, 15, 9, 16 }, { 12, 20, 13, 19 }, { 18, 12, 19, 11 }, { 4, 13, 5, 14 } } }, { "10_{92}", { { 1, 9, 2, 8 }, { 3, 19, 4, 18 }, { 5, 12, 6, 13 }, { 7, 11, 8, 10 }, { 9, 3, 10, 2 }, { 11, 17, 12, 16 }, { 13, 4, 14, 5 }, { 15, 1, 16, 20 }, { 17, 7, 18, 6 }, { 19, 15, 20, 14 } } }, { "10_{93}", { { 2, 17, 3, 18 }, { 4, 12, 5, 11 }, { 6, 20, 7, 19 }, { 8, 15, 9, 16 }, { 10, 6, 11, 5 }, { 12, 4, 13, 3 }, { 14, 7, 15, 8 }, { 16, 1, 17, 2 }, { 18, 13, 19, 14 }, { 20, 10, 1, 9 } } }, { "10_{94}", { { 1, 9, 2, 8 }, { 3, 10, 4, 11 }, { 5, 14, 6, 15 }, { 7, 1, 8, 20 }, { 9, 17, 10, 16 }, { 11, 4, 12, 5 }, { 13, 19, 14, 18 }, { 15, 2, 16, 3 }, { 17, 13, 18, 12 }, { 19, 7, 20, 6 } } }, { "10_{95}", { { 2, 16, 3, 15 }, { 4, 11, 5, 12 }, { 6, 17, 7, 18 }, { 8, 13, 9, 14 }, { 10, 19, 11, 20 }, { 12, 7, 13, 8 }, { 14, 2, 15, 1 }, { 16, 9, 17, 10 }, { 18, 5, 19, 6 }, { 20, 4, 1, 3 } } }, { "10_{96}", { { 1, 16, 2, 17 }, { 3, 10, 4, 11 }, { 5, 1, 6, 20 }, { 7, 12, 8, 13 }, { 9, 4, 10, 5 }, { 11, 19, 12, 18 }, { 13, 6, 14, 7 }, { 15, 2, 16, 3 }, { 17, 15, 18, 14 }, { 19, 9, 20, 8 } } }, { "10_{97}", { { 2, 12, 3, 11 }, { 4, 18, 5, 17 }, { 6, 13, 7, 14 }, { 8, 6, 9, 5 }, { 10, 20, 11, 19 }, { 12, 7, 13, 8 }, { 14, 2, 15, 1 }, { 16, 10, 17, 9 }, { 18, 4, 19, 3 }, { 20, 16, 1, 15 } } }, { "10_{98}", { { 1, 10, 2, 11 }, { 3, 17, 4, 16 }, { 5, 13, 6, 12 }, { 7, 19, 8, 18 }, { 9, 15, 10, 14 }, { 11, 20, 12, 1 }, { 13, 7, 14, 6 }, { 15, 3, 16, 2 }, { 17, 9, 18, 8 }, { 19, 5, 20, 4 } } }, { "10_{99}", { { 6, 2, 7, 1 }, { 10, 4, 11, 3 }, { 16, 11, 17, 12 }, { 14, 7, 15, 8 }, { 8, 15, 9, 16 }, { 20, 13, 1, 14 }, { 12, 19, 13, 20 }, { 18, 6, 19, 5 }, { 2, 10, 3, 9 }, { 4, 18, 5, 17 } } }, { "10_{100}", { { 2, 9, 3, 10 }, { 4, 17, 5, 18 }, { 6, 12, 7, 11 }, { 8, 1, 9, 2 }, { 10, 16, 11, 15 }, { 12, 19, 13, 20 }, { 14, 8, 15, 7 }, { 16, 3, 17, 4 }, { 18, 5, 19, 6 }, { 20, 13, 1, 14 } } }, { "10_{101}", { { 2, 12, 3, 11 }, { 4, 18, 5, 17 }, { 6, 14, 7, 13 }, { 8, 20, 9, 19 }, { 10, 6, 11, 5 }, { 12, 2, 13, 1 }, { 14, 10, 15, 9 }, { 16, 4, 17, 3 }, { 18, 16, 19, 15 }, { 20, 8, 1, 7 } } }, { "10_{102}", { { 2, 9, 3, 10 }, { 4, 12, 5, 11 }, { 6, 18, 7, 17 }, { 8, 16, 9, 15 }, { 10, 19, 11, 20 }, { 12, 6, 13, 5 }, { 14, 1, 15, 2 }, { 16, 8, 17, 7 }, { 18, 4, 19, 3 }, { 20, 13, 1, 14 } } }, { "10_{103}", { { 2, 9, 3, 10 }, { 4, 17, 5, 18 }, { 6, 12, 7, 11 }, { 8, 1, 9, 2 }, { 10, 16, 11, 15 }, { 12, 19, 13, 20 }, { 14, 8, 15, 7 }, { 16, 5, 17, 6 }, { 18, 3, 19, 4 }, { 20, 13, 1, 14 } } }, { "10_{104}", { { 6, 2, 7, 1 }, { 16, 4, 17, 3 }, { 18, 9, 19, 10 }, { 14, 7, 15, 8 }, { 20, 13, 1, 14 }, { 8, 17, 9, 18 }, { 10, 19, 11, 20 }, { 12, 6, 13, 5 }, { 4, 12, 5, 11 }, { 2, 16, 3, 15 } } }, { "10_{105}", { { 1, 11, 2, 10 }, { 3, 16, 4, 17 }, { 5, 1, 6, 20 }, { 7, 18, 8, 19 }, { 9, 13, 10, 12 }, { 11, 3, 12, 2 }, { 13, 7, 14, 6 }, { 15, 4, 16, 5 }, { 17, 8, 18, 9 }, { 19, 15, 20, 14 } } }, { "10_{106}", { { 1, 15, 2, 14 }, { 3, 10, 4, 11 }, { 5, 17, 6, 16 }, { 7, 13, 8, 12 }, { 9, 2, 10, 3 }, { 11, 18, 12, 19 }, { 13, 1, 14, 20 }, { 15, 5, 16, 4 }, { 17, 7, 18, 6 }, { 19, 8, 20, 9 } } }, { "10_{107}", { { 1, 11, 2, 10 }, { 3, 16, 4, 17 }, { 5, 1, 6, 20 }, { 7, 14, 8, 15 }, { 9, 13, 10, 12 }, { 11, 3, 12, 2 }, { 13, 18, 14, 19 }, { 15, 4, 16, 5 }, { 17, 8, 18, 9 }, { 19, 7, 20, 6 } } }, { "10_{108}", { { 1, 15, 2, 14 }, { 3, 11, 4, 10 }, { 5, 12, 6, 13 }, { 7, 16, 8, 17 }, { 9, 3, 10, 2 }, { 11, 18, 12, 19 }, { 13, 1, 14, 20 }, { 15, 8, 16, 9 }, { 17, 6, 18, 7 }, { 19, 5, 20, 4 } } }, { "10_{109}", { { 6, 2, 7, 1 }, { 10, 4, 11, 3 }, { 18, 11, 19, 12 }, { 16, 7, 17, 8 }, { 8, 17, 9, 18 }, { 20, 15, 1, 16 }, { 12, 19, 13, 20 }, { 14, 6, 15, 5 }, { 2, 10, 3, 9 }, { 4, 14, 5, 13 } } }, { "10_{110}", { { 1, 14, 2, 15 }, { 3, 10, 4, 11 }, { 5, 1, 6, 20 }, { 7, 17, 8, 16 }, { 9, 4, 10, 5 }, { 11, 19, 12, 18 }, { 13, 2, 14, 3 }, { 15, 7, 16, 6 }, { 17, 13, 18, 12 }, { 19, 9, 20, 8 } } }, { "10_{111}", { { 1, 9, 2, 8 }, { 3, 19, 4, 18 }, { 5, 11, 6, 10 }, { 7, 14, 8, 15 }, { 9, 3, 10, 2 }, { 11, 17, 12, 16 }, { 13, 1, 14, 20 }, { 15, 6, 16, 7 }, { 17, 5, 18, 4 }, { 19, 13, 20, 12 } } }, { "10_{112}", { { 2, 10, 3, 9 }, { 4, 11, 5, 12 }, { 6, 19, 7, 20 }, { 8, 14, 9, 13 }, { 10, 15, 11, 16 }, { 12, 18, 13, 17 }, { 14, 1, 15, 2 }, { 16, 4, 17, 3 }, { 18, 5, 19, 6 }, { 20, 7, 1, 8 } } }, { "10_{113}", { { 2, 8, 3, 7 }, { 4, 14, 5, 13 }, { 6, 11, 7, 12 }, { 8, 16, 9, 15 }, { 10, 2, 11, 1 }, { 12, 19, 13, 20 }, { 14, 18, 15, 17 }, { 16, 10, 17, 9 }, { 18, 4, 19, 3 }, { 20, 5, 1, 6 } } }, { "10_{114}", { { 1, 8, 2, 9 }, { 3, 11, 4, 10 }, { 5, 14, 6, 15 }, { 7, 12, 8, 13 }, { 9, 17, 10, 16 }, { 11, 18, 12, 19 }, { 13, 6, 14, 7 }, { 15, 1, 16, 20 }, { 17, 2, 18, 3 }, { 19, 5, 20, 4 } } }, { "10_{115}", { { 6, 2, 7, 1 }, { 14, 6, 15, 5 }, { 20, 15, 1, 16 }, { 16, 7, 17, 8 }, { 8, 19, 9, 20 }, { 18, 11, 19, 12 }, { 10, 4, 11, 3 }, { 4, 10, 5, 9 }, { 12, 17, 13, 18 }, { 2, 14, 3, 13 } } }, { "10_{116}", { { 2, 16, 3, 15 }, { 4, 17, 5, 18 }, { 6, 12, 7, 11 }, { 8, 1, 9, 2 }, { 10, 4, 11, 3 }, { 12, 19, 13, 20 }, { 14, 8, 15, 7 }, { 16, 9, 17, 10 }, { 18, 5, 19, 6 }, { 20, 13, 1, 14 } } }, { "10_{117}", { { 1, 14, 2, 15 }, { 3, 8, 4, 9 }, { 5, 18, 6, 19 }, { 7, 17, 8, 16 }, { 9, 20, 10, 1 }, { 11, 4, 12, 5 }, { 13, 7, 14, 6 }, { 15, 2, 16, 3 }, { 17, 13, 18, 12 }, { 19, 10, 20, 11 } } }, { "10_{118}", { { 6, 2, 7, 1 }, { 18, 6, 19, 5 }, { 20, 13, 1, 14 }, { 12, 19, 13, 20 }, { 14, 7, 15, 8 }, { 8, 3, 9, 4 }, { 2, 16, 3, 15 }, { 10, 18, 11, 17 }, { 16, 10, 17, 9 }, { 4, 11, 5, 12 } } }, { "10_{119}", { { 1, 16, 2, 17 }, { 3, 10, 4, 11 }, { 5, 1, 6, 20 }, { 7, 2, 8, 3 }, { 9, 14, 10, 15 }, { 11, 19, 12, 18 }, { 13, 4, 14, 5 }, { 15, 8, 16, 9 }, { 17, 7, 18, 6 }, { 19, 13, 20, 12 } } }, { "10_{120}", { { 2, 10, 3, 9 }, { 4, 18, 5, 17 }, { 6, 12, 7, 11 }, { 8, 4, 9, 3 }, { 10, 16, 11, 15 }, { 12, 20, 13, 19 }, { 14, 8, 15, 7 }, { 16, 2, 17, 1 }, { 18, 14, 19, 13 }, { 20, 6, 1, 5 } } }, { "10_{121}", { { 2, 11, 3, 12 }, { 4, 10, 5, 9 }, { 6, 2, 7, 1 }, { 8, 16, 9, 15 }, { 10, 17, 11, 18 }, { 12, 8, 13, 7 }, { 14, 20, 15, 19 }, { 16, 3, 17, 4 }, { 18, 6, 19, 5 }, { 20, 14, 1, 13 } } }, { "10_{122}", { { 1, 8, 2, 9 }, { 3, 11, 4, 10 }, { 5, 12, 6, 13 }, { 7, 16, 8, 17 }, { 9, 15, 10, 14 }, { 11, 18, 12, 19 }, { 13, 1, 14, 20 }, { 15, 2, 16, 3 }, { 17, 6, 18, 7 }, { 19, 5, 20, 4 } } }, { "10_{123}", { { 8, 2, 9, 1 }, { 10, 3, 11, 4 }, { 12, 6, 13, 5 }, { 4, 18, 5, 17 }, { 18, 11, 19, 12 }, { 2, 15, 3, 16 }, { 16, 10, 17, 9 }, { 20, 14, 1, 13 }, { 14, 7, 15, 8 }, { 6, 19, 7, 20 } } }, { "10_{124}", { { 1, 9, 2, 8 }, { 3, 11, 4, 10 }, { 5, 13, 6, 12 }, { 7, 19, 8, 18 }, { 9, 3, 10, 2 }, { 11, 5, 12, 4 }, { 14, 20, 15, 19 }, { 16, 14, 17, 13 }, { 17, 7, 18, 6 }, { 20, 16, 1, 15 } } }, { "10_{125}", { { 1, 4, 2, 5 }, { 3, 8, 4, 9 }, { 5, 14, 6, 15 }, { 20, 16, 1, 15 }, { 16, 10, 17, 9 }, { 18, 12, 19, 11 }, { 10, 18, 11, 17 }, { 12, 20, 13, 19 }, { 13, 6, 14, 7 }, { 7, 2, 8, 3 } } }, { "10_{126}", { { 1, 7, 2, 6 }, { 4, 15, 5, 16 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 10, 17, 11, 18 }, { 12, 19, 13, 20 }, { 14, 9, 15, 10 }, { 16, 3, 17, 4 }, { 18, 11, 19, 12 }, { 20, 13, 1, 14 } } }, { "10_{127}", { { 1, 7, 2, 6 }, { 4, 15, 5, 16 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 15, 10, 14 }, { 11, 19, 12, 18 }, { 13, 1, 14, 20 }, { 16, 3, 17, 4 }, { 17, 11, 18, 10 }, { 19, 13, 20, 12 } } }, { "10_{128}", { { 1, 9, 2, 8 }, { 3, 11, 4, 10 }, { 5, 13, 6, 12 }, { 7, 19, 8, 18 }, { 9, 5, 10, 4 }, { 11, 3, 12, 2 }, { 14, 20, 15, 19 }, { 16, 14, 17, 13 }, { 17, 7, 18, 6 }, { 20, 16, 1, 15 } } }, { "10_{129}", { { 1, 7, 2, 6 }, { 3, 17, 4, 16 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 10, 19, 11, 20 }, { 12, 17, 13, 18 }, { 14, 9, 15, 10 }, { 15, 5, 16, 4 }, { 18, 11, 19, 12 }, { 20, 13, 1, 14 } } }, { "10_{130}", { { 1, 7, 2, 6 }, { 4, 15, 5, 16 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 10, 19, 11, 20 }, { 12, 17, 13, 18 }, { 14, 9, 15, 10 }, { 16, 3, 17, 4 }, { 18, 11, 19, 12 }, { 20, 13, 1, 14 } } }, { "10_{131}", { { 1, 7, 2, 6 }, { 4, 15, 5, 16 }, { 5, 9, 6, 8 }, { 7, 3, 8, 2 }, { 9, 15, 10, 14 }, { 11, 19, 12, 18 }, { 13, 1, 14, 20 }, { 16, 3, 17, 4 }, { 17, 13, 18, 12 }, { 19, 11, 20, 10 } } }, { "10_{132}", { { 1, 8, 2, 9 }, { 3, 18, 4, 19 }, { 5, 12, 6, 13 }, { 7, 10, 8, 11 }, { 9, 2, 10, 3 }, { 11, 6, 12, 7 }, { 14, 20, 15, 19 }, { 16, 14, 17, 13 }, { 17, 4, 18, 5 }, { 20, 16, 1, 15 } } }, { "10_{133}", { { 2, 16, 3, 15 }, { 4, 2, 5, 1 }, { 7, 13, 8, 12 }, { 9, 7, 10, 6 }, { 11, 18, 12, 19 }, { 13, 9, 14, 8 }, { 14, 20, 15, 19 }, { 16, 4, 17, 3 }, { 17, 10, 18, 11 }, { 20, 6, 1, 5 } } }, { "10_{134}", { { 2, 16, 3, 15 }, { 4, 2, 5, 1 }, { 7, 13, 8, 12 }, { 9, 7, 10, 6 }, { 10, 18, 11, 17 }, { 13, 9, 14, 8 }, { 14, 20, 15, 19 }, { 16, 4, 17, 3 }, { 18, 12, 19, 11 }, { 20, 6, 1, 5 } } }, { "10_{135}", { { 1, 4, 2, 5 }, { 3, 16, 4, 17 }, { 5, 20, 6, 1 }, { 7, 13, 8, 12 }, { 9, 7, 10, 6 }, { 10, 18, 11, 17 }, { 13, 9, 14, 8 }, { 15, 2, 16, 3 }, { 18, 12, 19, 11 }, { 19, 14, 20, 15 } } }, { "10_{136}", { { 2, 17, 3, 18 }, { 4, 2, 5, 1 }, { 7, 14, 8, 15 }, { 9, 7, 10, 6 }, { 12, 19, 13, 20 }, { 13, 8, 14, 9 }, { 15, 11, 16, 10 }, { 16, 3, 17, 4 }, { 18, 11, 19, 12 }, { 20, 6, 1, 5 } } }, { "10_{137}", { { 1, 15, 2, 14 }, { 4, 8, 5, 7 }, { 6, 19, 7, 20 }, { 9, 17, 10, 16 }, { 11, 8, 12, 9 }, { 13, 3, 14, 2 }, { 15, 11, 16, 10 }, { 17, 12, 18, 13 }, { 18, 4, 19, 3 }, { 20, 5, 1, 6 } } }, { "10_{138}", { { 1, 15, 2, 14 }, { 4, 8, 5, 7 }, { 6, 19, 7, 20 }, { 8, 12, 9, 11 }, { 10, 15, 11, 16 }, { 12, 18, 13, 17 }, { 13, 3, 14, 2 }, { 16, 9, 17, 10 }, { 18, 4, 19, 3 }, { 20, 5, 1, 6 } } }, { "10_{139}", { { 1, 11, 2, 10 }, { 4, 18, 5, 17 }, { 5, 13, 6, 12 }, { 7, 15, 8, 14 }, { 9, 1, 10, 20 }, { 11, 3, 12, 2 }, { 13, 7, 14, 6 }, { 16, 4, 17, 3 }, { 18, 16, 19, 15 }, { 19, 9, 20, 8 } } }, { "10_{140}", { { 1, 15, 2, 14 }, { 3, 10, 4, 11 }, { 5, 12, 6, 13 }, { 6, 18, 7, 17 }, { 8, 16, 9, 15 }, { 11, 4, 12, 5 }, { 13, 1, 14, 20 }, { 16, 8, 17, 7 }, { 18, 10, 19, 9 }, { 19, 3, 20, 2 } } }, { "10_{141}", { { 2, 11, 3, 12 }, { 4, 9, 5, 10 }, { 5, 19, 6, 18 }, { 7, 15, 8, 14 }, { 10, 1, 11, 2 }, { 12, 3, 13, 4 }, { 13, 17, 14, 16 }, { 15, 9, 16, 8 }, { 17, 1, 18, 20 }, { 19, 7, 20, 6 } } }, { "10_{142}", { { 1, 15, 2, 14 }, { 4, 12, 5, 11 }, { 6, 18, 7, 17 }, { 8, 16, 9, 15 }, { 10, 4, 11, 3 }, { 12, 6, 13, 5 }, { 13, 1, 14, 20 }, { 16, 8, 17, 7 }, { 18, 10, 19, 9 }, { 19, 3, 20, 2 } } }, { "10_{143}", { { 2, 11, 3, 12 }, { 4, 9, 5, 10 }, { 6, 19, 7, 20 }, { 7, 15, 8, 14 }, { 10, 1, 11, 2 }, { 12, 3, 13, 4 }, { 13, 17, 14, 16 }, { 15, 9, 16, 8 }, { 18, 5, 19, 6 }, { 20, 17, 1, 18 } } }, { "10_{144}", { { 1, 9, 2, 8 }, { 3, 16, 4, 17 }, { 5, 14, 6, 15 }, { 7, 11, 8, 10 }, { 9, 3, 10, 2 }, { 12, 20, 13, 19 }, { 15, 4, 16, 5 }, { 17, 6, 18, 7 }, { 18, 12, 19, 11 }, { 20, 14, 1, 13 } } }, { "10_{145}", { { 1, 14, 2, 15 }, { 3, 18, 4, 19 }, { 6, 13, 7, 14 }, { 8, 6, 9, 5 }, { 9, 16, 10, 17 }, { 11, 2, 12, 3 }, { 12, 7, 13, 8 }, { 15, 20, 16, 1 }, { 17, 4, 18, 5 }, { 19, 10, 20, 11 } } }, { "10_{146}", { { 1, 14, 2, 15 }, { 4, 10, 5, 9 }, { 6, 14, 7, 13 }, { 8, 17, 9, 18 }, { 10, 4, 11, 3 }, { 12, 8, 13, 7 }, { 15, 20, 16, 1 }, { 16, 11, 17, 12 }, { 18, 5, 19, 6 }, { 19, 3, 20, 2 } } }, { "10_{147}", { { 2, 8, 3, 7 }, { 3, 18, 4, 19 }, { 6, 11, 7, 12 }, { 8, 16, 9, 15 }, { 10, 2, 11, 1 }, { 13, 4, 14, 5 }, { 14, 18, 15, 17 }, { 16, 10, 17, 9 }, { 19, 13, 20, 12 }, { 20, 5, 1, 6 } } }, { "10_{148}", { { 2, 17, 3, 18 }, { 4, 9, 5, 10 }, { 6, 19, 7, 20 }, { 7, 13, 8, 12 }, { 10, 3, 11, 4 }, { 11, 15, 12, 14 }, { 13, 9, 14, 8 }, { 16, 1, 17, 2 }, { 18, 5, 19, 6 }, { 20, 15, 1, 16 } } }, { "10_{149}", { { 1, 17, 2, 16 }, { 4, 9, 5, 10 }, { 5, 19, 6, 18 }, { 7, 13, 8, 12 }, { 10, 3, 11, 4 }, { 11, 15, 12, 14 }, { 13, 9, 14, 8 }, { 15, 1, 16, 20 }, { 17, 3, 18, 2 }, { 19, 7, 20, 6 } } }, { "10_{150}", { { 1, 17, 2, 16 }, { 3, 7, 4, 6 }, { 5, 1, 6, 20 }, { 8, 14, 9, 13 }, { 10, 8, 11, 7 }, { 11, 18, 12, 19 }, { 14, 10, 15, 9 }, { 15, 3, 16, 2 }, { 17, 12, 18, 13 }, { 19, 5, 20, 4 } } }, { "10_{151}", { { 2, 15, 3, 16 }, { 4, 19, 5, 20 }, { 6, 3, 7, 4 }, { 8, 14, 9, 13 }, { 10, 8, 11, 7 }, { 11, 18, 12, 19 }, { 14, 10, 15, 9 }, { 16, 1, 17, 2 }, { 17, 12, 18, 13 }, { 20, 5, 1, 6 } } }, { "10_{152}", { { 1, 7, 2, 6 }, { 3, 9, 4, 8 }, { 5, 19, 6, 18 }, { 7, 3, 8, 2 }, { 10, 16, 11, 15 }, { 12, 20, 13, 19 }, { 14, 10, 15, 9 }, { 16, 12, 17, 11 }, { 17, 5, 18, 4 }, { 20, 14, 1, 13 } } }, { "10_{153}", { { 2, 17, 3, 18 }, { 3, 11, 4, 10 }, { 6, 19, 7, 20 }, { 7, 13, 8, 12 }, { 9, 5, 10, 4 }, { 11, 15, 12, 14 }, { 13, 9, 14, 8 }, { 16, 1, 17, 2 }, { 18, 5, 19, 6 }, { 20, 15, 1, 16 } } }, { "10_{154}", { { 1, 17, 2, 16 }, { 3, 7, 4, 6 }, { 5, 1, 6, 20 }, { 8, 14, 9, 13 }, { 10, 8, 11, 7 }, { 12, 18, 13, 17 }, { 14, 10, 15, 9 }, { 15, 3, 16, 2 }, { 18, 12, 19, 11 }, { 19, 5, 20, 4 } } }, { "10_{155}", { { 1, 11, 2, 10 }, { 3, 13, 4, 12 }, { 5, 14, 6, 15 }, { 6, 19, 7, 20 }, { 9, 16, 10, 17 }, { 11, 3, 12, 2 }, { 13, 19, 14, 18 }, { 15, 8, 16, 9 }, { 17, 4, 18, 5 }, { 20, 7, 1, 8 } } }, { "10_{156}", { { 1, 13, 2, 12 }, { 3, 8, 4, 9 }, { 5, 14, 6, 15 }, { 7, 18, 8, 19 }, { 10, 15, 11, 16 }, { 11, 1, 12, 20 }, { 13, 6, 14, 7 }, { 16, 9, 17, 10 }, { 17, 4, 18, 5 }, { 19, 3, 20, 2 } } }, { "10_{157}", { { 2, 8, 3, 7 }, { 3, 10, 4, 11 }, { 5, 18, 6, 19 }, { 8, 15, 9, 16 }, { 11, 4, 12, 5 }, { 14, 1, 15, 2 }, { 16, 9, 17, 10 }, { 17, 13, 18, 12 }, { 19, 6, 20, 7 }, { 20, 13, 1, 14 } } }, { "10_{158}", { { 3, 9, 4, 8 }, { 4, 11, 5, 12 }, { 6, 20, 7, 19 }, { 9, 17, 10, 16 }, { 12, 5, 13, 6 }, { 14, 1, 15, 2 }, { 15, 11, 16, 10 }, { 17, 3, 18, 2 }, { 18, 8, 19, 7 }, { 20, 13, 1, 14 } } }, { "10_{159}", { { 2, 10, 3, 9 }, { 4, 11, 5, 12 }, { 5, 19, 6, 18 }, { 7, 1, 8, 20 }, { 8, 14, 9, 13 }, { 10, 15, 11, 16 }, { 12, 18, 13, 17 }, { 14, 1, 15, 2 }, { 16, 4, 17, 3 }, { 19, 7, 20, 6 } } }, { "10_{160}", { { 1, 13, 2, 12 }, { 4, 18, 5, 17 }, { 6, 14, 7, 13 }, { 8, 4, 9, 3 }, { 10, 15, 11, 16 }, { 11, 1, 12, 20 }, { 14, 6, 15, 5 }, { 16, 9, 17, 10 }, { 18, 8, 19, 7 }, { 19, 3, 20, 2 } } }, { "10_{161}", { { 1, 13, 2, 12 }, { 4, 18, 5, 17 }, { 6, 14, 7, 13 }, { 8, 4, 9, 3 }, { 9, 17, 10, 16 }, { 11, 1, 12, 20 }, { 14, 6, 15, 5 }, { 15, 11, 16, 10 }, { 18, 8, 19, 7 }, { 19, 3, 20, 2 } } }, { "10_{162}", { { 2, 9, 3, 10 }, { 5, 12, 6, 13 }, { 6, 18, 7, 17 }, { 8, 16, 9, 15 }, { 10, 19, 11, 20 }, { 11, 4, 12, 5 }, { 14, 1, 15, 2 }, { 16, 8, 17, 7 }, { 18, 4, 19, 3 }, { 20, 13, 1, 14 } } }, { "10_{163}", { { 1, 8, 2, 9 }, { 3, 11, 4, 10 }, { 6, 14, 7, 13 }, { 9, 17, 10, 16 }, { 11, 18, 12, 19 }, { 12, 8, 13, 7 }, { 14, 6, 15, 5 }, { 15, 1, 16, 20 }, { 17, 2, 18, 3 }, { 19, 5, 20, 4 } } }, { "10_{164}", { { 2, 12, 3, 11 }, { 3, 16, 4, 17 }, { 6, 14, 7, 13 }, { 8, 15, 9, 16 }, { 9, 5, 10, 4 }, { 12, 2, 13, 1 }, { 14, 19, 15, 20 }, { 17, 10, 18, 11 }, { 18, 5, 19, 6 }, { 20, 8, 1, 7 } } }, { "10_{165}", { { 1, 8, 2, 9 }, { 3, 12, 4, 13 }, { 4, 17, 5, 18 }, { 7, 2, 8, 3 }, { 9, 14, 10, 15 }, { 11, 17, 12, 16 }, { 13, 6, 14, 7 }, { 15, 20, 16, 1 }, { 18, 5, 19, 6 }, { 19, 11, 20, 10 } } } }; unsigned rolfsen_crossing_knots (unsigned n) { assert (n <= 10); switch (n) { case 0: // ??? really? case 1: case 2: return 0; case 3: return sizeof rolfsen3 / sizeof rolfsen3[0]; case 4: return sizeof rolfsen4 / sizeof rolfsen4[0]; case 5: return sizeof rolfsen5 / sizeof rolfsen5[0]; case 6: return sizeof rolfsen6 / sizeof rolfsen6[0]; case 7: return sizeof rolfsen7 / sizeof rolfsen7[0]; case 8: return sizeof rolfsen8 / sizeof rolfsen8[0]; case 9: return sizeof rolfsen9 / sizeof rolfsen9[0]; case 10: return sizeof rolfsen10 / sizeof rolfsen10[0]; default: abort (); } } planar_diagram rolfsen_knot (unsigned n, unsigned k) { assert (n <= 10); assert (k >= 1); assert (k <= rolfsen_crossing_knots (n)); k --; switch (n) { case 3: return planar_diagram (rolfsen3[k].name, 3, rolfsen3[k].crossing_ar); case 4: return planar_diagram (rolfsen4[k].name, 4, rolfsen4[k].crossing_ar); case 5: return planar_diagram (rolfsen5[k].name, 5, rolfsen5[k].crossing_ar); case 6: return planar_diagram (rolfsen6[k].name, 6, rolfsen6[k].crossing_ar); case 7: return planar_diagram (rolfsen7[k].name, 7, rolfsen7[k].crossing_ar); case 8: return planar_diagram (rolfsen8[k].name, 8, rolfsen8[k].crossing_ar); case 9: return planar_diagram (rolfsen9[k].name, 9, rolfsen9[k].crossing_ar); case 10: return planar_diagram (rolfsen10[k].name, 10, rolfsen10[k].crossing_ar); default: abort (); } } unsigned htw_alternating[16] = { 0, 0, 1, 1, 2, 3, 7, 18, 41, 123, 367, 1288, 4878, 19536, 85263, 379799 }; unsigned htw_nonalternating[16] = { 0, 0, 0, 0, 0, 0, 0, 3, 8, 42, 185, 888, 5110, 27436, 168030, 1008906 }; unsigned htw_knots (unsigned n, bool alternating) { assert (between (1, n, 16)); if (alternating) return htw_alternating[n - 1]; else return htw_nonalternating[n - 1]; } unsigned htw_knots (unsigned n) { assert (between (1, n, 16)); return htw_alternating[n - 1] + htw_nonalternating[n - 1]; } dt_code htw_knot (unsigned n, bool alternating, unsigned k) { assert (between (1, n, 16)); assert (between (1, k, htw_knots (n, alternating))); const char *file; long off; if (alternating) { unsigned before = 0; for (unsigned i = 0; i < n - 1; i ++) before += htw_alternating[i]; off = 8 * (before + k - 1); file = HOME "/alternating"; } else { unsigned before = 0; for (unsigned i = 0; i < n - 1; i ++) before += htw_nonalternating[i]; off = 10 * (before + k - 1); file = HOME "/nonalternating"; } FILE *fp = fopen (file, "r"); if (fp == 0) { stderror ("fopen: %s", file); exit (EXIT_FAILURE); } if (fseek (fp, off, SEEK_SET) != 0) { stderror ("fseek"); exit (EXIT_FAILURE); } unsigned char buf[10]; size_t count = (n + 1) / 2; if (!alternating) count += 2; if (fread (buf, 1, count, fp) != count) { stderror ("fread"); exit (EXIT_FAILURE); } fclose (fp); fp = 0; int even_labels_ar[16]; for (unsigned i = 0; i < n; i ++) { unsigned j = buf[i / 2]; j = is_even (i) ? j >> 4 : j & 0xf; if (j == 0) j = 16; j *= 2; even_labels_ar[i] = j; } if (!alternating) { unsigned signs = buf[count - 2] << 8 | buf[count - 1]; for (unsigned i = 0; i < n; i ++) { if (!unsigned_bittest (signs, 16 - i)) even_labels_ar[i] *= -1; } } char buf2[100]; sprintf (buf2, "%d%c%d", n, alternating ? 'a' : 'n', k); return dt_code (std::string (buf2), n, even_labels_ar); } dt_code htw_knot (unsigned n, unsigned k) { assert (between (1, n, 16)); assert (k >= 1); unsigned na = htw_knots (n, 1); if (k <= na) return htw_knot (n, 1, k); else return htw_knot (n, 0, k - na); } unsigned mt_alternating[14] = { 0, 0, 0, 1, 3, 8, 14, 39, 96, 297, 915, 3308, 12417, 51347, }; unsigned mt_nonalternating[14] = { 0, 0, 0, 0, 0, 1, 2, 11, 36, 155, 644, 3144, 16454, 91616, }; unsigned mt_links (unsigned n, bool alternating) { assert (between (1, n, 14)); if (alternating) return mt_alternating[n - 1]; else return mt_nonalternating[n - 1]; } unsigned mt_links (unsigned n) { assert (between (1, n, 14)); return mt_alternating[n - 1] + mt_nonalternating[n - 1]; } dt_code mt_link (unsigned n, bool alternating, unsigned k) { assert (between (1, n, 14)); assert (between (1, k, mt_links (n, alternating))); char buf[1000]; sprintf (buf, HOME "/mtlinks/hyperbolic_data_%02d%c", n, alternating ? 'a' : 'n'); FILE *fp = fopen (buf, "r"); if (fp == 0) { stderror ("fopen: %s", buf); exit (EXIT_FAILURE); } char *p; for (unsigned i = 1; i <= k; i ++) { if (fgets (buf, 1000, fp) == 0) { stderror ("fgets: %s", buf); exit (EXIT_FAILURE); } assert (alpha_to_int (buf[0]) == (int)n); } fclose (fp); char buf2[1000]; sprintf (buf2, "L%d%c%d", n, alternating ? 'a' : 'n', k); return dt_code (buf2, buf); } dt_code mt_link (unsigned n, unsigned k) { assert (between (1, n, 16)); assert (k >= 1); unsigned na = mt_links (n, 1); if (k <= na) return mt_link (n, 1, k); else return mt_link (n, 0, k - na); } planar_diagram torus_knot (unsigned n_strands, unsigned n_shifts) { basedvector, 1> crossings ((n_strands - 1) * n_shifts); for (unsigned i = 1; i <= crossings.size (); i ++) crossings[i].resize (4); basedvector start_strands (n_strands), strands (n_strands), new_strands (n_strands); unsigned n_crossings = 0; unsigned n_edges = 0; for (unsigned i = 1; i <= n_strands; i ++) strands[i] = start_strands[i] = ++ n_edges; for (unsigned i = 1; i <= n_shifts; i ++) { if (i == n_shifts) new_strands = start_strands; else { for (unsigned j = 1; j <= n_strands; j ++) new_strands[j] = ++ n_edges; } unsigned p = strands[1]; for (unsigned j = 1; j < n_strands; j ++) { unsigned c = ++ n_crossings; unsigned newp; if (j == n_strands - 1) newp = new_strands[n_strands]; else newp = ++ n_edges; crossings[c][1] = strands[j + 1]; crossings[c][2] = newp; crossings[c][3] = new_strands[j]; crossings[c][4] = p; p = newp; } basedvector tmp = new_strands; new_strands = strands; strands = tmp; } assert (n_crossings == crossings.size ()); assert (n_edges == n_crossings * 2); char buf[1000]; sprintf (buf, "T(%d,%d)", n_strands, n_shifts); return planar_diagram (std::string (buf), crossings); } knot_diagram braid (unsigned n_strands, unsigned n_twists, int twists_ar[]) { basedvector twists (n_twists); for (unsigned i = 1; i <= n_twists; i ++) twists[i] = twists_ar[i - 1]; return braid (n_strands, twists); } knot_diagram braid (unsigned n_strands, const basedvector &twists) { unsigned e = 0; basedvector final_strands (n_strands); basedvector strands (n_strands); for (unsigned i = 1; i <= n_strands; i ++) { ++ e; final_strands[i] = strands[i] = e; } basedvector last_twist (n_strands); for (unsigned i = 1; i <= n_strands; i ++) last_twist[i] = 0; for (unsigned i = 1; i <= twists.size (); i ++) { unsigned t = abs (twists[i]); last_twist[t] = i; last_twist[t + 1] = i; } unsigned n_crossings = twists.size (); for (unsigned i = 1; i <= n_strands; i ++) { if (last_twist[i] == 0) n_crossings ++; } basedvector, 1> crossings (n_crossings); for (unsigned i = 1; i <= n_crossings; i ++) crossings[i] = basedvector (4); unsigned c = twists.size (); for (unsigned i = 1; i <= n_strands; i ++) { if (last_twist[i] == 0) { ++ c; unsigned e1 = strands[i]; unsigned e2 = ++ e; strands[i] = final_strands[i] = 0; crossings[c][1] = edge_from_ept (e1); crossings[c][2] = edge_to_ept (e2); crossings[c][3] = edge_from_ept (e2); crossings[c][4] = edge_to_ept (e1); } } assert (c == n_crossings); for (unsigned i = 1; i <= twists.size (); i ++) { unsigned t = abs (twists[i]); unsigned e1 = strands[t], e4 = strands[t + 1]; unsigned e2, e3; if (last_twist[t] == i) { assert (final_strands[t] != 0); e2 = final_strands[t]; strands[t] = final_strands[t] = 0; } else { e ++; e2 = e; strands[t] = e; } if (last_twist[t + 1] == i) { assert (final_strands[t + 1] != 0); e3 = final_strands[t + 1]; strands[t + 1] = final_strands[t + 1] = 0; } else { e ++; e3 = e; strands[t + 1] = e; } if (twists[i] > 0) { crossings[i][1] = edge_to_ept (e1); crossings[i][2] = edge_from_ept (e2); crossings[i][3] = edge_from_ept (e3); crossings[i][4] = edge_to_ept (e4); } else { crossings[i][1] = edge_from_ept (e2); crossings[i][2] = edge_from_ept (e3); crossings[i][3] = edge_to_ept (e4); crossings[i][4] = edge_to_ept (e1); } } assert (e == n_crossings * 2); #ifndef NDEBUG for (unsigned i = 1; i <= n_strands; i ++) { assert (strands[i] == 0); assert (final_strands[i] == 0); } #endif return knot_diagram ("abraid", crossings); } basedvector, 1> mutant_knot_groups (unsigned n) { assert (11 <= n && n <= 15); char buf[1000]; sprintf (buf, HOME "/mutant_knot_groups/dat%d", n); FILE *fp = fopen (buf, "r"); if (fp == 0) { stderror ("fopen: %s", buf); exit (EXIT_FAILURE); } basedvector, 1> r; while (fgets (buf, sizeof buf, fp) != 0) { const char *p = buf; basedvector g; unsigned i; int k; while (sscanf (p, "%d%n", &i, &k) == 1) { g.append (i); p += k; } assert (*p == '\n'); assert (g.size () > 0); r.append (g); } return r; } knot_diagram knot_desc::diagram () const { switch (t) { case ROLFSEN: return knot_diagram (rolfsen_knot (i, j)); case HTW: return knot_diagram (htw_knot (i, j)); case HTW_ALT: return knot_diagram (htw_knot (i, 1, j)); case HTW_NONALT: return knot_diagram (htw_knot (i, 0, j)); case MT: return knot_diagram (mt_link (i, j)); case MT_ALT: return knot_diagram (mt_link (i, 1, j)); case MT_NONALT: return knot_diagram (mt_link (i, 0, j)); case TORUS: return knot_diagram (torus_knot (i, j)); default: abort (); } } std::string knot_desc::name () const { char buf[1000]; #if 0 sprintf (buf, "knot_desc(%d, %d, %d)", (int)t, i, j); return buf; #endif switch (t) { case ROLFSEN: sprintf (buf, "%d_%d", i, j); break; case HTW: { unsigned na = htw_knots (i, 1); if (j <= na) sprintf (buf, "%da%d", i, j); else sprintf (buf, "%dn%d", i, j - na); } break; case HTW_ALT: sprintf (buf, "%da%d", i, j); break; case HTW_NONALT: sprintf (buf, "%dn%d", i, j); break; case MT: { unsigned na = mt_links (i, 1); if (j <= na) sprintf (buf, "L%da%d", i, j); else sprintf (buf, "L%dn%d", i, j - na); } break; case MT_ALT: sprintf (buf, "L%da%d", i, j); break; case MT_NONALT: sprintf (buf, "L%dn%d", i, j); break; case TORUS: sprintf (buf, "T(%d, %d)", i, j); break; default: abort (); } return buf; } unsigned knot_desc::table_crossing_knots () const { switch (t) { case ROLFSEN: return rolfsen_crossing_knots (i); case HTW: return htw_knots (i); case HTW_ALT: return htw_knots (i, 1); case HTW_NONALT: return htw_knots (i, 0); case MT: return mt_links (i); case MT_ALT: return mt_links (i, 1); case MT_NONALT: return mt_links (i, 0); default: abort (); } } knot_desc::knot_desc (reader &r) { int x; read (r, x); t = (table)x; read (r, i); read (r, j); } void knot_desc::write_self (writer &w) const { write (w, (int)t); write (w, i); write (w, j); }