#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;
}
