#include <bits/stdc++.h>
using namespace std;
short to[2][1001][1001][4][3];
int dx[] = {0, 1, 0, -1};
int dy[] = {1, 0, -1, 0};
int Sign(int x) { return x > 0 ? 1 : x < 0 ? -1 : 0; }
int cur = 0, nxt = 1;
int x[100005], y[100005], dir[100005];
long long t[100005];
int n, b;
void MakeStep() {
  for (int x = 0; x < b; ++x) {
    for (int y = 0; y < b; ++y) {
      for (int j = 0; j < 4; ++j) {
        int nx = to[cur][x][y][j][0], ny = to[cur][x][y][j][1],
            dd = to[cur][x][y][j][2];
        if (nx < 0 || nx >= b || ny < 0 || ny >= b) {
          to[nxt][x][y][j][0] = nx;
          to[nxt][x][y][j][1] = ny;
          to[nxt][x][y][j][2] = -1;
        } else {
          to[nxt][x][y][j][0] = to[cur][nx][ny][dd][0];
          to[nxt][x][y][j][1] = to[cur][nx][ny][dd][1];
          to[nxt][x][y][j][2] = to[cur][nx][ny][dd][2];
        }
      }
    }
  }
  swap(cur, nxt);
}
int main() {
  cin >> n >> b;
  ++b;
  for (int i = 0; i < b; ++i) {
    for (int j = 0; j < b; ++j) {
      for (int d = 0; d < 4; ++d) {
        int nx = i + dx[d], ny = j + dy[d];
        to[0][i][j][d][0] = nx;
        to[0][i][j][d][1] = ny;
        to[0][i][j][d][2] = d;
      }
    }
  }
  for (int i = 0; i < n; ++i) {
    int x0, y0, x1, y1;
    cin >> x0 >> y0 >> x1 >> y1;
    int dx = Sign(x1 - x0), dy = Sign(y1 - y0);
    int dd = 0;
    for (int j = 0; j < 4; ++j) {
      if (dx == ::dx[j] && dy == ::dy[j]) {
        dd = j;
        break;
      }
    }
    while (x0 != x1 || y0 != y1) {
      for (int j = 0; j < 4; ++j) {
        to[0][x0][y0][j][0] = x0 + dx;
        to[0][x0][y0][j][1] = y0 + dy;
        to[0][x0][y0][j][2] = dd;
      }
      x0 += dx;
      y0 += dy;
    }
    for (int j = 0; j < 4; ++j) {
      to[0][x0][y0][j][0] = x0 + dx;
      to[0][x0][y0][j][1] = y0 + dy;
      to[0][x0][y0][j][2] = dd;
    }
  }
  for (int i = 1; i < 55; ++i) {
  }
  int q;
  cin >> q;
  for (int i = 0; i < q; ++i) {
    char d;
    cin >> x[i] >> y[i] >> d >> t[i];
    dir[i] = 0;
    if (d == 'L') {
      dir[i] = 3;
    } else if (d == 'R') {
      dir[i] = 1;
    } else if (d == 'D') {
      dir[i] = 2;
    } else {
      dir[i] = 0;
    }
  }
  for (int j = 0; j < 55; ++j) {
    for (int i = 0; i < q; ++i) {
      if (x[i] < 0 || x[i] >= b || y[i] < 0 || y[i] >= b) {
        continue;
      }
      if (t[i] & 1) {
        int nx = to[cur][x[i]][y[i]][dir[i]][0];
        int ny = to[cur][x[i]][y[i]][dir[i]][1];
        dir[i] = to[cur][x[i]][y[i]][dir[i]][2];
        x[i] = nx;
        y[i] = ny;
      }
      t[i] >>= 1;
    }
    MakeStep();
  }
  for (int i = 0; i < q; ++i) {
    x[i] = max(0, min(x[i], b - 1));
    y[i] = max(0, min(y[i], b - 1));
    cout << x[i] << " " << y[i] << '\n';
  }
  return 0;
}
