tak([16, 11, 6], 11).

clause(2, tak([var('X'), var('Y'), var('Z')], var('Z')), (var('X') =< var('Y'), !)).
clause(3,
       tak([var('X'), var('Y'), var('Z')], var('A')),
       (var('X1') is var('X') - 1,
        tak([var('X1'), var('Y'), var('Z')], var('A1')),
        var('Y1') is var('Y') - 1,
        tak([var('Y1'), var('Z'), var('X')], var('A2')),
        var('Z1') is var('Z') - 1,
        tak([var('Z1'), var('X'), var('Y')], var('A3')),
        tak([var('A1'), var('A2'), var('A3')], var('A')))).

step(tak([16, 11, 6], 11),
     rule(3),
     ['X' = 16,
      'Y' = 11,
      'Z' = 6,
      'A' = 11,
      'X1' = 15,
      'A1' = 7,
      'Y1' = 10,
      'A2' = 10,
      'Z1' = 5,
      'A3' = 11],
     [15 is 16 - 1,
      tak([15, 11, 6], 7),
      10 is 11 - 1,
      tak([10, 6, 16], 10),
      5 is 6 - 1,
      tak([5, 16, 11], 11),
      tak([7, 10, 11], 11)]).
step(15 is 16 - 1, builtin, [], []).
step(tak([15, 11, 6], 7),
     rule(3),
     ['X' = 15,
      'Y' = 11,
      'Z' = 6,
      'A' = 7,
      'X1' = 14,
      'A1' = 11,
      'Y1' = 10,
      'A2' = 7,
      'Z1' = 5,
      'A3' = 11],
     [14 is 15 - 1,
      tak([14, 11, 6], 11),
      10 is 11 - 1,
      tak([10, 6, 15], 7),
      5 is 6 - 1,
      tak([5, 15, 11], 11),
      tak([11, 7, 11], 7)]).
step(14 is 15 - 1, builtin, [], []).
step(tak([14, 11, 6], 11),
     rule(3),
     ['X' = 14,
      'Y' = 11,
      'Z' = 6,
      'A' = 11,
      'X1' = 13,
      'A1' = 7,
      'Y1' = 10,
      'A2' = 10,
      'Z1' = 5,
      'A3' = 11],
     [13 is 14 - 1,
      tak([13, 11, 6], 7),
      10 is 11 - 1,
      tak([10, 6, 14], 10),
      5 is 6 - 1,
      tak([5, 14, 11], 11),
      tak([7, 10, 11], 11)]).
step(13 is 14 - 1, builtin, [], []).
step(tak([13, 11, 6], 7),
     rule(3),
     ['X' = 13,
      'Y' = 11,
      'Z' = 6,
      'A' = 7,
      'X1' = 12,
      'A1' = 11,
      'Y1' = 10,
      'A2' = 7,
      'Z1' = 5,
      'A3' = 11],
     [12 is 13 - 1,
      tak([12, 11, 6], 11),
      10 is 11 - 1,
      tak([10, 6, 13], 7),
      5 is 6 - 1,
      tak([5, 13, 11], 11),
      tak([11, 7, 11], 7)]).
step(12 is 13 - 1, builtin, [], []).
step(tak([12, 11, 6], 11),
     rule(3),
     ['X' = 12,
      'Y' = 11,
      'Z' = 6,
      'A' = 11,
      'X1' = 11,
      'A1' = 6,
      'Y1' = 10,
      'A2' = 10,
      'Z1' = 5,
      'A3' = 11],
     [11 is 12 - 1,
      tak([11, 11, 6], 6),
      10 is 11 - 1,
      tak([10, 6, 12], 10),
      5 is 6 - 1,
      tak([5, 12, 11], 11),
      tak([6, 10, 11], 11)]).
step(11 is 12 - 1, builtin, [], []).
step(tak([11, 11, 6], 6), rule(2), ['X' = 11, 'Y' = 11, 'Z' = 6], [11 =< 11, !]).
step(11 =< 11, builtin, [], []).
step(!, builtin, [], []).
step(10 is 11 - 1, builtin, [], []).
step(tak([10, 6, 12], 10),
     rule(3),
     ['X' = 10,
      'Y' = 6,
      'Z' = 12,
      'A' = 10,
      'X1' = 9,
      'A1' = 7,
      'Y1' = 5,
      'A2' = 10,
      'Z1' = 11,
      'A3' = 10],
     [9 is 10 - 1,
      tak([9, 6, 12], 7),
      5 is 6 - 1,
      tak([5, 12, 10], 10),
      11 is 12 - 1,
      tak([11, 10, 6], 10),
      tak([7, 10, 10], 10)]).
step(9 is 10 - 1, builtin, [], []).
step(tak([9, 6, 12], 7),
     rule(3),
     ['X' = 9,
      'Y' = 6,
      'Z' = 12,
      'A' = 7,
      'X1' = 8,
      'A1' = 8,
      'Y1' = 5,
      'A2' = 9,
      'Z1' = 11,
      'A3' = 7],
     [8 is 9 - 1,
      tak([8, 6, 12], 8),
      5 is 6 - 1,
      tak([5, 12, 9], 9),
      11 is 12 - 1,
      tak([11, 9, 6], 7),
      tak([8, 9, 7], 7)]).
step(8 is 9 - 1, builtin, [], []).
step(tak([8, 6, 12], 8),
     rule(3),
     ['X' = 8,
      'Y' = 6,
      'Z' = 12,
      'A' = 8,
      'X1' = 7,
      'A1' = 7,
      'Y1' = 5,
      'A2' = 8,
      'Z1' = 11,
      'A3' = 8],
     [7 is 8 - 1,
      tak([7, 6, 12], 7),
      5 is 6 - 1,
      tak([5, 12, 8], 8),
      11 is 12 - 1,
      tak([11, 8, 6], 8),
      tak([7, 8, 8], 8)]).
step(7 is 8 - 1, builtin, [], []).
step(tak([7, 6, 12], 7),
     rule(3),
     ['X' = 7,
      'Y' = 6,
      'Z' = 12,
      'A' = 7,
      'X1' = 6,
      'A1' = 12,
      'Y1' = 5,
      'A2' = 7,
      'Z1' = 11,
      'A3' = 7],
     [6 is 7 - 1,
      tak([6, 6, 12], 12),
      5 is 6 - 1,
      tak([5, 12, 7], 7),
      11 is 12 - 1,
      tak([11, 7, 6], 7),
      tak([12, 7, 7], 7)]).
step(6 is 7 - 1, builtin, [], []).
step(tak([6, 6, 12], 12), rule(2), ['X' = 6, 'Y' = 6, 'Z' = 12], [6 =< 6, !]).
step(6 =< 6, builtin, [], []).
step(5 is 6 - 1, builtin, [], []).
step(tak([5, 12, 7], 7), rule(2), ['X' = 5, 'Y' = 12, 'Z' = 7], [5 =< 12, !]).
step(5 =< 12, builtin, [], []).
step(tak([11, 7, 6], 7),
     rule(3),
     ['X' = 11,
      'Y' = 7,
      'Z' = 6,
      'A' = 7,
      'X1' = 10,
      'A1' = 7,
      'Y1' = 6,
      'A2' = 11,
      'Z1' = 5,
      'A3' = 7],
     [10 is 11 - 1,
      tak([10, 7, 6], 7),
      6 is 7 - 1,
      tak([6, 6, 11], 11),
      5 is 6 - 1,
      tak([5, 11, 7], 7),
      tak([7, 11, 7], 7)]).
step(tak([10, 7, 6], 7),
     rule(3),
     ['X' = 10,
      'Y' = 7,
      'Z' = 6,
      'A' = 7,
      'X1' = 9,
      'A1' = 7,
      'Y1' = 6,
      'A2' = 10,
      'Z1' = 5,
      'A3' = 7],
     [9 is 10 - 1,
      tak([9, 7, 6], 7),
      6 is 7 - 1,
      tak([6, 6, 10], 10),
      5 is 6 - 1,
      tak([5, 10, 7], 7),
      tak([7, 10, 7], 7)]).
