code: def solve(self, table_size):
          
          if table_size == 0:
              return [[]]
  
          smaller_solutions = self.solve(table_size - 1)
          solutions = []
          for solution in smaller_solutions:
              for column in range(1, self.board_size + 1):
                  # try adding a new queen to row = n, column = column
                  if not self.under_attack(column, solution):
                      solutions.append(solution + [(table_size, column)])
          return solutions
docs: Solves problem
  
          :param table_size: Size of table
          :return: List of possible solutions