#include<bits/stdc++.h>
//#include<atcoder/all>
using namespace std;
//using namespace atcoder;

int main() {
    long long N;
    cin>>N;
    long long A[N];
    long long B[N];
    for(int i=0;i<N;i++){
        cin>>A[i];
    }
    for(int i=0;i<N;i++){
        cin>>B[i];
    }
    long long AB[N];
    for(int i=0;i<N;i++){
        AB[i]=A[i]-B[i];
    }

    pair<long long,int> g[N/2],k[N/2];
    for(int i=0;i<N/2;i++){
        g[i]=make_pair(AB[i*2],i*2);
    }
    for(int i=0;i<N/2;i++){
        k[i]=make_pair(AB[i*2+1],i*2+1);
    }

    sort(g,g+N/2);
    sort(k,k+N/2);

    long long ans=0;
    for(int i=0;i<N/2;i++){
        if(g[i].first+k[i].first<0){
            ans+=B[g[i].second]+B[k[i].second];
        }
        else{
            ans+=A[g[i].second]+A[k[i].second];
        }
    }

    cout<<ans<<endl;
}



#include<bits/stdc++.h>
using namespace std;
template<typename T>inline T read(){
	T x=0,f=0;char c=getchar();
	while(!isdigit(c)) f=c=='-',c=getchar();
	while(isdigit(c)) x=x*10+c-48,c=getchar();
	return f?-x:x;
}
#define int long long
namespace run{
	const int N=1e5+9;
	int n,a[N],b[N],ans;
	priority_queue<int> pq[2];
	int main(){
		n=read<int>();
		for(int i=1;i<=n;i++) ans+=(a[i]=read<int>());
		for(int i=1;i<=n;i++) b[i]=read<int>();
		for(int i=1;i<=n;i++) pq[i&1].push(b[i]-a[i]);
		while(!pq[0].empty() && !pq[1].empty() && pq[0].top()+pq[1].top()>0){
			ans+=pq[0].top()+pq[1].top();
			pq[0].pop(),pq[1].pop();
		}
		printf("%lld\n",ans);
		return 0;
	}
}
#undef int
int main(){
#ifdef my
	freopen(".in","r",stdin);
	freopen(".out","w",stdout);
#endif
	return run::main();
}