step(tak([9, 7, 6], 7),
     rule(3),
     ['X' = 9,
      'Y' = 7,
      'Z' = 6,
      'A' = 7,
      'X1' = 8,
      'A1' = 7,
      'Y1' = 6,
      'A2' = 9,
      'Z1' = 5,
      'A3' = 7],
     [8 is 9 - 1,
      tak([8, 7, 6], 7),
      6 is 7 - 1,
      tak([6, 6, 9], 9),
      5 is 6 - 1,
      tak([5, 9, 7], 7),
      tak([7, 9, 7], 7)]).
step(tak([8, 7, 6], 7),
     rule(3),
     ['X' = 8,
      'Y' = 7,
      'Z' = 6,
      'A' = 7,
      'X1' = 7,
      'A1' = 6,
      'Y1' = 6,
      'A2' = 8,
      'Z1' = 5,
      'A3' = 7],
     [7 is 8 - 1,
      tak([7, 7, 6], 6),
      6 is 7 - 1,
      tak([6, 6, 8], 8),
      5 is 6 - 1,
      tak([5, 8, 7], 7),
      tak([6, 8, 7], 7)]).
step(tak([7, 7, 6], 6), rule(2), ['X' = 7, 'Y' = 7, 'Z' = 6], [7 =< 7, !]).
step(7 =< 7, builtin, [], []).
step(tak([6, 6, 8], 8), rule(2), ['X' = 6, 'Y' = 6, 'Z' = 8], [6 =< 6, !]).
step(tak([5, 8, 7], 7), rule(2), ['X' = 5, 'Y' = 8, 'Z' = 7], [5 =< 8, !]).
step(5 =< 8, builtin, [], []).
step(tak([6, 8, 7], 7), rule(2), ['X' = 6, 'Y' = 8, 'Z' = 7], [6 =< 8, !]).
step(6 =< 8, builtin, [], []).
step(tak([6, 6, 9], 9), rule(2), ['X' = 6, 'Y' = 6, 'Z' = 9], [6 =< 6, !]).
step(tak([5, 9, 7], 7), rule(2), ['X' = 5, 'Y' = 9, 'Z' = 7], [5 =< 9, !]).
step(5 =< 9, builtin, [], []).
step(tak([7, 9, 7], 7), rule(2), ['X' = 7, 'Y' = 9, 'Z' = 7], [7 =< 9, !]).
step(7 =< 9, builtin, [], []).
step(tak([6, 6, 10], 10), rule(2), ['X' = 6, 'Y' = 6, 'Z' = 10], [6 =< 6, !]).
step(tak([5, 10, 7], 7), rule(2), ['X' = 5, 'Y' = 10, 'Z' = 7], [5 =< 10, !]).
step(5 =< 10, builtin, [], []).
step(tak([7, 10, 7], 7), rule(2), ['X' = 7, 'Y' = 10, 'Z' = 7], [7 =< 10, !]).
step(7 =< 10, builtin, [], []).
step(tak([6, 6, 11], 11), rule(2), ['X' = 6, 'Y' = 6, 'Z' = 11], [6 =< 6, !]).
step(tak([5, 11, 7], 7), rule(2), ['X' = 5, 'Y' = 11, 'Z' = 7], [5 =< 11, !]).
step(5 =< 11, builtin, [], []).
step(tak([7, 11, 7], 7), rule(2), ['X' = 7, 'Y' = 11, 'Z' = 7], [7 =< 11, !]).
step(7 =< 11, builtin, [], []).
step(tak([12, 7, 7], 7),
     rule(3),
     ['X' = 12,
      'Y' = 7,
      'Z' = 7,
      'A' = 7,
      'X1' = 11,
      'A1' = 7,
      'Y1' = 6,
      'A2' = 12,
      'Z1' = 6,
      'A3' = 7],
     [11 is 12 - 1,
      tak([11, 7, 7], 7),
      6 is 7 - 1,
      tak([6, 7, 12], 12),
      6 is 7 - 1,
      tak([6, 12, 7], 7),
      tak([7, 12, 7], 7)]).
step(tak([11, 7, 7], 7),
     rule(3),
     ['X' = 11,
      'Y' = 7,
      'Z' = 7,
      'A' = 7,
      'X1' = 10,
      'A1' = 7,
      'Y1' = 6,
      'A2' = 11,
      'Z1' = 6,
      'A3' = 7],
     [10 is 11 - 1,
      tak([10, 7, 7], 7),
      6 is 7 - 1,
      tak([6, 7, 11], 11),
      6 is 7 - 1,
      tak([6, 11, 7], 7),
      tak([7, 11, 7], 7)]).
step(tak([10, 7, 7], 7),
     rule(3),
     ['X' = 10,
      'Y' = 7,
      'Z' = 7,
      'A' = 7,
      'X1' = 9,
      'A1' = 7,
      'Y1' = 6,
      'A2' = 10,
      'Z1' = 6,
      'A3' = 7],
     [9 is 10 - 1,
      tak([9, 7, 7], 7),
      6 is 7 - 1,
      tak([6, 7, 10], 10),
      6 is 7 - 1,
      tak([6, 10, 7], 7),
      tak([7, 10, 7], 7)]).
step(tak([9, 7, 7], 7),
     rule(3),
     ['X' = 9,
      'Y' = 7,
      'Z' = 7,
      'A' = 7,
      'X1' = 8,
      'A1' = 7,
      'Y1' = 6,
      'A2' = 9,
      'Z1' = 6,
      'A3' = 7],
     [8 is 9 - 1,
      tak([8, 7, 7], 7),
      6 is 7 - 1,
      tak([6, 7, 9], 9),
      6 is 7 - 1,
      tak([6, 9, 7], 7),
      tak([7, 9, 7], 7)]).
step(tak([8, 7, 7], 7),
     rule(3),
     ['X' = 8,
      'Y' = 7,
      'Z' = 7,
      'A' = 7,
      'X1' = 7,
      'A1' = 7,
      'Y1' = 6,
      'A2' = 8,
      'Z1' = 6,
      'A3' = 7],
     [7 is 8 - 1,
      tak([7, 7, 7], 7),
      6 is 7 - 1,
      tak([6, 7, 8], 8),
      6 is 7 - 1,
      tak([6, 8, 7], 7),
      tak([7, 8, 7], 7)]).
step(tak([7, 7, 7], 7), rule(2), ['X' = 7, 'Y' = 7, 'Z' = 7], [7 =< 7, !]).
step(tak([6, 7, 8], 8), rule(2), ['X' = 6, 'Y' = 7, 'Z' = 8], [6 =< 7, !]).
step(6 =< 7, builtin, [], []).
step(tak([7, 8, 7], 7), rule(2), ['X' = 7, 'Y' = 8, 'Z' = 7], [7 =< 8, !]).
step(7 =< 8, builtin, [], []).
step(tak([6, 7, 9], 9), rule(2), ['X' = 6, 'Y' = 7, 'Z' = 9], [6 =< 7, !]).
step(tak([6, 9, 7], 7), rule(2), ['X' = 6, 'Y' = 9, 'Z' = 7], [6 =< 9, !]).
step(6 =< 9, builtin, [], []).
step(tak([6, 7, 10], 10), rule(2), ['X' = 6, 'Y' = 7, 'Z' = 10], [6 =< 7, !]).
step(tak([6, 10, 7], 7), rule(2), ['X' = 6, 'Y' = 10, 'Z' = 7], [6 =< 10, !]).
step(6 =< 10, builtin, [], []).
step(tak([6, 7, 11], 11), rule(2), ['X' = 6, 'Y' = 7, 'Z' = 11], [6 =< 7, !]).
step(tak([6, 11, 7], 7), rule(2), ['X' = 6, 'Y' = 11, 'Z' = 7], [6 =< 11, !]).
step(6 =< 11, builtin, [], []).
step(tak([6, 7, 12], 12), rule(2), ['X' = 6, 'Y' = 7, 'Z' = 12], [6 =< 7, !]).
step(tak([6, 12, 7], 7), rule(2), ['X' = 6, 'Y' = 12, 'Z' = 7], [6 =< 12, !]).
step(6 =< 12, builtin, [], []).
step(tak([7, 12, 7], 7), rule(2), ['X' = 7, 'Y' = 12, 'Z' = 7], [7 =< 12, !]).
step(7 =< 12, builtin, [], []).
step(tak([5, 12, 8], 8), rule(2), ['X' = 5, 'Y' = 12, 'Z' = 8], [5 =< 12, !]).
step(tak([11, 8, 6], 8),
     rule(3),
     ['X' = 11,
      'Y' = 8,
      'Z' = 6,
      'A' = 8,
      'X1' = 10,
      'A1' = 7,
      'Y1' = 7,
      'A2' = 7,
      'Z1' = 5,
      'A3' = 8],
     [10 is 11 - 1,
      tak([10, 8, 6], 7),
      7 is 8 - 1,
      tak([7, 6, 11], 7),
      5 is 6 - 1,
      tak([5, 11, 8], 8),
      tak([7, 7, 8], 8)]).
