import java.util.Vector;

class Matrix extends Vector<Vector<Integer>> {

	Matrix mul_rec(Matrix m) {
		 auto v1 = new Vector<Integer>();
         auto v2 = new Vector<Integer>();
         auto i = 0;
         while(i < m.size()) {
             auto v;
             v = m.elementAt(i);
             v2.addElement(v.remove(v.size()-1));
             i++;
         }
         Matrix ret;
         if (m.elementAt(0).size() > 0) {
             ret = this.mul_rec(m);
         }
         else {
             ret = new Matrix();
             i = 0;
             while (i < this.size()) {
                 ret.addElement(new Vector<Integer>());
             i++;
             }
         }
         i = 0;
         while (i < this.size()) {
             int erg = 0;
             auto j;
             j = 0;
             while (j < v2.size()) {
                 erg = erg + this.elementAt(i).elementAt(j).intValue()
                     * v2.elementAt(j).intValue();
             	 j++;
             }
             ret.elementAt(i).addElement(erg);
             i++;
         }
         return ret;
     }
}