#include<bits/stdc++.h>
using namespace std;
const int N = 2e6+5;
int n, m, cnt=1, lf[N], rt[N];
struct node{
int sum;
double mx;
} t[N];
void build(int x, int l, int r){
if(l == r) return;
int mid = (l + r) / 2;
lf[x] = ++cnt, build(lf[x], l, mid);
rt[x] = ++cnt, build(rt[x], mid+1, r);
}
int query(int x, int l, int r, double k){
if(t[x].mx <= k) return 0;
if(l == r) return 1;
int mid = (l + r) / 2;
if(t[lf[x]].mx <= k) return query(rt[x], mid+1, r, k);
return query(lf[x], l, mid, k);
}
void modify(int x, int l, int r, int pos, double v){
if(l == r){
t[x].mx = v, t[x].sum = 1;
return;
}
int mid = (l + r) / 2;
if(pos <= mid) modify(lf[x], l, mid, pos, v);
else modify(rt[x], mid+1, r, pos, v);
t[x].mx = max(t[lf[x]].mx, t[rt[x]].mx);
t[x].sum = t[lf[x]].sum + query(rt[x], mid+1, r, t[lf[x]].mx);
}
int main(){
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin>>n>>m;
build(1, 1, n);
while(m--){
int a, b;
cin>>a>>b;
modify(1, 1, n, a, 1.0*b/a);
cout<<t[1].sum<<"\n";
}
return 0;
}