排序+二分查找
import java.util.*;

public class Main{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        int[] data = new int[num];
        scanner.nextLine();
        String[] buffer = scanner.nextLine().split(" ");
        for(int i = 0;i<num;i++){
            data[i] = Integer.valueOf(buffer[i]);
        }
        int result = scanner.nextInt();
        Arrays.sort(data);
        int temp;
        int big = data[num-1];
        boolean flag = false;
        for (int i = 0; i < num; i++) {
            if(data[i] > big){
                break;
            }
            temp = result-data[i];
            int find = Arrays.binarySearch(data, i+1, num, temp);
            if (find >= 0 && find > i){
                System.out.println(data[i]+" "+temp);
                flag = true;
            }
        }
        if (flag == false){
            System.out.println("NO");
        }
    }
}