#pragma GCC optimize("Ofast")
#pragma GCC target("avx2")

#define rd() ({int _v=0,_c;while(_c=*rp++-48,_c>=0)_v=_v*10+_c;_v;})
#define wt(v) {unsigned _z=v,_n=0;long _d=0;while(++_n,_d=_d<<8|0x30|_z%10,_z/=10);*(long*)wp=_d;wp+=_n;}
#define rep(v,e) for(typeof(e)v=0;v<e;++v)

char wbuf[1<<25];

int main(){
	read(0,wbuf,64);
	char*rp=wbuf;
	int x=rd();
	int y=rd();
	int n=x*y;
	
	char*wp=wbuf;
	wt(n);
	*wp++=' ';
	wt(n);
	*wp++='\n';
	rep(i,n){
		wt(i+1);
		*wp++=' ';
		wt(i%y?i:(i+y)%n+1);
		*wp++='\n';
	}
	write(1,wbuf,wp-wbuf);
	_exit(0);
}