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

#define S size()
#define EN end()
#define BE begin()
#define LEN length()

#define endl "\n"
#define cnt count
#define in insert
#define er erase
#define fi first
#define se second
#define ld double
#define int long long

#define gcd __gcd
#define mp make_pair
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define bs binary_search
#define np next_permutation

#define si set<int>
#define mll map<int,int>
#define vi vector<int>
#define vc vector<char>
#define pll pair<int,int>
#define vpi vector<pll>
#define msi multiset<int>
#define msc multiset<char>
#define vvi vector<vector<int>>

#define mod1 1000000007
#define mod2 998244353
#define inf LONG_LONG_MAX
#define eness(x) __builtin_ctzll(x)
#define nhigh(x) __builtin_popcountll(x)
#define PI 3.1415926535897932384626433832

#define iter(s) for(auto it:s)
#define forl(i,n) for(int i=0;i<n;i++)
#define fore(i,n) for(int i=1;i<=n;i++)
#define forn(i,n) for(int i=n-1;i>=0;i--)
#define forls(i,l,r) for(int i=l;i<r;i++)
#define forns(i,l,r) for(int i=r-1;i>=l;i--)

#define all(v) v.BE,v.EN
#define SORT(ar,n) sort(ar,ar+n)
#define rall(v) v.rbegin(),v.rend()
#define RSORT(ar,n) sort(ar,ar+n,greater<int>())

#define pat int n;cin>>n;
#define wq int q;cin>>q;fore(_,q)
#define nokay cout<<(ok?"Yes\n":"No\n");
#define tak(s) string s;cin>>s;int n=s.LEN;
#define pat1 int n;cin>>n;int ar[n];forl(i,n) cin>>ar[i];
#define pat2 int n,k;cin>>n>>k;int ar[n];forl(i,n) cin>>ar[i];
#define fastio ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
 
bool debug_cerr=false;
#define Cerr if(!debug_cerr) {} else cerr
#define cerr_line Cerr<<"\n";
#define deb(x) Cerr<<#x<<"="<<x<<"\n";
#define dar(a,n) Cerr<<#a<<"="<<"{";forl(i,n) Cerr<<a[i]<<",}"[i == n-1];Cerr<<"\n";
#define dvi(v) Cerr<<#v<<"="<<"{";forl(i,v.S) Cerr<<v[i]<<",}"[i==v.S-1];Cerr<<"\n";
/*
inline int eness(x){int s=0;while(!(x&1)){x/=2;s++;} return s;}
inline int nhigh(x){int s=0;while(x){s+=(x&1);x/=2;} return s;}
*/
//**********************************
vi mf,mi;
int POW(int x,int y);
int MI(int x,int mod);
void pre_f(int x,int mod);
void pre_i(int x,int mod);
int C(int x,int y,int mod);
int bpow(int x,int y,int mod);

int POW(int x,int y){
    return bpow(x,y,inf);
}
int MI(int x,int mod=mod1){
    return bpow(x,mod-2,mod);
}
void pre_f(int x,int mod=mod1){
    mf=vi(x+1,1);
    forls(i,2,x+1){
        mf[i]=mf[i-1]*i;
        mf[i]%=mod;
    }
    return;
}
void pre_i(int x,int mod=mod1){
    mi=vi(x+1);
    forl(i,x+1){
        mi[i]=MI(mf[i],mod);
    }
    return;
}
int C(int x,int y,int mod=mod1){
    if(x<y) return 0;
    int n1=mf[x];
    int n2=mi[y];
    int n3=mi[x-y];
    int res=(n1*n2)%mod;
    res=(res*n3)%mod;
    return res;
}
int bpow(int x,int y,int mod=mod1){
    x%=mod;
    int res=1;
    while(y>0){
        if(y&1){
            res=res*x%mod;
        }
        x=x*x%mod;
        y>>=1;
    }
    return res;
}
//**********************************
int32_t main(){
    #ifndef ONLINE_JUDGE
        debug_cerr=true;
        freopen("./input.txt", "r", stdin);
        freopen("./output.txt", "w", stdout);
    #endif
    fastio;
    int a,b,c;
    cin>>a>>b>>c;
    int ar[a],br[b],cr[c];
    int sa=0,sb=0,sc=0;
    forl(i,a){
        cin>>ar[i];
        sa+=ar[i];
    }
    forl(i,b){
        cin>>br[i];
        sb+=br[i];
    }
    forl(i,c){
        cin>>cr[i];
        sc+=cr[i];
    }
    SORT(ar,a);
    SORT(br,b);
    SORT(cr,c);
    int ans=sa+sb+sc;
    int sub=min({ar[0]+min(br[0],cr[0]),br[0]+cr[0],sa,sb,sc});
    cout<<ans-2*sub;
}
### Prompt

Create a solution in cpp for the following problem:

You are given three bags. Each bag contains a non-empty multiset of numbers. You can perform a number of operations on these bags. In one operation, you can choose any two non-empty bags, and choose one number from each of the bags. Let's say that you choose number a from the first bag and number b from the second bag. Then, you remove b from the second bag and replace a with a-b in the first bag. Note that if there are multiple occurrences of these numbers, then you shall only remove/replace exactly one occurrence.

You have to perform these operations in such a way that you have exactly one number remaining in exactly one of the bags (the other two bags being empty). It can be shown that you can always apply these operations to receive such a configuration in the end. Among all these configurations, find the one which has the maximum number left in the end.

Input

The first line of the input contains three space-separated integers n_1, n_2 and n_3 (1 ≤ n_1, n_2, n_3 ≤ 3⋅10^5, 1 ≤ n_1+n_2+n_3 ≤ 3⋅10^5) — the number of numbers in the three bags.

