#include <iostream>
using namespace std;
int val(int x, int y) {
if(x == 0 && y == 0) return 0;
int x_block = 1, y_block = 1;
while(x_block * 2 <= x) x_block <<= 1;
while(y_block * 2 <= y) y_block <<= 1;
if(x > 0 && y > 0 && x_block == y_block) {
return val(x - x_block, y - y_block);
}else if(x > y) {
return val(x - x_block, y) + x_block;
}
return val(x, y - y_block) + y_block;
}
int main() {
// your code goes here
int n;
cin >> n;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
cout << val(i, j) << ' ';
}
cout << '\n';
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IHZhbChpbnQgeCwgaW50IHkpIHsKCWlmKHggPT0gMCAmJiB5ID09IDApIHJldHVybiAwOwoJCglpbnQgeF9ibG9jayA9IDEsIHlfYmxvY2sgPSAxOwoJd2hpbGUoeF9ibG9jayAqIDIgPD0geCkgeF9ibG9jayA8PD0gMTsKCXdoaWxlKHlfYmxvY2sgKiAyIDw9IHkpIHlfYmxvY2sgPDw9IDE7CglpZih4ID4gMCAmJiB5ID4gMCAmJiB4X2Jsb2NrID09IHlfYmxvY2spIHsKCQlyZXR1cm4gdmFsKHggLSB4X2Jsb2NrLCB5IC0geV9ibG9jayk7Cgl9ZWxzZSBpZih4ID4geSkgewoJCXJldHVybiB2YWwoeCAtIHhfYmxvY2ssIHkpICsgeF9ibG9jazsKCX0KCXJldHVybiB2YWwoeCwgeSAtIHlfYmxvY2spICsgeV9ibG9jazsKfQppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCWludCBuOwoJY2luID4+IG47Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJZm9yKGludCBqID0gMDsgaiA8IG47IGorKykgewoJCQljb3V0IDw8IHZhbChpLCBqKSA8PCAnICc7CgkJfQoJCWNvdXQgPDwgJ1xuJzsKCX0KCXJldHVybiAwOwp9