program main
      implicit none
      integer(4) :: x, y, a, b, c
      integer(8), allocatable :: p(:), q(:), r(:)
      integer(8), allocatable :: arr(:)
      integer(8) :: i, red, grn, key, total

      read(*,*) x, y, a, b, c
      allocate( p(a) )
      allocate( q(b) )
      allocate( r(c) )
      read(*,*) p
      read(*,*) q 
      read(*,*) r

      call quicksort1( p, 1, a )
      call quicksort1( q, 1, b )
      allocate( arr( x+y+c ) )
      arr(1:x) = p(a-x+1:a)
      arr(x+1:x+y) = q(b-y+1:b)
      arr(x+y+1:x+y+c) = r

      call quicksort1( arr, 1, x+y+c )
      total = sum( arr(c+1:x+y+c) ) 
      print *, total

      contains

      recursive subroutine quicksort1(a, first, last)
        implicit none
        integer(8),intent(inout)::a(*)
        integer,intent(in)::first,last
        !
        ! Original
        ! https://gist.github.com/t-nissie/479f0f16966925fa29ea
        !
        integer(8)::x,t
        integer::i,j
      
        x = a((first+last)/2)
        i = first
        j = last
        do
           do while (a(i) < x)
              i=i+1
           end do
           do while (x < a(j))
              j=j-1
           end do
           if (i >= j) exit
           t = a(i)
           a(i) = a(j)
           a(j) = t
           i=i+1
           j=j-1
        end do
        if (first < i-1) call quicksort1(a, first, i-1)
        if (j+1 < last)  call quicksort1(a, j+1, last)
      
        return
      end subroutine quicksort1
end program main 
