#include <bits/stdc++.h>
using namespace std;
const int MAXN = -1;
struct dot {
  long long x, y;
  dot(long long x = 0, long long y = 0) : x(x), y(y) {}
  dot operator+(dot a) { return dot(x + a.x, y + a.y); }
  dot operator-(dot a) { return dot(x - a.x, y - a.y); }
  long long norm() { return x * x + y * y; }
};
int n;
long long d;
dot C;
vector<dot> V;
int G[410][410][2][2];
int Grundy(dot P, bool A, bool B) {
  int &ret = G[P.x][P.y][A][B];
  if (ret != -1) return ret;
  vector<int> M(25, 0);
  if (A) {
    dot N = P - C;
    swap(N.x, N.y);
    N = N + C;
    M[Grundy(N, B, 0)] = 1;
  }
  for (int i = (0); i < (int)(n); i++) {
    dot N = P + V[i];
    if ((N - C).norm() > d * d) continue;
    M[Grundy(N, B, A)] = 1;
  }
  int c = 0;
  while (c < M.size() && M[c]) c++;
  return ret = c;
}
int main() {
  dot B;
  while (scanf("%lld %lld %d %lld", &B.x, &B.y, &n, &d) == 4) {
    for (int i = (0); i < (int)(410); i++)
      for (int j = (0); j < (int)(410); j++)
        for (int a = (0); a < (int)(2); a++)
          for (int b = (0); b < (int)(2); b++) G[i][j][a][b] = -1;
    C = dot(205, 205);
    B = B + C;
    V.resize(n);
    for (int i = (0); i < (int)(n); i++) scanf("%lld %lld", &V[i].x, &V[i].y);
    cout << (Grundy(B, 1, 1) ? "Anton" : "Dasha") << endl;
  }
  return 0;
}
