sudoku9([[1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]).

clause(1,
       sudoku9(var('Rows')),
       (var('Rows') = [[1, anonymous(1), anonymous(2), anonymous(3), anonymous(4), 7, anonymous(5), 9, anonymous(6)], [anonymous(7), 3, anonymous(8), anonymous(9), 2, anonymous(10), anonymous(11), anonymous(12), 8], [anonymous(13), anonymous(14), 9, 6, anonymous(15), anonymous(16), 5, anonymous(17), anonymous(18)], [anonymous(19), anonymous(20), 5, 3, anonymous(21), anonymous(22), 9, anonymous(23), anonymous(24)], [anonymous(25), 1, anonymous(26), anonymous(27), 8, anonymous(28), anonymous(29), anonymous(30), 2], [6, anonymous(31), anonymous(32), anonymous(33), anonymous(34), 4, anonymous(35), anonymous(36), anonymous(37)], [3, anonymous(38), anonymous(39), anonymous(40), anonymous(41), anonymous(42), anonymous(43), 1, anonymous(44)], [anonymous(45), 4, anonymous(46), anonymous(47), anonymous(48), anonymous(49), anonymous(50), anonymous(51), 7], [anonymous(52), anonymous(53), 7, anonymous(54), anonymous(55), anonymous(56), 3, anonymous(57), anonymous(58)]],
        sudoku9_rows(var('Rows')),
        sudoku9_transpose(var('Rows'), var('Columns')),
        sudoku9_rows_distinct(var('Columns')),
        sudoku9_blocks(var('Rows')),
        sudoku9_flatten(var('Rows'), var('Cells')),
        labeling([ff], var('Cells')))).
clause(2, sudoku9_rows([]), true).
clause(3,
       sudoku9_rows([var('Row') | var('Rows')]),
       (var('Row') ins 1..9, all_distinct(var('Row')), sudoku9_rows(var('Rows')))).
clause(4, sudoku9_rows_distinct([]), true).
clause(5,
       sudoku9_rows_distinct([var('Row') | var('Rows')]),
       (all_distinct(var('Row')), sudoku9_rows_distinct(var('Rows')))).
clause(6, sudoku9_transpose([[] | anonymous(1)], []), true).
clause(7,
       sudoku9_transpose(var('Rows'), [var('Column') | var('Columns')]),
       (sudoku9_heads_tails(var('Rows'), var('Column'), var('Tails')),
        sudoku9_transpose(var('Tails'), var('Columns')))).
clause(8, sudoku9_heads_tails([], [], []), true).
clause(9,
       sudoku9_heads_tails([[var('Head') | var('Tail')] | var('Rows')], [var('Head') | var('Heads')], [var('Tail') | var('Tails')]),
       sudoku9_heads_tails(var('Rows'), var('Heads'), var('Tails'))).
clause(10, sudoku9_blocks([]), true).
clause(11,
       sudoku9_blocks([var('A'), var('B'), var('C') | var('Rows')]),
       (sudoku9_block_row(var('A'), var('B'), var('C')), sudoku9_blocks(var('Rows')))).
clause(12, sudoku9_block_row([], [], []), true).
clause(13,
       sudoku9_block_row([var('A'), var('B'), var('C') | var('As')], [var('D'), var('E'), var('F') | var('Bs')], [var('G'), var('H'), var('I') | var('Cs')]),
       (all_distinct([var('A'), var('B'), var('C'), var('D'), var('E'), var('F'), var('G'), var('H'), var('I')]),
        sudoku9_block_row(var('As'), var('Bs'), var('Cs')))).
clause(14, sudoku9_flatten([], []), true).
clause(15,
       sudoku9_flatten([var('Row') | var('Rows')], var('Cells')),
       (sudoku9_append(var('Row'), var('Rest'), var('Cells')),
        sudoku9_flatten(var('Rows'), var('Rest')))).
clause(16, sudoku9_append([], var('Ys'), var('Ys')), true).
clause(17,
       sudoku9_append([var('X') | var('Xs')], var('Ys'), [var('X') | var('Zs')]),
       sudoku9_append(var('Xs'), var('Ys'), var('Zs'))).

step(sudoku9([[1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(1),
     ['Rows' = [[1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]],
      'Columns' = [[1, 5, 7, 4, 9, 6, 3, 2, 8], [6, 3, 8, 7, 1, 2, 5, 4, 9], [2, 4, 9, 5, 3, 8, 6, 1, 7], [8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]],
      'Cells' = [1, 6, 2, 8, 5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [[[1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]] = [[1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]],
      sudoku9_rows([[1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]),
      sudoku9_transpose([[1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [[1, 5, 7, 4, 9, 6, 3, 2, 8], [6, 3, 8, 7, 1, 2, 5, 4, 9], [2, 4, 9, 5, 3, 8, 6, 1, 7], [8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]),
      sudoku9_rows_distinct([[1, 5, 7, 4, 9, 6, 3, 2, 8], [6, 3, 8, 7, 1, 2, 5, 4, 9], [2, 4, 9, 5, 3, 8, 6, 1, 7], [8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]),
      sudoku9_blocks([[1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]),
      sudoku9_flatten([[1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [1, 6, 2, 8, 5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
      labeling([ff], [1, 6, 2, 8, 5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step([[1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]] = [[1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]],
     builtin,
     [],
     []).
step(sudoku9_rows([[1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(3),
     ['Row' = [1, 6, 2, 8, 5, 7, 4, 9, 3],
      'Rows' = [[5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]],
     [[1, 6, 2, 8, 5, 7, 4, 9, 3] ins 1..9,
      all_distinct([1, 6, 2, 8, 5, 7, 4, 9, 3]),
      sudoku9_rows([[5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]])]).
step([1, 6, 2, 8, 5, 7, 4, 9, 3] ins 1..9, builtin, [], []).
step(all_distinct([1, 6, 2, 8, 5, 7, 4, 9, 3]), builtin, [], []).
step(sudoku9_rows([[5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(3),
     ['Row' = [5, 3, 4, 1, 2, 9, 6, 7, 8],
      'Rows' = [[7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]],
     [[5, 3, 4, 1, 2, 9, 6, 7, 8] ins 1..9,
      all_distinct([5, 3, 4, 1, 2, 9, 6, 7, 8]),
      sudoku9_rows([[7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]])]).
step([5, 3, 4, 1, 2, 9, 6, 7, 8] ins 1..9, builtin, [], []).
step(all_distinct([5, 3, 4, 1, 2, 9, 6, 7, 8]), builtin, [], []).
step(sudoku9_rows([[7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(3),
     ['Row' = [7, 8, 9, 6, 4, 3, 5, 2, 1],
      'Rows' = [[4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]],
     [[7, 8, 9, 6, 4, 3, 5, 2, 1] ins 1..9,
      all_distinct([7, 8, 9, 6, 4, 3, 5, 2, 1]),
      sudoku9_rows([[4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]])]).
step([7, 8, 9, 6, 4, 3, 5, 2, 1] ins 1..9, builtin, [], []).
step(all_distinct([7, 8, 9, 6, 4, 3, 5, 2, 1]), builtin, [], []).
step(sudoku9_rows([[4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(3),
     ['Row' = [4, 7, 5, 3, 1, 2, 9, 8, 6],
      'Rows' = [[9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]],
     [[4, 7, 5, 3, 1, 2, 9, 8, 6] ins 1..9,
      all_distinct([4, 7, 5, 3, 1, 2, 9, 8, 6]),
      sudoku9_rows([[9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]])]).
step([4, 7, 5, 3, 1, 2, 9, 8, 6] ins 1..9, builtin, [], []).
step(all_distinct([4, 7, 5, 3, 1, 2, 9, 8, 6]), builtin, [], []).
step(sudoku9_rows([[9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(3),
     ['Row' = [9, 1, 3, 5, 8, 6, 7, 4, 2],
      'Rows' = [[6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]],
     [[9, 1, 3, 5, 8, 6, 7, 4, 2] ins 1..9,
      all_distinct([9, 1, 3, 5, 8, 6, 7, 4, 2]),
      sudoku9_rows([[6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]])]).
step([9, 1, 3, 5, 8, 6, 7, 4, 2] ins 1..9, builtin, [], []).
step(all_distinct([9, 1, 3, 5, 8, 6, 7, 4, 2]), builtin, [], []).
step(sudoku9_rows([[6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(3),
     ['Row' = [6, 2, 8, 7, 9, 4, 1, 3, 5],
      'Rows' = [[3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]],
     [[6, 2, 8, 7, 9, 4, 1, 3, 5] ins 1..9,
      all_distinct([6, 2, 8, 7, 9, 4, 1, 3, 5]),
      sudoku9_rows([[3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]])]).
step([6, 2, 8, 7, 9, 4, 1, 3, 5] ins 1..9, builtin, [], []).
step(all_distinct([6, 2, 8, 7, 9, 4, 1, 3, 5]), builtin, [], []).
step(sudoku9_rows([[3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(3),
     ['Row' = [3, 5, 6, 4, 7, 8, 2, 1, 9],
      'Rows' = [[2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]],
     [[3, 5, 6, 4, 7, 8, 2, 1, 9] ins 1..9,
      all_distinct([3, 5, 6, 4, 7, 8, 2, 1, 9]),
      sudoku9_rows([[2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]])]).
step([3, 5, 6, 4, 7, 8, 2, 1, 9] ins 1..9, builtin, [], []).
step(all_distinct([3, 5, 6, 4, 7, 8, 2, 1, 9]), builtin, [], []).
step(sudoku9_rows([[2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(3),
     ['Row' = [2, 4, 1, 9, 3, 5, 8, 6, 7], 'Rows' = [[8, 9, 7, 2, 6, 1, 3, 5, 4]]],
     [[2, 4, 1, 9, 3, 5, 8, 6, 7] ins 1..9,
      all_distinct([2, 4, 1, 9, 3, 5, 8, 6, 7]),
      sudoku9_rows([[8, 9, 7, 2, 6, 1, 3, 5, 4]])]).
step([2, 4, 1, 9, 3, 5, 8, 6, 7] ins 1..9, builtin, [], []).
step(all_distinct([2, 4, 1, 9, 3, 5, 8, 6, 7]), builtin, [], []).
step(sudoku9_rows([[8, 9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(3),
     ['Row' = [8, 9, 7, 2, 6, 1, 3, 5, 4], 'Rows' = []],
     [[8, 9, 7, 2, 6, 1, 3, 5, 4] ins 1..9,
      all_distinct([8, 9, 7, 2, 6, 1, 3, 5, 4]),
      sudoku9_rows([])]).
step([8, 9, 7, 2, 6, 1, 3, 5, 4] ins 1..9, builtin, [], []).
step(all_distinct([8, 9, 7, 2, 6, 1, 3, 5, 4]), builtin, [], []).
step(sudoku9_rows([]), fact(2), [], []).
step(sudoku9_transpose([[1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [[1, 5, 7, 4, 9, 6, 3, 2, 8], [6, 3, 8, 7, 1, 2, 5, 4, 9], [2, 4, 9, 5, 3, 8, 6, 1, 7], [8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]),
     rule(7),
     ['Rows' = [[1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]],
      'Column' = [1, 5, 7, 4, 9, 6, 3, 2, 8],
      'Columns' = [[6, 3, 8, 7, 1, 2, 5, 4, 9], [2, 4, 9, 5, 3, 8, 6, 1, 7], [8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]],
      'Tails' = [[6, 2, 8, 5, 7, 4, 9, 3], [3, 4, 1, 2, 9, 6, 7, 8], [8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [1, 5, 7, 4, 9, 6, 3, 2, 8], [[6, 2, 8, 5, 7, 4, 9, 3], [3, 4, 1, 2, 9, 6, 7, 8], [8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]]),
      sudoku9_transpose([[6, 2, 8, 5, 7, 4, 9, 3], [3, 4, 1, 2, 9, 6, 7, 8], [8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]], [[6, 3, 8, 7, 1, 2, 5, 4, 9], [2, 4, 9, 5, 3, 8, 6, 1, 7], [8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]])]).
step(sudoku9_heads_tails([[1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [1, 5, 7, 4, 9, 6, 3, 2, 8], [[6, 2, 8, 5, 7, 4, 9, 3], [3, 4, 1, 2, 9, 6, 7, 8], [8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 1,
      'Tail' = [6, 2, 8, 5, 7, 4, 9, 3],
      'Rows' = [[5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [5, 7, 4, 9, 6, 3, 2, 8],
      'Tails' = [[3, 4, 1, 2, 9, 6, 7, 8], [8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [5, 7, 4, 9, 6, 3, 2, 8], [[3, 4, 1, 2, 9, 6, 7, 8], [8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [5, 7, 4, 9, 6, 3, 2, 8], [[3, 4, 1, 2, 9, 6, 7, 8], [8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 5,
      'Tail' = [3, 4, 1, 2, 9, 6, 7, 8],
      'Rows' = [[7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [7, 4, 9, 6, 3, 2, 8],
      'Tails' = [[8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [7, 4, 9, 6, 3, 2, 8], [[8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [7, 4, 9, 6, 3, 2, 8], [[8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 7,
      'Tail' = [8, 9, 6, 4, 3, 5, 2, 1],
      'Rows' = [[4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [4, 9, 6, 3, 2, 8],
      'Tails' = [[7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [4, 9, 6, 3, 2, 8], [[7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [4, 9, 6, 3, 2, 8], [[7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 4,
      'Tail' = [7, 5, 3, 1, 2, 9, 8, 6],
      'Rows' = [[9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [9, 6, 3, 2, 8],
      'Tails' = [[1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [9, 6, 3, 2, 8], [[1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [9, 6, 3, 2, 8], [[1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 9,
      'Tail' = [1, 3, 5, 8, 6, 7, 4, 2],
      'Rows' = [[6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [6, 3, 2, 8],
      'Tails' = [[2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [6, 3, 2, 8], [[2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [6, 3, 2, 8], [[2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 6,
      'Tail' = [2, 8, 7, 9, 4, 1, 3, 5],
      'Rows' = [[3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [3, 2, 8],
      'Tails' = [[5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [3, 2, 8], [[5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [3, 2, 8], [[5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 3,
      'Tail' = [5, 6, 4, 7, 8, 2, 1, 9],
      'Rows' = [[2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [2, 8],
      'Tails' = [[4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [2, 8], [[4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [2, 8], [[4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 2,
      'Tail' = [4, 1, 9, 3, 5, 8, 6, 7],
      'Rows' = [[8, 9, 7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [8],
      'Tails' = [[9, 7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[8, 9, 7, 2, 6, 1, 3, 5, 4]], [8], [[9, 7, 2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[8, 9, 7, 2, 6, 1, 3, 5, 4]], [8], [[9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 8, 'Tail' = [9, 7, 2, 6, 1, 3, 5, 4], 'Rows' = [], 'Heads' = [], 'Tails' = []],
     [sudoku9_heads_tails([], [], [])]).
step(sudoku9_heads_tails([], [], []), fact(8), [], []).
step(sudoku9_transpose([[6, 2, 8, 5, 7, 4, 9, 3], [3, 4, 1, 2, 9, 6, 7, 8], [8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]], [[6, 3, 8, 7, 1, 2, 5, 4, 9], [2, 4, 9, 5, 3, 8, 6, 1, 7], [8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]),
     rule(7),
     ['Rows' = [[6, 2, 8, 5, 7, 4, 9, 3], [3, 4, 1, 2, 9, 6, 7, 8], [8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]],
      'Column' = [6, 3, 8, 7, 1, 2, 5, 4, 9],
      'Columns' = [[2, 4, 9, 5, 3, 8, 6, 1, 7], [8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]],
      'Tails' = [[2, 8, 5, 7, 4, 9, 3], [4, 1, 2, 9, 6, 7, 8], [9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[6, 2, 8, 5, 7, 4, 9, 3], [3, 4, 1, 2, 9, 6, 7, 8], [8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]], [6, 3, 8, 7, 1, 2, 5, 4, 9], [[2, 8, 5, 7, 4, 9, 3], [4, 1, 2, 9, 6, 7, 8], [9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]]),
      sudoku9_transpose([[2, 8, 5, 7, 4, 9, 3], [4, 1, 2, 9, 6, 7, 8], [9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]], [[2, 4, 9, 5, 3, 8, 6, 1, 7], [8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]])]).
step(sudoku9_heads_tails([[6, 2, 8, 5, 7, 4, 9, 3], [3, 4, 1, 2, 9, 6, 7, 8], [8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]], [6, 3, 8, 7, 1, 2, 5, 4, 9], [[2, 8, 5, 7, 4, 9, 3], [4, 1, 2, 9, 6, 7, 8], [9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 6,
      'Tail' = [2, 8, 5, 7, 4, 9, 3],
      'Rows' = [[3, 4, 1, 2, 9, 6, 7, 8], [8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [3, 8, 7, 1, 2, 5, 4, 9],
      'Tails' = [[4, 1, 2, 9, 6, 7, 8], [9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[3, 4, 1, 2, 9, 6, 7, 8], [8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]], [3, 8, 7, 1, 2, 5, 4, 9], [[4, 1, 2, 9, 6, 7, 8], [9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[3, 4, 1, 2, 9, 6, 7, 8], [8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]], [3, 8, 7, 1, 2, 5, 4, 9], [[4, 1, 2, 9, 6, 7, 8], [9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 3,
      'Tail' = [4, 1, 2, 9, 6, 7, 8],
      'Rows' = [[8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [8, 7, 1, 2, 5, 4, 9],
      'Tails' = [[9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]], [8, 7, 1, 2, 5, 4, 9], [[9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[8, 9, 6, 4, 3, 5, 2, 1], [7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]], [8, 7, 1, 2, 5, 4, 9], [[9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 8,
      'Tail' = [9, 6, 4, 3, 5, 2, 1],
      'Rows' = [[7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [7, 1, 2, 5, 4, 9],
      'Tails' = [[5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]], [7, 1, 2, 5, 4, 9], [[5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[7, 5, 3, 1, 2, 9, 8, 6], [1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]], [7, 1, 2, 5, 4, 9], [[5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 7,
      'Tail' = [5, 3, 1, 2, 9, 8, 6],
      'Rows' = [[1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [1, 2, 5, 4, 9],
      'Tails' = [[3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]], [1, 2, 5, 4, 9], [[3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[1, 3, 5, 8, 6, 7, 4, 2], [2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]], [1, 2, 5, 4, 9], [[3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 1,
      'Tail' = [3, 5, 8, 6, 7, 4, 2],
      'Rows' = [[2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [2, 5, 4, 9],
      'Tails' = [[8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]], [2, 5, 4, 9], [[8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[2, 8, 7, 9, 4, 1, 3, 5], [5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]], [2, 5, 4, 9], [[8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 2,
      'Tail' = [8, 7, 9, 4, 1, 3, 5],
      'Rows' = [[5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [5, 4, 9],
      'Tails' = [[6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]], [5, 4, 9], [[6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[5, 6, 4, 7, 8, 2, 1, 9], [4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]], [5, 4, 9], [[6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 5,
      'Tail' = [6, 4, 7, 8, 2, 1, 9],
      'Rows' = [[4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [4, 9],
      'Tails' = [[1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]], [4, 9], [[1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[4, 1, 9, 3, 5, 8, 6, 7], [9, 7, 2, 6, 1, 3, 5, 4]], [4, 9], [[1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 4,
      'Tail' = [1, 9, 3, 5, 8, 6, 7],
      'Rows' = [[9, 7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [9],
      'Tails' = [[7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[9, 7, 2, 6, 1, 3, 5, 4]], [9], [[7, 2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[9, 7, 2, 6, 1, 3, 5, 4]], [9], [[7, 2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 9, 'Tail' = [7, 2, 6, 1, 3, 5, 4], 'Rows' = [], 'Heads' = [], 'Tails' = []],
     [sudoku9_heads_tails([], [], [])]).
step(sudoku9_transpose([[2, 8, 5, 7, 4, 9, 3], [4, 1, 2, 9, 6, 7, 8], [9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]], [[2, 4, 9, 5, 3, 8, 6, 1, 7], [8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]),
     rule(7),
     ['Rows' = [[2, 8, 5, 7, 4, 9, 3], [4, 1, 2, 9, 6, 7, 8], [9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]],
      'Column' = [2, 4, 9, 5, 3, 8, 6, 1, 7],
      'Columns' = [[8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]],
      'Tails' = [[8, 5, 7, 4, 9, 3], [1, 2, 9, 6, 7, 8], [6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[2, 8, 5, 7, 4, 9, 3], [4, 1, 2, 9, 6, 7, 8], [9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]], [2, 4, 9, 5, 3, 8, 6, 1, 7], [[8, 5, 7, 4, 9, 3], [1, 2, 9, 6, 7, 8], [6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]]),
      sudoku9_transpose([[8, 5, 7, 4, 9, 3], [1, 2, 9, 6, 7, 8], [6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]], [[8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]])]).
step(sudoku9_heads_tails([[2, 8, 5, 7, 4, 9, 3], [4, 1, 2, 9, 6, 7, 8], [9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]], [2, 4, 9, 5, 3, 8, 6, 1, 7], [[8, 5, 7, 4, 9, 3], [1, 2, 9, 6, 7, 8], [6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 2,
      'Tail' = [8, 5, 7, 4, 9, 3],
      'Rows' = [[4, 1, 2, 9, 6, 7, 8], [9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [4, 9, 5, 3, 8, 6, 1, 7],
      'Tails' = [[1, 2, 9, 6, 7, 8], [6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[4, 1, 2, 9, 6, 7, 8], [9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]], [4, 9, 5, 3, 8, 6, 1, 7], [[1, 2, 9, 6, 7, 8], [6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[4, 1, 2, 9, 6, 7, 8], [9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]], [4, 9, 5, 3, 8, 6, 1, 7], [[1, 2, 9, 6, 7, 8], [6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 4,
      'Tail' = [1, 2, 9, 6, 7, 8],
      'Rows' = [[9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [9, 5, 3, 8, 6, 1, 7],
      'Tails' = [[6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]], [9, 5, 3, 8, 6, 1, 7], [[6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[9, 6, 4, 3, 5, 2, 1], [5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]], [9, 5, 3, 8, 6, 1, 7], [[6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 9,
      'Tail' = [6, 4, 3, 5, 2, 1],
      'Rows' = [[5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [5, 3, 8, 6, 1, 7],
      'Tails' = [[3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]], [5, 3, 8, 6, 1, 7], [[3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[5, 3, 1, 2, 9, 8, 6], [3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]], [5, 3, 8, 6, 1, 7], [[3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 5,
      'Tail' = [3, 1, 2, 9, 8, 6],
      'Rows' = [[3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [3, 8, 6, 1, 7],
      'Tails' = [[5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]], [3, 8, 6, 1, 7], [[5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[3, 5, 8, 6, 7, 4, 2], [8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]], [3, 8, 6, 1, 7], [[5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 3,
      'Tail' = [5, 8, 6, 7, 4, 2],
      'Rows' = [[8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [8, 6, 1, 7],
      'Tails' = [[7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]], [8, 6, 1, 7], [[7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[8, 7, 9, 4, 1, 3, 5], [6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]], [8, 6, 1, 7], [[7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 8,
      'Tail' = [7, 9, 4, 1, 3, 5],
      'Rows' = [[6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [6, 1, 7],
      'Tails' = [[4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]], [6, 1, 7], [[4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[6, 4, 7, 8, 2, 1, 9], [1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]], [6, 1, 7], [[4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 6,
      'Tail' = [4, 7, 8, 2, 1, 9],
      'Rows' = [[1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [1, 7],
      'Tails' = [[9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]], [1, 7], [[9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[1, 9, 3, 5, 8, 6, 7], [7, 2, 6, 1, 3, 5, 4]], [1, 7], [[9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 1,
      'Tail' = [9, 3, 5, 8, 6, 7],
      'Rows' = [[7, 2, 6, 1, 3, 5, 4]],
      'Heads' = [7],
      'Tails' = [[2, 6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[7, 2, 6, 1, 3, 5, 4]], [7], [[2, 6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[7, 2, 6, 1, 3, 5, 4]], [7], [[2, 6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 7, 'Tail' = [2, 6, 1, 3, 5, 4], 'Rows' = [], 'Heads' = [], 'Tails' = []],
     [sudoku9_heads_tails([], [], [])]).
step(sudoku9_transpose([[8, 5, 7, 4, 9, 3], [1, 2, 9, 6, 7, 8], [6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]], [[8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]),
     rule(7),
     ['Rows' = [[8, 5, 7, 4, 9, 3], [1, 2, 9, 6, 7, 8], [6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]],
      'Column' = [8, 1, 6, 3, 5, 7, 4, 9, 2],
      'Columns' = [[5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]],
      'Tails' = [[5, 7, 4, 9, 3], [2, 9, 6, 7, 8], [4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[8, 5, 7, 4, 9, 3], [1, 2, 9, 6, 7, 8], [6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]], [8, 1, 6, 3, 5, 7, 4, 9, 2], [[5, 7, 4, 9, 3], [2, 9, 6, 7, 8], [4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]]),
      sudoku9_transpose([[5, 7, 4, 9, 3], [2, 9, 6, 7, 8], [4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]], [[5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]])]).
step(sudoku9_heads_tails([[8, 5, 7, 4, 9, 3], [1, 2, 9, 6, 7, 8], [6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]], [8, 1, 6, 3, 5, 7, 4, 9, 2], [[5, 7, 4, 9, 3], [2, 9, 6, 7, 8], [4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 8,
      'Tail' = [5, 7, 4, 9, 3],
      'Rows' = [[1, 2, 9, 6, 7, 8], [6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]],
      'Heads' = [1, 6, 3, 5, 7, 4, 9, 2],
      'Tails' = [[2, 9, 6, 7, 8], [4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[1, 2, 9, 6, 7, 8], [6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]], [1, 6, 3, 5, 7, 4, 9, 2], [[2, 9, 6, 7, 8], [4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[1, 2, 9, 6, 7, 8], [6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]], [1, 6, 3, 5, 7, 4, 9, 2], [[2, 9, 6, 7, 8], [4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 1,
      'Tail' = [2, 9, 6, 7, 8],
      'Rows' = [[6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]],
      'Heads' = [6, 3, 5, 7, 4, 9, 2],
      'Tails' = [[4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]], [6, 3, 5, 7, 4, 9, 2], [[4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[6, 4, 3, 5, 2, 1], [3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]], [6, 3, 5, 7, 4, 9, 2], [[4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 6,
      'Tail' = [4, 3, 5, 2, 1],
      'Rows' = [[3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]],
      'Heads' = [3, 5, 7, 4, 9, 2],
      'Tails' = [[1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]], [3, 5, 7, 4, 9, 2], [[1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]], [3, 5, 7, 4, 9, 2], [[1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 3,
      'Tail' = [1, 2, 9, 8, 6],
      'Rows' = [[5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]],
      'Heads' = [5, 7, 4, 9, 2],
      'Tails' = [[8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]], [5, 7, 4, 9, 2], [[8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]], [5, 7, 4, 9, 2], [[8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 5,
      'Tail' = [8, 6, 7, 4, 2],
      'Rows' = [[7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]],
      'Heads' = [7, 4, 9, 2],
      'Tails' = [[9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]], [7, 4, 9, 2], [[9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[7, 9, 4, 1, 3, 5], [4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]], [7, 4, 9, 2], [[9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 7,
      'Tail' = [9, 4, 1, 3, 5],
      'Rows' = [[4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]],
      'Heads' = [4, 9, 2],
      'Tails' = [[7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]], [4, 9, 2], [[7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]], [4, 9, 2], [[7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 4,
      'Tail' = [7, 8, 2, 1, 9],
      'Rows' = [[9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]],
      'Heads' = [9, 2],
      'Tails' = [[3, 5, 8, 6, 7], [6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]], [9, 2], [[3, 5, 8, 6, 7], [6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]], [9, 2], [[3, 5, 8, 6, 7], [6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 9,
      'Tail' = [3, 5, 8, 6, 7],
      'Rows' = [[2, 6, 1, 3, 5, 4]],
      'Heads' = [2],
      'Tails' = [[6, 1, 3, 5, 4]]],
     [sudoku9_heads_tails([[2, 6, 1, 3, 5, 4]], [2], [[6, 1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[2, 6, 1, 3, 5, 4]], [2], [[6, 1, 3, 5, 4]]),
     rule(9),
     ['Head' = 2, 'Tail' = [6, 1, 3, 5, 4], 'Rows' = [], 'Heads' = [], 'Tails' = []],
     [sudoku9_heads_tails([], [], [])]).
step(sudoku9_transpose([[5, 7, 4, 9, 3], [2, 9, 6, 7, 8], [4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]], [[5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]),
     rule(7),
     ['Rows' = [[5, 7, 4, 9, 3], [2, 9, 6, 7, 8], [4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]],
      'Column' = [5, 2, 4, 1, 8, 9, 7, 3, 6],
      'Columns' = [[7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]],
      'Tails' = [[7, 4, 9, 3], [9, 6, 7, 8], [3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]]],
     [sudoku9_heads_tails([[5, 7, 4, 9, 3], [2, 9, 6, 7, 8], [4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]], [5, 2, 4, 1, 8, 9, 7, 3, 6], [[7, 4, 9, 3], [9, 6, 7, 8], [3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]]),
      sudoku9_transpose([[7, 4, 9, 3], [9, 6, 7, 8], [3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]], [[7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]])]).
step(sudoku9_heads_tails([[5, 7, 4, 9, 3], [2, 9, 6, 7, 8], [4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]], [5, 2, 4, 1, 8, 9, 7, 3, 6], [[7, 4, 9, 3], [9, 6, 7, 8], [3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]]),
     rule(9),
     ['Head' = 5,
      'Tail' = [7, 4, 9, 3],
      'Rows' = [[2, 9, 6, 7, 8], [4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]],
      'Heads' = [2, 4, 1, 8, 9, 7, 3, 6],
      'Tails' = [[9, 6, 7, 8], [3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]]],
     [sudoku9_heads_tails([[2, 9, 6, 7, 8], [4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]], [2, 4, 1, 8, 9, 7, 3, 6], [[9, 6, 7, 8], [3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[2, 9, 6, 7, 8], [4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]], [2, 4, 1, 8, 9, 7, 3, 6], [[9, 6, 7, 8], [3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]]),
     rule(9),
     ['Head' = 2,
      'Tail' = [9, 6, 7, 8],
      'Rows' = [[4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]],
      'Heads' = [4, 1, 8, 9, 7, 3, 6],
      'Tails' = [[3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]]],
     [sudoku9_heads_tails([[4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]], [4, 1, 8, 9, 7, 3, 6], [[3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[4, 3, 5, 2, 1], [1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]], [4, 1, 8, 9, 7, 3, 6], [[3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]]),
     rule(9),
     ['Head' = 4,
      'Tail' = [3, 5, 2, 1],
      'Rows' = [[1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]],
      'Heads' = [1, 8, 9, 7, 3, 6],
      'Tails' = [[2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]]],
     [sudoku9_heads_tails([[1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]], [1, 8, 9, 7, 3, 6], [[2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[1, 2, 9, 8, 6], [8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]], [1, 8, 9, 7, 3, 6], [[2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]]),
     rule(9),
     ['Head' = 1,
      'Tail' = [2, 9, 8, 6],
      'Rows' = [[8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]],
      'Heads' = [8, 9, 7, 3, 6],
      'Tails' = [[6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]]],
     [sudoku9_heads_tails([[8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]], [8, 9, 7, 3, 6], [[6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[8, 6, 7, 4, 2], [9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]], [8, 9, 7, 3, 6], [[6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]]),
     rule(9),
     ['Head' = 8,
      'Tail' = [6, 7, 4, 2],
      'Rows' = [[9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]],
      'Heads' = [9, 7, 3, 6],
      'Tails' = [[4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]]],
     [sudoku9_heads_tails([[9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]], [9, 7, 3, 6], [[4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[9, 4, 1, 3, 5], [7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]], [9, 7, 3, 6], [[4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]]),
     rule(9),
     ['Head' = 9,
      'Tail' = [4, 1, 3, 5],
      'Rows' = [[7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]],
      'Heads' = [7, 3, 6],
      'Tails' = [[8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]]],
     [sudoku9_heads_tails([[7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]], [7, 3, 6], [[8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[7, 8, 2, 1, 9], [3, 5, 8, 6, 7], [6, 1, 3, 5, 4]], [7, 3, 6], [[8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]]),
     rule(9),
     ['Head' = 7,
      'Tail' = [8, 2, 1, 9],
      'Rows' = [[3, 5, 8, 6, 7], [6, 1, 3, 5, 4]],
      'Heads' = [3, 6],
      'Tails' = [[5, 8, 6, 7], [1, 3, 5, 4]]],
     [sudoku9_heads_tails([[3, 5, 8, 6, 7], [6, 1, 3, 5, 4]], [3, 6], [[5, 8, 6, 7], [1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[3, 5, 8, 6, 7], [6, 1, 3, 5, 4]], [3, 6], [[5, 8, 6, 7], [1, 3, 5, 4]]),
     rule(9),
     ['Head' = 3,
      'Tail' = [5, 8, 6, 7],
      'Rows' = [[6, 1, 3, 5, 4]],
      'Heads' = [6],
      'Tails' = [[1, 3, 5, 4]]],
     [sudoku9_heads_tails([[6, 1, 3, 5, 4]], [6], [[1, 3, 5, 4]])]).
step(sudoku9_heads_tails([[6, 1, 3, 5, 4]], [6], [[1, 3, 5, 4]]),
     rule(9),
     ['Head' = 6, 'Tail' = [1, 3, 5, 4], 'Rows' = [], 'Heads' = [], 'Tails' = []],
     [sudoku9_heads_tails([], [], [])]).
step(sudoku9_transpose([[7, 4, 9, 3], [9, 6, 7, 8], [3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]], [[7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]),
     rule(7),
     ['Rows' = [[7, 4, 9, 3], [9, 6, 7, 8], [3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]],
      'Column' = [7, 9, 3, 2, 6, 4, 8, 5, 1],
      'Columns' = [[4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]],
      'Tails' = [[4, 9, 3], [6, 7, 8], [5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]]],
     [sudoku9_heads_tails([[7, 4, 9, 3], [9, 6, 7, 8], [3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]], [7, 9, 3, 2, 6, 4, 8, 5, 1], [[4, 9, 3], [6, 7, 8], [5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]]),
      sudoku9_transpose([[4, 9, 3], [6, 7, 8], [5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]], [[4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]])]).
step(sudoku9_heads_tails([[7, 4, 9, 3], [9, 6, 7, 8], [3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]], [7, 9, 3, 2, 6, 4, 8, 5, 1], [[4, 9, 3], [6, 7, 8], [5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]]),
     rule(9),
     ['Head' = 7,
      'Tail' = [4, 9, 3],
      'Rows' = [[9, 6, 7, 8], [3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]],
      'Heads' = [9, 3, 2, 6, 4, 8, 5, 1],
      'Tails' = [[6, 7, 8], [5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]]],
     [sudoku9_heads_tails([[9, 6, 7, 8], [3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]], [9, 3, 2, 6, 4, 8, 5, 1], [[6, 7, 8], [5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]])]).
step(sudoku9_heads_tails([[9, 6, 7, 8], [3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]], [9, 3, 2, 6, 4, 8, 5, 1], [[6, 7, 8], [5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]]),
     rule(9),
     ['Head' = 9,
      'Tail' = [6, 7, 8],
      'Rows' = [[3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]],
      'Heads' = [3, 2, 6, 4, 8, 5, 1],
      'Tails' = [[5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]]],
     [sudoku9_heads_tails([[3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]], [3, 2, 6, 4, 8, 5, 1], [[5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]])]).
step(sudoku9_heads_tails([[3, 5, 2, 1], [2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]], [3, 2, 6, 4, 8, 5, 1], [[5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]]),
     rule(9),
     ['Head' = 3,
      'Tail' = [5, 2, 1],
      'Rows' = [[2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]],
      'Heads' = [2, 6, 4, 8, 5, 1],
      'Tails' = [[9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]]],
     [sudoku9_heads_tails([[2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]], [2, 6, 4, 8, 5, 1], [[9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]])]).
step(sudoku9_heads_tails([[2, 9, 8, 6], [6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]], [2, 6, 4, 8, 5, 1], [[9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]]),
     rule(9),
     ['Head' = 2,
      'Tail' = [9, 8, 6],
      'Rows' = [[6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]],
      'Heads' = [6, 4, 8, 5, 1],
      'Tails' = [[7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]]],
     [sudoku9_heads_tails([[6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]], [6, 4, 8, 5, 1], [[7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]])]).
step(sudoku9_heads_tails([[6, 7, 4, 2], [4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]], [6, 4, 8, 5, 1], [[7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]]),
     rule(9),
     ['Head' = 6,
      'Tail' = [7, 4, 2],
      'Rows' = [[4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]],
      'Heads' = [4, 8, 5, 1],
      'Tails' = [[1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]]],
     [sudoku9_heads_tails([[4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]], [4, 8, 5, 1], [[1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]])]).
step(sudoku9_heads_tails([[4, 1, 3, 5], [8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]], [4, 8, 5, 1], [[1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]]),
     rule(9),
     ['Head' = 4,
      'Tail' = [1, 3, 5],
      'Rows' = [[8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]],
      'Heads' = [8, 5, 1],
      'Tails' = [[2, 1, 9], [8, 6, 7], [3, 5, 4]]],
     [sudoku9_heads_tails([[8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]], [8, 5, 1], [[2, 1, 9], [8, 6, 7], [3, 5, 4]])]).
step(sudoku9_heads_tails([[8, 2, 1, 9], [5, 8, 6, 7], [1, 3, 5, 4]], [8, 5, 1], [[2, 1, 9], [8, 6, 7], [3, 5, 4]]),
     rule(9),
     ['Head' = 8,
      'Tail' = [2, 1, 9],
      'Rows' = [[5, 8, 6, 7], [1, 3, 5, 4]],
      'Heads' = [5, 1],
      'Tails' = [[8, 6, 7], [3, 5, 4]]],
     [sudoku9_heads_tails([[5, 8, 6, 7], [1, 3, 5, 4]], [5, 1], [[8, 6, 7], [3, 5, 4]])]).
step(sudoku9_heads_tails([[5, 8, 6, 7], [1, 3, 5, 4]], [5, 1], [[8, 6, 7], [3, 5, 4]]),
     rule(9),
     ['Head' = 5,
      'Tail' = [8, 6, 7],
      'Rows' = [[1, 3, 5, 4]],
      'Heads' = [1],
      'Tails' = [[3, 5, 4]]],
     [sudoku9_heads_tails([[1, 3, 5, 4]], [1], [[3, 5, 4]])]).
step(sudoku9_heads_tails([[1, 3, 5, 4]], [1], [[3, 5, 4]]),
     rule(9),
     ['Head' = 1, 'Tail' = [3, 5, 4], 'Rows' = [], 'Heads' = [], 'Tails' = []],
     [sudoku9_heads_tails([], [], [])]).
step(sudoku9_transpose([[4, 9, 3], [6, 7, 8], [5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]], [[4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]),
     rule(7),
     ['Rows' = [[4, 9, 3], [6, 7, 8], [5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]],
      'Column' = [4, 6, 5, 9, 7, 1, 2, 8, 3],
      'Columns' = [[9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]],
      'Tails' = [[9, 3], [7, 8], [2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]]],
     [sudoku9_heads_tails([[4, 9, 3], [6, 7, 8], [5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]], [4, 6, 5, 9, 7, 1, 2, 8, 3], [[9, 3], [7, 8], [2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]]),
      sudoku9_transpose([[9, 3], [7, 8], [2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]], [[9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]])]).
step(sudoku9_heads_tails([[4, 9, 3], [6, 7, 8], [5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]], [4, 6, 5, 9, 7, 1, 2, 8, 3], [[9, 3], [7, 8], [2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]]),
     rule(9),
     ['Head' = 4,
      'Tail' = [9, 3],
      'Rows' = [[6, 7, 8], [5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]],
      'Heads' = [6, 5, 9, 7, 1, 2, 8, 3],
      'Tails' = [[7, 8], [2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]]],
     [sudoku9_heads_tails([[6, 7, 8], [5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]], [6, 5, 9, 7, 1, 2, 8, 3], [[7, 8], [2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]])]).
step(sudoku9_heads_tails([[6, 7, 8], [5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]], [6, 5, 9, 7, 1, 2, 8, 3], [[7, 8], [2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]]),
     rule(9),
     ['Head' = 6,
      'Tail' = [7, 8],
      'Rows' = [[5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]],
      'Heads' = [5, 9, 7, 1, 2, 8, 3],
      'Tails' = [[2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]]],
     [sudoku9_heads_tails([[5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]], [5, 9, 7, 1, 2, 8, 3], [[2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]])]).
step(sudoku9_heads_tails([[5, 2, 1], [9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]], [5, 9, 7, 1, 2, 8, 3], [[2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]]),
     rule(9),
     ['Head' = 5,
      'Tail' = [2, 1],
      'Rows' = [[9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]],
      'Heads' = [9, 7, 1, 2, 8, 3],
      'Tails' = [[8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]]],
     [sudoku9_heads_tails([[9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]], [9, 7, 1, 2, 8, 3], [[8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]])]).
step(sudoku9_heads_tails([[9, 8, 6], [7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]], [9, 7, 1, 2, 8, 3], [[8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]]),
     rule(9),
     ['Head' = 9,
      'Tail' = [8, 6],
      'Rows' = [[7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]],
      'Heads' = [7, 1, 2, 8, 3],
      'Tails' = [[4, 2], [3, 5], [1, 9], [6, 7], [5, 4]]],
     [sudoku9_heads_tails([[7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]], [7, 1, 2, 8, 3], [[4, 2], [3, 5], [1, 9], [6, 7], [5, 4]])]).
step(sudoku9_heads_tails([[7, 4, 2], [1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]], [7, 1, 2, 8, 3], [[4, 2], [3, 5], [1, 9], [6, 7], [5, 4]]),
     rule(9),
     ['Head' = 7,
      'Tail' = [4, 2],
      'Rows' = [[1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]],
      'Heads' = [1, 2, 8, 3],
      'Tails' = [[3, 5], [1, 9], [6, 7], [5, 4]]],
     [sudoku9_heads_tails([[1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]], [1, 2, 8, 3], [[3, 5], [1, 9], [6, 7], [5, 4]])]).
step(sudoku9_heads_tails([[1, 3, 5], [2, 1, 9], [8, 6, 7], [3, 5, 4]], [1, 2, 8, 3], [[3, 5], [1, 9], [6, 7], [5, 4]]),
     rule(9),
     ['Head' = 1,
      'Tail' = [3, 5],
      'Rows' = [[2, 1, 9], [8, 6, 7], [3, 5, 4]],
      'Heads' = [2, 8, 3],
      'Tails' = [[1, 9], [6, 7], [5, 4]]],
     [sudoku9_heads_tails([[2, 1, 9], [8, 6, 7], [3, 5, 4]], [2, 8, 3], [[1, 9], [6, 7], [5, 4]])]).
step(sudoku9_heads_tails([[2, 1, 9], [8, 6, 7], [3, 5, 4]], [2, 8, 3], [[1, 9], [6, 7], [5, 4]]),
     rule(9),
     ['Head' = 2,
      'Tail' = [1, 9],
      'Rows' = [[8, 6, 7], [3, 5, 4]],
      'Heads' = [8, 3],
      'Tails' = [[6, 7], [5, 4]]],
     [sudoku9_heads_tails([[8, 6, 7], [3, 5, 4]], [8, 3], [[6, 7], [5, 4]])]).
step(sudoku9_heads_tails([[8, 6, 7], [3, 5, 4]], [8, 3], [[6, 7], [5, 4]]),
     rule(9),
     ['Head' = 8, 'Tail' = [6, 7], 'Rows' = [[3, 5, 4]], 'Heads' = [3], 'Tails' = [[5, 4]]],
     [sudoku9_heads_tails([[3, 5, 4]], [3], [[5, 4]])]).
step(sudoku9_heads_tails([[3, 5, 4]], [3], [[5, 4]]),
     rule(9),
     ['Head' = 3, 'Tail' = [5, 4], 'Rows' = [], 'Heads' = [], 'Tails' = []],
     [sudoku9_heads_tails([], [], [])]).
step(sudoku9_transpose([[9, 3], [7, 8], [2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]], [[9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]),
     rule(7),
     ['Rows' = [[9, 3], [7, 8], [2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]],
      'Column' = [9, 7, 2, 8, 4, 3, 1, 6, 5],
      'Columns' = [[3, 8, 1, 6, 2, 5, 9, 7, 4]],
      'Tails' = [[3], [8], [1], [6], [2], [5], [9], [7], [4]]],
     [sudoku9_heads_tails([[9, 3], [7, 8], [2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]], [9, 7, 2, 8, 4, 3, 1, 6, 5], [[3], [8], [1], [6], [2], [5], [9], [7], [4]]),
      sudoku9_transpose([[3], [8], [1], [6], [2], [5], [9], [7], [4]], [[3, 8, 1, 6, 2, 5, 9, 7, 4]])]).
step(sudoku9_heads_tails([[9, 3], [7, 8], [2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]], [9, 7, 2, 8, 4, 3, 1, 6, 5], [[3], [8], [1], [6], [2], [5], [9], [7], [4]]),
     rule(9),
     ['Head' = 9,
      'Tail' = [3],
      'Rows' = [[7, 8], [2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]],
      'Heads' = [7, 2, 8, 4, 3, 1, 6, 5],
      'Tails' = [[8], [1], [6], [2], [5], [9], [7], [4]]],
     [sudoku9_heads_tails([[7, 8], [2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]], [7, 2, 8, 4, 3, 1, 6, 5], [[8], [1], [6], [2], [5], [9], [7], [4]])]).
step(sudoku9_heads_tails([[7, 8], [2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]], [7, 2, 8, 4, 3, 1, 6, 5], [[8], [1], [6], [2], [5], [9], [7], [4]]),
     rule(9),
     ['Head' = 7,
      'Tail' = [8],
      'Rows' = [[2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]],
      'Heads' = [2, 8, 4, 3, 1, 6, 5],
      'Tails' = [[1], [6], [2], [5], [9], [7], [4]]],
     [sudoku9_heads_tails([[2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]], [2, 8, 4, 3, 1, 6, 5], [[1], [6], [2], [5], [9], [7], [4]])]).
step(sudoku9_heads_tails([[2, 1], [8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]], [2, 8, 4, 3, 1, 6, 5], [[1], [6], [2], [5], [9], [7], [4]]),
     rule(9),
     ['Head' = 2,
      'Tail' = [1],
      'Rows' = [[8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]],
      'Heads' = [8, 4, 3, 1, 6, 5],
      'Tails' = [[6], [2], [5], [9], [7], [4]]],
     [sudoku9_heads_tails([[8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]], [8, 4, 3, 1, 6, 5], [[6], [2], [5], [9], [7], [4]])]).
step(sudoku9_heads_tails([[8, 6], [4, 2], [3, 5], [1, 9], [6, 7], [5, 4]], [8, 4, 3, 1, 6, 5], [[6], [2], [5], [9], [7], [4]]),
     rule(9),
     ['Head' = 8,
      'Tail' = [6],
      'Rows' = [[4, 2], [3, 5], [1, 9], [6, 7], [5, 4]],
      'Heads' = [4, 3, 1, 6, 5],
      'Tails' = [[2], [5], [9], [7], [4]]],
     [sudoku9_heads_tails([[4, 2], [3, 5], [1, 9], [6, 7], [5, 4]], [4, 3, 1, 6, 5], [[2], [5], [9], [7], [4]])]).
step(sudoku9_heads_tails([[4, 2], [3, 5], [1, 9], [6, 7], [5, 4]], [4, 3, 1, 6, 5], [[2], [5], [9], [7], [4]]),
     rule(9),
     ['Head' = 4,
      'Tail' = [2],
      'Rows' = [[3, 5], [1, 9], [6, 7], [5, 4]],
      'Heads' = [3, 1, 6, 5],
      'Tails' = [[5], [9], [7], [4]]],
     [sudoku9_heads_tails([[3, 5], [1, 9], [6, 7], [5, 4]], [3, 1, 6, 5], [[5], [9], [7], [4]])]).
step(sudoku9_heads_tails([[3, 5], [1, 9], [6, 7], [5, 4]], [3, 1, 6, 5], [[5], [9], [7], [4]]),
     rule(9),
     ['Head' = 3,
      'Tail' = [5],
      'Rows' = [[1, 9], [6, 7], [5, 4]],
      'Heads' = [1, 6, 5],
      'Tails' = [[9], [7], [4]]],
     [sudoku9_heads_tails([[1, 9], [6, 7], [5, 4]], [1, 6, 5], [[9], [7], [4]])]).
step(sudoku9_heads_tails([[1, 9], [6, 7], [5, 4]], [1, 6, 5], [[9], [7], [4]]),
     rule(9),
     ['Head' = 1,
      'Tail' = [9],
      'Rows' = [[6, 7], [5, 4]],
      'Heads' = [6, 5],
      'Tails' = [[7], [4]]],
     [sudoku9_heads_tails([[6, 7], [5, 4]], [6, 5], [[7], [4]])]).
step(sudoku9_heads_tails([[6, 7], [5, 4]], [6, 5], [[7], [4]]),
     rule(9),
     ['Head' = 6, 'Tail' = [7], 'Rows' = [[5, 4]], 'Heads' = [5], 'Tails' = [[4]]],
     [sudoku9_heads_tails([[5, 4]], [5], [[4]])]).
step(sudoku9_heads_tails([[5, 4]], [5], [[4]]),
     rule(9),
     ['Head' = 5, 'Tail' = [4], 'Rows' = [], 'Heads' = [], 'Tails' = []],
     [sudoku9_heads_tails([], [], [])]).
step(sudoku9_transpose([[3], [8], [1], [6], [2], [5], [9], [7], [4]], [[3, 8, 1, 6, 2, 5, 9, 7, 4]]),
     rule(7),
     ['Rows' = [[3], [8], [1], [6], [2], [5], [9], [7], [4]],
      'Column' = [3, 8, 1, 6, 2, 5, 9, 7, 4],
      'Columns' = [],
      'Tails' = [[], [], [], [], [], [], [], [], []]],
     [sudoku9_heads_tails([[3], [8], [1], [6], [2], [5], [9], [7], [4]], [3, 8, 1, 6, 2, 5, 9, 7, 4], [[], [], [], [], [], [], [], [], []]),
      sudoku9_transpose([[], [], [], [], [], [], [], [], []], [])]).
step(sudoku9_heads_tails([[3], [8], [1], [6], [2], [5], [9], [7], [4]], [3, 8, 1, 6, 2, 5, 9, 7, 4], [[], [], [], [], [], [], [], [], []]),
     rule(9),
     ['Head' = 3,
      'Tail' = [],
      'Rows' = [[8], [1], [6], [2], [5], [9], [7], [4]],
      'Heads' = [8, 1, 6, 2, 5, 9, 7, 4],
      'Tails' = [[], [], [], [], [], [], [], []]],
     [sudoku9_heads_tails([[8], [1], [6], [2], [5], [9], [7], [4]], [8, 1, 6, 2, 5, 9, 7, 4], [[], [], [], [], [], [], [], []])]).
step(sudoku9_heads_tails([[8], [1], [6], [2], [5], [9], [7], [4]], [8, 1, 6, 2, 5, 9, 7, 4], [[], [], [], [], [], [], [], []]),
     rule(9),
     ['Head' = 8,
      'Tail' = [],
      'Rows' = [[1], [6], [2], [5], [9], [7], [4]],
      'Heads' = [1, 6, 2, 5, 9, 7, 4],
      'Tails' = [[], [], [], [], [], [], []]],
     [sudoku9_heads_tails([[1], [6], [2], [5], [9], [7], [4]], [1, 6, 2, 5, 9, 7, 4], [[], [], [], [], [], [], []])]).
step(sudoku9_heads_tails([[1], [6], [2], [5], [9], [7], [4]], [1, 6, 2, 5, 9, 7, 4], [[], [], [], [], [], [], []]),
     rule(9),
     ['Head' = 1,
      'Tail' = [],
      'Rows' = [[6], [2], [5], [9], [7], [4]],
      'Heads' = [6, 2, 5, 9, 7, 4],
      'Tails' = [[], [], [], [], [], []]],
     [sudoku9_heads_tails([[6], [2], [5], [9], [7], [4]], [6, 2, 5, 9, 7, 4], [[], [], [], [], [], []])]).
step(sudoku9_heads_tails([[6], [2], [5], [9], [7], [4]], [6, 2, 5, 9, 7, 4], [[], [], [], [], [], []]),
     rule(9),
     ['Head' = 6,
      'Tail' = [],
      'Rows' = [[2], [5], [9], [7], [4]],
      'Heads' = [2, 5, 9, 7, 4],
      'Tails' = [[], [], [], [], []]],
     [sudoku9_heads_tails([[2], [5], [9], [7], [4]], [2, 5, 9, 7, 4], [[], [], [], [], []])]).
step(sudoku9_heads_tails([[2], [5], [9], [7], [4]], [2, 5, 9, 7, 4], [[], [], [], [], []]),
     rule(9),
     ['Head' = 2,
      'Tail' = [],
      'Rows' = [[5], [9], [7], [4]],
      'Heads' = [5, 9, 7, 4],
      'Tails' = [[], [], [], []]],
     [sudoku9_heads_tails([[5], [9], [7], [4]], [5, 9, 7, 4], [[], [], [], []])]).
step(sudoku9_heads_tails([[5], [9], [7], [4]], [5, 9, 7, 4], [[], [], [], []]),
     rule(9),
     ['Head' = 5,
      'Tail' = [],
      'Rows' = [[9], [7], [4]],
      'Heads' = [9, 7, 4],
      'Tails' = [[], [], []]],
     [sudoku9_heads_tails([[9], [7], [4]], [9, 7, 4], [[], [], []])]).
step(sudoku9_heads_tails([[9], [7], [4]], [9, 7, 4], [[], [], []]),
     rule(9),
     ['Head' = 9, 'Tail' = [], 'Rows' = [[7], [4]], 'Heads' = [7, 4], 'Tails' = [[], []]],
     [sudoku9_heads_tails([[7], [4]], [7, 4], [[], []])]).
step(sudoku9_heads_tails([[7], [4]], [7, 4], [[], []]),
     rule(9),
     ['Head' = 7, 'Tail' = [], 'Rows' = [[4]], 'Heads' = [4], 'Tails' = [[]]],
     [sudoku9_heads_tails([[4]], [4], [[]])]).
step(sudoku9_heads_tails([[4]], [4], [[]]),
     rule(9),
     ['Head' = 4, 'Tail' = [], 'Rows' = [], 'Heads' = [], 'Tails' = []],
     [sudoku9_heads_tails([], [], [])]).
step(sudoku9_transpose([[], [], [], [], [], [], [], [], []], []), fact(6), [], []).
step(sudoku9_rows_distinct([[1, 5, 7, 4, 9, 6, 3, 2, 8], [6, 3, 8, 7, 1, 2, 5, 4, 9], [2, 4, 9, 5, 3, 8, 6, 1, 7], [8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]),
     rule(5),
     ['Row' = [1, 5, 7, 4, 9, 6, 3, 2, 8],
      'Rows' = [[6, 3, 8, 7, 1, 2, 5, 4, 9], [2, 4, 9, 5, 3, 8, 6, 1, 7], [8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]],
     [all_distinct([1, 5, 7, 4, 9, 6, 3, 2, 8]),
      sudoku9_rows_distinct([[6, 3, 8, 7, 1, 2, 5, 4, 9], [2, 4, 9, 5, 3, 8, 6, 1, 7], [8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]])]).
step(all_distinct([1, 5, 7, 4, 9, 6, 3, 2, 8]), builtin, [], []).
step(sudoku9_rows_distinct([[6, 3, 8, 7, 1, 2, 5, 4, 9], [2, 4, 9, 5, 3, 8, 6, 1, 7], [8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]),
     rule(5),
     ['Row' = [6, 3, 8, 7, 1, 2, 5, 4, 9],
      'Rows' = [[2, 4, 9, 5, 3, 8, 6, 1, 7], [8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]],
     [all_distinct([6, 3, 8, 7, 1, 2, 5, 4, 9]),
      sudoku9_rows_distinct([[2, 4, 9, 5, 3, 8, 6, 1, 7], [8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]])]).
step(all_distinct([6, 3, 8, 7, 1, 2, 5, 4, 9]), builtin, [], []).
step(sudoku9_rows_distinct([[2, 4, 9, 5, 3, 8, 6, 1, 7], [8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]),
     rule(5),
     ['Row' = [2, 4, 9, 5, 3, 8, 6, 1, 7],
      'Rows' = [[8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]],
     [all_distinct([2, 4, 9, 5, 3, 8, 6, 1, 7]),
      sudoku9_rows_distinct([[8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]])]).
step(all_distinct([2, 4, 9, 5, 3, 8, 6, 1, 7]), builtin, [], []).
step(sudoku9_rows_distinct([[8, 1, 6, 3, 5, 7, 4, 9, 2], [5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]),
     rule(5),
     ['Row' = [8, 1, 6, 3, 5, 7, 4, 9, 2],
      'Rows' = [[5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]],
     [all_distinct([8, 1, 6, 3, 5, 7, 4, 9, 2]),
      sudoku9_rows_distinct([[5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]])]).
step(all_distinct([8, 1, 6, 3, 5, 7, 4, 9, 2]), builtin, [], []).
step(sudoku9_rows_distinct([[5, 2, 4, 1, 8, 9, 7, 3, 6], [7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]),
     rule(5),
     ['Row' = [5, 2, 4, 1, 8, 9, 7, 3, 6],
      'Rows' = [[7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]],
     [all_distinct([5, 2, 4, 1, 8, 9, 7, 3, 6]),
      sudoku9_rows_distinct([[7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]])]).
step(all_distinct([5, 2, 4, 1, 8, 9, 7, 3, 6]), builtin, [], []).
step(sudoku9_rows_distinct([[7, 9, 3, 2, 6, 4, 8, 5, 1], [4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]),
     rule(5),
     ['Row' = [7, 9, 3, 2, 6, 4, 8, 5, 1],
      'Rows' = [[4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]],
     [all_distinct([7, 9, 3, 2, 6, 4, 8, 5, 1]),
      sudoku9_rows_distinct([[4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]])]).
step(all_distinct([7, 9, 3, 2, 6, 4, 8, 5, 1]), builtin, [], []).
step(sudoku9_rows_distinct([[4, 6, 5, 9, 7, 1, 2, 8, 3], [9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]),
     rule(5),
     ['Row' = [4, 6, 5, 9, 7, 1, 2, 8, 3],
      'Rows' = [[9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]],
     [all_distinct([4, 6, 5, 9, 7, 1, 2, 8, 3]),
      sudoku9_rows_distinct([[9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]])]).
step(all_distinct([4, 6, 5, 9, 7, 1, 2, 8, 3]), builtin, [], []).
step(sudoku9_rows_distinct([[9, 7, 2, 8, 4, 3, 1, 6, 5], [3, 8, 1, 6, 2, 5, 9, 7, 4]]),
     rule(5),
     ['Row' = [9, 7, 2, 8, 4, 3, 1, 6, 5], 'Rows' = [[3, 8, 1, 6, 2, 5, 9, 7, 4]]],
     [all_distinct([9, 7, 2, 8, 4, 3, 1, 6, 5]),
      sudoku9_rows_distinct([[3, 8, 1, 6, 2, 5, 9, 7, 4]])]).
step(all_distinct([9, 7, 2, 8, 4, 3, 1, 6, 5]), builtin, [], []).
step(sudoku9_rows_distinct([[3, 8, 1, 6, 2, 5, 9, 7, 4]]),
     rule(5),
     ['Row' = [3, 8, 1, 6, 2, 5, 9, 7, 4], 'Rows' = []],
     [all_distinct([3, 8, 1, 6, 2, 5, 9, 7, 4]), sudoku9_rows_distinct([])]).
step(all_distinct([3, 8, 1, 6, 2, 5, 9, 7, 4]), builtin, [], []).
step(sudoku9_rows_distinct([]), fact(4), [], []).
step(sudoku9_blocks([[1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(11),
     ['A' = [1, 6, 2, 8, 5, 7, 4, 9, 3],
      'B' = [5, 3, 4, 1, 2, 9, 6, 7, 8],
      'C' = [7, 8, 9, 6, 4, 3, 5, 2, 1],
      'Rows' = [[4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_block_row([1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1]),
      sudoku9_blocks([[4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]])]).
step(sudoku9_block_row([1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1]),
     rule(13),
     ['A' = 1,
      'B' = 6,
      'C' = 2,
      'As' = [8, 5, 7, 4, 9, 3],
      'D' = 5,
      'E' = 3,
      'F' = 4,
      'Bs' = [1, 2, 9, 6, 7, 8],
      'G' = 7,
      'H' = 8,
      'I' = 9,
      'Cs' = [6, 4, 3, 5, 2, 1]],
     [all_distinct([1, 6, 2, 5, 3, 4, 7, 8, 9]),
      sudoku9_block_row([8, 5, 7, 4, 9, 3], [1, 2, 9, 6, 7, 8], [6, 4, 3, 5, 2, 1])]).
step(all_distinct([1, 6, 2, 5, 3, 4, 7, 8, 9]), builtin, [], []).
step(sudoku9_block_row([8, 5, 7, 4, 9, 3], [1, 2, 9, 6, 7, 8], [6, 4, 3, 5, 2, 1]),
     rule(13),
     ['A' = 8,
      'B' = 5,
      'C' = 7,
      'As' = [4, 9, 3],
      'D' = 1,
      'E' = 2,
      'F' = 9,
      'Bs' = [6, 7, 8],
      'G' = 6,
      'H' = 4,
      'I' = 3,
      'Cs' = [5, 2, 1]],
     [all_distinct([8, 5, 7, 1, 2, 9, 6, 4, 3]),
      sudoku9_block_row([4, 9, 3], [6, 7, 8], [5, 2, 1])]).
step(all_distinct([8, 5, 7, 1, 2, 9, 6, 4, 3]), builtin, [], []).
step(sudoku9_block_row([4, 9, 3], [6, 7, 8], [5, 2, 1]),
     rule(13),
     ['A' = 4,
      'B' = 9,
      'C' = 3,
      'As' = [],
      'D' = 6,
      'E' = 7,
      'F' = 8,
      'Bs' = [],
      'G' = 5,
      'H' = 2,
      'I' = 1,
      'Cs' = []],
     [all_distinct([4, 9, 3, 6, 7, 8, 5, 2, 1]), sudoku9_block_row([], [], [])]).
step(all_distinct([4, 9, 3, 6, 7, 8, 5, 2, 1]), builtin, [], []).
step(sudoku9_block_row([], [], []), fact(12), [], []).
step(sudoku9_blocks([[4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(11),
     ['A' = [4, 7, 5, 3, 1, 2, 9, 8, 6],
      'B' = [9, 1, 3, 5, 8, 6, 7, 4, 2],
      'C' = [6, 2, 8, 7, 9, 4, 1, 3, 5],
      'Rows' = [[3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]],
     [sudoku9_block_row([4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5]),
      sudoku9_blocks([[3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]])]).
step(sudoku9_block_row([4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5]),
     rule(13),
     ['A' = 4,
      'B' = 7,
      'C' = 5,
      'As' = [3, 1, 2, 9, 8, 6],
      'D' = 9,
      'E' = 1,
      'F' = 3,
      'Bs' = [5, 8, 6, 7, 4, 2],
      'G' = 6,
      'H' = 2,
      'I' = 8,
      'Cs' = [7, 9, 4, 1, 3, 5]],
     [all_distinct([4, 7, 5, 9, 1, 3, 6, 2, 8]),
      sudoku9_block_row([3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5])]).
step(all_distinct([4, 7, 5, 9, 1, 3, 6, 2, 8]), builtin, [], []).
step(sudoku9_block_row([3, 1, 2, 9, 8, 6], [5, 8, 6, 7, 4, 2], [7, 9, 4, 1, 3, 5]),
     rule(13),
     ['A' = 3,
      'B' = 1,
      'C' = 2,
      'As' = [9, 8, 6],
      'D' = 5,
      'E' = 8,
      'F' = 6,
      'Bs' = [7, 4, 2],
      'G' = 7,
      'H' = 9,
      'I' = 4,
      'Cs' = [1, 3, 5]],
     [all_distinct([3, 1, 2, 5, 8, 6, 7, 9, 4]),
      sudoku9_block_row([9, 8, 6], [7, 4, 2], [1, 3, 5])]).
step(all_distinct([3, 1, 2, 5, 8, 6, 7, 9, 4]), builtin, [], []).
step(sudoku9_block_row([9, 8, 6], [7, 4, 2], [1, 3, 5]),
     rule(13),
     ['A' = 9,
      'B' = 8,
      'C' = 6,
      'As' = [],
      'D' = 7,
      'E' = 4,
      'F' = 2,
      'Bs' = [],
      'G' = 1,
      'H' = 3,
      'I' = 5,
      'Cs' = []],
     [all_distinct([9, 8, 6, 7, 4, 2, 1, 3, 5]), sudoku9_block_row([], [], [])]).
step(all_distinct([9, 8, 6, 7, 4, 2, 1, 3, 5]), builtin, [], []).
step(sudoku9_blocks([[3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]]),
     rule(11),
     ['A' = [3, 5, 6, 4, 7, 8, 2, 1, 9],
      'B' = [2, 4, 1, 9, 3, 5, 8, 6, 7],
      'C' = [8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Rows' = []],
     [sudoku9_block_row([3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]),
      sudoku9_blocks([])]).
step(sudoku9_block_row([3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(13),
     ['A' = 3,
      'B' = 5,
      'C' = 6,
      'As' = [4, 7, 8, 2, 1, 9],
      'D' = 2,
      'E' = 4,
      'F' = 1,
      'Bs' = [9, 3, 5, 8, 6, 7],
      'G' = 8,
      'H' = 9,
      'I' = 7,
      'Cs' = [2, 6, 1, 3, 5, 4]],
     [all_distinct([3, 5, 6, 2, 4, 1, 8, 9, 7]),
      sudoku9_block_row([4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4])]).
step(all_distinct([3, 5, 6, 2, 4, 1, 8, 9, 7]), builtin, [], []).
step(sudoku9_block_row([4, 7, 8, 2, 1, 9], [9, 3, 5, 8, 6, 7], [2, 6, 1, 3, 5, 4]),
     rule(13),
     ['A' = 4,
      'B' = 7,
      'C' = 8,
      'As' = [2, 1, 9],
      'D' = 9,
      'E' = 3,
      'F' = 5,
      'Bs' = [8, 6, 7],
      'G' = 2,
      'H' = 6,
      'I' = 1,
      'Cs' = [3, 5, 4]],
     [all_distinct([4, 7, 8, 9, 3, 5, 2, 6, 1]),
      sudoku9_block_row([2, 1, 9], [8, 6, 7], [3, 5, 4])]).
step(all_distinct([4, 7, 8, 9, 3, 5, 2, 6, 1]), builtin, [], []).
step(sudoku9_block_row([2, 1, 9], [8, 6, 7], [3, 5, 4]),
     rule(13),
     ['A' = 2,
      'B' = 1,
      'C' = 9,
      'As' = [],
      'D' = 8,
      'E' = 6,
      'F' = 7,
      'Bs' = [],
      'G' = 3,
      'H' = 5,
      'I' = 4,
      'Cs' = []],
     [all_distinct([2, 1, 9, 8, 6, 7, 3, 5, 4]), sudoku9_block_row([], [], [])]).
step(all_distinct([2, 1, 9, 8, 6, 7, 3, 5, 4]), builtin, [], []).
step(sudoku9_blocks([]), fact(10), [], []).
step(sudoku9_flatten([[1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [1, 6, 2, 8, 5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(15),
     ['Row' = [1, 6, 2, 8, 5, 7, 4, 9, 3],
      'Rows' = [[5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]],
      'Cells' = [1, 6, 2, 8, 5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Rest' = [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [1, 6, 2, 8, 5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
      sudoku9_flatten([[5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([1, 6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [1, 6, 2, 8, 5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 1,
      'Xs' = [6, 2, 8, 5, 7, 4, 9, 3],
      'Ys' = [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [6, 2, 8, 5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [6, 2, 8, 5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([6, 2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [6, 2, 8, 5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 6,
      'Xs' = [2, 8, 5, 7, 4, 9, 3],
      'Ys' = [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [2, 8, 5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [2, 8, 5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([2, 8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [2, 8, 5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 2,
      'Xs' = [8, 5, 7, 4, 9, 3],
      'Ys' = [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [8, 5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [8, 5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([8, 5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [8, 5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 8,
      'Xs' = [5, 7, 4, 9, 3],
      'Ys' = [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([5, 7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 5,
      'Xs' = [7, 4, 9, 3],
      'Ys' = [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([7, 4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 7,
      'Xs' = [4, 9, 3],
      'Ys' = [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([4, 9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 4,
      'Xs' = [9, 3],
      'Ys' = [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([9, 3], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 9,
      'Xs' = [3],
      'Ys' = [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([3], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([3], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 3,
      'Xs' = [],
      'Ys' = [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     fact(16),
     ['Ys' = [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     []).
step(sudoku9_flatten([[5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(15),
     ['Row' = [5, 3, 4, 1, 2, 9, 6, 7, 8],
      'Rows' = [[7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]],
      'Cells' = [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Rest' = [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
      sudoku9_flatten([[7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([5, 3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 5,
      'Xs' = [3, 4, 1, 2, 9, 6, 7, 8],
      'Ys' = [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([3, 4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 3,
      'Xs' = [4, 1, 2, 9, 6, 7, 8],
      'Ys' = [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([4, 1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 4,
      'Xs' = [1, 2, 9, 6, 7, 8],
      'Ys' = [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([1, 2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 1,
      'Xs' = [2, 9, 6, 7, 8],
      'Ys' = [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([2, 9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 2,
      'Xs' = [9, 6, 7, 8],
      'Ys' = [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([9, 6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 9,
      'Xs' = [6, 7, 8],
      'Ys' = [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([6, 7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 6,
      'Xs' = [7, 8],
      'Ys' = [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([7, 8], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 7,
      'Xs' = [8],
      'Ys' = [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([8], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([8], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 8,
      'Xs' = [],
      'Ys' = [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     fact(16),
     ['Ys' = [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     []).
step(sudoku9_flatten([[7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(15),
     ['Row' = [7, 8, 9, 6, 4, 3, 5, 2, 1],
      'Rows' = [[4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]],
      'Cells' = [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Rest' = [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
      sudoku9_flatten([[4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([7, 8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 7,
      'Xs' = [8, 9, 6, 4, 3, 5, 2, 1],
      'Ys' = [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([8, 9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 8,
      'Xs' = [9, 6, 4, 3, 5, 2, 1],
      'Ys' = [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([9, 6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 9,
      'Xs' = [6, 4, 3, 5, 2, 1],
      'Ys' = [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([6, 4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 6,
      'Xs' = [4, 3, 5, 2, 1],
      'Ys' = [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([4, 3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 4,
      'Xs' = [3, 5, 2, 1],
      'Ys' = [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([3, 5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 3,
      'Xs' = [5, 2, 1],
      'Ys' = [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([5, 2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 5,
      'Xs' = [2, 1],
      'Ys' = [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([2, 1], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 2,
      'Xs' = [1],
      'Ys' = [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([1], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([1], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 1,
      'Xs' = [],
      'Ys' = [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     fact(16),
     ['Ys' = [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     []).
step(sudoku9_flatten([[4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(15),
     ['Row' = [4, 7, 5, 3, 1, 2, 9, 8, 6],
      'Rows' = [[9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]],
      'Cells' = [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Rest' = [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
      sudoku9_flatten([[9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([4, 7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 4,
      'Xs' = [7, 5, 3, 1, 2, 9, 8, 6],
      'Ys' = [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([7, 5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 7,
      'Xs' = [5, 3, 1, 2, 9, 8, 6],
      'Ys' = [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([5, 3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 5,
      'Xs' = [3, 1, 2, 9, 8, 6],
      'Ys' = [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([3, 1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 3,
      'Xs' = [1, 2, 9, 8, 6],
      'Ys' = [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([1, 2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 1,
      'Xs' = [2, 9, 8, 6],
      'Ys' = [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([2, 9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 2,
      'Xs' = [9, 8, 6],
      'Ys' = [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([9, 8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 9,
      'Xs' = [8, 6],
      'Ys' = [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([8, 6], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 8,
      'Xs' = [6],
      'Ys' = [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([6], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([6], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 6,
      'Xs' = [],
      'Ys' = [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     fact(16),
     ['Ys' = [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     []).
step(sudoku9_flatten([[9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(15),
     ['Row' = [9, 1, 3, 5, 8, 6, 7, 4, 2],
      'Rows' = [[6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]],
      'Cells' = [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Rest' = [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
      sudoku9_flatten([[6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([9, 1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 9,
      'Xs' = [1, 3, 5, 8, 6, 7, 4, 2],
      'Ys' = [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([1, 3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 1,
      'Xs' = [3, 5, 8, 6, 7, 4, 2],
      'Ys' = [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([3, 5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 3,
      'Xs' = [5, 8, 6, 7, 4, 2],
      'Ys' = [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([5, 8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 5,
      'Xs' = [8, 6, 7, 4, 2],
      'Ys' = [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([8, 6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 8,
      'Xs' = [6, 7, 4, 2],
      'Ys' = [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([6, 7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 6,
      'Xs' = [7, 4, 2],
      'Ys' = [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([7, 4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 7,
      'Xs' = [4, 2],
      'Ys' = [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([4, 2], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 4,
      'Xs' = [2],
      'Ys' = [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([2], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([2], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 2,
      'Xs' = [],
      'Ys' = [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     fact(16),
     ['Ys' = [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     []).
step(sudoku9_flatten([[6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(15),
     ['Row' = [6, 2, 8, 7, 9, 4, 1, 3, 5],
      'Rows' = [[3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]],
      'Cells' = [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Rest' = [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
      sudoku9_flatten([[3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([6, 2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 6,
      'Xs' = [2, 8, 7, 9, 4, 1, 3, 5],
      'Ys' = [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([2, 8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 2,
      'Xs' = [8, 7, 9, 4, 1, 3, 5],
      'Ys' = [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([8, 7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 8,
      'Xs' = [7, 9, 4, 1, 3, 5],
      'Ys' = [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([7, 9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 7,
      'Xs' = [9, 4, 1, 3, 5],
      'Ys' = [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([9, 4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 9,
      'Xs' = [4, 1, 3, 5],
      'Ys' = [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([4, 1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 4,
      'Xs' = [1, 3, 5],
      'Ys' = [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([1, 3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 1,
      'Xs' = [3, 5],
      'Ys' = [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([3, 5], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 3,
      'Xs' = [5],
      'Ys' = [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([5], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([5], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 5,
      'Xs' = [],
      'Ys' = [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     fact(16),
     ['Ys' = [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     []).
step(sudoku9_flatten([[3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(15),
     ['Row' = [3, 5, 6, 4, 7, 8, 2, 1, 9],
      'Rows' = [[2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]],
      'Cells' = [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Rest' = [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
      sudoku9_flatten([[2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([3, 5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 3,
      'Xs' = [5, 6, 4, 7, 8, 2, 1, 9],
      'Ys' = [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([5, 6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 5,
      'Xs' = [6, 4, 7, 8, 2, 1, 9],
      'Ys' = [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([6, 4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 6,
      'Xs' = [4, 7, 8, 2, 1, 9],
      'Ys' = [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([4, 7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 4,
      'Xs' = [7, 8, 2, 1, 9],
      'Ys' = [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([7, 8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 7,
      'Xs' = [8, 2, 1, 9],
      'Ys' = [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([8, 2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 8,
      'Xs' = [2, 1, 9],
      'Ys' = [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([2, 1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 2,
      'Xs' = [1, 9],
      'Ys' = [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([1, 9], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 1,
      'Xs' = [9],
      'Ys' = [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([9], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([9], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 9,
      'Xs' = [],
      'Ys' = [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     fact(16),
     ['Ys' = [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     []).
step(sudoku9_flatten([[2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4]], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(15),
     ['Row' = [2, 4, 1, 9, 3, 5, 8, 6, 7],
      'Rows' = [[8, 9, 7, 2, 6, 1, 3, 5, 4]],
      'Cells' = [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Rest' = [8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
      sudoku9_flatten([[8, 9, 7, 2, 6, 1, 3, 5, 4]], [8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([2, 4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4], [2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 2,
      'Xs' = [4, 1, 9, 3, 5, 8, 6, 7],
      'Ys' = [8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4], [4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([4, 1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4], [4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 4,
      'Xs' = [1, 9, 3, 5, 8, 6, 7],
      'Ys' = [8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4], [1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([1, 9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4], [1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 1,
      'Xs' = [9, 3, 5, 8, 6, 7],
      'Ys' = [8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4], [9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([9, 3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4], [9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 9,
      'Xs' = [3, 5, 8, 6, 7],
      'Ys' = [8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4], [3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([3, 5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4], [3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 3,
      'Xs' = [5, 8, 6, 7],
      'Ys' = [8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4], [5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([5, 8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4], [5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 5,
      'Xs' = [8, 6, 7],
      'Ys' = [8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4], [8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([8, 6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4], [8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 8,
      'Xs' = [6, 7],
      'Ys' = [8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4], [6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([6, 7], [8, 9, 7, 2, 6, 1, 3, 5, 4], [6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 6,
      'Xs' = [7],
      'Ys' = [8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [7, 8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([7], [8, 9, 7, 2, 6, 1, 3, 5, 4], [7, 8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([7], [8, 9, 7, 2, 6, 1, 3, 5, 4], [7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 7,
      'Xs' = [],
      'Ys' = [8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Zs' = [8, 9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([], [8, 9, 7, 2, 6, 1, 3, 5, 4], [8, 9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([], [8, 9, 7, 2, 6, 1, 3, 5, 4], [8, 9, 7, 2, 6, 1, 3, 5, 4]),
     fact(16),
     ['Ys' = [8, 9, 7, 2, 6, 1, 3, 5, 4]],
     []).
step(sudoku9_flatten([[8, 9, 7, 2, 6, 1, 3, 5, 4]], [8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(15),
     ['Row' = [8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Rows' = [],
      'Cells' = [8, 9, 7, 2, 6, 1, 3, 5, 4],
      'Rest' = []],
     [sudoku9_append([8, 9, 7, 2, 6, 1, 3, 5, 4], [], [8, 9, 7, 2, 6, 1, 3, 5, 4]),
      sudoku9_flatten([], [])]).
step(sudoku9_append([8, 9, 7, 2, 6, 1, 3, 5, 4], [], [8, 9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 8, 'Xs' = [9, 7, 2, 6, 1, 3, 5, 4], 'Ys' = [], 'Zs' = [9, 7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([9, 7, 2, 6, 1, 3, 5, 4], [], [9, 7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([9, 7, 2, 6, 1, 3, 5, 4], [], [9, 7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 9, 'Xs' = [7, 2, 6, 1, 3, 5, 4], 'Ys' = [], 'Zs' = [7, 2, 6, 1, 3, 5, 4]],
     [sudoku9_append([7, 2, 6, 1, 3, 5, 4], [], [7, 2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([7, 2, 6, 1, 3, 5, 4], [], [7, 2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 7, 'Xs' = [2, 6, 1, 3, 5, 4], 'Ys' = [], 'Zs' = [2, 6, 1, 3, 5, 4]],
     [sudoku9_append([2, 6, 1, 3, 5, 4], [], [2, 6, 1, 3, 5, 4])]).
step(sudoku9_append([2, 6, 1, 3, 5, 4], [], [2, 6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 2, 'Xs' = [6, 1, 3, 5, 4], 'Ys' = [], 'Zs' = [6, 1, 3, 5, 4]],
     [sudoku9_append([6, 1, 3, 5, 4], [], [6, 1, 3, 5, 4])]).
step(sudoku9_append([6, 1, 3, 5, 4], [], [6, 1, 3, 5, 4]),
     rule(17),
     ['X' = 6, 'Xs' = [1, 3, 5, 4], 'Ys' = [], 'Zs' = [1, 3, 5, 4]],
     [sudoku9_append([1, 3, 5, 4], [], [1, 3, 5, 4])]).
step(sudoku9_append([1, 3, 5, 4], [], [1, 3, 5, 4]),
     rule(17),
     ['X' = 1, 'Xs' = [3, 5, 4], 'Ys' = [], 'Zs' = [3, 5, 4]],
     [sudoku9_append([3, 5, 4], [], [3, 5, 4])]).
step(sudoku9_append([3, 5, 4], [], [3, 5, 4]),
     rule(17),
     ['X' = 3, 'Xs' = [5, 4], 'Ys' = [], 'Zs' = [5, 4]],
     [sudoku9_append([5, 4], [], [5, 4])]).
step(sudoku9_append([5, 4], [], [5, 4]),
     rule(17),
     ['X' = 5, 'Xs' = [4], 'Ys' = [], 'Zs' = [4]],
     [sudoku9_append([4], [], [4])]).
step(sudoku9_append([4], [], [4]),
     rule(17),
     ['X' = 4, 'Xs' = [], 'Ys' = [], 'Zs' = []],
     [sudoku9_append([], [], [])]).
step(sudoku9_append([], [], []), fact(16), ['Ys' = []], []).
step(sudoku9_flatten([], []), fact(14), [], []).
step(labeling([ff], [1, 6, 2, 8, 5, 7, 4, 9, 3, 5, 3, 4, 1, 2, 9, 6, 7, 8, 7, 8, 9, 6, 4, 3, 5, 2, 1, 4, 7, 5, 3, 1, 2, 9, 8, 6, 9, 1, 3, 5, 8, 6, 7, 4, 2, 6, 2, 8, 7, 9, 4, 1, 3, 5, 3, 5, 6, 4, 7, 8, 2, 1, 9, 2, 4, 1, 9, 3, 5, 8, 6, 7, 8, 9, 7, 2, 6, 1, 3, 5, 4]),
     builtin,
     [],
     []).
