#include <bits/stdc++.h>
using namespace std;
namespace io {
const int L = (1 << 19) + 1;
char ibuf[L], *iS, *iT, obuf[L], *oS = obuf, *oT = obuf + L - 1, c, st[55];
int f, tp;
char gc() {
  if (iS == iT) {
    iT = (iS = ibuf) + fread(ibuf, 1, L, stdin);
    return iS == iT ? EOF : *iS++;
  }
  return *iS++;
}
template <class I>
void gi(I &x) {
  for (f = 1, c = gc(); c < '0' || c > '9'; c = gc())
    if (c == '-') f = -1;
  for (x = 0; c <= '9' && c >= '0'; c = gc()) x = x * 10 + (c & 15);
  x *= f;
}
};  // namespace io
using io::gc;
using io::gi;
int h, t, r, n, m, xa[410], ya[410], xb[410], yb[410], f[410][410], v[410][410];
int tag(int x) { return x < 0 ? -1 : x > 0 ? 1 : 0; }
void update(int &x, int y) {
  if (y > 0 && (x <= 0 || x > y) || y == 0 && x < 0 || y < 0 && x < 0 && x > y)
    x = y;
}
int dfs(int x, int y) {
  if (x + y > r) return f[x][y] = -1;
  if (!x && !y) return f[x][y] = 1;
  if (v[x][y]) return f[x][y];
  v[x][y] = 1;
  int z = -1, w;
  for (register int i = 1; i <= min(n, x); i++) {
    w = dfs(x - i + xa[i], y + ya[i]);
    update(z, w + tag(w));
  }
  for (register int i = 1; i <= min(m, y); i++) {
    w = dfs(x + xb[i], y - i + yb[i]);
    update(z, w + tag(w));
  }
  return f[x][y] = z;
}
queue<int> p, q;
int bfs() {
  memset(v, 0, sizeof(v));
  v[h][t] = 1;
  int x, y, dx, dy;
  p.push(h);
  q.push(t);
  while (!v[0][0] && !p.empty()) {
    x = p.front();
    p.pop();
    y = q.front();
    q.pop();
    for (register int i = 1; i <= min(n, x); i++) {
      dx = x - i + xa[i];
      dy = y + ya[i];
      if (dx + dy > r || v[dx][dy]) continue;
      v[dx][dy] = v[x][y] + 1;
      if (dx + dy <= r) p.push(dx), q.push(dy);
    }
    for (register int i = 1; i <= min(m, y); i++) {
      dx = x + xb[i];
      dy = y - i + yb[i];
      if (dx + dy > r || v[dx][dy]) continue;
      v[dx][dy] = v[x][y] + 1;
      p.push(dx), q.push(dy);
    }
  }
  return v[0][0] - 1;
}
int main() {
  gi(h);
  gi(t);
  gi(r);
  gi(n);
  for (register int i = 1; i <= n; i++) gi(xa[i]), gi(ya[i]);
  gi(m);
  for (register int i = 1; i <= m; i++) gi(xb[i]), gi(yb[i]);
  dfs(h, t);
  if (f[h][t] > 0)
    printf("Ivan\n%d\n", bfs());
  else if (f[h][t] < 0)
    printf("Zmey\n%d\n", -f[h][t] - 1);
  else
    puts("Draw");
  return 0;
}
