#include <bits/stdc++.h>
using namespace std;
int cond = 1;
int x[213], y[213], p[213], q[213];
int d[213][213], s[213][213], ret[213][213];
int a[213 * 213], b[213 * 213];
vector<pair<int, int> > v[213][213];
int main() {
  int h, t, R, hh, tt, n, m;
  scanf("%d %d %d", &h, &t, &R);
  hh = h, tt = t;
  scanf("%d", &n);
  for (typeof(1) i = (1); i <= (n); ++i) scanf("%d %d", &x[i], &y[i]);
  scanf("%d", &m);
  for (typeof(1) i = (1); i <= (m); ++i) scanf("%d %d", &p[i], &q[i]);
  a[0] = h, b[0] = t;
  for (int i = 0; i < (R + 1); i++)
    for (int j = 0; j < (R + 1); j++) d[i][j] = 1 << 29;
  d[h][t] = 0;
  for (int A = 0, B = 1; A < B; A++) {
    h = a[A];
    t = b[A];
    if (h + t == 0) {
      puts("Ivan");
      printf("%d\n", d[0][0]);
      return 0;
    }
    if (h + t > R) continue;
    for (typeof(1) i = (1); i <= (min(n, h)); ++i) {
      int H = h - i + x[i];
      int T = t + y[i];
      if (H > R) H = R + 1;
      if (T > R) T = R + 1;
      if (d[H][T] > d[h][t] + 1) {
        d[a[B] = H][b[B] = T] = d[h][t] + 1;
        B++;
      }
    }
    for (typeof(1) i = (1); i <= (min(m, t)); ++i) {
      int H = h + p[i];
      int T = t - i + q[i];
      if (H > R) H = R + 1;
      if (T > R) T = R + 1;
      if (d[H][T] > d[h][t] + 1) {
        d[a[B] = H][b[B] = T] = d[h][t] + 1;
        B++;
      }
    }
  }
  int A = 0;
  for (int h = 0; h < (R + 1); h++)
    for (int t = 0; t < (R + 1); t++)
      if (h + t <= R && d[h][t] < (1 << 29)) {
        for (typeof(1) i = (1); i <= (min(n, h)); ++i) {
          int H = h - i + x[i];
          int T = t + y[i];
          if (H > R) H = R + 1;
          if (T > R) T = R + 1;
          if (H + T <= R && d[H][T] < (1 << 29))
            v[H][T].push_back(make_pair(h, t)), s[h][t]++;
        }
        for (typeof(1) i = (1); i <= (min(m, t)); ++i) {
          int H = h + p[i];
          int T = t - i + q[i];
          if (H > R) H = R + 1;
          if (T > R) T = R + 1;
          if (H + T <= R && d[H][T] < (1 << 29))
            v[H][T].push_back(make_pair(h, t)), s[h][t]++;
        }
        if (!s[h][t]) {
          a[A] = h, b[A] = t;
          ret[h][t] = 1;
          A++;
        }
      }
  int B = 0;
  while (A) {
    B++;
    h = a[--A];
    t = b[A];
    for (typeof((v[h][t]).begin()) i = ((v[h][t]).begin());
         i != (v[h][t]).end(); ++i) {
      ret[i->first][i->second] = max(ret[i->first][i->second], ret[h][t] + 1);
      if (!--s[i->first][i->second]) {
        a[A] = i->first;
        b[A] = i->second;
        A++;
      }
    }
  }
  for (int h = 0; h < (R + 1); h++)
    for (int t = 0; t < (R + 1); t++)
      if (h + t <= R && d[h][t] < (1 << 29) && s[h][t]) {
        puts("Draw");
        return 0;
      }
  puts("Zmey");
  printf("%d\n", ret[hh][tt]);
  return 0;
}
