how backtracking works in prolog