public Matrix4(int[,] matrix)
public static Matrix4 operator *(Matrix4 l, Matrix4 r)
int[,] nm = new int[4, 4];
nm[0][0] = (l.Matrix[0][0] * r.Matrix[0][0]) + (l.Matrix[0][1] * r.Matrix[1][0]) + (l.Matrix[0][2] * r.Matrix[2][0]) + (l.Matrix[0][3] * r.Matrix[3][0]);
nm[1][0] = (l.Matrix[1][0] * r.Matrix[0][0]) + (l.Matrix[1][1] * r.Matrix[1][0]) + (l.Matrix[1][2] * r.Matrix[2][0]) + (l.Matrix[1][3] * r.Matrix[3][0]);
nm[2][0] = (l.Matrix[2][0] * r.Matrix[0][0]) + (l.Matrix[2][1] * r.Matrix[1][0]) + (l.Matrix[2][2] * r.Matrix[2][0]) + (l.Matrix[2][3] * r.Matrix[3][0]);
nm[3][0] = (l.Matrix[3][0] * r.Matrix[0][0]) + (l.Matrix[3][1] * r.Matrix[1][0]) + (l.Matrix[3][2] * r.Matrix[2][0]) + (l.Matrix[3][3] * r.Matrix[3][0]);
nm[0][1] = (l.Matrix[0][0] * r.Matrix[0][1]) + (l.Matrix[0][1] * r.Matrix[1][1]) + (l.Matrix[0][2] * r.Matrix[2][1]) + (l.Matrix[0][3] * r.Matrix[3][1]);
nm[1][1] = (l.Matrix[1][0] * r.Matrix[0][1]) + (l.Matrix[1][1] * r.Matrix[1][1]) + (l.Matrix[1][2] * r.Matrix[2][1]) + (l.Matrix[1][3] * r.Matrix[3][1]);
nm[2][1] = (l.Matrix[2][0] * r.Matrix[0][1]) + (l.Matrix[2][1] * r.Matrix[1][1]) + (l.Matrix[2][2] * r.Matrix[2][1]) + (l.Matrix[2][3] * r.Matrix[3][1]);
nm[3][1] = (l.Matrix[3][0] * r.Matrix[0][1]) + (l.Matrix[3][1] * r.Matrix[1][1]) + (l.Matrix[3][2] * r.Matrix[2][1]) + (l.Matrix[3][3] * r.Matrix[3][1]);
nm[0][2] = (l.Matrix[0][0] * r.Matrix[0][2]) + (l.Matrix[0][1] * r.Matrix[1][2]) + (l.Matrix[0][2] * r.Matrix[2][2]) + (l.Matrix[0][3] * r.Matrix[3][2]);
nm[1][2] = (l.Matrix[1][0] * r.Matrix[0][2]) + (l.Matrix[1][1] * r.Matrix[1][2]) + (l.Matrix[1][2] * r.Matrix[2][2]) + (l.Matrix[1][3] * r.Matrix[3][2]);
nm[2][2] = (l.Matrix[2][0] * r.Matrix[0][2]) + (l.Matrix[2][1] * r.Matrix[1][2]) + (l.Matrix[2][2] * r.Matrix[2][2]) + (l.Matrix[2][3] * r.Matrix[3][2]);
nm[3][2] = (l.Matrix[3][0] * r.Matrix[0][2]) + (l.Matrix[3][1] * r.Matrix[1][2]) + (l.Matrix[3][2] * r.Matrix[2][2]) + (l.Matrix[3][3] * r.Matrix[3][2]);
nm[0][3] = (l.Matrix[0][0] * r.Matrix[0][3]) + (l.Matrix[0][1] * r.Matrix[1][3]) + (l.Matrix[0][2] * r.Matrix[2][3]) + (l.Matrix[0][3] * r.Matrix[3][3]);
nm[1][3] = (l.Matrix[1][0] * r.Matrix[0][3]) + (l.Matrix[1][1] * r.Matrix[1][3]) + (l.Matrix[1][2] * r.Matrix[2][3]) + (l.Matrix[1][3] * r.Matrix[3][3]);
nm[2][3] = (l.Matrix[2][0] * r.Matrix[0][3]) + (l.Matrix[2][1] * r.Matrix[1][3]) + (l.Matrix[2][2] * r.Matrix[2][3]) + (l.Matrix[2][3] * r.Matrix[3][3]);
nm[3][3] = (l.Matrix[3][0] * r.Matrix[0][3]) + (l.Matrix[3][1] * r.Matrix[1][3]) + (l.Matrix[3][2] * r.Matrix[2][3]) + (l.Matrix[3][3] * r.Matrix[3][3]);
public static void Main()
int[,] a = new int[4, 4] {
int[,] b =new int[4, 4] {