#include<iostream>
#include<stdio.h>
#include<math.h>
#include<vector>
#include<string>
#include<string.h>
using namespace std;

   vector<vector<int> > matrix_add(vector<vector<int> > a, vector<vector<int> > b){
       vector<vector<int> > c;
       for(int i = 0; i < a.size(); i++){
           vector<int> row;
            for(int j = 0; j < a[0].size(); j++){
                row.push_back(a[i][j] + b[i][j]);
            }
           c.push_back(row);
       }
       return c;
   }

   vector<vector<int> > matrix_mult(vector<vector<int> > a, vector<vector<int> > b){
   vector<vector<int> > c;
   int i,j,k;
   #pragma omp parallel shared(a,b,c) private(i,j,k)
   {
   #pragma omp for  schedule(static)
      for (i=0; i<a.size(); i=i+1){
                vector<int> row;
                for (j=0; j<b[0].size(); j=j+1){
                    row.push_back(0);
                    for (k=0; k<b.size(); k=k+1){
                        row[j] += ((a[i][k])*(b[k][j]));
                    }
                }
                c.push_back(row);
            }
        }
        return c;
    }
   void print_matrix(vector<vector<int> > a){
       for(int i = 0; i<a.size(); i++){
           cout<<endl;
           for(int j = 0; j<a[0].size(); j++){
               cout << a[i][j] << " ";
           }
       }
   }
int main(){
int mHolder[] = {1, 2, 3, 4, 5, 6};
vector<int> mVector (mHolder, mHolder + 3 / sizeof(int));
vector<vector<int> > m (2);
int mcount=0;
for(int i=0; i<2; i++) { 
m[i].resize(3);
for(int j=0; j<3; j++) { 
m[i][j] = mHolder[mcount++];
}
};
for( int i=0; i <= 1; i++)
{
cout << 100;
cout << endl;
for( int j=0; j <= 2; j++)
{
cout << m[i][j];
cout << endl;
}
}
}

