3
1 2 3
3 2
2
 3
84 30 9
9 84
9
 4
1 5 7 8
1 5 7
1 5
 3
796067435 964699482 819602309
964699482 796067435
964699482
 10
460626451 802090732 277246428 661369649 388684428 784303821 376287098 656422756 9301599 25720377
277246428 388684428 661369649 460626451 656422756 802090732 9301599 784303821 376287098
376287098 802090732 388684428 9301599 656422756 784303821 460626451 277246428
 6
5 4 3 3 5 5
3 5 5 4 3
3 5 4 3
 3
168638990 939116221 323703261
168638990 323703261
168638990
 3
77 77 77
77 77
77
 3
374054998 726316780 902899520
902899520 726316780
726316780

1
3
 30
84
 8
7
 819602309
796067435
 25720377
661369649
 5
5
 939116221
323703261
 77
77
 374054998
902899520


import java.io.BufferedReader;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.*;
import java.util.StringTokenizer;

public class sorting {
	
	static void Selection_sort(int arr[]) {
		int n = arr.length;
		
		for(int i = 0;i < n-1;i++) {
			int smallindex= i;
			for(int j = i+1; j<n;j++) {
				if(arr[smallindex] > arr[j] ) {
					smallindex = j;
				}
				
			}
			
			int temp = arr[i];
			arr[i] = arr[smallindex];
			arr[smallindex] = temp;
			
		}
	}
	static void bubble_sort(int arr[]) {
		int n = arr.length;
		
		for(int i =0;i< n;i++) {
			
			for(int j = 0;j+1<n;j++) {
				if(arr[j]>arr[j+1]) {
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
					
				}
				
			}
		}
	
	}
	static void insertion_sort(int arr[]) {
		int n = arr.length;
		
		for(int first_unsorted = 1;first_unsorted<n;first_unsorted++ ) {
			int new1 = arr[first_unsorted];
			int j;
			
			for( j = first_unsorted;j>0&& arr[j-1]>new1;j--) {
				arr[j] = arr[j-1];
				
				
			}
			arr[j] = new1;
			
		}
		
	}
	
	static void merge(long arr[], int l, int m, int r) 
    { 
        // Find sizes of two subarrays to be merged 
        int n1 = m - l + 1; 
        int n2 = r - m; 
  
        /* Create temp arrays */
        int L[] = new int[n1]; 
        int R[] = new int[n2]; 
  
        /*Copy data to temp arrays*/
        for (int i = 0; i < n1; ++i) 
            L[i] = (int) arr[l + i]; 
        for (int j = 0; j < n2; ++j) 
            R[j] = (int) arr[m + 1 + j]; 
  
        /* Merge the temp arrays */
  
        // Initial indexes of first and second subarrays 
        int i = 0, j = 0; 
  
        // Initial index of merged subarry array 
        int k = l; 
        while (i < n1 && j < n2) { 
            if (L[i] <= R[j]) { 
                arr[k] = L[i]; 
                i++; 
            } 
            else { 
                arr[k] = R[j]; 
                j++; 
            } 
            k++; 
        } 
  
        /* Copy remaining elements of L[] if any */
        while (i < n1) { 
            arr[k] = L[i]; 
            i++; 
            k++; 
        } 
  
        /* Copy remaining elements of R[] if any */
        while (j < n2) { 
            arr[k] = R[j]; 
            j++; 
            k++; 
        } 
    } 
  
    // Main function that sorts arr[l..r] using 
    // merge() 
    static void sort(long arr[], int l, int r) 
    { 
        if (l < r) { 
            // Find the middle point 
            int m = (l + r) / 2; 
  
            // Sort first and second halves 
            sort(arr, l, m); 
            sort(arr, m + 1, r); 
  
            // Merge the sorted halves 
            merge(arr, l, m, r); 
        } 
    } 
	
	static void binary_search(int arr[], int l,int h, int x) {
		int mid = (l+h)/2;
		if(x==arr[mid]) {
			System.out.println(mid);
		}
		else {
			
			if(x> arr[mid]) {
			
			binary_search(arr,mid+1,h,x);
			
		}
		else if(x<arr[mid]) {
			binary_search(arr, l, mid,x);
			
		}
		}
		
	
	}
	

