#include <bits/stdc++.h>
using namespace std;
const int N = 200 + 10;
int hh[N], ht[N], th[N], tt[N], mark[N][N], dis[N][N], dp[N][N], c, n, m, r;
queue<pair<int, int> > q;
void dfs(int h, int t) {
  mark[h][t] = 1;
  for (int i = 1; i <= min(h, n); i++) {
    int x = h - i + hh[i], y = t + ht[i];
    if (x + y <= r) {
      if (mark[x][y] == 0)
        dfs(x, y), dp[h][t] = max(dp[h][t], dp[x][y] + 1);
      else if (mark[x][y] == 1)
        c = 1;
      else
        dp[h][t] = max(dp[h][t], dp[x][y] + 1);
    }
  }
  for (int i = 1; i <= min(t, m); i++) {
    int x = h + th[i], y = t - i + tt[i];
    if (x + y <= r) {
      if (mark[x][y] == 0)
        dfs(x, y), dp[h][t] = max(dp[h][t], dp[x][y] + 1);
      else if (mark[x][y] == 1)
        c = 1;
      else
        dp[h][t] = max(dp[h][t], dp[x][y] + 1);
    }
  }
  mark[h][t] = 2;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int h, t;
  cin >> h >> t >> r >> n;
  for (int i = 1; i <= n; i++) cin >> hh[i] >> ht[i];
  cin >> m;
  for (int i = 1; i <= m; i++) cin >> th[i] >> tt[i];
  memset(dis, 63, sizeof dis);
  dis[h][t] = 0;
  q.push(make_pair(h, t));
  while (!q.empty()) {
    int x = q.front().first, y = q.front().second;
    q.pop();
    for (int i = 1; i <= min(x, n); i++) {
      int nx = x - i + hh[i], ny = y + ht[i];
      if (nx + ny <= r && dis[x][y] + 1 < dis[nx][ny]) {
        dis[nx][ny] = dis[x][y] + 1;
        q.push(make_pair(nx, ny));
      }
    }
    for (int i = 1; i <= min(y, m); i++) {
      int nx = x + th[i], ny = y - i + tt[i];
      if (nx + ny <= r && dis[x][y] + 1 < dis[nx][ny]) {
        dis[nx][ny] = dis[x][y] + 1;
        q.push(make_pair(nx, ny));
      }
    }
  }
  if (dis[0][0] < N * N) return cout << "Ivan\n" << dis[0][0], 0;
  dfs(h, t);
  if (c) return cout << "Draw", 0;
  cout << "Zmey\n" << dp[h][t] + 1;
  return 0;
}
