#include <bits/stdc++.h>
#pragma comment(linker, "/stack:64000000")
using namespace std;
template <typename first>
inline first abs(const first& a) {
  return a < 0 ? -a : a;
}
template <typename first>
inline first sqr(const first& a) {
  return a * a;
}
const int INF = INT_MAX / 2;
const long double EPS = 1e-9;
const long double PI = 3.1415926535897932384626433832795;
const int N = 40 * 1000 + 13;
vector<int> xs[N];
int cntx[N];
set<pair<int, int> > bad;
string res[] = {"Waste", "Carrots", "Kiwis", "Grapes"};
int main() {
  int n, m, k, t;
  cin >> n >> m >> k >> t;
  for (int i = 0; i < int(k); i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    x--, y--;
    xs[x].push_back(y);
    bad.insert(make_pair((x), (y)));
  }
  for (int i = 0; i < int(n); i++) sort((xs[i]).begin(), (xs[i]).end());
  for (int i = 0; i < int(n); i++)
    cntx[i] = (i == 0 ? 0 : cntx[i - 1]) + int((xs[i]).size());
  for (int test = 0; test < int(t); test++) {
    int x, y;
    scanf("%d%d", &x, &y);
    x--, y--;
    int ans = -1;
    if (bad.count(make_pair((x), (y))))
      ans = 0;
    else {
      int cnt = x * m;
      cnt -= x == 0 ? 0 : cntx[x - 1];
      int pos =
          int(lower_bound((xs[x]).begin(), (xs[x]).end(), y) - xs[x].begin());
      int cnty = y - pos;
      ans = (cnt + cnty) % 3;
      ans++;
    }
    puts(res[ans].c_str());
  }
  return 0;
}
