#include<cstdio>
#include<algorithm>

using namespace std;

struct Piece{
	int w,h;
	Piece(){}
	Piece(int _w,int _h){ w=_w,h=_h; }
};

bool operator<(const Piece &p,const Piece &q){
	return p.w*p.h<q.w*q.h;
}

int main(){
	for(int n,w,h;scanf("%d%d%d",&n,&w,&h),w;){
		Piece pc[101];
		pc[0]=Piece(w,h);
		for(int i=0;i<n;i++){
			int p,s;	scanf("%d%d",&p,&s);
			p--;
			int w=pc[p].w,h=pc[p].h;

			for(int j=p;j<i;j++)	pc[j]=pc[j+1];

			s%=(w+h+w+h);
			int dir,d;
			if     (s<w)	dir=1,d=s;
			else if(s<w+h)	dir=0,d=s-w;
			else if(s<w+h+w)dir=1,d=w-(s-w-h);
			else			dir=0,d=h-(s-w-h-w);

			if(dir==0){
				pc[i]=Piece(w,d);
				pc[i+1]=Piece(w,h-d);
			}
			else{
				pc[i]=Piece(d,h);
				pc[i+1]=Piece(w-d,h);
			}
			if(pc[i+1]<pc[i])	swap(pc[i],pc[i+1]);
		}

		sort(pc,pc+n+1);
		for(int i=0;i<n+1;i++){
			if(i)	putchar(' ');
			printf("%d",pc[i].w*pc[i].h);
		}
		putchar('\n');
	}

	return 0;
}