#include <iostream>
#include <iomanip>
#include <memory>
#include <fstream>
#include <sstream>


struct SquareMatrix
{
    SquareMatrix(unsigned dimensions) 
        : _dim(dimensions), _matrix(new int[_dim*_dim]) {}

    unsigned dimension() const { return _dim; }

    int& operator()(unsigned row, unsigned col)
    {
        return _matrix[row * _dim + col];
    }

    int operator()(unsigned row, unsigned col) const
    {
        return _matrix[row * _dim + col];
    }

private:
    unsigned _dim;
    std::unique_ptr<int[]> _matrix;
};

std::ostream& operator<<(std::ostream& os, const SquareMatrix& mat)
{
    for (unsigned i = 0; i < mat.dimension(); ++i)
    {
        for (unsigned j = 0; j < mat.dimension(); ++j)
            os << mat(i, j) << ' ';

        os << '\n';
    }
    return os;
}

std::istream& operator>>(std::istream& is, SquareMatrix& mat)
{
    for (unsigned i = 0; i < mat.dimension(); ++i)
        for (unsigned j = 0; j < mat.dimension(); ++j)
            is >> mat(i, j);

    return is;
}

int main()
{
    // std::ifstream in("matrix.txt");
    std::istringstream in("3\n5 7 10\n5 3 2\n0 6 8");

    unsigned size;
    in >> size;

    SquareMatrix matrix(size);
    in >> matrix;

    std::cout << matrix << '\n';
}