step(tak([10, 8, 6], 7),
     rule(3),
     ['X' = 10,
      'Y' = 8,
      'Z' = 6,
      'A' = 7,
      'X1' = 9,
      'A1' = 8,
      'Y1' = 7,
      'A2' = 7,
      'Z1' = 5,
      'A3' = 8],
     [9 is 10 - 1,
      tak([9, 8, 6], 8),
      7 is 8 - 1,
      tak([7, 6, 10], 7),
      5 is 6 - 1,
      tak([5, 10, 8], 8),
      tak([8, 7, 8], 7)]).
step(tak([9, 8, 6], 8),
     rule(3),
     ['X' = 9,
      'Y' = 8,
      'Z' = 6,
      'A' = 8,
      'X1' = 8,
      'A1' = 6,
      'Y1' = 7,
      'A2' = 7,
      'Z1' = 5,
      'A3' = 8],
     [8 is 9 - 1,
      tak([8, 8, 6], 6),
      7 is 8 - 1,
      tak([7, 6, 9], 7),
      5 is 6 - 1,
      tak([5, 9, 8], 8),
      tak([6, 7, 8], 8)]).
step(tak([8, 8, 6], 6), rule(2), ['X' = 8, 'Y' = 8, 'Z' = 6], [8 =< 8, !]).
step(8 =< 8, builtin, [], []).
step(tak([7, 6, 9], 7),
     rule(3),
     ['X' = 7,
      'Y' = 6,
      'Z' = 9,
      'A' = 7,
      'X1' = 6,
      'A1' = 9,
      'Y1' = 5,
      'A2' = 7,
      'Z1' = 8,
      'A3' = 7],
     [6 is 7 - 1,
      tak([6, 6, 9], 9),
      5 is 6 - 1,
      tak([5, 9, 7], 7),
      8 is 9 - 1,
      tak([8, 7, 6], 7),
      tak([9, 7, 7], 7)]).
step(tak([5, 9, 8], 8), rule(2), ['X' = 5, 'Y' = 9, 'Z' = 8], [5 =< 9, !]).
step(tak([7, 6, 10], 7),
     rule(3),
     ['X' = 7,
      'Y' = 6,
      'Z' = 10,
      'A' = 7,
      'X1' = 6,
      'A1' = 10,
      'Y1' = 5,
      'A2' = 7,
      'Z1' = 9,
      'A3' = 7],
     [6 is 7 - 1,
      tak([6, 6, 10], 10),
      5 is 6 - 1,
      tak([5, 10, 7], 7),
      9 is 10 - 1,
      tak([9, 7, 6], 7),
      tak([10, 7, 7], 7)]).
step(tak([5, 10, 8], 8), rule(2), ['X' = 5, 'Y' = 10, 'Z' = 8], [5 =< 10, !]).
step(tak([8, 7, 8], 7),
     rule(3),
     ['X' = 8,
      'Y' = 7,
      'Z' = 8,
      'A' = 7,
      'X1' = 7,
      'A1' = 8,
      'Y1' = 6,
      'A2' = 8,
      'Z1' = 7,
      'A3' = 7],
     [7 is 8 - 1,
      tak([7, 7, 8], 8),
      6 is 7 - 1,
      tak([6, 8, 8], 8),
      7 is 8 - 1,
      tak([7, 8, 7], 7),
      tak([8, 8, 7], 7)]).
step(tak([7, 7, 8], 8), rule(2), ['X' = 7, 'Y' = 7, 'Z' = 8], [7 =< 7, !]).
step(tak([6, 8, 8], 8), rule(2), ['X' = 6, 'Y' = 8, 'Z' = 8], [6 =< 8, !]).
step(tak([8, 8, 7], 7), rule(2), ['X' = 8, 'Y' = 8, 'Z' = 7], [8 =< 8, !]).
step(tak([7, 6, 11], 7),
     rule(3),
     ['X' = 7,
      'Y' = 6,
      'Z' = 11,
      'A' = 7,
      'X1' = 6,
      'A1' = 11,
      'Y1' = 5,
      'A2' = 7,
      'Z1' = 10,
      'A3' = 7],
     [6 is 7 - 1,
      tak([6, 6, 11], 11),
      5 is 6 - 1,
      tak([5, 11, 7], 7),
      10 is 11 - 1,
      tak([10, 7, 6], 7),
      tak([11, 7, 7], 7)]).
step(tak([5, 11, 8], 8), rule(2), ['X' = 5, 'Y' = 11, 'Z' = 8], [5 =< 11, !]).
step(tak([7, 8, 8], 8), rule(2), ['X' = 7, 'Y' = 8, 'Z' = 8], [7 =< 8, !]).
step(tak([5, 12, 9], 9), rule(2), ['X' = 5, 'Y' = 12, 'Z' = 9], [5 =< 12, !]).
step(tak([11, 9, 6], 7),
     rule(3),
     ['X' = 11,
      'Y' = 9,
      'Z' = 6,
      'A' = 7,
      'X1' = 10,
      'A1' = 9,
      'Y1' = 8,
      'A2' = 7,
      'Z1' = 5,
      'A3' = 9],
     [10 is 11 - 1,
      tak([10, 9, 6], 9),
      8 is 9 - 1,
      tak([8, 6, 11], 7),
      5 is 6 - 1,
      tak([5, 11, 9], 9),
      tak([9, 7, 9], 7)]).
step(tak([10, 9, 6], 9),
     rule(3),
     ['X' = 10,
      'Y' = 9,
      'Z' = 6,
      'A' = 9,
      'X1' = 9,
      'A1' = 6,
      'Y1' = 8,
      'A2' = 8,
      'Z1' = 5,
      'A3' = 9],
     [9 is 10 - 1,
      tak([9, 9, 6], 6),
      8 is 9 - 1,
      tak([8, 6, 10], 8),
      5 is 6 - 1,
      tak([5, 10, 9], 9),
      tak([6, 8, 9], 9)]).
step(tak([9, 9, 6], 6), rule(2), ['X' = 9, 'Y' = 9, 'Z' = 6], [9 =< 9, !]).
step(9 =< 9, builtin, [], []).
step(tak([8, 6, 10], 8),
     rule(3),
     ['X' = 8,
      'Y' = 6,
      'Z' = 10,
      'A' = 8,
      'X1' = 7,
      'A1' = 7,
      'Y1' = 5,
      'A2' = 8,
      'Z1' = 9,
      'A3' = 8],
     [7 is 8 - 1,
      tak([7, 6, 10], 7),
      5 is 6 - 1,
      tak([5, 10, 8], 8),
      9 is 10 - 1,
      tak([9, 8, 6], 8),
      tak([7, 8, 8], 8)]).
step(tak([5, 10, 9], 9), rule(2), ['X' = 5, 'Y' = 10, 'Z' = 9], [5 =< 10, !]).
step(tak([6, 8, 9], 9), rule(2), ['X' = 6, 'Y' = 8, 'Z' = 9], [6 =< 8, !]).
step(tak([8, 6, 11], 7),
     rule(3),
     ['X' = 8,
      'Y' = 6,
      'Z' = 11,
      'A' = 7,
      'X1' = 7,
      'A1' = 7,
      'Y1' = 5,
      'A2' = 8,
      'Z1' = 10,
      'A3' = 7],
     [7 is 8 - 1,
      tak([7, 6, 11], 7),
      5 is 6 - 1,
      tak([5, 11, 8], 8),
      10 is 11 - 1,
      tak([10, 8, 6], 7),
      tak([7, 8, 7], 7)]).
