program FillMatrixByRule;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  N = 6; // размер

var
  Matrix: array[1..N, 1..N] of Integer; 
  i, j: Integer;

// gроцедура заполнения матрицы 
procedure FillMatrix;
begin
  // заполняем первый столбец номерами строк (1–6)
  for i := 1 to N do
    Matrix[i, 1] := i;

  // заполняем остальные элементы матрицы согласно таблице
  Matrix[1, 2] := 12; Matrix[1, 3] := 13; Matrix[1, 4] := 24; Matrix[1, 5] := 25; Matrix[1, 6] := 36;
  Matrix[2, 2] := 11; Matrix[2, 3] := 14; Matrix[2, 4] := 23; Matrix[2, 5] := 26; Matrix[2, 6] := 35;
  Matrix[3, 2] := 10; Matrix[3, 3] := 15; Matrix[3, 4] := 22; Matrix[3, 5] := 27; Matrix[3, 6] := 34;
  Matrix[4, 2] := 9;  Matrix[4, 3] := 16; Matrix[4, 4] := 21; Matrix[4, 5] := 28; Matrix[4, 6] := 33;
  Matrix[5, 2] := 8;  Matrix[5, 3] := 17; Matrix[5, 4] := 20; Matrix[5, 5] := 29; Matrix[5, 6] := 32;
  Matrix[6, 2] := 7;  Matrix[6, 3] := 18; Matrix[6, 4] := 19; Matrix[6, 5] := 30; Matrix[6, 6] := 31;
end;

// процедура вывода матрицы на экран
procedure PrintMatrix;
begin
  Writeln('Fulled matrix: ');
  for i := 1 to N do
  begin
    for j := 1 to N do
      Write(Matrix[i, j]:3); // выводим с отступом в 3 символа
    Writeln; // вереход на новую строку 
  end;
end;

begin
  // заполняем матрицу
  FillMatrix;
  
  // выводим матрицу
  PrintMatrix; 
  
  Readln; 
end.
