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.