program StudentTask;

type
  stud = record
    pr: string[15];              { Фамилия }
    im: string[10];              { Имя }
    d: integer;                  { День рождения }
    m: integer;                  { Месяц рождения }
    r: integer;                  { Год рождения }
    rv: integer;                 { Год поступления }
    nk: integer;                 { Курс }
    ng: string[10];              { Группа }
    ocinLP: array[1..3, 1..5] of integer; { Оценки }
    ser: real;                   { Средний балл за последнюю сессию }
  end;

var
  FL: array[1..50] of stud;
  N, i, s, p: integer;
  sum: real;
  serGR: real;
  count: integer;
  ch: char;

begin
  serGR := 0;
  N := 0;
  ch := 'y';

  writeln('Please enter students data:');

  { Ввод списка студентов }
  while (ch = 'y') or (ch = 'Y') do
  begin
    N := N + 1;
    writeln('Enter ', N, '. student:');
    
    { Считывание полей по очереди }
    readln(FL[N].pr);
    readln(FL[N].im);
    readln(FL[N].d, FL[N].m, FL[N].r, FL[N].rv, FL[N].nk);
    readln(FL[N].ng);

    writeln('Enter 3 semesters of 5 marks:');
    for s := 1 to 3 do
    begin
      for p := 1 to 5 do
      begin
        read(FL[N].ocinLP[s, p]);
      end;
      readln; { Переход на новую строку без пустых скобок () }
    end;

    readln(ch);
  end;

  { Вычисление среднего балла за ПОСЛЕДНЮЮ (3-ю) сессию }
  for i := 1 to N do
  begin
    sum := 0;
    for p := 1 to 5 do
    begin
      sum := sum + FL[i].ocinLP[3, p];
    end;
    FL[i].ser := sum / 5.0;
    serGR := serGR + FL[i].ser;
  end;

  { Вычисление среднего балла группы }
  if N > 0 then
    serGR := serGR / N
  else
    serGR := 0;

  { Вывод результатов }
  writeln;
  writeln('Group average for last session = ', serGR:0:2);
  writeln('Results list (students with average lower than group average):');
  writeln('------------------------------------------------------------');

  count := 0;
  for i := 1 to N do
  begin
    if FL[i].ser < serGR then
    begin
      count := count + 1;
      writeln(count, '. ', FL[i].pr, ' ', FL[i].im);
      writeln('   Birth date: ', FL[i].d, '.', FL[i].m, '.', FL[i].r);
      writeln('   Entry year: ', FL[i].rv, ', Course: ', FL[i].nk, ', Group: ', FL[i].ng);
      
      writeln('   Marks for all semesters:');
      for s := 1 to 3 do
      begin
        write('     Semester ', s, ': ');
        for p := 1 to 5 do
        begin
          write(FL[i].ocinLP[s, p], ' ');
        end;
        writeln; { Переход на новую строку без пустых скобок () }
      end;
      writeln('   Average for last session: ', FL[i].ser:0:2);
      writeln;
    end;
  end;

  if count = 0 then
    writeln('No students with average mark lower than group average.');

end.