can someone check my code?
var
s,i,j,zam,k,b:longint; n:integer;
a:array [1..30000] of longint;
procedure QuickSort(l,r:integer);
var pivot:integer;
begin
if (l<r)
then
begin
pivot:=a[l+random(r+1-l)];
i:=l; j:=r;
repeat
while a[i]<pivot do
i:=i+1;
while (a[j]>pivot) do
j:=j-1;
if i<=j then begin zam:=a[i]; a[i]:=a[j]; a[j]:=zam;
i:=i+1; j:=j-1;
end;
until i>j;
QuickSort(l,j);
QuickSort(i,r);
end
end;
begin
readln(n);
for i:=1 to n do
readln (a[i]);
QuickSort(1,n);
s:=0;
for i:=3 to n+1 do
begin
s:=s+((i-1)*(i-2)*a[i] div 2);
end;
writeln(s mod 10007);
end.
var
s,i,j,zam,k,b:longint; n:integer;
a:array [1..30000] of longint;
procedure QuickSort(l,r:integer);
var pivot:integer;
begin
if (l<r)
then
begin
pivot:=a[l+random(r+1-l)];
i:=l; j:=r;
repeat
while a[i]<pivot do
i:=i+1;
while (a[j]>pivot) do
j:=j-1;
if i<=j then begin zam:=a[i]; a[i]:=a[j]; a[j]:=zam;
i:=i+1; j:=j-1;
end;
until i>j;
QuickSort(l,j);
QuickSort(i,r);
end
end;
begin
readln(n);
for i:=1 to n do
readln (a[i]);
QuickSort(1,n);
s:=0;
for i:=3 to n+1 do
begin
s:=s+((i-1)*(i-2)*a[i] div 2);
end;
writeln(s mod 10007);
end.