import std; int[][] mul(int[][] a, int[][] b){ int[][] r = new int[][](2, 2); r[0][0] = a[0][0] * b[0][0] + a[0][1] * b[1][0]; r[0][1] = a[0][0] * b[0][1] + a[0][1] * b[1][1]; r[1][0] = a[1][0] * b[0][0] + a[1][1] * b[1][0]; r[1][1] = a[1][0] * b[0][1] + a[1][1] * b[1][1]; return r; } void main(){ int[][] m; m ~= readln.chomp.split.to!(int[]); m ~= readln.chomp.split.to!(int[]); int[][] r; r ~= m[0].dup; r ~= m[1].dup; foreach(_;0 .. 2){ r = mul(r, m); stderr.writeln(r); } writeln(r[0].to!(string[]).join(" ")); writeln(r[1].to!(string[]).join(" ")); }