/**
 * code generated by RHelper
 * More info: https://github.com/mkc1370/RHelper
 * @author 
 */

using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;

public class ERedAndGreenApples
{
    private readonly StringReader cin;
    private readonly StringWriter cout;
    private readonly Scanner scanner;

    public ERedAndGreenApples(StringReader cin, StringWriter cout)
    {
        this.cin = cin;
        this.cout = cout;
        scanner = new Scanner(cin);
    }

    private class Node
    {
        public Color color;
        public long oishi;

    }
    enum Color
    {
        Red,Green,None
    }

    public void Solve()
    {
        var x = CINL;
        var y = CINL;
        var a = CINL;
        var b = CINL;
        var c = CINL;

        var t = new Node[((int) (a + b + c))];
        var index = 0;
        for (var i = 0; i < a; i++)
        {
            var tt = CINL;
            t[index] = new Node(){color = Color.Red, oishi = tt};
            index++;
        }
        for (var i = 0; i < b; i++)
        {
            var tt = CINL;
            t[index] = new Node(){color = Color.Green, oishi = tt};
            index++;
        }
        for (var i = 0; i < c; i++)
        {
            var tt = CINL;
            t[index] = new Node(){color = Color.None, oishi = tt};
            index++;
        }
        t = t.OrderByDescending(tt => tt.oishi).ToArray();

        var sum = 0l;
        var gc = 0;
        var rc = 0;
        var nc = 0;
        foreach (var tt in t)
        {
            switch (tt.color)
            {
                case Color.Red:
                    rc++;
                    break;
                case Color.Green:
                    gc++;
                    break;
                case Color.None:
                    nc++;
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }

            if (Math.Max(0, x - rc) + Math.Max(0, y - gc) == nc) break;
        }

        rc = (int) Math.Min(rc, x);
        gc = (int) Math.Min(gc, y);
        foreach (var tt in t)
        {
            switch (tt.color)
            {
                case Color.Red:
                    if (rc > 0)
                    {
                        sum += tt.oishi;
                        rc--;
                    }
                    break;
                case Color.Green:
                    if (gc > 0)
                    {
                        sum += tt.oishi;
                        gc--;
                    }
                    break;
                case Color.None:
                    if (nc > 0)
                    {
                        sum += tt.oishi;
                        nc--;
                    }
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }
        }

        COUT(sum);
    }

    private long CINL => scanner.Long();
    private double CIND => scanner.Double();
    private string CINS => scanner.String();
    private static IEnumerable<T> Repeat<T>(T v, long n) => Enumerable.Repeat(v, (int)n);
    private List<long> CINVL(long n) => Repeat(0, n).Select(_ => CINL).ToList();
    private List<double> CINVD(long n) => Repeat(0, n).Select(_ => CIND).ToList();
    private List<string> CINVS(long n) => Repeat(0, n).Select(_ => CINS).ToList();

    private void COUT(object o) => cout.WriteLine(o);
}


public class Scanner
{
    public Scanner(StringReader stringReader)
    {
        this.stringReader = stringReader;
    }

    private readonly StringReader stringReader;
    private readonly char[] buffer = new char[1024];
    private int len, ptr;
    private bool isEof;

    private char Read()
    {
        if (isEof) throw new EndOfStreamException();
        if (ptr >= len)
        {
            ptr = 0;
            if ((len = stringReader.Read(buffer, 0, 1024)) <= 0)
            {
                isEof = true;
                return '\0';
            }
        }

        return buffer[ptr++];
    }

    public char Char()
    {
        char b;
        do b = Read();
        while (b < 33 || 126 < b);
        return b;
    }

    public string String()
    {
        var sb = new StringBuilder();
        for (char b = Char(); b >= 33 && b <= 126; b = Read())
            sb.Append(b);
        return sb.ToString();
    }

    public long Long()
    {
        long ret = 0;
        char b;
        var ng = false;
        do b = Read();
        while (b != '-' && (b < '0' || '9' < b));
        if (b == '-')
        {
            ng = true;
            b = Read();
        }

        for (;; b = Read())
        {
            if (b < '0' || '9' < b)
                return ng ? -ret : ret;
            else ret = ret * 10 + b - '0';
        }
    }

    public double Double()
    {
        return double.Parse(String(), CultureInfo.InvariantCulture);
    }
}


public class Output
{
	public static void Main()
	{
		var reader = new System.IO.StringReader(Console.In.ReadToEnd());
		var writer = new System.IO.StringWriter();
		var solver = new ERedAndGreenApples(reader, writer);
		solver.Solve();
		System.Console.Write(writer.GetStringBuilder().ToString());
	}
}


Measured memory_bytes: 52204