#include #include #include using namespace std; long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; } vector factor(int u) { vector res = {1}; for (int i = 2; i * 1ll * i <= u; i++) { if (u % i == 0) { res.push_back(i); int j = u / i; if (j != i) res.push_back(j); } } return res; } int main() { int n, m; scanf("%d%d", &n, &m); auto res = factor(n); sort(res.begin(), res.end()); vector seq; for (int u: res) { for (int it = 0; it < u; it++) seq.push_back(u); } int x = m, y = n / m; vector> a(x, vector (y)); int p = 0; if (x < y) { for (int i = 0; i < m; i++) { for (int j = 0; j < n / m; j++) a[i][j] = seq[p++]; } } else { for (int i = 0; i < y; i++) { for (int j = 0; j < x; j++) a[j][i] = seq[p++]; } } for (int i = 0; i < x; i++) { for (int j = 0; j < y; j++) printf("%d ", a[i][j]); printf("\n"); } return 0; } /* 6 1, 2, 3, 28 1, 2, 14, 4, 7, 496 1, 2, 248, 4, 124, 8, 62, 16, 31, 8128 1, 2, 4064, 4, 2032, 8, 1016, 16, 508, 32, 254, 64, 127 */