step(tak([5, 11, 9], 9), rule(2), ['X' = 5, 'Y' = 11, 'Z' = 9], [5 =< 11, !]).
step(tak([9, 7, 9], 7),
     rule(3),
     ['X' = 9,
      'Y' = 7,
      'Z' = 9,
      'A' = 7,
      'X1' = 8,
      'A1' = 8,
      'Y1' = 6,
      'A2' = 9,
      'Z1' = 8,
      'A3' = 7],
     [8 is 9 - 1,
      tak([8, 7, 9], 8),
      6 is 7 - 1,
      tak([6, 9, 9], 9),
      8 is 9 - 1,
      tak([8, 9, 7], 7),
      tak([8, 9, 7], 7)]).
step(tak([8, 7, 9], 8),
     rule(3),
     ['X' = 8,
      'Y' = 7,
      'Z' = 9,
      'A' = 8,
      'X1' = 7,
      'A1' = 9,
      'Y1' = 6,
      'A2' = 8,
      'Z1' = 8,
      'A3' = 7],
     [7 is 8 - 1,
      tak([7, 7, 9], 9),
      6 is 7 - 1,
      tak([6, 9, 8], 8),
      8 is 9 - 1,
      tak([8, 8, 7], 7),
      tak([9, 8, 7], 8)]).
step(tak([7, 7, 9], 9), rule(2), ['X' = 7, 'Y' = 7, 'Z' = 9], [7 =< 7, !]).
step(tak([6, 9, 8], 8), rule(2), ['X' = 6, 'Y' = 9, 'Z' = 8], [6 =< 9, !]).
step(tak([9, 8, 7], 8),
     rule(3),
     ['X' = 9,
      'Y' = 8,
      'Z' = 7,
      'A' = 8,
      'X1' = 8,
      'A1' = 7,
      'Y1' = 7,
      'A2' = 9,
      'Z1' = 6,
      'A3' = 8],
     [8 is 9 - 1,
      tak([8, 8, 7], 7),
      7 is 8 - 1,
      tak([7, 7, 9], 9),
      6 is 7 - 1,
      tak([6, 9, 8], 8),
      tak([7, 9, 8], 8)]).
step(tak([7, 9, 8], 8), rule(2), ['X' = 7, 'Y' = 9, 'Z' = 8], [7 =< 9, !]).
step(tak([6, 9, 9], 9), rule(2), ['X' = 6, 'Y' = 9, 'Z' = 9], [6 =< 9, !]).
step(tak([8, 9, 7], 7), rule(2), ['X' = 8, 'Y' = 9, 'Z' = 7], [8 =< 9, !]).
step(8 =< 9, builtin, [], []).
step(tak([5, 12, 10], 10), rule(2), ['X' = 5, 'Y' = 12, 'Z' = 10], [5 =< 12, !]).
step(tak([11, 10, 6], 10),
     rule(3),
     ['X' = 11,
      'Y' = 10,
      'Z' = 6,
      'A' = 10,
      'X1' = 10,
      'A1' = 6,
      'Y1' = 9,
      'A2' = 9,
      'Z1' = 5,
      'A3' = 10],
     [10 is 11 - 1,
      tak([10, 10, 6], 6),
      9 is 10 - 1,
      tak([9, 6, 11], 9),
      5 is 6 - 1,
      tak([5, 11, 10], 10),
      tak([6, 9, 10], 10)]).
step(tak([10, 10, 6], 6), rule(2), ['X' = 10, 'Y' = 10, 'Z' = 6], [10 =< 10, !]).
step(10 =< 10, builtin, [], []).
step(tak([9, 6, 11], 9),
     rule(3),
     ['X' = 9,
      'Y' = 6,
      'Z' = 11,
      'A' = 9,
      'X1' = 8,
      'A1' = 7,
      'Y1' = 5,
      'A2' = 9,
      'Z1' = 10,
      'A3' = 9],
     [8 is 9 - 1,
      tak([8, 6, 11], 7),
      5 is 6 - 1,
      tak([5, 11, 9], 9),
      10 is 11 - 1,
      tak([10, 9, 6], 9),
      tak([7, 9, 9], 9)]).
step(tak([7, 9, 9], 9), rule(2), ['X' = 7, 'Y' = 9, 'Z' = 9], [7 =< 9, !]).
step(tak([5, 11, 10], 10), rule(2), ['X' = 5, 'Y' = 11, 'Z' = 10], [5 =< 11, !]).
step(tak([6, 9, 10], 10), rule(2), ['X' = 6, 'Y' = 9, 'Z' = 10], [6 =< 9, !]).
step(tak([7, 10, 10], 10), rule(2), ['X' = 7, 'Y' = 10, 'Z' = 10], [7 =< 10, !]).
step(tak([5, 12, 11], 11), rule(2), ['X' = 5, 'Y' = 12, 'Z' = 11], [5 =< 12, !]).
step(tak([6, 10, 11], 11), rule(2), ['X' = 6, 'Y' = 10, 'Z' = 11], [6 =< 10, !]).
step(tak([10, 6, 13], 7),
     rule(3),
     ['X' = 10,
      'Y' = 6,
      'Z' = 13,
      'A' = 7,
      'X1' = 9,
      'A1' = 9,
      'Y1' = 5,
      'A2' = 10,
      'Z1' = 12,
      'A3' = 7],
     [9 is 10 - 1,
      tak([9, 6, 13], 9),
      5 is 6 - 1,
      tak([5, 13, 10], 10),
      12 is 13 - 1,
      tak([12, 10, 6], 7),
      tak([9, 10, 7], 7)]).
step(tak([9, 6, 13], 9),
     rule(3),
     ['X' = 9,
      'Y' = 6,
      'Z' = 13,
      'A' = 9,
      'X1' = 8,
      'A1' = 7,
      'Y1' = 5,
      'A2' = 9,
      'Z1' = 12,
      'A3' = 9],
     [8 is 9 - 1,
      tak([8, 6, 13], 7),
      5 is 6 - 1,
      tak([5, 13, 9], 9),
      12 is 13 - 1,
      tak([12, 9, 6], 9),
      tak([7, 9, 9], 9)]).
step(tak([8, 6, 13], 7),
     rule(3),
     ['X' = 8,
      'Y' = 6,
      'Z' = 13,
      'A' = 7,
      'X1' = 7,
      'A1' = 7,
      'Y1' = 5,
      'A2' = 8,
      'Z1' = 12,
      'A3' = 7],
     [7 is 8 - 1,
      tak([7, 6, 13], 7),
      5 is 6 - 1,
      tak([5, 13, 8], 8),
      12 is 13 - 1,
      tak([12, 8, 6], 7),
      tak([7, 8, 7], 7)]).
step(tak([7, 6, 13], 7),
     rule(3),
     ['X' = 7,
      'Y' = 6,
      'Z' = 13,
      'A' = 7,
      'X1' = 6,
      'A1' = 13,
      'Y1' = 5,
      'A2' = 7,
      'Z1' = 12,
      'A3' = 7],
     [6 is 7 - 1,
      tak([6, 6, 13], 13),
      5 is 6 - 1,
      tak([5, 13, 7], 7),
      12 is 13 - 1,
      tak([12, 7, 6], 7),
      tak([13, 7, 7], 7)]).
step(tak([6, 6, 13], 13), rule(2), ['X' = 6, 'Y' = 6, 'Z' = 13], [6 =< 6, !]).
step(tak([5, 13, 7], 7), rule(2), ['X' = 5, 'Y' = 13, 'Z' = 7], [5 =< 13, !]).
step(5 =< 13, builtin, [], []).
step(tak([12, 7, 6], 7),
     rule(3),
     ['X' = 12,
      'Y' = 7,
      'Z' = 6,
      'A' = 7,
      'X1' = 11,
      'A1' = 7,
      'Y1' = 6,
      'A2' = 12,
      'Z1' = 5,
      'A3' = 7],
     [11 is 12 - 1,
      tak([11, 7, 6], 7),
      6 is 7 - 1,
      tak([6, 6, 12], 12),
      5 is 6 - 1,
      tak([5, 12, 7], 7),
      tak([7, 12, 7], 7)]).
step(tak([13, 7, 7], 7),
     rule(3),
     ['X' = 13,
      'Y' = 7,
      'Z' = 7,
      'A' = 7,
      'X1' = 12,
      'A1' = 7,
      'Y1' = 6,
      'A2' = 13,
      'Z1' = 6,
      'A3' = 7],
     [12 is 13 - 1,
      tak([12, 7, 7], 7),
      6 is 7 - 1,
      tak([6, 7, 13], 13),
      6 is 7 - 1,
      tak([6, 13, 7], 7),
      tak([7, 13, 7], 7)]).
