#include <bits/stdc++.h>
#define pb push_back
#define FOR(i,l,r) for(int i=(l);i<=(r);i++)
#define get(d) (lower_bound(xv.begin(),xv.end(),(d))-xv.begin()+1)
using namespace std;
const int maxn=500001;

struct BIT {
	int n;
	int sh[maxn*2];
	void init(int nn) { n=nn; FOR (i,1,n) sh[i]=0; }
	void sr(int d,int v) {
		assert(d!=0);
		for (;d<=n;d+=d&-d) sh[d]+=v;
	}
	int sum(int d) {
		int ret=0;
		for (;d;d-=d&-d) ret+=sh[d];
		return ret;
	}
} lt,rt;

int n;

int a[maxn],b[maxn];
int segl[maxn],cnt;
int opid[maxn];
vector<int> xv;
int main() {
	for (int tt=1;~scanf("%d",&n);tt++) {
		cnt=0; xv.clear();
		for (int i=1;i<=n;i++) {
			scanf("%d%d",&a[i],&b[i]);
			if (a[i]==0) {
				++cnt;
				xv.pb(b[i]),xv.pb(b[i]+cnt);
				segl[cnt]=b[i]; opid[i]=cnt;
			}
		}
		sort(xv.begin(),xv.end());
		xv.resize(unique(xv.begin(),xv.end())-xv.begin());

		lt.init(xv.size()); rt.init(xv.size());

		printf("Case #%d:\n",tt);
		for (int i=1,tmp;i<=n;i++) {
			if (a[i]==0) {
				int l=b[i],id=opid[i];
				printf("%d\n", rt.sum(get(l+id)) - lt.sum(get(l)-1) );

				lt.sr(get(l),1); rt.sr(get(l+id),1);
			}
			else {
				int l=segl[b[i]],id=b[i];
				lt.sr(get(l),-1); rt.sr(get(l+id),-1);
			}
		}
	}
	return 0;
}

