https://pages.ruofeng.me/posts/eight-queen-problem/