#include <bits/stdc++.h>
using namespace std;
#define ll long long
int n, k;
int dx[] = {-1, -2, -2, -1, 1, 2, 2, 1};
int dy[] = {-2, -1, 1, 2, 2, 1, -1, -2};
set<pair<int, int> > soluciones;
bool ok(int x, int y) {
if(x >= 0 && x < n && y >= 0 && y < n)
return true;
return false;
}
void f(int x, int y, int i) { //i = cuantos pasos le quedan al caballo
if(i == k) {
soluciones.insert({x, y});
return;
}else{
//recorremos las 8 posiciones del caballo
for(int j = 0; j < 8; j++){
int nx = x + dx[j]; //nueva posicion en x
int ny = y + dy[j]; //nueva posicion en y
if(ok(nx, ny)) { //verifica que el caballo no se haya salido del tablero
f(nx, ny, i + 1);
}
}
}
}
int main(){
/*
Un caballo está en la celda (0,0) de un tablero de ajedrez n*n.
Es decir, en la esquina superior izquierda, tienes que decir el número de casillas que
puede alcanzar el caballo con exactamente k movimientos.
*/
cin >> n >> k;
f(0, 0, 0);
for(pair<int, int> x : soluciones) {
cout << x.first << " " << x.second << "\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCgppbnQgbiwgazsKaW50IGR4W10gPSB7LTEsIC0yLCAtMiwgLTEsIDEsIDIsIDIsIDF9OwppbnQgZHlbXSA9IHstMiwgLTEsIDEsIDIsIDIsIDEsIC0xLCAtMn07CnNldDxwYWlyPGludCwgaW50PiA+IHNvbHVjaW9uZXM7Cgpib29sIG9rKGludCB4LCBpbnQgeSkgewogICAgaWYoeCA+PSAwICYmIHggPCBuICYmIHkgPj0gMCAmJiB5IDwgbikKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIHJldHVybiBmYWxzZTsKfQoKdm9pZCBmKGludCB4LCBpbnQgeSwgaW50IGkpIHsgLy9pID0gY3VhbnRvcyBwYXNvcyBsZSBxdWVkYW4gYWwgY2FiYWxsbwogICAgaWYoaSA9PSBrKSB7CiAgICAgICAgc29sdWNpb25lcy5pbnNlcnQoe3gsIHl9KTsKICAgICAgICByZXR1cm47CiAgICB9ZWxzZXsKICAgICAgICAvL3JlY29ycmVtb3MgbGFzIDggcG9zaWNpb25lcyBkZWwgY2FiYWxsbwogICAgICAgIGZvcihpbnQgaiA9IDA7IGogPCA4OyBqKyspewogICAgICAgICAgICBpbnQgbnggPSB4ICsgZHhbal07IC8vbnVldmEgcG9zaWNpb24gZW4geAogICAgICAgICAgICBpbnQgbnkgPSB5ICsgZHlbal07IC8vbnVldmEgcG9zaWNpb24gZW4geQogICAgICAgICAgICBpZihvayhueCwgbnkpKSB7IC8vdmVyaWZpY2EgcXVlIGVsIGNhYmFsbG8gbm8gc2UgaGF5YSBzYWxpZG8gZGVsIHRhYmxlcm8KICAgICAgICAgICAgICAgIGYobngsIG55LCBpICsgMSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cgp9CgppbnQgbWFpbigpewogICAgLyoKICAgIFVuIGNhYmFsbG8gZXN0w6EgZW4gbGEgY2VsZGEgKDAsMCkgZGUgdW4gdGFibGVybyBkZSBhamVkcmV6IG4qbi4gCiAgICBFcyBkZWNpciwgZW4gbGEgZXNxdWluYSBzdXBlcmlvciBpenF1aWVyZGEsIHRpZW5lcyBxdWUgZGVjaXIgZWwgbsO6bWVybyBkZSBjYXNpbGxhcyBxdWUgCiAgICBwdWVkZSBhbGNhbnphciBlbCBjYWJhbGxvIGNvbiBleGFjdGFtZW50ZSBrIG1vdmltaWVudG9zLgogICAgKi8KICAgIGNpbiA+PiBuID4+IGs7CiAgICBmKDAsIDAsIDApOwogICAgZm9yKHBhaXI8aW50LCBpbnQ+IHggOiBzb2x1Y2lvbmVzKSB7CiAgICAgICAgY291dCA8PCB4LmZpcnN0IDw8ICIgIiA8PCB4LnNlY29uZCA8PCAiXG4iOwogICAgfQogICAgcmV0dXJuIDA7Cn0K