public static void main(String[] args) throws IOException {
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
        HashMap<Integer,Integer> map1 ;
        HashMap<Integer,Integer> map2 ;
        HashMap<Integer,Integer> map3 ;
        int n,a,b;
        ArrayList<Integer> array;
        String s,s1;
        String[] in1,in2;
        s = r.readLine();
        s1 = r.readLine();
        in1 = s.split(" ");
        in2 = s1.split(" ");
        n = Integer.parseInt(in1[0]);
        a = Integer.parseInt(in1[1]);
        b = Integer.parseInt(in1[2]);
        array = new ArrayList<Integer>(n);
        for(int i = 0 ; i < n ; i++)
        {
          array.add(Integer.parseInt(in2[i]));
        }
        map1 = force(array,a,b);
        map2 = force(array,a,"0");
        map3 = force(array,b,"1");
        if((map1.size()!=array.size())|(map2.size()!=array.size())|(map3.size()!=array.size())) System.out.println("NO");
        else if (map2.size() == array.size()) {
            System.out.println("YES");
            for (Integer i :array) {
                System.out.print(map2.get(i) + " ");

            }

        } else if (map3.size() == array.size()) {
            System.out.println("YES");
            for (Integer i :array) {
                System.out.print(map3.get(i) + " ");

            }

        } else if (map1.size() == array.size()) {
            System.out.println("YES");
            for (Integer i :array) {
                System.out.print(map1.get(i) + " ");

            }

        }


    }