func_code_string: #include <bits/stdc++.h>   using namespace std;   template <class T>   T abs(T x) {     return x > 0 ? x : -x;   }   int m;   int n;   map<int, int> id;   int rev[100500];   int a[2];   int w[100500], ans[100500];   set<int> s;   set<int> ss;   void go(int x) {     w[x] = 1;     x = rev[x];     s.insert(x);     for (int i = 0; i < (2); i++) {       int tmp = a[i] - x;       if (ss.find(tmp) != s.end()) {         int p = id[tmp];         if (!w[p]) go(p);       }     }   }   int check(set<int> s) {     for (int i = 0; i < (2); i++) {       int g = 1;       for (set<int>::const_iterator it = s.begin(); it != s.end(); it++) {         int tmp = a[i] - *it;         if (s.find(tmp) == s.end()) {           g = 0;           break;         }       }       if (g) {         for (set<int>::const_iterator it = s.begin(); it != s.end(); it++) {           ans[id[*it]] = i;         }         return 1;       }     }     return 0;   }   int main() {     cin >> n >> a[0] >> a[1];     for (int i = 0; i < (n); i++) {       int x;       cin >> x;       id[x] = i;       rev[i] = x;       ss.insert(x);     }     for (int i = 0; i < (n); i++)       if (!w[i]) {         s.clear();         go(i);         if (!check(s)) {           cout <<  NO  << endl;           return 0;         }       }     cout <<  YES  << endl;     for (int i = 0; i < (n); i++) cout << ans[i] <<    ;     return 0;   }   