#include <bits/stdc++.h>
using namespace std;
int grid[6][6] = {
{ 1, 0, 1, 0,-1,-1},
{-1,-1,-1, 0,-1,-1},
{-1,-1,-1, 1, 0, 0},
{-1,-1,-1,-1,-1,-1},
{-1,-1, 1,-1,-1, 1},
{-1, 0,-1,-1, 1,-1}
};
int black_row[6] = {0}, black_col[6] = {0};
int white_row[6] = {0}, white_col[6] = {0};
unordered_set<string> vis_row, vis_col;
string ans;
int check() {
unordered_set<string> r, c;
for (int i = 0; i < 6; i++) {
string rr = "";
for (int j = 0; j < 6; j++) rr += to_string(grid[i][j]);
if (r.count(rr)) return 0;
r.insert(rr);
}
for (int i = 0; i < 6; i++) {
string cc = "";
for (int j = 0; j < 6; j++) cc += to_string(grid[j][i]);
if (c.count(cc)) return 0;
c.insert(cc);
}
return 1;
}
int solve(int pos) {
if (pos == 36) {
if (check()) {
ans = "";
for (int i = 0; i < 6; i++)
for (int j = 0; j < 6; j++) ans += to_string(grid[i][j]);
return 1;
}
return 0;
}
int row = pos / 6;
int col = pos % 6;
if (grid[row][col] != -1) return solve(pos + 1);
for (int val = 0; val <= 1; val++) {
if (!val) {
if (white_row[row] >= 3 || white_col[col] >= 3) continue;
} else {
if (black_row[row] >= 3 || black_col[col] >= 3) continue;
}
if (col >= 2 && grid[row][col - 2] == val && grid[row][col - 1] == val) continue;
if (row >= 2 && grid[row - 2][col] == val && grid[row - 1][col] == val) continue;
grid[row][col] = val;
if (val) {
black_row[row]++;
black_col[col]++;
} else {
white_row[row]++;
white_col[col]++;
}
int flag = 1;
string rowstr = "", colstr = "";
int full_row = (col == 5);
int full_col = (row == 5);
if (full_row) {
for (int i = 0; i < 6; i++) rowstr += to_string(grid[row][i]);
if (vis_row.count(rowstr)) flag = 0;
else vis_row.insert(rowstr);
}
if (full_col) {
for (int i = 0; i < 6; i++) colstr += to_string(grid[i][col]);
if (vis_col.count(colstr)) flag = 0;
else vis_col.insert(colstr);
}
if (flag && solve(pos + 1)) return 1;
if (full_row) vis_row.erase(rowstr);
if (full_col) vis_col.erase(colstr);
grid[row][col] = -1;
if (val) {
black_row[row]--;
black_col[col]--;
} else {
white_row[row]--;
white_col[col]--;
}
}
return 0;
}
int main() {
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 6; j++) {
if (grid[i][j] == 1) {
black_row[i]++;
black_col[j]++;
} else if (grid[i][j] == 0) {
white_row[i]++;
white_col[j]++;
}
}
}
if (solve(0)) {
cout << ans << endl;
}
return 0;
}