#include <bits/stdc++.h>
using namespace std;
queue<int> q;
int dfn[41000], low[41000], stk[41000], vis[41000], D[41000], a[210], b[210],
    c[210], d[210], num[210][210];
int sign, tt, top, n, m, H, T, R;
vector<int> e[41000];
bool dfs(int u) {
  int i, v;
  dfn[u] = low[u] = ++sign;
  stk[++top] = u;
  vis[u] = 1;
  for (i = 0; i < e[u].size(); i++) {
    v = e[u][i];
    if (v == u) return 1;
    if (!dfn[v]) {
      if (dfs(v)) return 1;
      low[u] = min(low[u], low[v]);
    } else if (vis[v])
      low[u] = min(low[u], dfn[v]);
  }
  if (dfn[u] == low[u]) {
    if (stk[top] != u) return 1;
    while (stk[top] != u) vis[stk[top--]] = 0;
    vis[stk[top--]] = 0;
  }
  return 0;
}
int solve(int s, int k) {
  int i, u, v;
  memset(D, -1, sizeof D);
  q.push(s);
  D[s] = 0;
  vis[s] = 1;
  while (!q.empty()) {
    u = q.front();
    q.pop();
    for (i = 0; i < e[u].size(); i++) {
      v = e[u][i];
      if ((D[u] + 1) * k < (D[v]) * k || D[v] == -1) {
        D[v] = D[u] + 1;
        if (!vis[v]) vis[v] = 1, q.push(v);
      }
    }
    vis[u] = 0;
  }
  if (k == 1)
    return D[0];
  else
    return D[tt];
}
int main() {
  int i, j, k, p;
  cin >> H >> T >> R;
  cin >> n;
  for (i = 1; i < n + 1; i++) cin >> a[i] >> b[i];
  cin >> m;
  for (i = 1; i < m + 1; i++) cin >> c[i] >> d[i];
  tt = 0;
  for (i = 0; i < R + 1; i++)
    for (j = 0; j < R + 1; j++)
      if (i + j <= R) num[i][j] = tt++;
  for (i = 0; i < R + 1; i++)
    for (j = 0; j < R + 1; j++)
      if (i + j <= R) {
        p = num[i][j];
        for (k = 1; k < min(n, i) + 1; k++) {
          int i0 = i - k + a[k], j0 = j + b[k];
          if (i0 + j0 > R)
            e[p].push_back(tt);
          else
            e[p].push_back(num[i0][j0]);
        }
        for (k = 1; k < min(m, j) + 1; k++) {
          int i0 = i + c[k], j0 = j - k + d[k];
          if (i0 + j0 > R)
            e[p].push_back(tt);
          else
            e[p].push_back(num[i0][j0]);
        }
      }
  sign = top = 0;
  int ans = solve(num[H][T], 1);
  if (ans != -1)
    cout << "Ivan" << endl << ans << endl;
  else if (dfs(num[H][T]))
    cout << "Draw" << endl;
  else
    cout << "Zmey" << endl << solve(num[H][T], -1) << endl;
}
