問題文
1,ldots,N の順列 p=(p1,ldots,pN) が与えられます。 あなたは、次の 2 種類の操作を好きな順序で繰り返し行うことができます。
- コスト A を支払う。 整数 l と r (1leql<rleqN) を自由に選び、(pl,ldots,pr) を左にひとつシフトする。 すなわち、pl,pl+1,ldots,pr−1,pr をそれぞれ pl+1,pl+2,ldots,pr,pl へ置き換える。
- コスト B を支払う。 整数 l と r (1leql<rleqN) を自由に選び、(pl,ldots,pr) を右にひとつシフトする。 すなわち、pl,pl+1,ldots,pr−1,pr をそれぞれ pr,pl,ldots,pr−2,pr−1 へ置き換える。
p を昇順にソートするために必要な総コストの最小値を求めてください。
制約
- 入力はすべて整数である。
- 1leqNleq5000
- 1leqA,Bleq109
- (p1ldots,pN) は 1,ldots,N の順列である。
入力
入力は以下の形式で標準入力から与えられる。
N A B
p1 cdots pN
出力
p を昇順にソートするために必要な総コストの最小値を出力せよ。
入力例 1
出力例 1
(p1,p2,p3) を左にひとつシフトすると、p=(1,2,3) となります。
入力例 2
出力例 2
例えば、次のように操作を行えばよいです。
- (p1,p2,p3,p4) を左にひとつシフトする。 すると、p=(2,3,1,4) となる。
- (p1,p2,p3) を右にひとつシフトする。 すると、p=(1,2,3,4) となる。
このとき、総コストは 20+30=50 です。
入力例 3
出力例 3
入力例 4
出力例 4
入力例 5
出力例 5