55 ! решите : вася — учитель физкультуры в школе. в отличие от других учителей физкультуры, вася не любит когда ученики выстраиваются в шеренгу по росту. вместо этого, он требует, чтобы дети выстраивались в порядке a1, a2, an, где ai — рост i-го ученика в шеренге, а n — количество учеников в шеренге. детям сложно запомнить этот странный порядок, и сегодня они выстроились в порядке b1, b2, bn, что расстроило васю. теперь вася хочет переставить детей так, чтобы получился порядок a1, a2, an. за одно действие вася может поменять местами двух человек, стоящих подряд в шеренге. васе — составьте последовательность обменов, приводящую к нужной васе расстановке. количество действий минимизировать не требуется. входные данные в первой строке записано целое число n (1 ≤ n ≤ 300) — количество учеников. во второй строке через пробел записано n целых чисел ai (1 ≤ ai ≤ 109) — какой рост должен иметь ученик на месте i. в третьей строке через пробел записано n целых чисел bi (1 ≤ bi ≤ 109) — какой рост имеет ученик на месте i в начальной расстановке. возможно, что некоторые ученики имеют одинаковый рост. гарантируется, что расставить детей в требуемом порядке возможно, т. е. a и b как мультимножества. выходные данные в первой строке выведите целое число k (0 ≤ k ≤ 106) — количество действий. минимизировать k не требуется, но оно не должно превосходить 106. далее выведите k строк по два целых числа через пробел. строка pi, pi + 1 (1 ≤ pi ≤ n - 1) означает, что вася должен поменять местами учеников на местах pi и pi + 1.
var
n,i,j,f,q,k:longint;
x,y,b,a:Array[0..30000] of longint;
begin
read(n);
for i:=1 to n do read(a[i]);
for i:=1 to n do read(b[i]);
for i:=1 to n do
begin
for j:=i to n do
if a[i]=b[j] then
begin
f:=j;
break;
end;
for j:=f downto i+1 do
begin
q:=b[j];
b[j]:=b[j-1];
b[j-1]:=q;
inc(k);
x[k]:=j-1;
y[k]:=j;
end;
end;
writeln(k);
for i:=1 to k do
writeln(x[i],' ',y[i]);
end.