program psir;
const
fin='psir.in';
fout='psir.out';
nmax=2000;
eps=(1 shl 32)-1;
var
a:array[1..nmax] of int64;
nr:array[0..1,1..nmax,1..nmax] of int64;
mm,m:array[1..nmax,0..nmax] of integer;
i,j,k,n,ind:longint;
s:int64;
new,old:integer;
begin
assign(input,fin);
reset(input);
readln(n);
for i:=1 to n do
read(a[i]);
for i:=3 to n do
begin
for j:=1 to i-2 do
if a[j]>a[i] then
begin
inc(mm[i,0]);
mm[i,mm[i,0]]:=j;
end;
end;
for i:=3 to n do
begin
for j:=1 to i-2 do
if a[j]<a[i] then
begin
inc(m[i,0]);
m[i,m[i,0]]:=j;
end;
end;
close(input);
assign(output,fout);
rewrite(output);
new:=1;old:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
begin
nr[new,i,j]:=1;
s:=(s+nr[new,i,j]) and eps;
end;
for k:=3 to n do
begin
old:=new;new:=old xor 1;
fillchar(nr[new],sizeof(nr[new]),0);
for i:=k-1 to n-1 do
for j:=i+1 to n do
begin
if a[j]<a[i] then //cautam nr mai mici
begin
for ind:=1 to m[j,0] do
nr[new,i,j]:=(nr[new,i,j]+nr[old,m[j,ind],i])and eps;
end
else
begin //cautam nr mai mari
for ind:=1 to mm[j,0] do
nr[new,i,j]:=(nr[new,i,j]+nr[old,mm[j,ind],i])and eps;
end;
s:=(s+nr[new,i,j]) and eps;
end;
end;
writeln(s);
close(output);
end.