step(tak([6, 7, 13], 13), rule(2), ['X' = 6, 'Y' = 7, 'Z' = 13], [6 =< 7, !]).
step(tak([6, 13, 7], 7), rule(2), ['X' = 6, 'Y' = 13, 'Z' = 7], [6 =< 13, !]).
step(6 =< 13, builtin, [], []).
step(tak([7, 13, 7], 7), rule(2), ['X' = 7, 'Y' = 13, 'Z' = 7], [7 =< 13, !]).
step(7 =< 13, builtin, [], []).
step(tak([5, 13, 8], 8), rule(2), ['X' = 5, 'Y' = 13, 'Z' = 8], [5 =< 13, !]).
step(tak([12, 8, 6], 7),
     rule(3),
     ['X' = 12,
      'Y' = 8,
      'Z' = 6,
      'A' = 7,
      'X1' = 11,
      'A1' = 8,
      'Y1' = 7,
      'A2' = 7,
      'Z1' = 5,
      'A3' = 8],
     [11 is 12 - 1,
      tak([11, 8, 6], 8),
      7 is 8 - 1,
      tak([7, 6, 12], 7),
      5 is 6 - 1,
      tak([5, 12, 8], 8),
      tak([8, 7, 8], 7)]).
step(tak([5, 13, 9], 9), rule(2), ['X' = 5, 'Y' = 13, 'Z' = 9], [5 =< 13, !]).
step(tak([12, 9, 6], 9),
     rule(3),
     ['X' = 12,
      'Y' = 9,
      'Z' = 6,
      'A' = 9,
      'X1' = 11,
      'A1' = 7,
      'Y1' = 8,
      'A2' = 8,
      'Z1' = 5,
      'A3' = 9],
     [11 is 12 - 1,
      tak([11, 9, 6], 7),
      8 is 9 - 1,
      tak([8, 6, 12], 8),
      5 is 6 - 1,
      tak([5, 12, 9], 9),
      tak([7, 8, 9], 9)]).
step(tak([7, 8, 9], 9), rule(2), ['X' = 7, 'Y' = 8, 'Z' = 9], [7 =< 8, !]).
step(tak([5, 13, 10], 10), rule(2), ['X' = 5, 'Y' = 13, 'Z' = 10], [5 =< 13, !]).
step(tak([12, 10, 6], 7),
     rule(3),
     ['X' = 12,
      'Y' = 10,
      'Z' = 6,
      'A' = 7,
      'X1' = 11,
      'A1' = 10,
      'Y1' = 9,
      'A2' = 7,
      'Z1' = 5,
      'A3' = 10],
     [11 is 12 - 1,
      tak([11, 10, 6], 10),
      9 is 10 - 1,
      tak([9, 6, 12], 7),
      5 is 6 - 1,
      tak([5, 12, 10], 10),
      tak([10, 7, 10], 7)]).
step(tak([10, 7, 10], 7),
     rule(3),
     ['X' = 10,
      'Y' = 7,
      'Z' = 10,
      'A' = 7,
      'X1' = 9,
      'A1' = 7,
      'Y1' = 6,
      'A2' = 10,
      'Z1' = 9,
      'A3' = 7],
     [9 is 10 - 1,
      tak([9, 7, 10], 7),
      6 is 7 - 1,
      tak([6, 10, 10], 10),
      9 is 10 - 1,
      tak([9, 10, 7], 7),
      tak([7, 10, 7], 7)]).
step(tak([9, 7, 10], 7),
     rule(3),
     ['X' = 9,
      'Y' = 7,
      'Z' = 10,
      'A' = 7,
      'X1' = 8,
      'A1' = 8,
      'Y1' = 6,
      'A2' = 9,
      'Z1' = 9,
      'A3' = 7],
     [8 is 9 - 1,
      tak([8, 7, 10], 8),
      6 is 7 - 1,
      tak([6, 10, 9], 9),
      9 is 10 - 1,
      tak([9, 9, 7], 7),
      tak([8, 9, 7], 7)]).
step(tak([8, 7, 10], 8),
     rule(3),
     ['X' = 8,
      'Y' = 7,
      'Z' = 10,
      'A' = 8,
      'X1' = 7,
      'A1' = 10,
      'Y1' = 6,
      'A2' = 8,
      'Z1' = 9,
      'A3' = 8],
     [7 is 8 - 1,
      tak([7, 7, 10], 10),
      6 is 7 - 1,
      tak([6, 10, 8], 8),
      9 is 10 - 1,
      tak([9, 8, 7], 8),
      tak([10, 8, 8], 8)]).
step(tak([7, 7, 10], 10), rule(2), ['X' = 7, 'Y' = 7, 'Z' = 10], [7 =< 7, !]).
step(tak([6, 10, 8], 8), rule(2), ['X' = 6, 'Y' = 10, 'Z' = 8], [6 =< 10, !]).
step(tak([10, 8, 8], 8),
     rule(3),
     ['X' = 10,
      'Y' = 8,
      'Z' = 8,
      'A' = 8,
      'X1' = 9,
      'A1' = 8,
      'Y1' = 7,
      'A2' = 10,
      'Z1' = 7,
      'A3' = 8],
     [9 is 10 - 1,
      tak([9, 8, 8], 8),
      7 is 8 - 1,
      tak([7, 8, 10], 10),
      7 is 8 - 1,
      tak([7, 10, 8], 8),
      tak([8, 10, 8], 8)]).
step(tak([9, 8, 8], 8),
     rule(3),
     ['X' = 9,
      'Y' = 8,
      'Z' = 8,
      'A' = 8,
      'X1' = 8,
      'A1' = 8,
      'Y1' = 7,
      'A2' = 9,
      'Z1' = 7,
      'A3' = 8],
     [8 is 9 - 1,
      tak([8, 8, 8], 8),
      7 is 8 - 1,
      tak([7, 8, 9], 9),
      7 is 8 - 1,
      tak([7, 9, 8], 8),
      tak([8, 9, 8], 8)]).
step(tak([8, 8, 8], 8), rule(2), ['X' = 8, 'Y' = 8, 'Z' = 8], [8 =< 8, !]).
step(tak([8, 9, 8], 8), rule(2), ['X' = 8, 'Y' = 9, 'Z' = 8], [8 =< 9, !]).
step(tak([7, 8, 10], 10), rule(2), ['X' = 7, 'Y' = 8, 'Z' = 10], [7 =< 8, !]).
step(tak([7, 10, 8], 8), rule(2), ['X' = 7, 'Y' = 10, 'Z' = 8], [7 =< 10, !]).
step(tak([8, 10, 8], 8), rule(2), ['X' = 8, 'Y' = 10, 'Z' = 8], [8 =< 10, !]).
step(8 =< 10, builtin, [], []).
step(tak([6, 10, 9], 9), rule(2), ['X' = 6, 'Y' = 10, 'Z' = 9], [6 =< 10, !]).
step(tak([9, 9, 7], 7), rule(2), ['X' = 9, 'Y' = 9, 'Z' = 7], [9 =< 9, !]).
step(tak([6, 10, 10], 10), rule(2), ['X' = 6, 'Y' = 10, 'Z' = 10], [6 =< 10, !]).
step(tak([9, 10, 7], 7), rule(2), ['X' = 9, 'Y' = 10, 'Z' = 7], [9 =< 10, !]).
step(9 =< 10, builtin, [], []).
step(tak([5, 13, 11], 11), rule(2), ['X' = 5, 'Y' = 13, 'Z' = 11], [5 =< 13, !]).
step(tak([11, 7, 11], 7),
     rule(3),
     ['X' = 11,
      'Y' = 7,
      'Z' = 11,
      'A' = 7,
      'X1' = 10,
      'A1' = 7,
      'Y1' = 6,
      'A2' = 11,
      'Z1' = 10,
      'A3' = 7],
     [10 is 11 - 1,
      tak([10, 7, 11], 7),
      6 is 7 - 1,
      tak([6, 11, 11], 11),
      10 is 11 - 1,
      tak([10, 11, 7], 7),
      tak([7, 11, 7], 7)]).
