#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9 + 7;
const int MOD = INF;
const long long LINF = 1e18 + 4;
const int MAX = 1 << 21;
int tree[2 * MAX];
int tree2[2 * MAX];
int tree3[2 * MAX];
pair<int, int> tab[MAX], tab2[MAX], tab3[MAX];
void update(int x) {
  x += MAX;
  tree[x] = tab[x - MAX].first + tab[x - MAX].second;
  while (x /= 2) {
    tree[x] = max(tree[2 * x], tree[2 * x + 1]);
  }
}
void update2(int x) {
  x += MAX;
  tree2[x] = tab2[x - MAX].first + tab2[x - MAX].second;
  while (x /= 2) {
    tree2[x] = max(tree2[2 * x], tree2[2 * x + 1]);
  }
}
void update3(int x) {
  x += MAX;
  tree3[x] = tab3[x - MAX].first + tab3[x - MAX].second;
  while (x /= 2) {
    tree3[x] = max(tree3[2 * x], tree3[2 * x + 1]);
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, q;
  cin >> n >> q;
  while (q--) {
    int x, y;
    cin >> x >> y;
    if (x == 1) {
      tab[y].first = !(tab[y].first);
      tab2[y].first = !tab2[y].first;
      tab3[y + 1].second = !tab3[y + 1].second;
      tab3[y - 1].second = !tab3[y - 1].second;
      update2(y);
      update3(y - 1);
      update3(y + 1);
    } else {
      tab[y].second = !(tab[y].second);
      tab3[y].first = !tab3[y].first;
      tab2[y + 1].second = !tab2[y + 1].second;
      tab2[y - 1].second = !tab2[y - 1].second;
      update3(y);
      update2(y - 1);
      update2(y + 1);
    }
    update(y);
    if (tree[1] == 2 || tree2[1] == 2 || tree3[1] == 2)
      cout << "No\n";
    else
      cout << "Yes\n";
  }
}
