#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:667772160")
using namespace std;
struct __isoff {
  __isoff() {
    if (0) freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
    srand(time(0));
  }
  ~__isoff() {}
} __osafwf;
const unsigned long long p1 = 31;
const unsigned long long p2 = 29;
const double eps = 1e-8;
const double pi = acos(-1.0);
const long long inf = 1e17 + 7;
const int infi = 1e9 + 7;
const long long dd = 8e5 + 7;
const long long mod = 1e9 + 7;
struct pt {
  long long x, y;
  bool is = 0;
  pt(long long x, long long y) : x(x), y(y) {}
  pt() {}
  bool operator<(pt b) { return make_pair(x, y) < make_pair(b.x, b.y); }
} zir(0, 0);
long long dis(pt a, pt b) {
  a.x -= b.x;
  a.y -= b.y;
  return a.x * a.x + a.y * a.y;
}
long long vec(pt a, pt b, pt c) {
  a.x -= b.x;
  a.y -= b.y;
  c.x -= b.x;
  c.y -= b.y;
  return a.x * c.y - a.y * c.x;
}
vector<pt> A, B;
long long S(pt a, pt b, pt c) { return abs(vec(a, b, c)); }
bool Tr(pt a, pt b, pt c, pt t) {
  long long f = S(a, b, c);
  long long a1 = S(a, b, t), a2 = S(c, a, t), a3 = S(b, c, t);
  return abs(f) == abs(a1 + a2 + a3) && a3 != 0;
}
int main() {
  int n, m, x, y, mx = -1, my = -1;
  cin >> n >> m >> x >> y;
  for (long long i = 0; i < (long long)n; i++) {
    cin >> x >> y;
    B.push_back(pt(x, y));
  }
  for (long long i = 0; i < (long long)m; i++) {
    cin >> x >> y;
    A.push_back(pt(x, y));
    mx = max(mx, x);
    my = max(my, y);
  }
  A.push_back(pt(mx, 0));
  A.push_back(pt(0, my));
  sort(A.begin(), A.end(), [](pt a, pt b) {
    long long s = vec(a, zir, b);
    if (s == 0) return dis(a, zir) < dis(b, zir);
    return s < 0;
  });
  vector<pt> W(1, zir);
  for (long long i = 0; i < (long long)A.size(); i++) {
    while (W.size() > 1 && vec(W[W.size() - 2], W[W.size() - 1], A[i]) <= 0)
      W.pop_back();
    W.push_back(A[i]);
  }
  for (long long i = 0; i < (long long)B.size(); i++) {
    pt t = B[i];
    t.is = 1;
    W.push_back(t);
  }
  sort(W.begin() + 1, W.end(), [](pt a, pt b) { return vec(a, zir, b) < 0; });
  bool win = 0;
  vector<pt> Z(W.size());
  pt a = zir;
  for (int i = W.size() - 1; i; i--) {
    if (!W[i].is) {
      a = W[i];
    }
    Z[i] = a;
  }
  a = zir;
  for (long long i = 0; i < (long long)W.size(); i++) {
    if (W[i].is) {
      bool ts = Tr(zir, a, Z[i], W[i]);
      win |= !ts;
    } else {
      a = W[i];
    }
  }
  if (!win)
    cout << "Min";
  else
    cout << "Max";
}
