def solve(orig_arr)
  sorted_arr = orig_arr.sort
  smallest = sorted_arr.first
  cost = 0
  visited = {}
  value_to_sorted_index = {}

  sorted_arr.size.times do |i|
    value_to_sorted_index[sorted_arr[i]] = i
  end

  orig_arr.size.times do |i|
    next if visited[i]

    current = i
    sum = 0
    min = Float::INFINITY
    n = 0

    loop do
      visited[current] = true
      n += 1
      value = orig_arr[current]
      min = [value, min].min
      sum += value
      current = value_to_sorted_index[value]
      break if visited[current]
    end

    cost1 = sum + (n - 2) * min
    cost2 = min + sum + (n + 1) * smallest

    cost += [cost1, cost2].min
  end

  cost
end

if $PROGRAM_NAME == __FILE__
  n = gets.to_i

  arr = gets.chomp.split.map(&:to_i)

  puts solve(arr)
end