#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e3 + 10, inf = 2e9 + 10;
int n, m, H, T, R;
int dis[maxn][maxn], dp[maxn][maxn], dmark[maxn][maxn];
bool mark[maxn][maxn], c = false;
pair<int, int> trr[maxn], hrr[maxn];
void input() {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> H >> T >> R;
  cin >> n;
  for (int i = 0; i < n; i++) cin >> hrr[i].first >> hrr[i].second;
  cin >> m;
  for (int i = 0; i < m; i++) cin >> trr[i].first >> trr[i].second;
}
void init() {
  for (int i = 0; i < maxn; i++)
    for (int j = 0; j < maxn; j++) dis[i][j] = inf;
}
void bfs() {
  queue<pair<int, int> > q;
  q.push({H, T});
  mark[H][T] = true;
  dis[H][T] = 0;
  while (!q.empty()) {
    auto tmp = q.front();
    int h = tmp.first, t = tmp.second;
    q.pop();
    for (int i = 0; i < min(h, n); i++) {
      int hh = h - i + hrr[i].first - 1, tt = t + hrr[i].second;
      if (hh + tt > R) continue;
      if (!mark[hh][tt])
        q.push({hh, tt}), mark[hh][tt] = true, dis[hh][tt] = dis[h][t] + 1;
    }
    for (int i = 0; i < min(t, m); i++) {
      int hh = h + trr[i].first, tt = t - i + trr[i].second - 1;
      if (hh + tt > R) continue;
      if (!mark[hh][tt])
        q.push({hh, tt}), mark[hh][tt] = true, dis[hh][tt] = dis[h][t] + 1;
    }
  }
}
void dfs(int h, int t) {
  if (c) return;
  dmark[h][t] = 1;
  for (int i = 0; i < min(h, n); i++) {
    int hh = h - i + hrr[i].first - 1, tt = t + hrr[i].second;
    if (hh + tt > R) continue;
    if (!dmark[hh][tt])
      dfs(hh, tt);
    else if (dmark[hh][tt] == 1)
      c = true;
    dp[h][t] = max(dp[h][t], dp[hh][tt] + 1);
  }
  for (int i = 0; i < min(t, m); i++) {
    int hh = h + trr[i].first, tt = t - i + trr[i].second - 1;
    if (hh + tt > R) continue;
    if (!dmark[hh][tt])
      dfs(hh, tt);
    else if (dmark[hh][tt] == 1)
      c = true;
    dp[h][t] = max(dp[h][t], dp[hh][tt] + 1);
  }
  dmark[h][t]++;
}
int main() {
  input();
  init();
  bfs();
  if (dis[0][0] != inf) return cout << "Ivan\n" << dis[0][0] << "\n", 0;
  init();
  dfs(H, T);
  if (c) return cout << "Draw\n", 0;
  cout << "Zmey\n" << dp[H][T] + 1 << "\n";
}
