問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
grundy(x) を以下のように定義します。
・ grundy(0) = grundy(1) = 0
・ grundy(x) = mex({grundy(i) xor grundy(x - i - 2) | i = 0, 1, 2, ..., x - 2})
ただし、mex(S) は集合 S に含まれない最小の非負整数を表します。
このとき、grundy(n) を求めてください。
n
grundy(n) を一行で出力してください。
出力の最後に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件を満たします。
・ 1 ≦ n ≦ 10000 = 10^4
4
2
9997
8