#include <bits/stdc++.h>
using namespace std;
int cutH[210][2], N, cutT[210][2], M;
int D[210][210];
int bfs(int sh, int st, int R) {
  queue<pair<int, int> > Q;
  Q.push(pair<int, int>(sh, st));
  memset(D, -1, sizeof(D));
  D[sh][st] = 0;
  while (!Q.empty()) {
    pair<int, int> c = Q.front();
    Q.pop();
    int h = c.first, t = c.second;
    if (h == 0 && t == 0) return D[h][t];
    for (int i = 0; i < N; ++i) {
      if (i + 1 > h) break;
      int nh = h - (i + 1) + cutH[i][0];
      int nt = t + cutH[i][1];
      if (nt + nh > R) continue;
      if (D[nh][nt] != -1) continue;
      D[nh][nt] = D[h][t] + 1;
      Q.push(pair<int, int>(nh, nt));
    }
    for (int i = 0; i < M; ++i) {
      if (i + 1 > t) break;
      ;
      int nh = h + cutT[i][0];
      int nt = t - (i + 1) + cutT[i][1];
      if (nt + nh > R) continue;
      if (D[nh][nt] != -1) continue;
      D[nh][nt] = D[h][t] + 1;
      Q.push(pair<int, int>(nh, nt));
    }
  }
  return -1;
}
vector<vector<int> > adj;
vector<vector<int> > adj2;
vector<vector<int> > radj;
int PAR[1000000];
bool vis[1000000];
void scc_dfs(int u, stack<int> &S, bool rev = false) {
  vis[u] = true;
  vector<int> V = rev ? radj[u] : adj[u];
  for (int i = 0; i < (int)V.size(); ++i)
    if (!vis[V[i]]) scc_dfs(V[i], S, rev);
  if (!rev) S.push(u);
}
vector<vector<int> > StronglyConnected() {
  stack<int> STK;
  memset(vis, 0, sizeof(vis));
  for (int i = 0; i < (int)adj.size(); ++i)
    if (!vis[i]) scc_dfs(i, STK);
  memset(vis, 0, sizeof(vis));
  vector<vector<int> > SCC;
  while (!STK.empty()) {
    int u = STK.top();
    STK.pop();
    if (vis[u]) {
      SCC.back().push_back(u);
      PAR[u] = SCC.size() - 1;
    } else {
      scc_dfs(u, STK, true);
      PAR[u] = SCC.size();
      SCC.push_back(vector<int>(1, u));
    }
  }
  adj2 = vector<vector<int> >(SCC.size());
  for (int i = 0; i < SCC.size(); ++i) {
    for (int j = 0; j < SCC[i].size(); ++j) {
      int u = SCC[i][j];
      for (int k = 0; k < adj[u].size(); ++k) {
        int v = adj[u][k];
        adj2[PAR[u]].push_back(PAR[v]);
      }
    }
  }
  return SCC;
}
vector<vector<int> > vSCC;
bool vis2[100000];
bool dfs_can(int u) {
  vis2[u] = true;
  if (vSCC[u].size() >= 2)
    return true;
  else
    for (int i = 0; i < adj2[u].size(); ++i) {
      int v = adj2[u][i];
      if (v == u) return true;
      if (vis2[v]) continue;
      if (dfs_can(v)) return true;
    }
  return false;
}
int DIS[100000];
int maxdept(int u) {
  DIS[u] = 1;
  for (int i = 0; i < adj2[u].size(); ++i) {
    int v = adj2[u][i];
    if (DIS[v] == -1) maxdept(v);
    DIS[u] = max(DIS[u], DIS[v] + 1);
  }
  return DIS[u];
}
int ID[210][210];
int main() {
  int sh, st, R;
  cin >> sh >> st >> R;
  cin >> N;
  for (int i = 0; i < N; ++i) cin >> cutH[i][0] >> cutH[i][1];
  cin >> M;
  for (int i = 0; i < M; ++i) cin >> cutT[i][0] >> cutT[i][1];
  int BF = bfs(sh, st, R);
  if (BF != -1)
    cout << "Ivan" << endl << BF << endl;
  else {
    int idx = 0;
    for (int i = 0; i <= R; ++i) {
      for (int j = 0; j + i <= R; ++j) {
        ID[i][j] = idx++;
      }
    }
    adj = vector<vector<int> >(idx);
    radj = vector<vector<int> >(idx);
    for (int i = 0; i <= R; ++i) {
      for (int j = 0; j + i <= R; ++j) {
        for (int k = 0; k < N; ++k) {
          if (k + 1 > i) break;
          int nh = i - (k + 1) + cutH[k][0];
          int nt = j + cutH[k][1];
          if (nt + nh > R) continue;
          adj[ID[i][j]].push_back(ID[nh][nt]);
          radj[ID[nh][nt]].push_back(ID[i][j]);
        }
        for (int k = 0; k < M; ++k) {
          if (k + 1 > j) break;
          int nh = i + cutT[k][0];
          int nt = j - (k + 1) + cutT[k][1];
          if (nt + nh > R) continue;
          adj[ID[i][j]].push_back(ID[nh][nt]);
          radj[ID[nh][nt]].push_back(ID[i][j]);
        }
      }
    }
    vSCC = StronglyConnected();
    if (dfs_can(PAR[ID[sh][st]])) {
      cout << "Draw" << endl;
    } else {
      int ma = 0;
      memset(DIS, -1, sizeof(DIS));
      ma = maxdept(PAR[ID[sh][st]]);
      cout << "Zmey" << endl << ma << endl;
    }
  }
}
