#include #include #include using namespace std; int main() { int n, m, k; cin >> n >> m >> k; vector> a(n, vector (n)); vector cnt(m + 1, n * n / m); cnt[0] = 0; int num = 0; for (int i = k - 1; i >= 0; --i) { for (int j = 0; j <= i; ++j) { ++num; if (num > m) break; for (int bx = i; bx < n; bx += k) { for (int by = j; by < n; by += k) { a[bx][by] = num; --cnt[num]; } } ++num; if (num > m) break; if (j < i) { for (int bx = j; bx < n; bx += k) { for (int by = i; by < n; by += k) { a[bx][by] = num; --cnt[num]; } } } } } vector nok; for (int i = 1; i <= m; ++i) { if (cnt[i] < 0) { cout << -1 << endl; return 0; } while (cnt[i] > 0) { --cnt[i]; nok.push_back(i); } } for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (a[i][j] == 0) { a[i][j] = nok.back(); nok.pop_back(); } } } for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { cout << a[i][j] << " \n"[j == n - 1]; } } }