#include <fstream>
using namespace std;
#include <algorithm>
#define InFile "fabrica.in"
#define OutFile "fabrica.out"
#define NrAmax 50011
#define NrBmax 50011
#define Nmax 100011
#define max(a, b) ( ( a>b ) ? a : b )
#define min(a, b) ( ( a<b ) ? a : b )
int N,NrA,NrB;
int V_A[NrAmax];
int T_A[NrAmax];
int V_B[NrBmax];
int T_B[NrBmax];
int MaxA,MaxB;
int Time[Nmax];
void Down(int n,int k,int V[],int T[],int i)
{
int p;
p=1;
while (p)
{
p=0;
if (2*k<=n)
{
p=2*k;
if ( (2*k+1<=n) && ( max(T[2*k+1],Time[i])+V[2*k+1] < max(T[2*k],Time[i])+V[2*k]) )
p++;
if (max(T[p],Time[i])+V[p] >= max(T[k],Time[i])+V[k])
p=0;
}
if (p)
{
swap(T[k],T[p]);
swap(V[k],V[p]);
k=p;
}
}
}
void Up(int co,int i,int V[],int T[],char inF)
{
if (inF=='V')
while (V[i]<V[i/2] && i/2>0)
{
swap(V[i],V[i/2]);
swap(T[i],T[i/2]);
i=i/2;
}
else
while (T[i]<T[i/2] && i/2>0)
{
swap(T[i],T[i/2]);
swap(V[i],V[i/2]);
i=i/2;
}
}
void insert(int i,int x,int y,int V[],int T[])
{
V[i]=x;
T[i]=y;
Up(i,i,V,T,'V');
}
int main()
{
freopen(InFile,"r",stdin);
freopen(OutFile,"w",stdout);
scanf("%d%d%d",&N,&NrA,&NrB);
for (int i=1;i<=NrA;++i)
{
int x;
scanf("%d",&x);
insert(i,x,0,V_A,T_A);
}
for (int i=1;i<=NrB;++i)
{
int x;
scanf("%d",&x);
insert(i,x,0,V_B,T_B);
}
for (int i=1;i<=N;++i)
{
Time[i]=T_A[1];
T_A[1]+=V_A[1];
Down(NrA,1,V_A,T_A,i+1);
}
for (int i=1;i<=N;++i)
{
Down(NrB,1,V_B,T_B,i);
T_B[1]=max(Time[i],T_B[1]);
T_B[1]+=V_B[1];
}
for (int i=1;i<=NrA;++i)
MaxA=max(T_A[i],MaxA);
for (int i=1;i<=NrB;++i)
MaxB=max(T_B[i],MaxB);
printf("%d %d\n",MaxA,MaxB);
return 0;
}