use std::io;
use std::cmp;
fn main() {
    let mut s = String::new();
    io::stdin().read_line(&mut s).unwrap();
    let (x, y, a, b, c):(usize, usize, usize, usize, usize)  = {
        let s_spl:Vec<&str> = s.trim().split(' ').collect();
        (
            s_spl[0].parse().unwrap(), 
            s_spl[1].parse().unwrap(), 
            s_spl[2].parse().unwrap(), 
            s_spl[3].parse().unwrap(), 
            s_spl[4].parse().unwrap(), 
        )
    };
    // let x: usize = s_spl[0].parse().unwrap();
    // let y: usize = s_spl[1].parse().unwrap();
    // let a: usize = s_spl[2].parse().unwrap();
    // let b: usize = s_spl[3].parse().unwrap();
    // let c: usize = s_spl[4].parse().unwrap();
    let mut p:Vec<usize> = Vec::with_capacity(a as usize);
    let mut q:Vec<usize> = Vec::with_capacity(b as usize);
    let mut r:Vec<usize> = Vec::with_capacity(c as usize);
    // s_spl.clear();
    s.clear();
    io::stdin().read_line(&mut s).unwrap();
    for p_str in s.trim().split(' ') {
        let p_i:usize = p_str.parse().unwrap();
        p.push(p_i);
    }
    s.clear();
    io::stdin().read_line(&mut s).unwrap();
    for q_str in s.trim().split(' ') {
        let q_i:usize = q_str.parse().unwrap();
        q.push(q_i);
    }
    s.clear();
    io::stdin().read_line(&mut s).unwrap();
    for r_str in s.trim().split(' ') {
        let r_i:usize = r_str.parse().unwrap();
        r.push(r_i);
    }
    p.sort_by(|a, b| b.cmp(a));
    q.sort_by(|a, b| b.cmp(a));
    r.sort_by(|a, b| b.cmp(a));
    let mut x_ofs:usize = 0;
    let mut y_ofs:usize = 0;
    loop {
        // println!("x:{}, x_ofs:{}, y:{}, y_ofs:{}",x, x_ofs, y, y_ofs);
        if x_ofs + y_ofs == r.len() {
            break;
        }
        let p_pop_option = 
            if x_ofs < x {
                Some(p[x - x_ofs - 1])
            }else{
                None
            };    
        let q_pop_option = 
            if y_ofs < y {
                Some(q[y - y_ofs - 1])
            }else{
                None
            };
        match p_pop_option {
            Some(p_pop) => {
                match q_pop_option {
                    Some(q_pop) => {
                        if cmp::min(p_pop, q_pop) < r[x_ofs + y_ofs] {
                            if p_pop < q_pop {
                                x_ofs += 1;
                            }else{
                                y_ofs += 1;
                            }
                        }else{
                            break;
                        }
                    },
                    None => {
                        if p_pop < r[x_ofs + y_ofs] {
                            x_ofs += 1;
                        }else{
                            break;
                        }
                    }
                }
            },
            None => {
                match q_pop_option {
                    Some(q_pop) => {
                        if q_pop < r[x_ofs + y_ofs] {
                            y_ofs += 1;
                        }else{
                            break;
                        }
                    },
                    None => {
                        break;
                    }
                }
            }
        }
    }
    let mut sum:usize = 0;
    for i in 0..x-x_ofs {
        sum += p[i];
    }
    for i in 0..y-y_ofs {
        sum += q[i];
    }
    for i in 0..x_ofs+y_ofs {
        sum += r[i];
    }
    println!("{}", sum);
}

Measured memory_bytes: 10492