// matrix multiplication 

//  N = 4, simulate matrix by (i,j) = i*N + j
N, a[16], b[16], c[16]; 

index(i,j){
  return i*N + j;
}

inita() {
  i = 0;
  while( i<N ){
    j = 0;
    while( j<N ){
      a[index(i,j)] = i;
      j = j + 1;
    }
    i = i + 1;
  }
}

initb() {
  i = 0;
  while( i<N ){
    j = 0;
    while( j<N ){
      b[index(i,j)] = j;
      j = j + 1;
    }
    i = i + 1;
  }
}

matmul() {
  i = 0;
  while( i<N ){
    j = 0;
    while( j<N ){
      s = 0;
      k = 0;
      while( k<N ){
        s = s + a[index(i,k)] * b[index(k,j)];
        k = k + 1;
      }
      c[index(i,j)] = s;
      j = j + 1;
    }
    i = i + 1;
  }
}

show() {
  i = 0;
  while( i<N ){
    j = 0;
    while( j<N ){
      print(c[index(i,j)], " ");
      j = j + 1;
    }
    print("\n");
    i = i + 1;
  }
}  

main() {
  N = 4;
  inita();
  initb();
  matmul();
  show();
}
