(n,i),a,*q=$<.map{_1.split.map &:to_i}
b=(0..u=n).map{_1&-_1}
d=b.map{[]}
q.map{d[_2]<<[_1-1,~i-=1]}
a.map{t=$*[_1]||u+=1
(b[t]-=1;t+=t&-t)until t>n
d[$*[_1]=i+=1].map{|x,y|q[y]=u-n
(q[y]-=b[x];x&=x-1)while x>0}}
p *q