The i-th of the next three lines contain n_i space-separated integers a_{{i,1}}, a_{{i,2}}, ..., a_{{i,{{n_i}}}} (1 ≤ a_{{i,j}} ≤ 10^9) — the numbers in the i-th bag.

Output

Print a single integer — the maximum number which you can achieve in the end.

Examples

Input


2 4 1
1 2
6 3 4 5
5


Output


20

Input


3 2 2
7 5 4
2 9
7 1


Output


29

Note

In the first example input, let us perform the following operations:

[1, 2], [6, 3, 4, 5], [5]

[-5, 2], [3, 4, 5], [5] (Applying an operation to (1, 6))

[-10, 2], [3, 4], [5] (Applying an operation to (-5, 5))

[2], [3, 4], [15] (Applying an operation to (5, -10))

[-1], [4], [15] (Applying an operation to (2, 3))

[-5], [], [15] (Applying an operation to (-1, 4))

[], [], [20] (Applying an operation to (15, -5))

You can verify that you cannot achieve a bigger number. Hence, the answer is 20.

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;

#define S size()
#define EN end()
#define BE begin()
#define LEN length()

#define endl "\n"
#define cnt count
#define in insert
#define er erase
#define fi first
#define se second
#define ld double
#define int long long

#define gcd __gcd
#define mp make_pair
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define bs binary_search
#define np next_permutation

#define si set<int>
#define mll map<int,int>
#define vi vector<int>
#define vc vector<char>
#define pll pair<int,int>
#define vpi vector<pll>
#define msi multiset<int>
#define msc multiset<char>
#define vvi vector<vector<int>>

#define mod1 1000000007
#define mod2 998244353
#define inf LONG_LONG_MAX
#define eness(x) __builtin_ctzll(x)
#define nhigh(x) __builtin_popcountll(x)
#define PI 3.1415926535897932384626433832

#define iter(s) for(auto it:s)
#define forl(i,n) for(int i=0;i<n;i++)
#define fore(i,n) for(int i=1;i<=n;i++)
#define forn(i,n) for(int i=n-1;i>=0;i--)
#define forls(i,l,r) for(int i=l;i<r;i++)
#define forns(i,l,r) for(int i=r-1;i>=l;i--)

#define all(v) v.BE,v.EN
#define SORT(ar,n) sort(ar,ar+n)
#define rall(v) v.rbegin(),v.rend()
#define RSORT(ar,n) sort(ar,ar+n,greater<int>())

#define pat int n;cin>>n;
#define wq int q;cin>>q;fore(_,q)
#define nokay cout<<(ok?"Yes\n":"No\n");
#define tak(s) string s;cin>>s;int n=s.LEN;
#define pat1 int n;cin>>n;int ar[n];forl(i,n) cin>>ar[i];
#define pat2 int n,k;cin>>n>>k;int ar[n];forl(i,n) cin>>ar[i];
#define fastio ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
 
bool debug_cerr=false;
#define Cerr if(!debug_cerr) {} else cerr
#define cerr_line Cerr<<"\n";
#define deb(x) Cerr<<#x<<"="<<x<<"\n";
#define dar(a,n) Cerr<<#a<<"="<<"{";forl(i,n) Cerr<<a[i]<<",}"[i == n-1];Cerr<<"\n";
#define dvi(v) Cerr<<#v<<"="<<"{";forl(i,v.S) Cerr<<v[i]<<",}"[i==v.S-1];Cerr<<"\n";
/*
inline int eness(x){int s=0;while(!(x&1)){x/=2;s++;} return s;}
inline int nhigh(x){int s=0;while(x){s+=(x&1);x/=2;} return s;}
*/
//**********************************
vi mf,mi;
int POW(int x,int y);
int MI(int x,int mod);
void pre_f(int x,int mod);
void pre_i(int x,int mod);
int C(int x,int y,int mod);
int bpow(int x,int y,int mod);

int POW(int x,int y){
    return bpow(x,y,inf);
}
int MI(int x,int mod=mod1){
    return bpow(x,mod-2,mod);
}
void pre_f(int x,int mod=mod1){
    mf=vi(x+1,1);
    forls(i,2,x+1){
        mf[i]=mf[i-1]*i;
        mf[i]%=mod;
    }
    return;
}
void pre_i(int x,int mod=mod1){
    mi=vi(x+1);
    forl(i,x+1){
        mi[i]=MI(mf[i],mod);
    }
    return;
}
int C(int x,int y,int mod=mod1){
    if(x<y) return 0;
    int n1=mf[x];
    int n2=mi[y];
    int n3=mi[x-y];
    int res=(n1*n2)%mod;
    res=(res*n3)%mod;
    return res;
}
int bpow(int x,int y,int mod=mod1){
    x%=mod;
    int res=1;
    while(y>0){
        if(y&1){
            res=res*x%mod;
        }
        x=x*x%mod;
        y>>=1;
    }
    return res;
}
//**********************************
int32_t main(){
    #ifndef ONLINE_JUDGE
        debug_cerr=true;
        freopen("./input.txt", "r", stdin);
        freopen("./output.txt", "w", stdout);
    #endif
    fastio;
    int a,b,c;
    cin>>a>>b>>c;
    int ar[a],br[b],cr[c];
    int sa=0,sb=0,sc=0;
    forl(i,a){
        cin>>ar[i];
        sa+=ar[i];
    }
    forl(i,b){
        cin>>br[i];
        sb+=br[i];
    }
    forl(i,c){
        cin>>cr[i];
        sc+=cr[i];
    }
    SORT(ar,a);
    SORT(br,b);
    SORT(cr,c);
    int ans=sa+sb+sc;
    int sub=min({ar[0]+min(br[0],cr[0]),br[0]+cr[0],sa,sb,sc});
    cout<<ans-2*sub;
}
```