#include
using namespace std;
#define debug(x) cout#pragma warning(disable:4996)
int K, A, B, N, M;
int a[1002][1002];
struct rob {
int x, y;
int d;
// n 0 , e 1
};
rob rbs[1002];
int getind(char c) {
if (c == 'N') {
return 0;
}else if (c == 'E') {
return 1;
}else if (c == 'S') {
return 2;
}else if (c == 'W') {
return 3;
}
return -1;
}
int isok(rob& rb) {
if (rb.x = A + 1
|| rb.y = B + 1) {
return 0;
}
//debug(a[rb.y][rb.x])
if (a[rb.y][rb.x] > 0) {
return a[rb.y][rb.x];
}
return -1;
}
bool cal() {
cin >> A >> B;
cin >> N >> M;
for (int i = 1; i cin >> rbs[i].x;
cin >> rbs[i].y;
char d;
cin >> d;
rbs[i].d = getind(d);
a[rbs[i].y][rbs[i].x] = i;
}
bool isp = false;
for (int i = 1; i
int rid,rp;
char ac;
cin >> rid >> ac >> rp;
rob& rb = rbs[rid];
if (isp) {
continue;
}
if (ac == 'L') {
rb.d += 3*rp;
rb.d %= 4;
}else if (ac == 'R') {
rb.d += 1*rp;
rb.d %= 4;
}else if (ac == 'F') {
// -1 OK,0 wall ,other rbs
for (int j = 0; j
int ox = rb.x;
int oy = rb.y;
a[oy][ox] = -1;
if (rb.d == 0) {
rb.y += 1;
}
else if (rb.d == 1) {
rb.x += 1;
}
else if (rb.d == 2) {
rb.y -= 1;
}
else if (rb.d == 3) {
rb.x -= 1;
}
int iso = isok(rb);
if (iso >= 0) {
if (isp == false) {
if (iso == 0) {
cout }
else if (iso > 0) {
cout }
isp = true;
}
break;
}
else {
a[rb.y][rb.x] = rid;
}
}
}
}
if (!isp) {
cout }
return 0;
}
int main()
{
//freopen("../in2.txt","r",stdin);
cin >> K;
for (int i = 0; i fill(a[0], a[0] + sizeof(a) / 4, -1);
cal();
}
}