#include <Stdio.h>
#include <String.h>
#include <OS2Def.h>

#define Run int main
#define Say printf

struct FPOINT
{
  ULONG X, Y;
};

#define MATRIX_WIDTH  16
#define MATRIX_HEIGHT 16

Run ()
{
  INT X = 0; INT Max_X = MATRIX_WIDTH;
  INT Y = 0; INT Max_Y = MATRIX_HEIGHT;

  FPOINT Matrix[MATRIX_WIDTH][MATRIX_HEIGHT];

  while (1) 
  {
    /*- :PAR: -*/
    { Matrix[X + 0][Y + 0].X = Matrix[X + 0][Y + 0].Y = (X + 0) + (Y + 0) + 2; }
    { Matrix[X + 1][Y + 1].X = Matrix[X + 1][Y + 1].Y = (X + 1) + (Y + 1) + 2; }
    { Matrix[X + 2][Y + 2].X = Matrix[X + 2][Y + 2].Y = (X + 2) + (Y + 2) + 2; }
    { Matrix[X + 3][Y + 3].X = Matrix[X + 3][Y + 3].Y = (X + 3) + (Y + 3) + 2; }
    /*- :SEQ: -*/

    X += 4; if (X >= Max_X) break;
    Y += 4; if (Y >= Max_Y) break;
  }

  Say ("%3d %3d" "\n", Matrix[0][0].X, Matrix[0][0].Y);
  Say ("%3d %3d" "\n", Matrix[1][1].X, Matrix[1][1].Y);
  Say ("%3d %3d" "\n", Matrix[2][2].X, Matrix[2][2].Y);
  Say ("%3d %3d" "\n", Matrix[3][3].X, Matrix[3][3].Y);
  Say ("... ..." "\n"                                );
  Say ("%3d %3d" "\n", Matrix[Max_X - 4][Max_Y - 4].X, Matrix[Max_X - 4][Max_Y - 4].Y);
  Say ("%3d %3d" "\n", Matrix[Max_X - 3][Max_Y - 3].X, Matrix[Max_X - 3][Max_Y - 3].Y);
  Say ("%3d %3d" "\n", Matrix[Max_X - 2][Max_Y - 2].X, Matrix[Max_X - 2][Max_Y - 2].Y);
  Say ("%3d %3d" "\n", Matrix[Max_X - 1][Max_Y - 1].X, Matrix[Max_X - 1][Max_Y - 1].Y);

  return 0;
}
