пример вывода последовательности

begin
  var x, n, z:integer;
  var k:boolean;
  k:=true; //присваиваем значение истины (в том смысле что ряд идет на повышение)
  z:=1; //начальное значение
  n:=20; //предел счетчика цикла
  for x:=1 to n do //цикл, который выполнится n раз
  begin //начало тела цикла 
    writeln ( 'z=' , z); //выведем значение переменной z, так как при первом витке оно соответствует условию задачи
    {после того как мы вывели очередное значение z, нам необходимо задать правило, 
    по которому можно определить следующее значение данной переменной для вывода его в начале следующего витка цикла}
    if (z=1) then z:=2 //если переменная равна 1, дальше идет только 2
    else if (z=3) then z:=2 //если переменная равна 3, дальше идет только 2
    else if ((z=2) and k=true) then // если переменная равна 2 и "флаг" увеличения значений ряда "поднят" 
    begin
      z:=3; //тогда следующее значение равно 3
      k:=false; // опускаем флаг, потому что после повышения идет понижение, и в следующий раз ряд точно будет понижаться
    end
    else if ((z=2) and k=false) then 
    begin
      z:=1;
      k:=true;
    end;  
  end;
end.