Simple depth first tree search using the state monad to remember path, break after first finding