#include <stdio.h>
#include <stdbool.h>

#define MAX 1000
#define VMAX 10000;
int solve(void);
void Ssort(int [],int);
int min(int,int);

int A[MAX];
int B[MAX];
int T[MAX];
int n,s;
int kai=0;

int main(){
  int i,j;
scanf("%d",&n);
  s=VMAX;
  for(i=0;i<n;i++){
    scanf("%d",&A[i]);
    s=min(s,A[i]);
}

  
  printf("%d\n",solve());

  return 0;
}

int solve(){
  int kai=0;
  int i;
  int now;
  int S,m,v;
  bool b[MAX];
  for(i=0;i<n;i++){
B[i]=A[i];
b[i]=false;
  }

  Ssort(B,n);
  for(i=0;i<n;i++){
    T[B[i]]=i;
  }
  for(i=0;i<n;i++){
    if(b[i])continue;
    now=i;
    S=0;
    m=VMAX;
    kai=0;
    while(1){
      b[now]=true;
      kai++;
      v=A[now];
      m=min(m,v);
      S+=v;
      now=T[v];
      if(b[now])break;
    }

    kai+=min(S+(kai-2)*m,m+S+(kai+1)*s);
  }
  return kai;
}
      
    
void Ssort(int A[],int N){
  int i,j;
  int tmp;
  for(i=0;i<N-1;i++){
    for(j=N-1;j>i;j--){
      if(A[j]<A[j-1]){
	tmp=A[j];
	A[j]=A[j-1];
	A[j-1]=tmp;
	
      }
    }
  }

}

int min(int a,int b){
  if(a<b)return a;
  else return b;
}