The document describes three approaches to maintaining a pointer called "last" when searching a list in backtracking search. The simplest approach searches the list from the start each time and may check the same elements multiple times per branch. The second approach restores the value of last on backtracking so the list only needs to be scanned once per branch. The third, "circular" approach stores the value of last without backtracking, continuing the search from last+1 and looping back to the start of the list when it reaches the end. An example search tree demonstrates how the circular approach works and amortizes the cost of calls to an acceptability function over the nodes in the tree.