#include<cstdio>

#define	rep(i,n)	for(int i=0;i<n;i++)

using namespace std;

int m,n,a,b;

bool traceAmida(const bool amd[30][9]){
	int p=a;
	rep(i,m){
		if     (p<n-1 && amd[i][p])	p++;
		else if(0<p && amd[i][p-1])	p--;
	}
	return p==b;
}

int main(){
	for(;scanf("%d%d%d%d",&n,&a,&b,&m),n;){
		a--,b--;
		bool amd[30][9];
		rep(i,m){
			char s[10];	scanf("%s",s);
			rep(j,n-1)	amd[i][j]=(s[j]=='1');
		}

		bool ok=false;
		if(traceAmida(amd)){ puts("0"); ok=true; }
		else{
			int ii,jj;
			rep(i,m){
				if(!amd[i][0] && !amd[i][1]){
					amd[i][0]=true;
					if(traceAmida(amd)){ ok=true; ii=i,jj=0; goto FOUND; }
					amd[i][0]=false;
				}
				for(int j=1;j<n-2;j++){
					if(!amd[i][j-1] && !amd[i][j] && !amd[i][j+1]){
						amd[i][j]=true;
						if(traceAmida(amd)){ ok=true; ii=i,jj=j; goto FOUND; }
						amd[i][j]=false;
					}
				}
				if(!amd[i][n-3] && !amd[i][n-2]){
					amd[i][n-2]=true;
					if(traceAmida(amd)){ ok=true; ii=i,jj=n-2; goto FOUND; }
					amd[i][n-2]=false;
				}
			}

			FOUND:
			if(ok)	printf("%d %d\n",ii+1,jj+1);
		}
		if(!ok)	puts("1");
	}

	return 0;
}