$MAX = 1000
$VMAX = 10000

$n = gets.to_i
$a = gets.split.map(&:to_i)
$b = Array.new($MAX)
$t = Array.new($VMAX+1)
$m = $VMAX

def solve
  ans = 0
  v = Array.new($MAX){false}
  $b = $a.sort

  $b.each_with_index do |item, i|
    # $tには、各要素が何番目かが入る
    # $t[item] とすると、itemがソーティングしたときに何番目かが分かる。
    $t[item] = i
  end

  0.upto($n-1) do |i|
    cur = i
    w = 0
    m = $VMAX
    an = 0

    #サイクルを生成するループ
    loop do
      #サイクルが閉じたかどうか
      v[cur] = true
      #サイクル内の要素数
      an += 1
      item = $a[cur]
      #サイクル内のminを更新
      m = [m, item].min
      #コストを足す
      w += item
      #次の要素へ
      cur = $t[item]
      #サイクルが閉じたらbreak
      if v[cur]
        break
      end
    end

    ans += [w+(an-2)*m, m+w+(an+1)*$m].min
  end
  return ans
end

$m = $a.min

ans = solve

puts ans
