#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n, m, k;
    cin >> n >> m >> k;

    if (k  < n || k < m) {
        cout << -1;
        return 0;
    }

    vector<vector<int>> result(n, vector<int>(m, 0));
    int minrange = min(n,m);

    for (int i = 0; i < minrange; i++){
        result[i][i] = 1;
    }

    if (m > n){
        for (int i = minrange; i < m; i++){
            result[0][i] = 1;
        }
    }
    else if (n > m){
        for (int i = minrange; i < n; i++){
            result[i][0] = 1;
        }
    }
    result[0][0] += k - max(m,n);

    for (int i = 0; i < n; i++){
        for (int j = 0; j < m; j++){
            cout << result[i][j] << ' ';
        }
        cout << endl;
    }

}

构造了一种简单的填充方法