#include <bits/stdc++.h>
using namespace std;
struct FASTINPUT {
  void f(string& s) {
    char buf[400005];
    long long a = scanf("%s", buf);
    a++;
    s = buf;
  }
  void f(long long& x) {
    long long a = scanf("%lld", &x);
    a++;
  }
  void f(int& x) {
    long long a = scanf("%d", &x);
    a++;
  }
  void f(double& x) {
    long long a = scanf("%lf", &x);
    a++;
  }
  template <typename A, typename B>
  void f(pair<A, B>& p) {
    f(p.first);
    f(p.second);
  }
  template <typename A>
  void f(vector<A>& x) {
    for (auto& y : x) f(y);
  }
  void read() {}
  template <typename Head, typename... Tail>
  void read(Head& H, Tail&... T) {
    f(H);
    read(T...);
  }
};
struct FASTOUTPUT {
  void f(string s) { printf("%s", s.c_str()); }
  void f(long long x) { printf("%lld", x); }
  void f(int x) { printf("%d", x); }
  void f(double x) { printf("%.20f", x); }
  void f(char x) { printf("%c", x); }
  void f(const char* a) { printf("%s", a); }
  template <typename A>
  void f(vector<A>& x) {
    for (auto& y : x) {
      f(y);
      f(" ");
    }
  }
  void print() {}
  template <typename Head, typename... Tail>
  void print(Head H, Tail... T) {
    f(H);
    print(T...);
  }
};
struct DEBUG {
  string open = "[", close = "]", sep = ", ";
  string f(string s) { return s; }
  string f(char c) { return string(1, c); }
  string f(int x) { return to_string(x); }
  string f(long long x) { return to_string(x); }
  string f(double x) { return to_string(x); }
  string f(const char* a) { return a; }
  template <typename A, typename B>
  string f(pair<A, B> p) {
    return open + f(p.first) + sep + f(p.second) + close;
  }
  template <typename A>
  string f(A v) {
    string s = open;
    for (auto a : v) {
      if (s != open) {
        s += sep;
      }
      s += f(a);
    }
    s += close;
    return s;
  }
  void show() { cout << endl; }
  template <typename Head, typename... Tail>
  void show(Head H, Tail... T) {
    cout << " " << f(H);
    show(T...);
  }
};
vector<long long> di = {0, 0, 1, -1, 1, -1, 1, -1};
vector<long long> dj = {1, -1, 0, 0, -1, -1, 1, 1};
long long ob(long long i, long long n) { return i < 0 || i >= n; }
long long tp(long long x) { return (1LL << x); }
long long roundup(long long a, long long b) {
  return a % b ? a / b + 1 : a / b;
}
template <typename A, typename B>
long long exist(A a, B b) {
  return a.find(b) != a.end();
}
vector<string> ssplit(string s) {
  vector<string> ans;
  stringstream ss;
  ss << s;
  while (ss >> s) ans.push_back(s);
  return ans;
}
void makemod(long long& x, long long m) {
  x %= m;
  x += m;
  x %= m;
}
long long powmod(long long a, long long b, long long m) {
  if (b == 0) return 1;
  long long h = powmod(a, b / 2, m);
  long long ans = h * h % m;
  return b % 2 ? ans * a % m : ans;
}
bool isvowel(char ch) {
  return (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u');
}
long long sign(long long x) { return x > 0 ? 1 : x < 0 ? -1 : 0; }
void upmin(long long& x, long long v) { x = min(x, v); }
void upmax(long long& x, long long v) { x = max(x, v); }
const vector<long long> mods = {(long long)1e9 + 7, 998244353,
                                (long long)1e6 + 3, (long long)1e18 + 5};
const long long mod = mods[0];
const long long inf = mods[3];
const double eps = 1e-10;
const double pi = acos(0) * 2;
const string nl = "\n";
long long countodd(vector<long long>& A) {
  long long x = 0;
  for (auto a : A) {
    if (a < 0) return inf;
    if (a % 2) x++;
  }
  return x;
}
void solve() {
  vector<long long> A(4);
  do {
    FASTINPUT inp;
    inp.read(A);
  } while (false);
  if (countodd(A) <= 1) {
    do {
      FASTOUTPUT out;
      out.print("Yes", nl);
    } while (false);
    return;
  }
  A[0]--;
  A[1]--;
  A[2]--;
  A[3] += 3;
  if (countodd(A) <= 1) {
    do {
      FASTOUTPUT out;
      out.print("Yes", nl);
    } while (false);
  } else {
    do {
      FASTOUTPUT out;
      out.print("No", nl);
    } while (false);
  }
}
signed main() {
  long long t = 1;
  do {
    FASTINPUT inp;
    inp.read(t);
  } while (false);
  for (long long i = 0; i < t; i++) solve();
  return 0;
}
