fn main() {
    let s: String = read_line();
    let (x, y, a, b, c) = {
        let mut ws = s.split_whitespace();
        let a: i64 = ws.next().unwrap().parse().unwrap();
        let b: i64 = ws.next().unwrap().parse().unwrap();
        let c: i64 = ws.next().unwrap().parse().unwrap();
        let d: i64 = ws.next().unwrap().parse().unwrap();
        let e: i64 = ws.next().unwrap().parse().unwrap();
        (a, b, c, d, e)
    };
    let s: String = read_line();
    let mut p_vec = {
        let mut ws = s.split_whitespace();
        let mut result = vec![];
        for _ in 0..a {
            let v: i64 = ws.next().unwrap().parse().unwrap();
            result.push(v);
        }
        result
    };
    let s: String = read_line();
    let mut q_vec = {
        let mut ws = s.split_whitespace();
        let mut result = vec![];
        for _ in 0..b {
            let v: i64 = ws.next().unwrap().parse().unwrap();
            result.push(v);
        }
        result
    };
    let s: String = read_line();
    let mut r_vec = {
        let mut ws = s.split_whitespace();
        let mut result = vec![];
        for _ in 0..c {
            let v: i64 = ws.next().unwrap().parse().unwrap();
            result.push(v);
        }
        result
    };

    p_vec.sort_by(|a, b| b.cmp(a));
    q_vec.sort_by(|a, b| b.cmp(a));
    r_vec.sort_by(|a, b| b.cmp(a));

    let mut candidate = vec![];
    for index in 0..x as usize {
        candidate.push(*p_vec.get(index).unwrap())
    }
    for index in 0..y as usize {
        candidate.push(*q_vec.get(index).unwrap())
    }
    for index in 0..c as usize {
        candidate.push(*r_vec.get(index).unwrap())
    }

    candidate.sort_by(|a, b| b.cmp(a));
    let mut sum: i64 = 0;
    for index in 0..(x + y) as usize {
        sum += *candidate.get(index).unwrap();
    }
    println!("{}", sum);

    // let mut red_index = x - 1;
    // let mut green_index = y - 1;
    // let mut no_color_index = 0;
    // loop {
    //     // println!("{} {} {}", red_index, green_index, no_color_index);
    //     if green_index >= 0
    //         && (red_index < 0 || p_vec[red_index as usize] > q_vec[green_index as usize])
    //     {
    //         // 緑に着色する
    //         if no_color_index >= c || q_vec[green_index as usize] > r_vec[no_color_index as usize] {
    //             // もう無色いらない
    //             break;
    //         } else {
    //             green_index -= 1;
    //             no_color_index += 1;
    //         }
    //     } else if red_index >= 0
    //         && (green_index < 0 || p_vec[red_index as usize] < q_vec[green_index as usize])
    //     {
    //         // 赤に着色する
    //         if no_color_index >= c || p_vec[red_index as usize] > r_vec[no_color_index as usize] {
    //             // もう無色いらない
    //             break;
    //         } else {
    //             red_index -= 1;
    //             no_color_index += 1;
    //         }
    //     } else {
    //         // もう無色いらない
    //         break;
    //     }
    // }
    // // println!("{} {} {}", red_index, green_index, no_color_index);

    // let mut sum: i64 = 0;
    // for index in 0..(red_index + 1) as usize {
    //     sum += *p_vec.get(index).unwrap();
    // }
    // for index in 0..(green_index + 1) as usize {
    //     sum += *q_vec.get(index).unwrap();
    // }
    // for index in 0..no_color_index as usize {
    //     sum += *r_vec.get(index).unwrap();
    // }
    // println!("{}", sum);
}

fn read_line() -> String {
    let mut s = String::new();
    std::io::stdin().read_line(&mut s).unwrap();
    s.trim_right().to_owned()
}


Measured memory_bytes: 21796