#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int R, C, k;
int dir[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
pair <int, int> robot;
queue <pair<int, int>> route;
void move_bfs(vector <int> direct, vector<vector<int>> room, vector<vector<int>> &visit) {
while(1) {
bool flag = false;
for(int i=0; i<4; i++) {
int dx = dir[direct[i]][0];
int dy = dir[direct[i]][1];
int nx = robot.first + dx;
int ny = robot.second + dy;
while(1) {
if(nx < 0 || ny < 0 || nx >= R || ny >= C) break;
if(room[nx][ny] || visit[nx][ny]) break;
visit[nx][ny] = 1;
flag = true;
nx += dx;
ny += dy;
}
robot = {nx - dx, ny - dy};
}
if(!flag) break;
}
}
int main() {
cin >> R >> C >> k;
vector <vector<int>> room(R, vector<int>(C, 0));
for(int i=0; i<k; i++) {
int x, y;
cin >> x >> y;
room[x][y] = 1;
}
cin >> robot.first >> robot.second;
vector <vector<int>> visit(R, vector<int>(C, 0));
visit[robot.first][robot.second] = 1;
vector <int> direct;
for(int i=0; i<4; i++) {
int n;
cin >> n;
direct.push_back(n-1);
}
move_bfs(direct, room, visit);
cout << robot.first << " " << robot.second;
return 0;
}