M.assign(n, vector<int>(m, 0));
int n = M.size(), m = M[0].size();
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
int n = M.size(), m = M[0].size();
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
int n = M.size(), m = M[0].size();
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << M[i][j] << " \n"[j == m - 1];
Matrix operator * (const Matrix &a, const Matrix &b) {
int n = a.M.size(), m = a.M[0].size(), d = b.M[0].size();
for (int i = 0; i < n; i++) {
for (int j = 0; j < d; j++) {
for (int k = 0; k < m; k++) {
c.M[i][j] += a.M[i][k] * b.M[k][j];