#include <bits/stdc++.h>
long double pi = 2 * acosl(0.0);
int test_case_number, test_case = 1;
void function_name() {
  int row, column, waste, query;
  scanf("%d %d %d %d", &row, &column, &waste, &query);
  std::pair<int, int> waste_points[waste];
  for (auto &i : waste_points) {
    scanf("%d %d", &i.first, &i.second);
  }
  std::sort(waste_points, waste_points + waste);
  for (int i = 0; i < query; i++) {
    std::pair<int, int> point;
    int waste_number;
    scanf("%d %d", &point.first, &point.second);
    waste_number = std::lower_bound(waste_points, waste_points + waste, point) -
                   waste_points;
    if (waste_points[waste_number] == point) {
      printf("Waste\n");
    } else {
      int remainder = (point.first - 1) * column + point.second - waste_number;
      if (remainder % 3 == 1) {
        printf("Carrots\n");
      } else if (remainder % 3 == 0) {
        printf("Grapes\n");
      } else {
        printf("Kiwis\n");
      }
    }
  }
}
void function_name(int v1, int v2, int v3) {}
void function_name(std::string line) {}
class initial_works {
 public:
  void with_test_case_number() {
    scanf("%d", &test_case_number);
    while (test_case <= test_case_number) {
      function_name();
      test_case++;
    }
  }
  void single_iteration() { function_name(); }
  void without_test_case_number() {
    int v1, v2, v3;
    while (scanf("%d %d %d", &v1, &v2, &v3) == 3 && v1 != 0) {
      function_name(v1, v2, v3);
      test_case++;
    }
  }
  void eoof() {
    char dummy_char_array[100] = {0};
    while (scanf("%[^\n]", &dummy_char_array) != EOF) {
      getchar();
      std::string line = dummy_char_array;
      function_name(line);
      test_case++;
    }
  }
};
int main() {
  initial_works a;
  a.single_iteration();
  return 0;
}
