function [out, succ] = backtrack_search(Board)
 [r,c] = first_zero_row(Board);
 if (r ~= 0)
     L = candidate_list(Board, r, c);
     while size(L)~= 0
      Board(r,c) = L(1); 
      L = L(2:end);
      [out, succ] = backtrack_search(Board);
      if succ 
          return; 
      end;
     end;
     succ = false;
 else
     succ = true; out = Board;
  