#include <iostream>
using namespace std;

const int MAX = 20;

char grid[MAX+2][MAX+2];

int rdir[4] = {0, -1, 0, 1};
int cdir[4] = {1, 0, -1, 0};

int main()
{
	int icase=0, n, m, r;
	int row, col;
	for(int i=0; i<MAX+2; i++)
		grid[i][0] = '*';
	for(int j=0; j<MAX+2; j++)
		grid[0][j] = '*';
	cin >> n >>m >> r;
	while (n > 0) {
		icase++;
		for(int i=1; i<=n; i++)
			for(int j=1; j<=m; j++)
				grid[i][j] = ' ';
		for(int i=0; i<n+2; i++)
			grid[i][m+1] = '*';
		for(int j=0; j<m+2; j++)
			grid[n+1][j] = '*';
		for(int i=0; i<r; i++) {
			cin >> col >> row;
			grid[col][row] = 'R';
		}
		cin >> col >> row;			// start square;
		int dir;
		if (row == 1)
			dir = 3;
		else if (row == m)
			dir = 1;
		else if (col == 1)
			dir = 0;
		else if (col == n)
			dir = 2;
		else
			cout << "bad starting square" << endl;
		
		int count = 0;
		while (grid[col][row] != '*') {
			count++;
			int nextc = col + cdir[dir];
			int nextr = row + rdir[dir];
			if (grid[nextc][nextr] == 'R') {
				dir = (dir+1)%4;			// turn right
				nextc = col + cdir[dir];
				nextr = row + rdir[dir];
				if (grid[nextc][nextr] == 'R') {
					dir = (dir+2)%4;		// turn left
					nextc = col + cdir[dir];
					nextr = row + rdir[dir];
					if (grid[nextc][nextr] == 'R') {
						dir = (dir+3)%4;		// turn around
						nextc = col + cdir[dir];
						nextr = row + rdir[dir];
					}
				}
			}
			col = nextc;
			row = nextr;
		}
		col -= cdir[dir];
		row -= rdir[dir];
		cout << "Case " << icase << ": " << col << ' ' << row << ' ' << count << endl;

		cin >>n >>m >> r;
	}
}

