#include <bits/stdc++.h>
using namespace std;
typedef signed long long ll;
const long double PI = 3.141592653589793238L;
void pv(vector<int> a) {
  for (auto i : a) cout << i + 1 << ' ';
  cout << endl;
}
int findd(map<int, int>& mapp, int x) {
  if (mapp.find(x) == mapp.end())
    return 0;
  else
    return mapp[x];
}
void add(map<int, int>& mapp, int x) {
  if (mapp.find(x) == mapp.end())
    mapp.insert({x, 0});
  else
    mapp[x] = mapp[x] + 1;
}
string nott(char a) {
  if (a == 'a') return "b";
  return "a";
}
string get_uni_char(int ind, int x, string prev) {
  if (ind < prev.size()) return nott(prev[ind]);
  if (x % 2 == 0) return "a";
  return "b";
}
void dfs(vector<int>& top, vector<int> b, int i, vector<int>& explored) {
  explored[i] = 1;
  if (b[i] != -1 && !explored[b[i]]) dfs(top, b, b[i], explored);
  top.push_back(i);
}
void topsort(vector<int>& top, vector<int> b, int n) {
  vector<int> explored(n);
  for (int i = 0; i < n; i++) {
    if (!explored[i]) dfs(top, b, i, explored);
  }
}
bool solve(int r, int g, int b, int w) {
  int even = 0;
  if (r % 2 == 0) even++;
  if (g % 2 == 0) even++;
  if (b % 2 == 0) even++;
  if (w % 2 == 0) even++;
  return even > 2;
}
int main() {
  int test;
  cin >> test;
  while (test-- != 0) {
    int r, g, b, w;
    cin >> r >> g >> b >> w;
    if (solve(r, g, b, w))
      cout << "Yes" << endl;
    else {
      r--;
      g--;
      b--;
      w += 3;
      if (solve(r, g, b, w) && r >= 0 && g >= 0 && b >= 0 && w >= 0)
        cout << "Yes" << endl;
      else
        cout << "No" << endl;
    }
  }
}
