var v,x:array[1..4] of byte;
    max:word; f:text;



 procedure afisare;
 var i:byte; suma:integer;
 begin

  suma:=0;

  suma:=v[1]*v[2]+v[3]*v[4];

  if suma>max then max:=suma;

 end;



 function valid (k:byte):boolean;
 var i:byte;
 begin

  valid:=true;

  for i:=1 to k-1 do
      if v[i]=v[k] then valid:=false;

 end;



 procedure bak (k:byte);
 var i:byte;
 begin

  for i:=1 to 4 do
      begin
       v[k]:=x[i];
       if valid(k) then if k=4 then afisare
                               else bak(k+1);
      end;
 end;

begin

 assign(f,'nr.in'); reset(f);


        max:=0;
        readln(x[1],x[2],x[3],x[4]);
        bak(1);
        writeln(max);


 close(f);

end.