function out = DFS_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 = DFS_search(Board);
      [r1,c1] = first_zero_row(out);
      if r1 == 0 
          return; 
       else Board(r,c) = 0;
      end;
     end;
 end;
 out= Board;
 