func_code_string: #include <bits/stdc++.h>   using namespace std;   bool SR(int &_x) { return scanf( %d , &_x) == 1; }   bool SR(long long &_x) { return scanf( %lld , &_x) == 1; }   bool SR(double &_x) { return scanf( %lf , &_x) == 1; }   bool SR(char *_s) { return scanf( %s , _s) == 1; }   bool RI() { return true; }   template <typename I, typename... T>   bool RI(I &_x, T &..._tail) {     return SR(_x) && RI(_tail...);   }   void SP(const int _x) { printf( %d , _x); }   void SP(const long long _x) { printf( %lld , _x); }   void SP(const double _x) { printf( %.16lf , _x); }   void SP(const char *s) { printf( %s , s); }   void PL() { puts(  ); }   template <typename I, typename... T>   void PL(const I _x, const T... _tail) {     SP(_x);     if (sizeof...(_tail)) putchar(   );     PL(_tail...);   }   const int maxn = 5e5 + 5;   int n, x[maxn], y[maxn];   void read() {     RI(n);     for (int i = (1); i <= int(n); i++) {       int a, b;       RI(x[i], y[i], a, b);     }   }   int c[maxn];   void build() {     for (int i = (1); i <= int(n); i++) {       c[i] = 1 + (x[i] & 1) * 2 + (y[i] & 1);     }   }   void sol() {     PL( YES );     for (int i = (1); i <= int(n); i++) PL(c[i]);   }   int main() {     read();     build();     sol();     return 0;   }   