Определить число месяца по номеру дня года

По заданному числу n от 1 до 365 определите, на какое число какого месяца приходится день невисокосного года с номером n.

Входные данные
Дано одно целое число n.

Выходные данные
Программа должна вывести два числа: число месяца (от 1 до 31) и номер месяца (от 1 до 12), соответствующие дню с номером n.

Исходный код на языке Pascal
var
  a: integer;

begin
  read(a);
  while a > 0 do
  begin
    if (a <= 31) and (a > 0) then 
    begin
      writeln(a, ' 1');
      break
    end;
    a := a - 31;
    if (a <= 28) and (a > 0) then 
    begin
      writeln(a, ' 2');
      break;
    end;
    a := a - 28;
    if (a <= 31) and (a > 0) then 
    begin
      writeln(a, ' 3');
      break
    end;
    a := a - 31;
    if (a <= 30) and (a > 0) then 
    begin
      writeln(a, ' 4');
      break
    end;
    a := a - 30;
    if (a <= 31) and (a > 0) then 
    begin
      writeln(a, ' 5');
      break
    end;
    a := a - 31;
    if (a <= 30) and (a > 0) then 
    begin
      writeln(a, ' 6');
      break
    end;
    a := a - 30;
    if (a <= 31) and (a > 0) then 
    begin
      writeln(a, ' 7');
      break
    end;
    a := a - 31;
    if (a <= 31) and (a > 0) then 
    begin
      writeln(a, ' 8');
      break
    end;
    a := a - 31;
    if (a <= 30) and (a > 0) then 
    begin
      writeln(a, ' 9');
      break
    end;
    a := a - 30;
    if (a <= 31) and (a > 0) then 
    begin
      writeln(a, ' 10');
      break
    end;
    a := a - 31;
    if (a <= 30) and (a > 0) then 
    begin
      writeln(a, ' 11');
      break
    end;
    a := a - 30;
    if (a <= 31) and (a > 0) then 
    begin
      writeln(a, ' 12');
      break
    end;
    a := a - 31;
  end;
end.