#include <stdio.h>

void crie_mz(int a[][2], int x); 
void imp_mz(int a[][2]); 
void m(int x[][2], int y[][2], int z[][2]);

int main()
{
  int a[2][2], b[2][2], c[2][2];

  crie_mz(a, -1); imp_mz(a);
  crie_mz(b, 0);  imp_mz(b);
  m(a,b,c);       imp_mz(c);

  crie_mz(a, -1); crie_mz(b, 0); 
  m(a,b,a); imp_mz(a);

  crie_mz(a, -1); crie_mz(b, 0); 
  m(a,b,b); imp_mz(b);

  return 0;
}

void m(int x[][2], int y[][2], int z[][2])
{ 
  z[0][0] = x[0][0] * y[0][0] + x[0][1] * y[1][0];
  z[0][1] = x[0][0] * y[0][1] + x[0][1] * y[1][1];
  z[1][0] = x[1][0] * y[0][0] + x[1][1] * y[1][0];
  z[1][1] = x[1][0] * y[0][1] + x[1][1] * y[1][1];
}

void crie_mz(int a[][2], int x)
{
  a[0][0] = x;   a[0][1] = x+1;
  a[1][0] = x-1; a[1][1] = -x;
}

void imp_mz(int a[][2])
{
  printf("%d ", a[0][0]);  printf("%d\n", a[0][1]);
  printf("%d ", a[1][0]);  printf("%d\n\n", a[1][1]);
}
