const int MAX = 1000;
const int m = 3;
const int n = 2;
const int d[n] = {19, 24}; //d[i] < MAX
int f[MAX];
bool g[MAX];
int maxd()
{
int max = 0;
for (int i = 0; i < n; i ++)
{
if (d[i] > max)
{
max = d[i];
}
}
return max;
}
void fill(int step, int last, int n, int x)
{
if (step == m)
{
return;
}
for (int i = last; i < n; i ++)
{
g[x ^ f[i] ^ f[n - i]] = true;
fill(step + 1, i, n - i, x ^ f[i]);
}
}
void calc(int max)
{
memset(f, 0, sizeof(f));
for (int i = 2; i <= max; i ++)
{
memset(g, false, sizeof(g));
fill(1, 1, i, 0);
int k = 0;
while (g[k])
{
k ++;
}
f[i] = k;
}
}
void print()
{
int r = 0;
for (int i = 0; i < n; i ++)
r = r ^ f[d[i]];
cout << "first player: " << ((r == 0) ? "lose" : "win") << endl;
}