step(tak([10, 7, 11], 7),
     rule(3),
     ['X' = 10,
      'Y' = 7,
      'Z' = 11,
      'A' = 7,
      'X1' = 9,
      'A1' = 9,
      'Y1' = 6,
      'A2' = 10,
      'Z1' = 10,
      'A3' = 7],
     [9 is 10 - 1,
      tak([9, 7, 11], 9),
      6 is 7 - 1,
      tak([6, 11, 10], 10),
      10 is 11 - 1,
      tak([10, 10, 7], 7),
      tak([9, 10, 7], 7)]).
step(tak([9, 7, 11], 9),
     rule(3),
     ['X' = 9,
      'Y' = 7,
      'Z' = 11,
      'A' = 9,
      'X1' = 8,
      'A1' = 8,
      'Y1' = 6,
      'A2' = 9,
      'Z1' = 10,
      'A3' = 9],
     [8 is 9 - 1,
      tak([8, 7, 11], 8),
      6 is 7 - 1,
      tak([6, 11, 9], 9),
      10 is 11 - 1,
      tak([10, 9, 7], 9),
      tak([8, 9, 9], 9)]).
step(tak([8, 7, 11], 8),
     rule(3),
     ['X' = 8,
      'Y' = 7,
      'Z' = 11,
      'A' = 8,
      'X1' = 7,
      'A1' = 11,
      'Y1' = 6,
      'A2' = 8,
      'Z1' = 10,
      'A3' = 8],
     [7 is 8 - 1,
      tak([7, 7, 11], 11),
      6 is 7 - 1,
      tak([6, 11, 8], 8),
      10 is 11 - 1,
      tak([10, 8, 7], 8),
      tak([11, 8, 8], 8)]).
step(tak([7, 7, 11], 11), rule(2), ['X' = 7, 'Y' = 7, 'Z' = 11], [7 =< 7, !]).
step(tak([6, 11, 8], 8), rule(2), ['X' = 6, 'Y' = 11, 'Z' = 8], [6 =< 11, !]).
step(tak([10, 8, 7], 8),
     rule(3),
     ['X' = 10,
      'Y' = 8,
      'Z' = 7,
      'A' = 8,
      'X1' = 9,
      'A1' = 8,
      'Y1' = 7,
      'A2' = 10,
      'Z1' = 6,
      'A3' = 8],
     [9 is 10 - 1,
      tak([9, 8, 7], 8),
      7 is 8 - 1,
      tak([7, 7, 10], 10),
      6 is 7 - 1,
      tak([6, 10, 8], 8),
      tak([8, 10, 8], 8)]).
step(tak([11, 8, 8], 8),
     rule(3),
     ['X' = 11,
      'Y' = 8,
      'Z' = 8,
      'A' = 8,
      'X1' = 10,
      'A1' = 8,
      'Y1' = 7,
      'A2' = 11,
      'Z1' = 7,
      'A3' = 8],
     [10 is 11 - 1,
      tak([10, 8, 8], 8),
      7 is 8 - 1,
      tak([7, 8, 11], 11),
      7 is 8 - 1,
      tak([7, 11, 8], 8),
      tak([8, 11, 8], 8)]).
step(tak([7, 8, 11], 11), rule(2), ['X' = 7, 'Y' = 8, 'Z' = 11], [7 =< 8, !]).
step(tak([7, 11, 8], 8), rule(2), ['X' = 7, 'Y' = 11, 'Z' = 8], [7 =< 11, !]).
step(tak([8, 11, 8], 8), rule(2), ['X' = 8, 'Y' = 11, 'Z' = 8], [8 =< 11, !]).
step(8 =< 11, builtin, [], []).
step(tak([6, 11, 9], 9), rule(2), ['X' = 6, 'Y' = 11, 'Z' = 9], [6 =< 11, !]).
step(tak([10, 9, 7], 9),
     rule(3),
     ['X' = 10,
      'Y' = 9,
      'Z' = 7,
      'A' = 9,
      'X1' = 9,
      'A1' = 7,
      'Y1' = 8,
      'A2' = 8,
      'Z1' = 6,
      'A3' = 9],
     [9 is 10 - 1,
      tak([9, 9, 7], 7),
      8 is 9 - 1,
      tak([8, 7, 10], 8),
      6 is 7 - 1,
      tak([6, 10, 9], 9),
      tak([7, 8, 9], 9)]).
step(tak([8, 9, 9], 9), rule(2), ['X' = 8, 'Y' = 9, 'Z' = 9], [8 =< 9, !]).
step(tak([6, 11, 10], 10), rule(2), ['X' = 6, 'Y' = 11, 'Z' = 10], [6 =< 11, !]).
step(tak([10, 10, 7], 7), rule(2), ['X' = 10, 'Y' = 10, 'Z' = 7], [10 =< 10, !]).
step(tak([6, 11, 11], 11), rule(2), ['X' = 6, 'Y' = 11, 'Z' = 11], [6 =< 11, !]).
step(tak([10, 11, 7], 7), rule(2), ['X' = 10, 'Y' = 11, 'Z' = 7], [10 =< 11, !]).
step(10 =< 11, builtin, [], []).
step(tak([10, 6, 14], 10),
     rule(3),
     ['X' = 10,
      'Y' = 6,
      'Z' = 14,
      'A' = 10,
      'X1' = 9,
      'A1' = 7,
      'Y1' = 5,
      'A2' = 10,
      'Z1' = 13,
      'A3' = 10],
     [9 is 10 - 1,
      tak([9, 6, 14], 7),
      5 is 6 - 1,
      tak([5, 14, 10], 10),
      13 is 14 - 1,
      tak([13, 10, 6], 10),
      tak([7, 10, 10], 10)]).
step(tak([9, 6, 14], 7),
     rule(3),
     ['X' = 9,
      'Y' = 6,
      'Z' = 14,
      'A' = 7,
      'X1' = 8,
      'A1' = 8,
      'Y1' = 5,
      'A2' = 9,
      'Z1' = 13,
      'A3' = 7],
     [8 is 9 - 1,
      tak([8, 6, 14], 8),
      5 is 6 - 1,
      tak([5, 14, 9], 9),
      13 is 14 - 1,
      tak([13, 9, 6], 7),
      tak([8, 9, 7], 7)]).
step(tak([8, 6, 14], 8),
     rule(3),
     ['X' = 8,
      'Y' = 6,
      'Z' = 14,
      'A' = 8,
      'X1' = 7,
      'A1' = 7,
      'Y1' = 5,
      'A2' = 8,
      'Z1' = 13,
      'A3' = 8],
     [7 is 8 - 1,
      tak([7, 6, 14], 7),
      5 is 6 - 1,
      tak([5, 14, 8], 8),
      13 is 14 - 1,
      tak([13, 8, 6], 8),
      tak([7, 8, 8], 8)]).
step(tak([7, 6, 14], 7),
     rule(3),
     ['X' = 7,
      'Y' = 6,
      'Z' = 14,
      'A' = 7,
      'X1' = 6,
      'A1' = 14,
      'Y1' = 5,
      'A2' = 7,
      'Z1' = 13,
      'A3' = 7],
     [6 is 7 - 1,
      tak([6, 6, 14], 14),
      5 is 6 - 1,
      tak([5, 14, 7], 7),
      13 is 14 - 1,
      tak([13, 7, 6], 7),
      tak([14, 7, 7], 7)]).
step(tak([6, 6, 14], 14), rule(2), ['X' = 6, 'Y' = 6, 'Z' = 14], [6 =< 6, !]).
step(tak([5, 14, 7], 7), rule(2), ['X' = 5, 'Y' = 14, 'Z' = 7], [5 =< 14, !]).
step(5 =< 14, builtin, [], []).
step(tak([13, 7, 6], 7),
     rule(3),
     ['X' = 13,
      'Y' = 7,
      'Z' = 6,
      'A' = 7,
      'X1' = 12,
      'A1' = 7,
      'Y1' = 6,
      'A2' = 13,
      'Z1' = 5,
      'A3' = 7],
     [12 is 13 - 1,
      tak([12, 7, 6], 7),
      6 is 7 - 1,
      tak([6, 6, 13], 13),
      5 is 6 - 1,
      tak([5, 13, 7], 7),
      tak([7, 13, 7], 7)]).
