answer(25, [p(1, 1), p(2, 3), p(1, 5), p(3, 4), p(5, 5), p(4, 3), p(5, 1), p(3, 2), p(4, 4), p(2, 5), p(1, 3), p(2, 1), p(4, 2), p(5, 4), p(3, 5), p(1, 4), p(2, 2), p(4, 1), p(5, 3), p(4, 5), p(2, 4), p(1, 2), p(3, 3), p(5, 2), p(3, 1)]).

clause(1, board_size(5), true).
clause(4,
       tour_(anonymous(1), var('Visited'), var('SquareCount'), var('Visited')),
       (length(var('Visited'), var('SquareCount')), !)).
clause(5,
       tour_(var('Current'), var('Visited'), var('SquareCount'), var('Tour')),
       (findall(var('Degree') - var('Next'), (knight_move(var('Current'), var('Next')), \+ member(var('Next'), var('Visited')), degree(var('Next'), var('Visited'), var('Degree'))), var('Candidates')),
        var('Candidates') \= [],
        keysort(var('Candidates'), [anonymous(1) - var('Best') | anonymous(2)]),
        tour_(var('Best'), [var('Best') | var('Visited')], var('SquareCount'), var('Tour')))).
clause(6,
       knights_tour(var('Start'), var('Tour')),
       (board_size(var('N')),
        var('SquareCount') is var('N') * var('N'),
        tour_(var('Start'), [var('Start')], var('SquareCount'), var('ReverseTour')),
        reverse(var('ReverseTour'), var('Tour')))).
clause(7,
       answer(var('SquareCount'), var('Tour')),
       (knights_tour(p(1, 1), var('Tour')), length(var('Tour'), var('SquareCount')))).

step(answer(25, [p(1, 1), p(2, 3), p(1, 5), p(3, 4), p(5, 5), p(4, 3), p(5, 1), p(3, 2), p(4, 4), p(2, 5), p(1, 3), p(2, 1), p(4, 2), p(5, 4), p(3, 5), p(1, 4), p(2, 2), p(4, 1), p(5, 3), p(4, 5), p(2, 4), p(1, 2), p(3, 3), p(5, 2), p(3, 1)]),
     rule(7),
     ['SquareCount' = 25,
      'Tour' = [p(1, 1), p(2, 3), p(1, 5), p(3, 4), p(5, 5), p(4, 3), p(5, 1), p(3, 2), p(4, 4), p(2, 5), p(1, 3), p(2, 1), p(4, 2), p(5, 4), p(3, 5), p(1, 4), p(2, 2), p(4, 1), p(5, 3), p(4, 5), p(2, 4), p(1, 2), p(3, 3), p(5, 2), p(3, 1)]],
     [knights_tour(p(1, 1), [p(1, 1), p(2, 3), p(1, 5), p(3, 4), p(5, 5), p(4, 3), p(5, 1), p(3, 2), p(4, 4), p(2, 5), p(1, 3), p(2, 1), p(4, 2), p(5, 4), p(3, 5), p(1, 4), p(2, 2), p(4, 1), p(5, 3), p(4, 5), p(2, 4), p(1, 2), p(3, 3), p(5, 2), p(3, 1)]),
      length([p(1, 1), p(2, 3), p(1, 5), p(3, 4), p(5, 5), p(4, 3), p(5, 1), p(3, 2), p(4, 4), p(2, 5), p(1, 3), p(2, 1), p(4, 2), p(5, 4), p(3, 5), p(1, 4), p(2, 2), p(4, 1), p(5, 3), p(4, 5), p(2, 4), p(1, 2), p(3, 3), p(5, 2), p(3, 1)], 25)]).
