1」のようなものは、0で挟まれる部分が1で、1で挟まれる部分が0になってしまう。M=2の場合を考える。Kは2^M以上の場合、XORを取ってKが作れないので、構築できない。2^M」である必要がある。実験として、これをnext_permutationで全通り試して、条件を満たすものを出力して観察すると、「Kを作って、それを両側から挟んでいるような形」が多く見受けられる。X」のような形ができている。ここから、あるKについて、その両側を挟んでいくような形で考えると、同じ数字はxorを取ると0になるので、満たすことがわかる。Kを置いてその両側を挟むように他の数字を対象に置いていけばK以外の数字は条件を満たす。Kが1つ余っており、これをどこかに置く必要があるが、すでに置いたKの両側には、0から2^M-1までの数字でKを除いた数字が並んでおり、このxorを考えるとKになっている。(「0から2^M-1までの数字でKを除いた数字のxor」とKのxorが0にならないといけないため、Kであることがわかる)したがって、「Kの両側に対称となるようにK以外の数字をならべ、最初か最後にKを置いたもの」は条件を満たすため、これを返せばよい。1週間マラソンはきつい。m本の腕とm+1個の関節からなるロボットアームを考える。