step(tak([14, 7, 7], 7),
     rule(3),
     ['X' = 14,
      'Y' = 7,
      'Z' = 7,
      'A' = 7,
      'X1' = 13,
      'A1' = 7,
      'Y1' = 6,
      'A2' = 14,
      'Z1' = 6,
      'A3' = 7],
     [13 is 14 - 1,
      tak([13, 7, 7], 7),
      6 is 7 - 1,
      tak([6, 7, 14], 14),
      6 is 7 - 1,
      tak([6, 14, 7], 7),
      tak([7, 14, 7], 7)]).
step(tak([6, 7, 14], 14), rule(2), ['X' = 6, 'Y' = 7, 'Z' = 14], [6 =< 7, !]).
step(tak([6, 14, 7], 7), rule(2), ['X' = 6, 'Y' = 14, 'Z' = 7], [6 =< 14, !]).
step(6 =< 14, builtin, [], []).
step(tak([7, 14, 7], 7), rule(2), ['X' = 7, 'Y' = 14, 'Z' = 7], [7 =< 14, !]).
step(7 =< 14, builtin, [], []).
step(tak([5, 14, 8], 8), rule(2), ['X' = 5, 'Y' = 14, 'Z' = 8], [5 =< 14, !]).
step(tak([13, 8, 6], 8),
     rule(3),
     ['X' = 13,
      'Y' = 8,
      'Z' = 6,
      'A' = 8,
      'X1' = 12,
      'A1' = 7,
      'Y1' = 7,
      'A2' = 7,
      'Z1' = 5,
      'A3' = 8],
     [12 is 13 - 1,
      tak([12, 8, 6], 7),
      7 is 8 - 1,
      tak([7, 6, 13], 7),
      5 is 6 - 1,
      tak([5, 13, 8], 8),
      tak([7, 7, 8], 8)]).
step(tak([5, 14, 9], 9), rule(2), ['X' = 5, 'Y' = 14, 'Z' = 9], [5 =< 14, !]).
step(tak([13, 9, 6], 7),
     rule(3),
     ['X' = 13,
      'Y' = 9,
      'Z' = 6,
      'A' = 7,
      'X1' = 12,
      'A1' = 9,
      'Y1' = 8,
      'A2' = 7,
      'Z1' = 5,
      'A3' = 9],
     [12 is 13 - 1,
      tak([12, 9, 6], 9),
      8 is 9 - 1,
      tak([8, 6, 13], 7),
      5 is 6 - 1,
      tak([5, 13, 9], 9),
      tak([9, 7, 9], 7)]).
step(tak([5, 14, 10], 10), rule(2), ['X' = 5, 'Y' = 14, 'Z' = 10], [5 =< 14, !]).
step(tak([13, 10, 6], 10),
     rule(3),
     ['X' = 13,
      'Y' = 10,
      'Z' = 6,
      'A' = 10,
      'X1' = 12,
      'A1' = 7,
      'Y1' = 9,
      'A2' = 9,
      'Z1' = 5,
      'A3' = 10],
     [12 is 13 - 1,
      tak([12, 10, 6], 7),
      9 is 10 - 1,
      tak([9, 6, 13], 9),
      5 is 6 - 1,
      tak([5, 13, 10], 10),
      tak([7, 9, 10], 10)]).
step(tak([7, 9, 10], 10), rule(2), ['X' = 7, 'Y' = 9, 'Z' = 10], [7 =< 9, !]).
step(tak([5, 14, 11], 11), rule(2), ['X' = 5, 'Y' = 14, 'Z' = 11], [5 =< 14, !]).
step(tak([7, 10, 11], 11), rule(2), ['X' = 7, 'Y' = 10, 'Z' = 11], [7 =< 10, !]).
step(tak([10, 6, 15], 7),
     rule(3),
     ['X' = 10,
      'Y' = 6,
      'Z' = 15,
      'A' = 7,
      'X1' = 9,
      'A1' = 9,
      'Y1' = 5,
      'A2' = 10,
      'Z1' = 14,
      'A3' = 7],
     [9 is 10 - 1,
      tak([9, 6, 15], 9),
      5 is 6 - 1,
      tak([5, 15, 10], 10),
      14 is 15 - 1,
      tak([14, 10, 6], 7),
      tak([9, 10, 7], 7)]).
step(tak([9, 6, 15], 9),
     rule(3),
     ['X' = 9,
      'Y' = 6,
      'Z' = 15,
      'A' = 9,
      'X1' = 8,
      'A1' = 7,
      'Y1' = 5,
      'A2' = 9,
      'Z1' = 14,
      'A3' = 9],
     [8 is 9 - 1,
      tak([8, 6, 15], 7),
      5 is 6 - 1,
      tak([5, 15, 9], 9),
      14 is 15 - 1,
      tak([14, 9, 6], 9),
      tak([7, 9, 9], 9)]).
step(tak([8, 6, 15], 7),
     rule(3),
     ['X' = 8,
      'Y' = 6,
      'Z' = 15,
      'A' = 7,
      'X1' = 7,
      'A1' = 7,
      'Y1' = 5,
      'A2' = 8,
      'Z1' = 14,
      'A3' = 7],
     [7 is 8 - 1,
      tak([7, 6, 15], 7),
      5 is 6 - 1,
      tak([5, 15, 8], 8),
      14 is 15 - 1,
      tak([14, 8, 6], 7),
      tak([7, 8, 7], 7)]).
step(tak([7, 6, 15], 7),
     rule(3),
     ['X' = 7,
      'Y' = 6,
      'Z' = 15,
      'A' = 7,
      'X1' = 6,
      'A1' = 15,
      'Y1' = 5,
      'A2' = 7,
      'Z1' = 14,
      'A3' = 7],
     [6 is 7 - 1,
      tak([6, 6, 15], 15),
      5 is 6 - 1,
      tak([5, 15, 7], 7),
      14 is 15 - 1,
      tak([14, 7, 6], 7),
      tak([15, 7, 7], 7)]).
step(tak([6, 6, 15], 15), rule(2), ['X' = 6, 'Y' = 6, 'Z' = 15], [6 =< 6, !]).
step(tak([5, 15, 7], 7), rule(2), ['X' = 5, 'Y' = 15, 'Z' = 7], [5 =< 15, !]).
step(5 =< 15, builtin, [], []).
step(tak([14, 7, 6], 7),
     rule(3),
     ['X' = 14,
      'Y' = 7,
      'Z' = 6,
      'A' = 7,
      'X1' = 13,
      'A1' = 7,
      'Y1' = 6,
      'A2' = 14,
      'Z1' = 5,
      'A3' = 7],
     [13 is 14 - 1,
      tak([13, 7, 6], 7),
      6 is 7 - 1,
      tak([6, 6, 14], 14),
      5 is 6 - 1,
      tak([5, 14, 7], 7),
      tak([7, 14, 7], 7)]).
step(tak([15, 7, 7], 7),
     rule(3),
     ['X' = 15,
      'Y' = 7,
      'Z' = 7,
      'A' = 7,
      'X1' = 14,
      'A1' = 7,
      'Y1' = 6,
      'A2' = 15,
      'Z1' = 6,
      'A3' = 7],
     [14 is 15 - 1,
      tak([14, 7, 7], 7),
      6 is 7 - 1,
      tak([6, 7, 15], 15),
      6 is 7 - 1,
      tak([6, 15, 7], 7),
      tak([7, 15, 7], 7)]).
step(tak([6, 7, 15], 15), rule(2), ['X' = 6, 'Y' = 7, 'Z' = 15], [6 =< 7, !]).
step(tak([6, 15, 7], 7), rule(2), ['X' = 6, 'Y' = 15, 'Z' = 7], [6 =< 15, !]).
step(6 =< 15, builtin, [], []).
step(tak([7, 15, 7], 7), rule(2), ['X' = 7, 'Y' = 15, 'Z' = 7], [7 =< 15, !]).
step(7 =< 15, builtin, [], []).
step(tak([5, 15, 8], 8), rule(2), ['X' = 5, 'Y' = 15, 'Z' = 8], [5 =< 15, !]).
step(tak([14, 8, 6], 7),
     rule(3),
     ['X' = 14,
      'Y' = 8,
      'Z' = 6,
      'A' = 7,
      'X1' = 13,
      'A1' = 8,
      'Y1' = 7,
      'A2' = 7,
      'Z1' = 5,
      'A3' = 8],
     [13 is 14 - 1,
      tak([13, 8, 6], 8),
      7 is 8 - 1,
      tak([7, 6, 14], 7),
      5 is 6 - 1,
      tak([5, 14, 8], 8),
      tak([8, 7, 8], 7)]).
