#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7, MAX = 1e5 + 5;
long long powN(long long a, long long p) {
  if (p == 0) return 1;
  long long z = powN(a, p / 2);
  z = (z * z) % MOD;
  if (p % 2) z = (z * a) % MOD;
  return z;
}
vector<bool> is_prime(MAX + 1, true);
void Sieve() {
  is_prime[0] = is_prime[1] = false;
  int i, j;
  for (i = 2; i * i <= MAX; i++) {
    if (is_prime[i]) {
      for (j = i * i; j <= MAX; j += i) is_prime[j] = false;
    }
  }
}
int main() {
  int n, q;
  cin >> n >> q;
  set<set<pair<int, int>>> link;
  set<pair<int, int>> Op;
  int f = 0;
  while (q--) {
    int r, c;
    cin >> r >> c;
    if (Op.count({r, c})) {
      Op.erase({r, c});
      set<pair<int, int>> X = {{3 - r, c - 1}, {r, c}};
      set<pair<int, int>> Y = {{3 - r, c}, {r, c}};
      set<pair<int, int>> Z = {{3 - r, c + 1}, {r, c}};
      if (link.count(X)) {
        link.erase(X);
      }
      if (link.count(Y)) {
        link.erase(Y);
      }
      if (link.count(Z)) {
        link.erase(Z);
      }
      if (link.size() == 0)
        cout << "Yes" << endl;
      else
        cout << "No" << endl;
    } else {
      Op.insert({r, c});
      if (Op.count({3 - r, c - 1})) {
        set<pair<int, int>> X = {{3 - r, c - 1}, {r, c}};
        link.insert(X);
      }
      if (Op.count({3 - r, c})) {
        set<pair<int, int>> X = {{3 - r, c}, {r, c}};
        link.insert(X);
      }
      if (Op.count({3 - r, c + 1})) {
        set<pair<int, int>> X = {{3 - r, c + 1}, {r, c}};
        link.insert(X);
      }
      if (link.size() == 0)
        cout << "Yes" << endl;
      else
        cout << "No" << endl;
    }
  }
}
