I've also using a period of 68, but WA 36
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<cstring>
#include<map>
#include<queue>
#include<stack>
#include<utility>
#include<cstdlib>
#include<string>
#include<set>
#include<limits>
#include<iomanip>
#include<fstream>
#include<sstream>
#define INF 2147483647
#define LLD int
#define clr(a) memset(a,0,sizeof(a))
#define reset(a) memset(a,-1,sizeof(a))
#define BD(i, j) (i >= 0 && i < N && j >= 0 && j < M)
#define PRINT_VAR(X) (cout << #X << " -> " << X << endl)
#define PI acos(0)
#define MAX_INT 2147483647
#define SIZE 1005
#define MOD 1000000009
using namespace std;
int X[] = {0, 1, 0, -1};
int Y[] = {1, 0, -1, 0};
/* right, down, lft, up */
int M, N;
long long res;
typedef pair<int, int> Point;
int dp[SIZE];
int solve(int n) {
if (dp[n] == -1) {
set<int> s;
s.insert(solve(n - 2));
for (int i = 2; i < n; i++) {
s.insert(solve(i-2) ^ solve(n-i-1));
}
dp[n] = 0;
while (s.find(dp[n]) != s.end())
dp[n]++;
}
return dp[n];
}
int main()
{
int t, tc, x, y, z;
int i, j, k, l, h;
char ch;
#ifndef ONLINE_JUDGE
//freopen("input.txt", "r", stdin);
#endif
reset(dp);
dp[0] = 0;
dp[1] = dp[2] = 1;
cin >> N;
cout << (solve(N % 68) ? "White" : "Black") << endl;
return 0;
}
I changed
```
cout << (solve(N % 68) ? "White" : "Black") << endl;
```
to
```
cout << (solve(N % (68*2)) ? "White" : "Black") << endl;
```
and it got AC