import std.stdio, std.algorithm, std.array, std.conv, std.typecons; void main() { auto a1 = readln.split.to!(long[]), a2 = readln.split.to!(long[]), a3 = readln.split.to!(long[]), a4 = readln.split.to!(long[]); auto m1 = Matrix(a1[0], a1[1], a2[0], a2[1]), m2 = Matrix(a3[0], a3[1], a4[0], a4[1]), m3 = multiply(m1, m2), m4 = multiply(m3, m3); writefln("%d %d %d %d", m4[0], m4[1], m4[2], m4[3]); } // 0 1 // 2 3 alias Matrix = Tuple!(long, long, long, long); Matrix multiply(Matrix a, Matrix b) { return Matrix( a[0]*b[0] + a[1]*b[2], a[0]*b[1] + a[1]*b[3], a[2]*b[0] + a[3]*b[2], a[2]*b[1] + a[3]*b[3]); }