	public static void main(String[] args)throws IOException {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		long arr1[] = new long[n];
		long arr2[] = new long[n-1];
		long arr3[] = new long[n-2];
		
		for(int i = 0;i<n;i++) {
			arr1[i] = in.nextLong();
		}
		for(int i = 0;i<n-1;i++) {
			arr2[i] = in.nextLong();
		}
		for(int i = 0;i<n-2;i++) {
			arr3[i] = in.nextLong();
		}
		
		sort(arr1,0,n-1);
		sort(arr2,0,n-2);
		sort(arr3,0,n-3);
		
		
		int i = 0;
		
		for( ;i<n-1;i++) {
			if(arr1[i]!=arr2[i]) {
				System.out.println(arr1[i]);
				break;
				
			}
		}
		if(i == n-1) {
			System.out.println(arr1[n-1]);
		}
		
       int j = 0;
		
		for( ;j<n-2;j++) {
			if(arr2[j]!=arr3[j]) {
				System.out.println(arr2[i]);
				break;
				
			}
		}
		if(j == n-2) {
			System.out.println(arr2[n-2]);
		}
		
		
//		TreeMap tm1 = new TreeMap();
//		TreeMap tm2 = new TreeMap();
//		TreeMap tm3 = new TreeMap();
//		
//		
//		
//		for(int i = 0;i<n;i++) {
//			if(tm1.containsKey(arr1[i])) {
//				long x = (int) tm1.get(arr1[i]);
//				tm1.put(arr1[i], x+1);
//				
//			}
//			else {
//				tm1.put(arr1[i],1);
//			}
//		
//		}
////		for(int i = 0;i<n;i++) {
////			System.out.println(arr1[i]);
////		}
////		System.out.println("TreeMap contains: " + tm1);
//		
//		for(int i = 0;i<n-1;i++) {
//			if(tm2.containsKey(arr2[i])) {
//				long x1 = (int) tm2.get(arr2[i]);
//				tm2.put(arr2[i], x1+1);
//				
//			}
//			else {
//				tm2.put(arr2[i],1);
//			}
//		
//		}
//		for(int i = 0;i<n-2;i++) {
//			if(tm3.containsKey(arr3[i])) {
//				int x2 = (int) tm3.get(arr3[i]);
//				tm3.put(arr3[i], x2+1);
//				
//			}
//			else {
//				tm3.put(arr3[i],1);
//			}
//		
//		}
//		long y = 0;
//		long flag = 0;
//		
//		for(int i = 0;i<n;i++) {
//			if(tm2.containsKey(arr1[i])) {
//				continue;
//			}
//			else {
//			 y = arr1[i];
//			 flag = 1;
//			 break;
//			}
//		}
//		
//		
//		if(flag == 0) {
//			long y1 = 0; 
//			long flag1 = 0;
//			for(int i = 0;i<n;i++) {
//				if(tm1.get(arr1[i])==tm2.get(arr1[i])) {
//					continue;
//				}
//				else {
//					y1 = arr1[i];
//					 flag = 1;
//					 break;
//					
//				}
//				
//			}
//			System.out.println(y1);
//			
//		}
//		else {
//			System.out.println(y);
//		}
//		
//		
//		
//		long y2 = 0;
//		long flag2 = 0;
//		
//		for(int i = 0;i<n-1;i++) {
//			if(tm3.containsKey(arr2[i])) {
//				continue;
//			}
//			else {
//			 y2 = arr2[i];
//			 flag2 = 1;
//			 break;
//			}
//		}
//		
//		
//		if(flag2 == 0) {
//			long y3 = 0; 
//			long flag3 = 0;
//			for(int i = 0;i<n-1;i++) {
//				if(tm2.get(arr2[i])==tm3.get(arr2[i])) {
//					continue;
//				}
//				else {
//					y3 = arr2[i];
//					 flag3 = 1;
//					 break;
//					
//				}
//				
//			}
//			System.out.println(y3);
//			
//		}
//		else {
//			System.out.println(y2);
//		}
//		
//		
//		
		
		
		
		
		
	}
}