order the list(remaining list) by count of valid positions in new graph (if you dont do this you can end up with a wrong non solvable, because putting items that can go on more positions increases the possible position count of items with less)
continue picking items in the list, add items to cycle graph at valid positions
if there is no valid position in graph or graph cannot be created continue on next
if graph created revert back to start iteration where graph has been created