https://indielullabies.com/how-do-you-solve-a-hamiltonian-path-problem/