#include<bits/stdc++.h>
using namespace std;
const int maxN=1e6;
int card[maxN][2], num[maxN*2], p[maxN*2];
int vn[maxN*2], en[maxN*2], mv[maxN*2];//vertix edge minNum
long sv[maxN*2];
int findP(int x){
return (x==p[x])?x:p[x]=findP(p[x]);
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int N;
cin>>N;
for(int i=0; i<N; i++){
cin>>card[i][0]>>card[i][1];
num[i]=card[i][0];
num[i+N]=card[i][1];
}
//離散化
sort(num,num+N*2);
int uN=unique(num,num+N*2)-num;
//DSU
for(int i=0; i<uN; i++){
p[i]=i, vn[i]=1, en[i]=0;
sv[i]=mv[i]=num[i];
}
for(int i=0; i<N; i++){
int n1=lower_bound(num,num+uN,card[i][0])-num;
int n2=lower_bound(num,num+uN,card[i][1])-num;
int p1=findP(n1), p2=findP(n2);
if(p1!=p2){
p[p2]=p1;
vn[p1]+=vn[p2];
en[p1]+=en[p2]+1;
mv[p1]=min(mv[p1],mv[p2]);
sv[p1]+=sv[p2];
}else en[p1]++;
}
long ans=0;
for(int i=0; i<uN; i++){
if(i!=findP(i)) continue;
ans+=sv[i]-(en[i]>=vn[i]?0:mv[i]);
}cout<<ans;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgaW50IG1heE49MWU2OwppbnQgY2FyZFttYXhOXVsyXSwgbnVtW21heE4qMl0sIHBbbWF4TioyXTsKaW50IHZuW21heE4qMl0sIGVuW21heE4qMl0sIG12W21heE4qMl07Ly92ZXJ0aXggZWRnZSBtaW5OdW0KbG9uZyBzdlttYXhOKjJdOwoKCmludCBmaW5kUChpbnQgeCl7CglyZXR1cm4gKHg9PXBbeF0pP3g6cFt4XT1maW5kUChwW3hdKTsKfQoKaW50IG1haW4oKXsKCWlvczo6c3luY193aXRoX3N0ZGlvKDApOwoJY2luLnRpZSgwKTsgY291dC50aWUoMCk7CglpbnQgTjsKCWNpbj4+TjsKCWZvcihpbnQgaT0wOyBpPE47IGkrKyl7CgkJY2luPj5jYXJkW2ldWzBdPj5jYXJkW2ldWzFdOwoJCW51bVtpXT1jYXJkW2ldWzBdOwoJCW51bVtpK05dPWNhcmRbaV1bMV07Cgl9CgkvL+mbouaVo+WMlgoJc29ydChudW0sbnVtK04qMik7CglpbnQgdU49dW5pcXVlKG51bSxudW0rTioyKS1udW07CgkvL0RTVQoJZm9yKGludCBpPTA7IGk8dU47IGkrKyl7CgkJcFtpXT1pLCB2bltpXT0xLCBlbltpXT0wOwoJCXN2W2ldPW12W2ldPW51bVtpXTsKCX0KCWZvcihpbnQgaT0wOyBpPE47IGkrKyl7CgkJaW50IG4xPWxvd2VyX2JvdW5kKG51bSxudW0rdU4sY2FyZFtpXVswXSktbnVtOwoJCWludCBuMj1sb3dlcl9ib3VuZChudW0sbnVtK3VOLGNhcmRbaV1bMV0pLW51bTsKCQlpbnQgcDE9ZmluZFAobjEpLCBwMj1maW5kUChuMik7CgkJaWYocDEhPXAyKXsKCQkJcFtwMl09cDE7CgkJCXZuW3AxXSs9dm5bcDJdOwoJCQllbltwMV0rPWVuW3AyXSsxOwoJCQltdltwMV09bWluKG12W3AxXSxtdltwMl0pOwoJCQlzdltwMV0rPXN2W3AyXTsKCQl9ZWxzZSBlbltwMV0rKzsKCX0KCWxvbmcgYW5zPTA7Cglmb3IoaW50IGk9MDsgaTx1TjsgaSsrKXsKCQlpZihpIT1maW5kUChpKSkgY29udGludWU7CgkJYW5zKz1zdltpXS0oZW5baV0+PXZuW2ldPzA6bXZbaV0pOwoJfWNvdXQ8PGFuczsKfQ==