#include #define rand() dis(gen) using namespace std; int i, j, a[20][20], rs, ans, b[20][20]; mt19937 gen(time(0)); uniform_int_distribution dis(0, 1e6); bool check(int x, int y, int xx, int yy) { int freq[400]; memset(freq, 0, sizeof(freq)); int sz = (xx - x + 1) * (yy - y + 1); for(int i = x; i <= xx; ++i) for(int j = y; j <= yy; ++j) ++freq[a[i][j]]; for(int i = 1; i <= sz; ++i) if(freq[i] != 1) return 0; return 1; } int main() { ios_base::sync_with_stdio(0); b[1][1] = b[2][3] = b[3][2] = b[4][4] = 1; b[1][2] = b[2][4] = b[3][1] = b[4][3] = 2; b[1][3] = b[2][1] = b[3][4] = b[4][2] = 3; b[1][4] = b[2][2] = b[3][3] = b[4][1] = 4; for(i = 1; i <= 16; ++i) for(j = 1; j <= 16; ++j) a[i][j] = b[i % 4 + 1][j % 4 + 1]; for(i = 1, rs = 0; i <= 16; ++i) for(j = 1; j <= 16; ++j) for(int k = i; k <= 16; ++k) for(int it = j; it <= 16; ++it) if(check(i, j, k, it)) ++rs; for(i = 1; i <= 16; ++i) for(j = 1; j <= 16; ++j) cout << a[i][j] << " \n"[j == 16]; return 0; }