#include <stdio.h>
int main()
{
// n은 주차 공간의 수, a는 첫번째 날에 주차된 차량의 수, b는 두번째 날에 주차된 차량의 수
int n, a, b;
// A 배열은 첫째 날 사용된 주차 공간의 번호들을 저장해놓은 배열
// B 배열은 둘째 날 사용된 주차 공간의 번호들을 저장해놓은 배열
int A[100], B[100];
scanf("%d %d %d", &n, &a, &b);
/// A, B 배열에 1부터 a, b까지 주차 공간의 번호 저장
for (int i = 1; i <= a; i++)
scanf("%d", &A[i]);
for (int i = 1; i <= b; i++)
scanf("%d", &B[i]);
// count1에 모두 사용된 주차 공간을 저장
int count1 = 0;
for (int k = 1; k <= n; k++) // 1부터 n까지 돌려 두 배열에 같은 주차 번호가 있는지 확인하는 for문
{
// k_count를 이용해 count1를 좌우
int k_count = 0;
// 1부터 a까지 돌려 배열 A에 k가 있는지 확인하고
// 있으면 k_count에 1을 추가
for (int i = 1; i <= a; i++)
if (A[i] == k) k_count++;
// 1부터 b까지 돌려 배열 B에 k가 있는지 확인하고
// 있으면 k_count에 1을 추가
for (int j = 1; j <= b; j++)
if (B[j] == k) k_count++;
// k_count가 2라는 것은 두 배열에 같은 주차 번호가 있다는 것이므로 count1에 1을 추가
if (k_count == 2) count1++;
}
// count2에 모두 사용되지 않은 주차 공간을 저장
int count2 = 0;
// 1부터 n까지 돌려 두 배열에 같은 주차 번호가 없는지 확인하는 for문
for (int k = 1; k <= n; k++)
{
// k_count를 이용해 count2를 좌우
int k_count = 0;
// 1부터 a까지 돌려 배열 A에 k가 있는지 확인하고
// 있으면 k_count에 1을 추가
for (int i = 1; i <= a; i++)
if (A[i] == k) k_count++;
// 1부터 b까지 돌려 배열 B에 k가 있는지 확인하고
// 있으면 k_count에 1을 추가
for (int j = 1; j <= b; j++)
if (B[j] == k) k_count++;
// k_count가 0이라는건 두 배열에 공통적으로 없는 주차 번호가 있다는 뜻이므로
// count2에 1을 더해준다.
if (k_count == 0) count2++;
}
// 순서대로 출력
printf("%d %d", count2, count1);
}