step(knights_tour(p(1, 1), [p(1, 1), p(2, 3), p(1, 5), p(3, 4), p(5, 5), p(4, 3), p(5, 1), p(3, 2), p(4, 4), p(2, 5), p(1, 3), p(2, 1), p(4, 2), p(5, 4), p(3, 5), p(1, 4), p(2, 2), p(4, 1), p(5, 3), p(4, 5), p(2, 4), p(1, 2), p(3, 3), p(5, 2), p(3, 1)]),
     rule(6),
     ['Start' = p(1, 1),
      'Tour' = [p(1, 1), p(2, 3), p(1, 5), p(3, 4), p(5, 5), p(4, 3), p(5, 1), p(3, 2), p(4, 4), p(2, 5), p(1, 3), p(2, 1), p(4, 2), p(5, 4), p(3, 5), p(1, 4), p(2, 2), p(4, 1), p(5, 3), p(4, 5), p(2, 4), p(1, 2), p(3, 3), p(5, 2), p(3, 1)],
      'N' = 5,
      'SquareCount' = 25,
      'ReverseTour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]],
     [board_size(5),
      25 is 5 * 5,
      tour_(p(1, 1), [p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
      reverse([p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], [p(1, 1), p(2, 3), p(1, 5), p(3, 4), p(5, 5), p(4, 3), p(5, 1), p(3, 2), p(4, 4), p(2, 5), p(1, 3), p(2, 1), p(4, 2), p(5, 4), p(3, 5), p(1, 4), p(2, 2), p(4, 1), p(5, 3), p(4, 5), p(2, 4), p(1, 2), p(3, 3), p(5, 2), p(3, 1)])]).
step(board_size(5), fact(1), [], []).
step(25 is 5 * 5, builtin, [], []).
step(tour_(p(1, 1), [p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(1, 1),
      'Visited' = [p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [5 - p(2, 3), 5 - p(3, 2)],
      'Best' = p(2, 3)],
     [findall(Degree - Next, (knight_move(p(1, 1), Next), \+ member(Next, [p(1, 1)]), degree(Next, [p(1, 1)], Degree)), [5 - p(2, 3), 5 - p(3, 2)]),
      [5 - p(2, 3), 5 - p(3, 2)] \= [],
      keysort([5 - p(2, 3), 5 - p(3, 2)], [5 - p(2, 3), 5 - p(3, 2)]),
      tour_(p(2, 3), [p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(1, 1), Next), \+ member(Next, [p(1, 1)]), degree(Next, [p(1, 1)], Degree)), [5 - p(2, 3), 5 - p(3, 2)]),
     collected,
     [],
     []).
step([5 - p(2, 3), 5 - p(3, 2)] \= [], builtin, [], []).
step(keysort([5 - p(2, 3), 5 - p(3, 2)], [5 - p(2, 3), 5 - p(3, 2)]), builtin, [], []).
step(tour_(p(2, 3), [p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(2, 3),
      'Visited' = [p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [3 - p(3, 5), 3 - p(4, 4), 1 - p(1, 5), 3 - p(3, 1), 3 - p(4, 2)],
      'Best' = p(1, 5)],
     [findall(Degree - Next, (knight_move(p(2, 3), Next), \+ member(Next, [p(2, 3), p(1, 1)]), degree(Next, [p(2, 3), p(1, 1)], Degree)), [3 - p(3, 5), 3 - p(4, 4), 1 - p(1, 5), 3 - p(3, 1), 3 - p(4, 2)]),
      [3 - p(3, 5), 3 - p(4, 4), 1 - p(1, 5), 3 - p(3, 1), 3 - p(4, 2)] \= [],
      keysort([3 - p(3, 5), 3 - p(4, 4), 1 - p(1, 5), 3 - p(3, 1), 3 - p(4, 2)], [1 - p(1, 5), 3 - p(3, 5), 3 - p(4, 4), 3 - p(3, 1), 3 - p(4, 2)]),
      tour_(p(1, 5), [p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(2, 3), Next), \+ member(Next, [p(2, 3), p(1, 1)]), degree(Next, [p(2, 3), p(1, 1)], Degree)), [3 - p(3, 5), 3 - p(4, 4), 1 - p(1, 5), 3 - p(3, 1), 3 - p(4, 2)]),
     collected,
     [],
     []).
step([3 - p(3, 5), 3 - p(4, 4), 1 - p(1, 5), 3 - p(3, 1), 3 - p(4, 2)] \= [], builtin, [], []).
step(keysort([3 - p(3, 5), 3 - p(4, 4), 1 - p(1, 5), 3 - p(3, 1), 3 - p(4, 2)], [1 - p(1, 5), 3 - p(3, 5), 3 - p(4, 4), 3 - p(3, 1), 3 - p(4, 2)]),
     builtin,
     [],
     []).
step(tour_(p(1, 5), [p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(1, 5),
      'Visited' = [p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [5 - p(3, 4)],
      'Best' = p(3, 4)],
     [findall(Degree - Next, (knight_move(p(1, 5), Next), \+ member(Next, [p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(1, 5), p(2, 3), p(1, 1)], Degree)), [5 - p(3, 4)]),
      [5 - p(3, 4)] \= [],
      keysort([5 - p(3, 4)], [5 - p(3, 4)]),
      tour_(p(3, 4), [p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(1, 5), Next), \+ member(Next, [p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(1, 5), p(2, 3), p(1, 1)], Degree)), [5 - p(3, 4)]),
     collected,
     [],
     []).
step([5 - p(3, 4)] \= [], builtin, [], []).
step(keysort([5 - p(3, 4)], [5 - p(3, 4)]), builtin, [], []).
step(tour_(p(3, 4), [p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(3, 4),
      'Visited' = [p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [1 - p(5, 5), 2 - p(4, 2), 3 - p(5, 3), 3 - p(2, 2), 3 - p(1, 3)],
      'Best' = p(5, 5)],
     [findall(Degree - Next, (knight_move(p(3, 4), Next), \+ member(Next, [p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [1 - p(5, 5), 2 - p(4, 2), 3 - p(5, 3), 3 - p(2, 2), 3 - p(1, 3)]),
      [1 - p(5, 5), 2 - p(4, 2), 3 - p(5, 3), 3 - p(2, 2), 3 - p(1, 3)] \= [],
      keysort([1 - p(5, 5), 2 - p(4, 2), 3 - p(5, 3), 3 - p(2, 2), 3 - p(1, 3)], [1 - p(5, 5), 2 - p(4, 2), 3 - p(5, 3), 3 - p(2, 2), 3 - p(1, 3)]),
      tour_(p(5, 5), [p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(3, 4), Next), \+ member(Next, [p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [1 - p(5, 5), 2 - p(4, 2), 3 - p(5, 3), 3 - p(2, 2), 3 - p(1, 3)]),
     collected,
     [],
     []).
step([1 - p(5, 5), 2 - p(4, 2), 3 - p(5, 3), 3 - p(2, 2), 3 - p(1, 3)] \= [], builtin, [], []).
step(keysort([1 - p(5, 5), 2 - p(4, 2), 3 - p(5, 3), 3 - p(2, 2), 3 - p(1, 3)], [1 - p(5, 5), 2 - p(4, 2), 3 - p(5, 3), 3 - p(2, 2), 3 - p(1, 3)]),
     builtin,
     [],
     []).
step(tour_(p(5, 5), [p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(5, 5),
      'Visited' = [p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [5 - p(4, 3)],
      'Best' = p(4, 3)],
     [findall(Degree - Next, (knight_move(p(5, 5), Next), \+ member(Next, [p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [5 - p(4, 3)]),
      [5 - p(4, 3)] \= [],
      keysort([5 - p(4, 3)], [5 - p(4, 3)]),
      tour_(p(4, 3), [p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(5, 5), Next), \+ member(Next, [p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [5 - p(4, 3)]),
     collected,
     [],
     []).
step([5 - p(4, 3)] \= [], builtin, [], []).
step(keysort([5 - p(4, 3)], [5 - p(4, 3)]), builtin, [], []).
step(tour_(p(4, 3), [p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(4, 3),
      'Visited' = [p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [2 - p(3, 5), 3 - p(2, 4), 1 - p(5, 1), 2 - p(3, 1), 2 - p(2, 2)],
      'Best' = p(5, 1)],
     [findall(Degree - Next, (knight_move(p(4, 3), Next), \+ member(Next, [p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(3, 5), 3 - p(2, 4), 1 - p(5, 1), 2 - p(3, 1), 2 - p(2, 2)]),
      [2 - p(3, 5), 3 - p(2, 4), 1 - p(5, 1), 2 - p(3, 1), 2 - p(2, 2)] \= [],
      keysort([2 - p(3, 5), 3 - p(2, 4), 1 - p(5, 1), 2 - p(3, 1), 2 - p(2, 2)], [1 - p(5, 1), 2 - p(3, 5), 2 - p(3, 1), 2 - p(2, 2), 3 - p(2, 4)]),
      tour_(p(5, 1), [p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(4, 3), Next), \+ member(Next, [p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(3, 5), 3 - p(2, 4), 1 - p(5, 1), 2 - p(3, 1), 2 - p(2, 2)]),
     collected,
     [],
     []).
step([2 - p(3, 5), 3 - p(2, 4), 1 - p(5, 1), 2 - p(3, 1), 2 - p(2, 2)] \= [], builtin, [], []).
step(keysort([2 - p(3, 5), 3 - p(2, 4), 1 - p(5, 1), 2 - p(3, 1), 2 - p(2, 2)], [1 - p(5, 1), 2 - p(3, 5), 2 - p(3, 1), 2 - p(2, 2), 3 - p(2, 4)]),
     builtin,
     [],
     []).
step(tour_(p(5, 1), [p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(5, 1),
      'Visited' = [p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [4 - p(3, 2)],
      'Best' = p(3, 2)],
     [findall(Degree - Next, (knight_move(p(5, 1), Next), \+ member(Next, [p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [4 - p(3, 2)]),
      [4 - p(3, 2)] \= [],
      keysort([4 - p(3, 2)], [4 - p(3, 2)]),
      tour_(p(3, 2), [p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(5, 1), Next), \+ member(Next, [p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [4 - p(3, 2)]),
     collected,
     [],
     []).
step([4 - p(3, 2)] \= [], builtin, [], []).
step(keysort([4 - p(3, 2)], [4 - p(3, 2)]), builtin, [], []).
step(tour_(p(3, 2), [p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(3, 2),
      'Visited' = [p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [2 - p(4, 4), 2 - p(5, 3), 2 - p(2, 4), 2 - p(1, 3)],
      'Best' = p(4, 4)],
     [findall(Degree - Next, (knight_move(p(3, 2), Next), \+ member(Next, [p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(4, 4), 2 - p(5, 3), 2 - p(2, 4), 2 - p(1, 3)]),
      [2 - p(4, 4), 2 - p(5, 3), 2 - p(2, 4), 2 - p(1, 3)] \= [],
      keysort([2 - p(4, 4), 2 - p(5, 3), 2 - p(2, 4), 2 - p(1, 3)], [2 - p(4, 4), 2 - p(5, 3), 2 - p(2, 4), 2 - p(1, 3)]),
      tour_(p(4, 4), [p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(3, 2), Next), \+ member(Next, [p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(4, 4), 2 - p(5, 3), 2 - p(2, 4), 2 - p(1, 3)]),
     collected,
     [],
     []).
step([2 - p(4, 4), 2 - p(5, 3), 2 - p(2, 4), 2 - p(1, 3)] \= [], builtin, [], []).
step(keysort([2 - p(4, 4), 2 - p(5, 3), 2 - p(2, 4), 2 - p(1, 3)], [2 - p(4, 4), 2 - p(5, 3), 2 - p(2, 4), 2 - p(1, 3)]),
     builtin,
     [],
     []).
step(tour_(p(4, 4), [p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(4, 4),
      'Visited' = [p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [2 - p(2, 5), 2 - p(5, 2)],
      'Best' = p(2, 5)],
     [findall(Degree - Next, (knight_move(p(4, 4), Next), \+ member(Next, [p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(2, 5), 2 - p(5, 2)]),
      [2 - p(2, 5), 2 - p(5, 2)] \= [],
      keysort([2 - p(2, 5), 2 - p(5, 2)], [2 - p(2, 5), 2 - p(5, 2)]),
      tour_(p(2, 5), [p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(4, 4), Next), \+ member(Next, [p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(2, 5), 2 - p(5, 2)]),
     collected,
     [],
     []).
step([2 - p(2, 5), 2 - p(5, 2)] \= [], builtin, [], []).
step(keysort([2 - p(2, 5), 2 - p(5, 2)], [2 - p(2, 5), 2 - p(5, 2)]), builtin, [], []).
step(tour_(p(2, 5), [p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(2, 5),
      'Visited' = [p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [7 - p(3, 3), 1 - p(1, 3)],
      'Best' = p(1, 3)],
     [findall(Degree - Next, (knight_move(p(2, 5), Next), \+ member(Next, [p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [7 - p(3, 3), 1 - p(1, 3)]),
      [7 - p(3, 3), 1 - p(1, 3)] \= [],
      keysort([7 - p(3, 3), 1 - p(1, 3)], [1 - p(1, 3), 7 - p(3, 3)]),
      tour_(p(1, 3), [p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(2, 5), Next), \+ member(Next, [p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [7 - p(3, 3), 1 - p(1, 3)]),
     collected,
     [],
     []).
step([7 - p(3, 3), 1 - p(1, 3)] \= [], builtin, [], []).
step(keysort([7 - p(3, 3), 1 - p(1, 3)], [1 - p(1, 3), 7 - p(3, 3)]), builtin, [], []).
step(tour_(p(1, 3), [p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(1, 3),
      'Visited' = [p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [2 - p(2, 1)],
      'Best' = p(2, 1)],
     [findall(Degree - Next, (knight_move(p(1, 3), Next), \+ member(Next, [p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(2, 1)]),
      [2 - p(2, 1)] \= [],
      keysort([2 - p(2, 1)], [2 - p(2, 1)]),
      tour_(p(2, 1), [p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(1, 3), Next), \+ member(Next, [p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(2, 1)]),
     collected,
     [],
     []).
step([2 - p(2, 1)] \= [], builtin, [], []).
step(keysort([2 - p(2, 1)], [2 - p(2, 1)]), builtin, [], []).
step(tour_(p(2, 1), [p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(2, 1),
      'Visited' = [p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [6 - p(3, 3), 1 - p(4, 2)],
      'Best' = p(4, 2)],
     [findall(Degree - Next, (knight_move(p(2, 1), Next), \+ member(Next, [p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [6 - p(3, 3), 1 - p(4, 2)]),
      [6 - p(3, 3), 1 - p(4, 2)] \= [],
      keysort([6 - p(3, 3), 1 - p(4, 2)], [1 - p(4, 2), 6 - p(3, 3)]),
      tour_(p(4, 2), [p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(2, 1), Next), \+ member(Next, [p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [6 - p(3, 3), 1 - p(4, 2)]),
     collected,
     [],
     []).
step([6 - p(3, 3), 1 - p(4, 2)] \= [], builtin, [], []).
step(keysort([6 - p(3, 3), 1 - p(4, 2)], [1 - p(4, 2), 6 - p(3, 3)]), builtin, [], []).
step(tour_(p(4, 2), [p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(4, 2),
      'Visited' = [p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [2 - p(5, 4)],
      'Best' = p(5, 4)],
     [findall(Degree - Next, (knight_move(p(4, 2), Next), \+ member(Next, [p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(5, 4)]),
      [2 - p(5, 4)] \= [],
      keysort([2 - p(5, 4)], [2 - p(5, 4)]),
      tour_(p(5, 4), [p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(4, 2), Next), \+ member(Next, [p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(5, 4)]),
     collected,
     [],
     []).
step([2 - p(5, 4)] \= [], builtin, [], []).
step(keysort([2 - p(5, 4)], [2 - p(5, 4)]), builtin, [], []).
step(tour_(p(5, 4), [p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(5, 4),
      'Visited' = [p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [1 - p(3, 5), 5 - p(3, 3)],
      'Best' = p(3, 5)],
     [findall(Degree - Next, (knight_move(p(5, 4), Next), \+ member(Next, [p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [1 - p(3, 5), 5 - p(3, 3)]),
      [1 - p(3, 5), 5 - p(3, 3)] \= [],
      keysort([1 - p(3, 5), 5 - p(3, 3)], [1 - p(3, 5), 5 - p(3, 3)]),
      tour_(p(3, 5), [p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(5, 4), Next), \+ member(Next, [p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [1 - p(3, 5), 5 - p(3, 3)]),
     collected,
     [],
     []).
step([1 - p(3, 5), 5 - p(3, 3)] \= [], builtin, [], []).
step(keysort([1 - p(3, 5), 5 - p(3, 3)], [1 - p(3, 5), 5 - p(3, 3)]), builtin, [], []).
step(tour_(p(3, 5), [p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(3, 5),
      'Visited' = [p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [2 - p(1, 4)],
      'Best' = p(1, 4)],
     [findall(Degree - Next, (knight_move(p(3, 5), Next), \+ member(Next, [p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(1, 4)]),
      [2 - p(1, 4)] \= [],
      keysort([2 - p(1, 4)], [2 - p(1, 4)]),
      tour_(p(1, 4), [p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(3, 5), Next), \+ member(Next, [p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(1, 4)]),
     collected,
     [],
     []).
step([2 - p(1, 4)] \= [], builtin, [], []).
step(keysort([2 - p(1, 4)], [2 - p(1, 4)]), builtin, [], []).
step(tour_(p(1, 4), [p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(1, 4),
      'Visited' = [p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [1 - p(2, 2), 4 - p(3, 3)],
      'Best' = p(2, 2)],
     [findall(Degree - Next, (knight_move(p(1, 4), Next), \+ member(Next, [p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [1 - p(2, 2), 4 - p(3, 3)]),
      [1 - p(2, 2), 4 - p(3, 3)] \= [],
      keysort([1 - p(2, 2), 4 - p(3, 3)], [1 - p(2, 2), 4 - p(3, 3)]),
      tour_(p(2, 2), [p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(1, 4), Next), \+ member(Next, [p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [1 - p(2, 2), 4 - p(3, 3)]),
     collected,
     [],
     []).
step([1 - p(2, 2), 4 - p(3, 3)] \= [], builtin, [], []).
step(keysort([1 - p(2, 2), 4 - p(3, 3)], [1 - p(2, 2), 4 - p(3, 3)]), builtin, [], []).
step(tour_(p(2, 2), [p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(2, 2),
      'Visited' = [p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [2 - p(4, 1)],
      'Best' = p(4, 1)],
     [findall(Degree - Next, (knight_move(p(2, 2), Next), \+ member(Next, [p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(4, 1)]),
      [2 - p(4, 1)] \= [],
      keysort([2 - p(4, 1)], [2 - p(4, 1)]),
      tour_(p(4, 1), [p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(2, 2), Next), \+ member(Next, [p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(4, 1)]),
     collected,
     [],
     []).
step([2 - p(4, 1)] \= [], builtin, [], []).
step(keysort([2 - p(4, 1)], [2 - p(4, 1)]), builtin, [], []).
step(tour_(p(4, 1), [p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(4, 1),
      'Visited' = [p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [1 - p(5, 3), 3 - p(3, 3)],
      'Best' = p(5, 3)],
     [findall(Degree - Next, (knight_move(p(4, 1), Next), \+ member(Next, [p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [1 - p(5, 3), 3 - p(3, 3)]),
      [1 - p(5, 3), 3 - p(3, 3)] \= [],
      keysort([1 - p(5, 3), 3 - p(3, 3)], [1 - p(5, 3), 3 - p(3, 3)]),
      tour_(p(5, 3), [p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(4, 1), Next), \+ member(Next, [p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [1 - p(5, 3), 3 - p(3, 3)]),
     collected,
     [],
     []).
step([1 - p(5, 3), 3 - p(3, 3)] \= [], builtin, [], []).
step(keysort([1 - p(5, 3), 3 - p(3, 3)], [1 - p(5, 3), 3 - p(3, 3)]), builtin, [], []).
step(tour_(p(5, 3), [p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(5, 3),
      'Visited' = [p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [2 - p(4, 5)],
      'Best' = p(4, 5)],
     [findall(Degree - Next, (knight_move(p(5, 3), Next), \+ member(Next, [p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(4, 5)]),
      [2 - p(4, 5)] \= [],
      keysort([2 - p(4, 5)], [2 - p(4, 5)]),
      tour_(p(4, 5), [p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(5, 3), Next), \+ member(Next, [p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(4, 5)]),
     collected,
     [],
     []).
step([2 - p(4, 5)] \= [], builtin, [], []).
step(keysort([2 - p(4, 5)], [2 - p(4, 5)]), builtin, [], []).
step(tour_(p(4, 5), [p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(4, 5),
      'Visited' = [p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [2 - p(3, 3), 1 - p(2, 4)],
      'Best' = p(2, 4)],
     [findall(Degree - Next, (knight_move(p(4, 5), Next), \+ member(Next, [p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(3, 3), 1 - p(2, 4)]),
      [2 - p(3, 3), 1 - p(2, 4)] \= [],
      keysort([2 - p(3, 3), 1 - p(2, 4)], [1 - p(2, 4), 2 - p(3, 3)]),
      tour_(p(2, 4), [p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(4, 5), Next), \+ member(Next, [p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(3, 3), 1 - p(2, 4)]),
     collected,
     [],
     []).
step([2 - p(3, 3), 1 - p(2, 4)] \= [], builtin, [], []).
step(keysort([2 - p(3, 3), 1 - p(2, 4)], [1 - p(2, 4), 2 - p(3, 3)]), builtin, [], []).
step(tour_(p(2, 4), [p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(2, 4),
      'Visited' = [p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [2 - p(1, 2)],
      'Best' = p(1, 2)],
     [findall(Degree - Next, (knight_move(p(2, 4), Next), \+ member(Next, [p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(1, 2)]),
      [2 - p(1, 2)] \= [],
      keysort([2 - p(1, 2)], [2 - p(1, 2)]),
      tour_(p(1, 2), [p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(2, 4), Next), \+ member(Next, [p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [2 - p(1, 2)]),
     collected,
     [],
     []).
step([2 - p(1, 2)] \= [], builtin, [], []).
step(keysort([2 - p(1, 2)], [2 - p(1, 2)]), builtin, [], []).
step(tour_(p(1, 2), [p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(1, 2),
      'Visited' = [p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [1 - p(3, 3), 1 - p(3, 1)],
      'Best' = p(3, 3)],
     [findall(Degree - Next, (knight_move(p(1, 2), Next), \+ member(Next, [p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [1 - p(3, 3), 1 - p(3, 1)]),
      [1 - p(3, 3), 1 - p(3, 1)] \= [],
      keysort([1 - p(3, 3), 1 - p(3, 1)], [1 - p(3, 3), 1 - p(3, 1)]),
      tour_(p(3, 3), [p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(1, 2), Next), \+ member(Next, [p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [1 - p(3, 3), 1 - p(3, 1)]),
     collected,
     [],
     []).
step([1 - p(3, 3), 1 - p(3, 1)] \= [], builtin, [], []).
step(keysort([1 - p(3, 3), 1 - p(3, 1)], [1 - p(3, 3), 1 - p(3, 1)]), builtin, [], []).
step(tour_(p(3, 3), [p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(3, 3),
      'Visited' = [p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [1 - p(5, 2)],
      'Best' = p(5, 2)],
     [findall(Degree - Next, (knight_move(p(3, 3), Next), \+ member(Next, [p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [1 - p(5, 2)]),
      [1 - p(5, 2)] \= [],
      keysort([1 - p(5, 2)], [1 - p(5, 2)]),
      tour_(p(5, 2), [p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(3, 3), Next), \+ member(Next, [p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [1 - p(5, 2)]),
     collected,
     [],
     []).
step([1 - p(5, 2)] \= [], builtin, [], []).
step(keysort([1 - p(5, 2)], [1 - p(5, 2)]), builtin, [], []).
step(tour_(p(5, 2), [p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(5),
     ['Current' = p(5, 2),
      'Visited' = [p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25,
      'Tour' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'Candidates' = [0 - p(3, 1)],
      'Best' = p(3, 1)],
     [findall(Degree - Next, (knight_move(p(5, 2), Next), \+ member(Next, [p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [0 - p(3, 1)]),
      [0 - p(3, 1)] \= [],
      keysort([0 - p(3, 1)], [0 - p(3, 1)]),
      tour_(p(3, 1), [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)])]).
step(findall(Degree - Next, (knight_move(p(5, 2), Next), \+ member(Next, [p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]), degree(Next, [p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], Degree)), [0 - p(3, 1)]),
     collected,
     [],
     []).
step([0 - p(3, 1)] \= [], builtin, [], []).
step(keysort([0 - p(3, 1)], [0 - p(3, 1)]), builtin, [], []).
step(tour_(p(3, 1), [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25, [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)]),
     rule(4),
     ['Visited' = [p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)],
      'SquareCount' = 25],
     [length([p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25),
      !]).
step(length([p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], 25),
     builtin,
     [],
     []).
step(!, builtin, [], []).
step(reverse([p(3, 1), p(5, 2), p(3, 3), p(1, 2), p(2, 4), p(4, 5), p(5, 3), p(4, 1), p(2, 2), p(1, 4), p(3, 5), p(5, 4), p(4, 2), p(2, 1), p(1, 3), p(2, 5), p(4, 4), p(3, 2), p(5, 1), p(4, 3), p(5, 5), p(3, 4), p(1, 5), p(2, 3), p(1, 1)], [p(1, 1), p(2, 3), p(1, 5), p(3, 4), p(5, 5), p(4, 3), p(5, 1), p(3, 2), p(4, 4), p(2, 5), p(1, 3), p(2, 1), p(4, 2), p(5, 4), p(3, 5), p(1, 4), p(2, 2), p(4, 1), p(5, 3), p(4, 5), p(2, 4), p(1, 2), p(3, 3), p(5, 2), p(3, 1)]),
     builtin,
     [],
     []).
step(length([p(1, 1), p(2, 3), p(1, 5), p(3, 4), p(5, 5), p(4, 3), p(5, 1), p(3, 2), p(4, 4), p(2, 5), p(1, 3), p(2, 1), p(4, 2), p(5, 4), p(3, 5), p(1, 4), p(2, 2), p(4, 1), p(5, 3), p(4, 5), p(2, 4), p(1, 2), p(3, 3), p(5, 2), p(3, 1)], 25),
     builtin,
     [],
     []).
