#include <bits/stdc++.h>
using namespace std;
pair<int, int> hs[201];
pair<int, int> ts[201];
pair<int, int> mem[201][201];
int dist[201][201];
int st[201][201];
int R;
int n;
int m;
pair<int, int> f(int h, int t) {
  if (h + t > R) {
    return pair<int, int>(-1, 0);
  } else if (h == 0 && t == 0) {
    return pair<int, int>(1, 0);
  }
  if (st[h][t] == 1) {
    return pair<int, int>(0, 0);
  }
  if (st[h][t] == 2) {
    return mem[h][t];
  }
  st[h][t] = 1;
  pair<int, int> ret = pair<int, int>(-2, 0);
  for (int i = 1; i <= min(n, h); i++) {
    ret = max(ret, f(h - i + hs[i].first, t + hs[i].second));
  }
  for (int i = 1; i <= min(m, t); i++) {
    ret = max(ret, f(h + ts[i].first, t - i + ts[i].second));
  }
  ret.second -= ret.first;
  st[h][t] = 2;
  return mem[h][t] = ret;
}
const int inf = 1 << 20;
int main() {
  int h, t;
  scanf("%d%d%d", &h, &t, &R);
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    hs[i] = pair<int, int>(a, b);
  }
  scanf("%d", &m);
  for (int i = 1; i <= m; i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    ts[i] = pair<int, int>(a, b);
  }
  for (int i = 0; i < 201; i++) {
    for (int j = 0; j < 201; j++) {
      dist[i][j] = inf;
    }
  }
  dist[h][t] = 0;
  priority_queue<array<int, 3>, vector<array<int, 3> >,
                 greater<array<int, 3> > >
      pq;
  pq.push(array<int, 3>{{0, h, t}});
  while (pq.size()) {
    int d = pq.top()[0];
    int h = pq.top()[1];
    int t = pq.top()[2];
    pq.pop();
    if (dist[h][t] < d) continue;
    for (int i = 1; i <= min(n, h); i++) {
      int u = h - i + hs[i].first;
      int v = t + hs[i].second;
      if (u + v <= R) {
        if (d + 1 < dist[u][v]) {
          dist[u][v] = d + 1;
          pq.push(array<int, 3>{{d + 1, u, v}});
        }
      }
    }
    for (int i = 1; i <= min(m, t); i++) {
      int u = h + ts[i].first;
      int v = t - i + ts[i].second;
      if (u + v <= R) {
        if (d + 1 < dist[u][v]) {
          dist[u][v] = d + 1;
          pq.push(array<int, 3>{{d + 1, u, v}});
        }
      }
    }
  }
  if (dist[0][0] < inf) {
    puts("Ivan");
    printf("%d\n", dist[0][0]);
    return 0;
  }
  pair<int, int> p = f(h, t);
  assert(p.first != 1);
  if (p.first == 0) {
    puts("Draw");
  } else {
    puts("Zmey");
    printf("%d\n", p.second);
  }
  return 0;
}
