#include <bits/stdc++.h>
using namespace std;
int board[8][8];
vector<int> ds[64];
int dx[] = {-2, -2, -1, -1, 1, 1, 2, 2};
int dy[] = {1, -1, 2, -2, 2, -2, -1, 1};
const int N = 64;
int path[N];
bool vis[N];
int x, y, s;
vector<pair<int, int>> qu(64);
int res[8][8];
void xay() {
int cnt = 0;
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
qu[cnt] = {i, j};
cnt++;
}
}
}
bool check(int x, int y) {
return (x >= 0 && x < 8 && y >= 0 && y < 8);
}
void convert() {
int cnt = 0;
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
board[i][j] = cnt++;
}
}
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
for (int k = 0; k < 8; k++) {
int nx = i + dx[k], ny = j + dy[k];
if (check(nx, ny)) {
ds[board[i][j]].push_back(board[nx][ny]);
}
}
}
}
}
bool issafe(int v, int pos) {
if (find(ds[path[pos - 1]].begin(), ds[path[pos - 1]].end(), v) == ds[path[pos - 1]].end()) {
return false;
}
return !vis[v];
}
bool hal(int pos) {
if (pos == 64) return true;
sort(ds[path[pos - 1]].begin(), ds[path[pos - 1]].end(), [](int a, int b) {
return ds[a].size() < ds[b].size();
});
for (int v : ds[path[pos - 1]]) {
if (issafe(v, pos)) {
path[pos] = v;
vis[v] = true;
if (hal(pos + 1)) return true;
path[pos] = -1;
vis[v] = false;
}
}
return false;
}
void doi() {
int cnt = 1;
for (int i = 0; i < 64; i++) {
int temp = path[i];
int z = qu[temp].first, t = qu[temp].second;
res[z][t] = cnt++;
}
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
cout << res[i][j] << ' ';
}
cout << endl;
}
}
void tim() {
memset(path, -1, sizeof(path));
memset(vis, false, sizeof(vis));
path[0] = s;
vis[s] = true;
if (hal(1)) {
doi();
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
//freopen("output.txt", "w", stdout);
convert();
xay();
cin >> x >> y;
s = board[y - 1][x - 1];
tim();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgYm9hcmRbOF1bOF07CnZlY3RvcjxpbnQ+IGRzWzY0XTsKaW50IGR4W10gPSB7LTIsIC0yLCAtMSwgLTEsIDEsIDEsIDIsIDJ9OwppbnQgZHlbXSA9IHsxLCAtMSwgMiwgLTIsIDIsIC0yLCAtMSwgMX07CmNvbnN0IGludCBOID0gNjQ7CmludCBwYXRoW05dOwpib29sIHZpc1tOXTsKaW50IHgsIHksIHM7CnZlY3RvcjxwYWlyPGludCwgaW50Pj4gcXUoNjQpOwppbnQgcmVzWzhdWzhdOwoKdm9pZCB4YXkoKSB7CiAgICBpbnQgY250ID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgODsgaSsrKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCA4OyBqKyspIHsKICAgICAgICAgICAgcXVbY250XSA9IHtpLCBqfTsKICAgICAgICAgICAgY250Kys7CiAgICAgICAgfQogICAgfQp9Cgpib29sIGNoZWNrKGludCB4LCBpbnQgeSkgewogICAgcmV0dXJuICh4ID49IDAgJiYgeCA8IDggJiYgeSA+PSAwICYmIHkgPCA4KTsKfQoKdm9pZCBjb252ZXJ0KCkgewogICAgaW50IGNudCA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IDg7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgODsgaisrKSB7CiAgICAgICAgICAgIGJvYXJkW2ldW2pdID0gY250Kys7CiAgICAgICAgfQogICAgfQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykgewogICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IDg7IGsrKykgewogICAgICAgICAgICAgICAgaW50IG54ID0gaSArIGR4W2tdLCBueSA9IGogKyBkeVtrXTsKICAgICAgICAgICAgICAgIGlmIChjaGVjayhueCwgbnkpKSB7CiAgICAgICAgICAgICAgICAgICAgZHNbYm9hcmRbaV1bal1dLnB1c2hfYmFjayhib2FyZFtueF1bbnldKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKYm9vbCBpc3NhZmUoaW50IHYsIGludCBwb3MpIHsKICAgIGlmIChmaW5kKGRzW3BhdGhbcG9zIC0gMV1dLmJlZ2luKCksIGRzW3BhdGhbcG9zIC0gMV1dLmVuZCgpLCB2KSA9PSBkc1twYXRoW3BvcyAtIDFdXS5lbmQoKSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHJldHVybiAhdmlzW3ZdOwp9Cgpib29sIGhhbChpbnQgcG9zKSB7CiAgICBpZiAocG9zID09IDY0KSByZXR1cm4gdHJ1ZTsKICAgIHNvcnQoZHNbcGF0aFtwb3MgLSAxXV0uYmVnaW4oKSwgZHNbcGF0aFtwb3MgLSAxXV0uZW5kKCksIFtdKGludCBhLCBpbnQgYikgewogICAgICAgIHJldHVybiBkc1thXS5zaXplKCkgPCBkc1tiXS5zaXplKCk7CiAgICB9KTsKCiAgICBmb3IgKGludCB2IDogZHNbcGF0aFtwb3MgLSAxXV0pIHsKICAgICAgICBpZiAoaXNzYWZlKHYsIHBvcykpIHsKICAgICAgICAgICAgcGF0aFtwb3NdID0gdjsKICAgICAgICAgICAgdmlzW3ZdID0gdHJ1ZTsKICAgICAgICAgICAgaWYgKGhhbChwb3MgKyAxKSkgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIHBhdGhbcG9zXSA9IC0xOwogICAgICAgICAgICB2aXNbdl0gPSBmYWxzZTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gZmFsc2U7Cn0KCnZvaWQgZG9pKCkgewogICAgaW50IGNudCA9IDE7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IDY0OyBpKyspIHsKICAgICAgICBpbnQgdGVtcCA9IHBhdGhbaV07CiAgICAgICAgaW50IHogPSBxdVt0ZW1wXS5maXJzdCwgdCA9IHF1W3RlbXBdLnNlY29uZDsKICAgICAgICByZXNbel1bdF0gPSBjbnQrKzsKICAgIH0KICAgIGZvciAoaW50IGkgPSAwOyBpIDwgODsgaSsrKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCA4OyBqKyspIHsKICAgICAgICAgICAgY291dCA8PCByZXNbaV1bal0gPDwgJyAnOwogICAgICAgIH0KICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICB9Cn0KCnZvaWQgdGltKCkgewogICAgbWVtc2V0KHBhdGgsIC0xLCBzaXplb2YocGF0aCkpOwogICAgbWVtc2V0KHZpcywgZmFsc2UsIHNpemVvZih2aXMpKTsKICAgIHBhdGhbMF0gPSBzOwogICAgdmlzW3NdID0gdHJ1ZTsKICAgIGlmIChoYWwoMSkpIHsKICAgICAgICBkb2koKTsKICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICAvL2ZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CiAgICBjb252ZXJ0KCk7CiAgICB4YXkoKTsgIAogICAgY2luID4+IHggPj4geTsKICAgIHMgPSBib2FyZFt5IC0gMV1beCAtIDFdOyAgCiAgICB0aW0oKTsKICAgIHJldHVybiAwOwp9Cg==