program lab3; var num1,num2,num3 : longint; { первые 3 члена последовательности } n : longint; {-------------------------------------------------------------------------------------------------} function sort(a1,a2,a3 : longint) : longint; forward; function posl(a1,a2,a3 : longint; n : longint) : longint; forward; function g(a : longint; b : longint) : longint; forward; function p(a,b,c : longint; n : longint) : longint; forward; {-------------------------------------------------------------------------------------------------} { упорядочевание } function sort(a1,a2,a3 : longint) : longint; var max,min,mid : longint; { максимальное, минимальное, среднее } begin { init } a1 := 2 * a1; a2 := abs(a2); a3 := -(a3); { maximum } if (a1 >= a2) and (a1 >= a3) then max := a1; if (a2 >= a1) and (a2 >= a3) then max := a2; if (a3 >= a2) and (a3 >= a1) then max := a3; { minumum } if (a1 <= a2) and (a1 <= a3) then min := a1; if (a2 <= a1) and (a2 <= a3) then min := a2; if (a3 <= a2) and (a3 <= a1) then min := a3; { middle } if ((a1 >= a2) and (a1 <= a3)) or ((a1 <= a2) and (a1 >= a3)) then mid := a1; if ((a2 >= a1) and (a2 <= a3)) or ((a2 <= a1) and (a2 >= a3)) then mid := a2; if ((a3 >= a2) and (a3 <= a1)) or ((a3 <= a2) and (a3 >= a1)) then mid := a3; sort := p(max,min,mid,n); end; { sort } {-------------------------------------------------------------------------------------------------} { рекурентное вычисление Ak до заданного условия остановки } function posl(a1,a2,a3 : longint; n : longint) : longint; var a4 : longint; { очередной член последовательности } kposl : longint; { счётчик } begin if (n >= 4) then begin for kposl := 4 to n do begin {a4 := ((7/3)*a3 + a2)*(1/2) + a1;} a4 := ((((7 * a3) div 3) + a2) div 2) + a1; a1 := a2; a2 := a3; a3 := a4; end; { for } end { if } else begin if (n = 1.0) then a4 := a1; if (n = 2.0) then a4 := a2; if (n = 3.0) then a4 := a3; end; { else } posl := a4; end; { posl } {-------------------------------------------------------------------------------------------------} { подсчёт суммы n членов a в степени k } function g(a : longint; b : longint) : longint; var kg : longint; { счётчик } sg : longint; { сумма n членов a в степени k } pg : longint; { a в степени k } begin pg := 1; sg := 0; if odd(a) then begin g := g(a+b,b-1); end { if } else begin if (b <= 0) then begin g := 1; end else begin for kg := 1 to b do begin pg := pg * a; sg := sg + pg; g := sg; end; { for } end; { else } end; { else } end; { g } {-------------------------------------------------------------------------------------------------} { подсчёт произведения Ak} function p(a,b,c : longint; n : longint) : longint; var kp : longint; { счётчик } sp : longint; { произведение} ap : longint; { Ak } begin sp := 1; for kp := 1 to n do begin ap := posl(a,b,c,kp); sp := sp + ((g(ap,kp+1))-1); p := sp; end; { for } p := sp; end; { p } {-------------------------------------------------------------------------------------------------} begin { input } write('n: '); readln(n); write('a1: '); readln(num1); write('a2: '); readln(num2); write('a3: '); readln(num3); { main } writeln(sort(num1,num2,num3)); end.