step(tak([5, 15, 9], 9), rule(2), ['X' = 5, 'Y' = 15, 'Z' = 9], [5 =< 15, !]).
step(tak([14, 9, 6], 9),
     rule(3),
     ['X' = 14,
      'Y' = 9,
      'Z' = 6,
      'A' = 9,
      'X1' = 13,
      'A1' = 7,
      'Y1' = 8,
      'A2' = 8,
      'Z1' = 5,
      'A3' = 9],
     [13 is 14 - 1,
      tak([13, 9, 6], 7),
      8 is 9 - 1,
      tak([8, 6, 14], 8),
      5 is 6 - 1,
      tak([5, 14, 9], 9),
      tak([7, 8, 9], 9)]).
step(tak([5, 15, 10], 10), rule(2), ['X' = 5, 'Y' = 15, 'Z' = 10], [5 =< 15, !]).
step(tak([14, 10, 6], 7),
     rule(3),
     ['X' = 14,
      'Y' = 10,
      'Z' = 6,
      'A' = 7,
      'X1' = 13,
      'A1' = 10,
      'Y1' = 9,
      'A2' = 7,
      'Z1' = 5,
      'A3' = 10],
     [13 is 14 - 1,
      tak([13, 10, 6], 10),
      9 is 10 - 1,
      tak([9, 6, 14], 7),
      5 is 6 - 1,
      tak([5, 14, 10], 10),
      tak([10, 7, 10], 7)]).
step(tak([5, 15, 11], 11), rule(2), ['X' = 5, 'Y' = 15, 'Z' = 11], [5 =< 15, !]).
step(tak([10, 6, 16], 10),
     rule(3),
     ['X' = 10,
      'Y' = 6,
      'Z' = 16,
      'A' = 10,
      'X1' = 9,
      'A1' = 7,
      'Y1' = 5,
      'A2' = 10,
      'Z1' = 15,
      'A3' = 10],
     [9 is 10 - 1,
      tak([9, 6, 16], 7),
      5 is 6 - 1,
      tak([5, 16, 10], 10),
      15 is 16 - 1,
      tak([15, 10, 6], 10),
      tak([7, 10, 10], 10)]).
step(tak([9, 6, 16], 7),
     rule(3),
     ['X' = 9,
      'Y' = 6,
      'Z' = 16,
      'A' = 7,
      'X1' = 8,
      'A1' = 8,
      'Y1' = 5,
      'A2' = 9,
      'Z1' = 15,
      'A3' = 7],
     [8 is 9 - 1,
      tak([8, 6, 16], 8),
      5 is 6 - 1,
      tak([5, 16, 9], 9),
      15 is 16 - 1,
      tak([15, 9, 6], 7),
      tak([8, 9, 7], 7)]).
step(tak([8, 6, 16], 8),
     rule(3),
     ['X' = 8,
      'Y' = 6,
      'Z' = 16,
      'A' = 8,
      'X1' = 7,
      'A1' = 7,
      'Y1' = 5,
      'A2' = 8,
      'Z1' = 15,
      'A3' = 8],
     [7 is 8 - 1,
      tak([7, 6, 16], 7),
      5 is 6 - 1,
      tak([5, 16, 8], 8),
      15 is 16 - 1,
      tak([15, 8, 6], 8),
      tak([7, 8, 8], 8)]).
step(tak([7, 6, 16], 7),
     rule(3),
     ['X' = 7,
      'Y' = 6,
      'Z' = 16,
      'A' = 7,
      'X1' = 6,
      'A1' = 16,
      'Y1' = 5,
      'A2' = 7,
      'Z1' = 15,
      'A3' = 7],
     [6 is 7 - 1,
      tak([6, 6, 16], 16),
      5 is 6 - 1,
      tak([5, 16, 7], 7),
      15 is 16 - 1,
      tak([15, 7, 6], 7),
      tak([16, 7, 7], 7)]).
step(tak([6, 6, 16], 16), rule(2), ['X' = 6, 'Y' = 6, 'Z' = 16], [6 =< 6, !]).
step(tak([5, 16, 7], 7), rule(2), ['X' = 5, 'Y' = 16, 'Z' = 7], [5 =< 16, !]).
step(5 =< 16, builtin, [], []).
step(tak([15, 7, 6], 7),
     rule(3),
     ['X' = 15,
      'Y' = 7,
      'Z' = 6,
      'A' = 7,
      'X1' = 14,
      'A1' = 7,
      'Y1' = 6,
      'A2' = 15,
      'Z1' = 5,
      'A3' = 7],
     [14 is 15 - 1,
      tak([14, 7, 6], 7),
      6 is 7 - 1,
      tak([6, 6, 15], 15),
      5 is 6 - 1,
      tak([5, 15, 7], 7),
      tak([7, 15, 7], 7)]).
step(tak([16, 7, 7], 7),
     rule(3),
     ['X' = 16,
      'Y' = 7,
      'Z' = 7,
      'A' = 7,
      'X1' = 15,
      'A1' = 7,
      'Y1' = 6,
      'A2' = 16,
      'Z1' = 6,
      'A3' = 7],
     [15 is 16 - 1,
      tak([15, 7, 7], 7),
      6 is 7 - 1,
      tak([6, 7, 16], 16),
      6 is 7 - 1,
      tak([6, 16, 7], 7),
      tak([7, 16, 7], 7)]).
step(tak([6, 7, 16], 16), rule(2), ['X' = 6, 'Y' = 7, 'Z' = 16], [6 =< 7, !]).
step(tak([6, 16, 7], 7), rule(2), ['X' = 6, 'Y' = 16, 'Z' = 7], [6 =< 16, !]).
step(6 =< 16, builtin, [], []).
step(tak([7, 16, 7], 7), rule(2), ['X' = 7, 'Y' = 16, 'Z' = 7], [7 =< 16, !]).
step(7 =< 16, builtin, [], []).
step(tak([5, 16, 8], 8), rule(2), ['X' = 5, 'Y' = 16, 'Z' = 8], [5 =< 16, !]).
step(tak([15, 8, 6], 8),
     rule(3),
     ['X' = 15,
      'Y' = 8,
      'Z' = 6,
      'A' = 8,
      'X1' = 14,
      'A1' = 7,
      'Y1' = 7,
      'A2' = 7,
      'Z1' = 5,
      'A3' = 8],
     [14 is 15 - 1,
      tak([14, 8, 6], 7),
      7 is 8 - 1,
      tak([7, 6, 15], 7),
      5 is 6 - 1,
      tak([5, 15, 8], 8),
      tak([7, 7, 8], 8)]).
step(tak([5, 16, 9], 9), rule(2), ['X' = 5, 'Y' = 16, 'Z' = 9], [5 =< 16, !]).
step(tak([15, 9, 6], 7),
     rule(3),
     ['X' = 15,
      'Y' = 9,
      'Z' = 6,
      'A' = 7,
      'X1' = 14,
      'A1' = 9,
      'Y1' = 8,
      'A2' = 7,
      'Z1' = 5,
      'A3' = 9],
     [14 is 15 - 1,
      tak([14, 9, 6], 9),
      8 is 9 - 1,
      tak([8, 6, 15], 7),
      5 is 6 - 1,
      tak([5, 15, 9], 9),
      tak([9, 7, 9], 7)]).
step(tak([5, 16, 10], 10), rule(2), ['X' = 5, 'Y' = 16, 'Z' = 10], [5 =< 16, !]).
step(tak([15, 10, 6], 10),
     rule(3),
     ['X' = 15,
      'Y' = 10,
      'Z' = 6,
      'A' = 10,
      'X1' = 14,
      'A1' = 7,
      'Y1' = 9,
      'A2' = 9,
      'Z1' = 5,
      'A3' = 10],
     [14 is 15 - 1,
      tak([14, 10, 6], 7),
      9 is 10 - 1,
      tak([9, 6, 15], 9),
      5 is 6 - 1,
      tak([5, 15, 10], 10),
      tak([7, 9, 10], 10)]).
step(tak([5, 16, 11], 11), rule(2), ['X' = 5, 'Y' = 16, 'Z' = 11], [5 =< 16, !]).
