#include #define rep(i, n) for (int i = 0; i < (n); i++) #define fr(i, a, b) for (int i = (a); i < (b); i++) #define all(c) (c).begin(), (c).end() using namespace std; typedef long long ll; const ll inf = 1e9; const ll mod = 1e9 + 7; int N, X, Y, Z; int a[16][16]; int b[16][16]; void build() { if (N == 4) { a[0][0] = 0; a[0][1] = 1; a[0][2] = 3; a[0][3] = 2; } else if (N == 8) { a[0][0] = 7; a[0][1] = 1; a[0][2] = 5; a[0][3] = 3; a[0][4] = 0; a[0][5] = 6; a[0][6] = 2; a[0][7] = 4; } else { a[0][0] = 7; a[0][1] = 9; a[0][2] = 5; a[0][3] = 11; a[0][4] = 0; a[0][5] = 14; a[0][6] = 2; a[0][7] = 12; a[0][8] = 15; a[0][9] = 1; a[0][10] = 13; a[0][11] = 3; a[0][12] = 8; a[0][13] = 6; a[0][14] = 10; a[0][15] = 4; } for (int i = 1; i < N; i++) { rep (j, N) { a[i][(j + i * 2) % N] = a[0][j]; } } for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { b[j][i] = a[i][j]; } } rep (i, N) { rep (j, N) { a[i][j] = a[i][j] * N + b[i][j] + 1; } } } void solve() { int y, x; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (Z == a[i][j]) { y = i; x = j; } } } int dy = (y - Y + N) % N; int dx = (x - X + N) % N; rep (i, N) { rep (j, N) { if (j > 0) cout << " "; cout << a[(i + dy) % N][(j + dx) % N]; } cout << endl; } cout << endl; } int main() { cin >> N >> X >> Y >> Z; X--; Y--; build(); solve(); }