#include <bits/stdc++.h>      using namespace std;      typedef long long ll;      int get_next_state(bool s1, bool s2, bool b1, bool b2) {     if (s1 && b1) {       return -1;     }     if (s2 && b2) {       return -1;     }     bool a1 = s1 | b1;     bool a2 = s2 | b2;     if ((a1 && a2) || (!a1 && !a2)) {       return 0;     }     if (a1) {       return 1;     }     return 2;   }      bool solve_dp(int n, const vector<pair<int, int>>& cr) {     const bool S1[3] = {false, false, true};     const bool S2[3] = {false, true, false};     vector<vector<bool>> filled(2, vector<bool>(n, false));     int m = cr.size();     for (int i = 0; i < m; ++i) {       filled[cr[i].second][cr[i].first] = true;     }     /*     for (int r = 0; r < 2; ++r) {       for (int i = 0; i < n; ++i) {         if (filled[r][i]) {    cout <<  # ;         }         else {    cout <<  . ;         }       }       cout << endl;       } */     vector<uint8_t> dp(n+1);     dp[n] = 1;     for (int i = n-1; i >= 0; --i) {       dp[i] = 0;       for (int state = 0; state < 3; ++state) {         int next_state = get_next_state(S1[state], S2[state], filled[0][i], filled[1][i]);         //cout <<  next_state[  << i <<  ][  << state <<  ] =   << next_state << endl;         if (next_state >= 0) {    dp[i] |= ((dp[i+1] >> next_state) & 1) << state;         }       }       //cout << dp[i] <<    ;     }     //cout << endl;     return (dp[0] & 1) == 1;   }      bool solve_dp2(int n, const vector<pair<int, int>>& cr) {     int m = cr.size();     int prv_state = 0;     int prv_posish = 0;     int p = 0;     while (p < m) {       int posish = cr[p].first;       int state = 0;       if ((p < (m-1)) && (cr[p+1].first == posish)) {         p += 2;       }       else {         state = cr[p].second+1;         p++;       }       if (state == 0) {         if (prv_state != 0) {    return false;         }       }       else {         if (prv_state == 0) {    prv_state = 3-state;         }         else {    if (((posish - prv_posish) % 2) == 1) {      prv_state = 3-prv_state;    }    if (prv_state != state) {      return false;    }    prv_state = 0;         }       }       prv_posish = posish;     }     return (prv_state == 0);   }      bool solve(int n, const vector<int>& r, const vector<int>& c) {     int m = r.size();     vector<pair<int, int>> cr(m);     for (int i = 0; i < m; ++i) {       cr[i] = make_pair(c[i], r[i]);     }     sort(cr.begin(), cr.end());     return solve_dp2(n, cr);     vector<pair<int, int>> ccr(m);     int prv_c = 0;     int compress = 0;     for (int i = 0; i < m; ++i) {       if ((cr[i].first - prv_c) >= 2) {         compress += ((cr[i].first - prv_c - 2) / 2) * 2;       }       prv_c = cr[i].first;       ccr[i] = make_pair(cr[i].first-compress, cr[i].second);     }     return solve_dp(n-compress, ccr);   }      void test_case() {     int n, m;     cin >> n >> m;     vector<int> r(m), c(m);     for (int i = 0; i < m; ++i) {       cin >> r[i] >> c[i];       --r[i];       --c[i];     }     if (solve(n, r, c)) {       cout <<  YES  << endl;     }     else {       cout <<  NO  << endl;     }   }      int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     int t;     cin >> t;     for (int i = 0; i < t; ++i) {       test_case();     }   }