#include "Azzurro.h"
#include <bits/stdc++.h>
using namespace std;
vector <vector <int>> Azzurro(int N, int l, string S) {
vector <vector <int>> A(N, vector <int>(N));
int it = 0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (i == 0 && j > 0) continue;
if (i < N-1 && j == N-1) continue;
if (it < l) A[i][j] = S[it++] - 'A';
}
}
for (int c = 1; c < 2*(N-1); c++) {
int l = max(0, c-(N-1)), r = min(c, N-1);
for (int i = l + 2; i <= r; i += 2) A[l][c-l] ^= A[i][c-i];
}
return A;
}
#include "Bordeaux.h"
#include <bits/stdc++.h>
using namespace std;
string Bordeaux(int N, int l, vector <vector <int>> A) {
int x = 0, y = 0;
for (int c = 1; c < 2*(N-1); c++) {
int l = max(0, c-(N-1)), r = min(c, N-1);
int val = 0;
for (int i = l; i <= r; i += 2) val ^= A[i][c-i];
if (val == ((x - l) & 1)) x++;
else y++;
A[x][y] ^= 1;
}
A[0][0] ^= 1, A[N-1][N-1] ^= 1;
string s = "";
int it = 0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (i == 0 && j > 0) continue;
if (i < N-1 && j == N-1) continue;
if (it++ < l) s += ('A' + A[i][j]);
}
}
return s;
}