При вставке в массив удаляется последний элемент

Здравствуйте. Я написал программу, которая вставляет в массив определённый элемент, на определённую позицию в массиве, но при вставке у меня удается последний элемент, как поправить это.

Мой код.

program lb_5;
var
  i, n, k, num: integer;
  m: array [1..1000] of integer;

begin
  repeat
    writeln('Введите любое целое количество элементов от 1 до 1000');
    readln(n);
    if n < 1 then
      writeln('n не может быть меньше единицы')
    else if n > 1000 then
      writeln('n не может быть больше тысячи')
  until (n >= 1) and (n <= 1000);
for i := 1 to n do 
  begin
    write('Введите ', i, ' элемент: ');
    readln(m[i]);
  end;
  writeln('Исходный массив:');
  for i := 1 to n do 
    begin
      write(m[i], ' ');
  end;
  writeln;
  write('Укажите еще один элемент: ');
    readln(num);
    write('Позиция в массиве: ');
    readln(k);
  for i := n - 1 downto k do
        m[i+1] := m[i];
    m[k] := num; 
  writeln('Массив после вставки:');
  for i := 1 to n do
    write(m[i], ' '); 
  writeln();
end.

Увеличить n на 1 после вставки?


При выкладывании кода на форумы надо нажимать кнопку Код.

Я пробовал и сейчас ещё раз попробовал, не получается

Так а что именно пробовали? В коде выше n только вводится в начале и потом не изменяется.
Поэтому тут выводится старое количество.

Вот я тупой, наконец-то, дошло) . Спасибо)

writeln('Массив после вставки:');
  for i := 1 to n + 1 do
    write(m[i], ' '); 
  writeln();
end.

Да оно (N) и тысячу не должно быть :zombie:

вот именно ) да и перемещать на одно расстояние кучу подряд расположенных элементов этого массива прекрасно можно процедурой move, одной и без всякого цикла