#include <bits/stdc++.h>
using namespace std;
const int inf = 2000000000;
int H, T, R, m, hi[205], ti[205], n, hj[205], tj[205], h[205][205],
    t[3000000][3], w, d[205][205];
bool v[205][205], V[205][205];
void adde(int x, int y, int X, int Y) {
  t[w][0] = X;
  t[w][1] = Y;
  t[w][2] = h[x][y];
  h[x][y] = w++;
}
struct node {
  int x, y, d;
  bool operator<(const node &t) const { return d > t.d; }
} temp;
priority_queue<node> q;
bool dij() {
  for (int i = 0; i <= 200; i++)
    for (int j = 0; j <= 200; j++) d[i][j] = inf;
  d[H][T] = 0;
  temp.x = H;
  temp.y = T;
  temp.d = d[H][T];
  q.push(temp);
  while (!q.empty()) {
    temp = q.top();
    q.pop();
    int x = temp.x, y = temp.y;
    if (temp.d == d[x][y]) {
      for (int i = h[x][y]; i != -1; i = t[i][2]) {
        int X = t[i][0], Y = t[i][1];
        if (d[x][y] + 1 < d[X][Y]) {
          d[X][Y] = d[x][y] + 1;
          temp.x = X;
          temp.y = Y;
          temp.d = d[X][Y];
          q.push(temp);
        }
      }
    }
  }
  return d[0][0] != inf;
}
bool spfa(int x, int y) {
  if (!v[x][y]) return true;
  V[x][y] = v[x][y] = false;
  for (int i = h[x][y]; i != -1; i = t[i][2]) {
    int X = t[i][0], Y = t[i][1];
    if (d[x][y] + 1 > d[X][Y]) {
      d[X][Y] = d[x][y] + 1;
      if (spfa(X, Y)) {
        v[x][y] = true;
        return true;
      }
    }
  }
  v[x][y] = true;
  return false;
}
bool cycle() {
  for (int i = 0; i <= 200; i++)
    for (int j = 0; j <= 200; j++) d[i][j] = -inf;
  d[H][T] = 0;
  memset(V, true, sizeof(V));
  memset(v, true, sizeof(v));
  return spfa(H, T);
}
int main() {
  scanf("%d%d%d", &H, &T, &R);
  scanf("%d", &m);
  for (int i = 1; i <= m; i++) {
    scanf("%d%d", &hi[i], &ti[i]);
    hi[i] -= i;
  }
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d%d", &hj[i], &tj[i]);
    tj[i] -= i;
  }
  memset(h, -1, sizeof(h));
  w = 0;
  for (int i = 0; i <= R; i++) {
    for (int j = 0; i + j <= R; j++) {
      for (int k = 1; (k <= m) && (k <= i); k++)
        if (i + hi[k] + j + ti[k] > R)
          adde(i, j, 200, 200);
        else
          adde(i, j, i + hi[k], j + ti[k]);
      for (int k = 1; (k <= n) && (k <= j); k++)
        if (i + hj[k] + j + tj[k] > R)
          adde(i, j, 200, 200);
        else
          adde(i, j, i + hj[k], j + tj[k]);
    }
  }
  if (dij())
    printf("Ivan\n%d\n", d[0][0]);
  else if (cycle())
    printf("Draw\n");
  else
    printf("Zmey\n%d\n", d[200][200]);
  return 0;
}
