#include <bits/stdc++.h>
using namespace std;
const int MAX = 1e5 + 10;
int n, m, x, y;
pair<int, int> ma[MAX], mi[MAX];
bool check1() {
  int x1, y1, x2, y2;
  x1 = y1 = x2 = y2 = 0;
  for (int i = 0; i < n; ++i)
    x1 = max(x1, ma[i].first), y1 = max(y1, ma[i].second);
  for (int i = 0; i < m; ++i)
    x2 = max(x2, mi[i].first), y2 = max(y2, mi[i].second);
  mi[m] = pair<int, int>(0, y2), mi[m + 1] = pair<int, int>(x2, 0);
  return x1 >= x2 || y1 >= y2;
}
bool check2() {
  sort(mi, mi + m);
  int f[MAX];
  f[m - 1] = mi[m - 1].second;
  for (int i = m - 2; i >= 0; --i) f[i] = max(mi[i].second, f[i + 1]);
  int id;
  bool ima = false;
  for (int i = 0; i < n; ++i) {
    id =
        lower_bound(mi, mi + m,
                    pair<int, int>(x + ma[i].first + 1, y + ma[i].second + 1)) -
        mi;
    if (id == m) return false;
    if (f[id] >= y + ma[i].second + 1) ima = true;
  }
  return ima;
}
bool cmp(pair<int, int> a, pair<int, int> b) {
  return atan2(a.first, a.second) < atan2(b.first, b.second);
}
int CCW(pair<int, int> a, pair<int, int> b, pair<int, int> c) {
  return a.first * (b.second - c.second) + b.first * (c.second - a.second) +
         c.first * (a.second - b.second);
}
bool solve() {
  m += 2;
  sort(ma, ma + n, cmp), sort(mi, mi + m, cmp);
  vector<pair<int, int> > h;
  int k = 0;
  for (int i = 0; i < m; ++i) {
    while (k >= 2 && (CCW(h[k - 2], h[k - 1], mi[i]) >= 0)) h.pop_back(), k--;
    h.push_back(mi[i]), k++;
  }
  int j = 0;
  for (int i = 0; i < n; ++i) {
    while (cmp(h[j], ma[i])) j++;
    if (CCW(h[j - 1], ma[i], h[j]) <= 0) return true;
  }
  return false;
}
int main() {
  scanf("%d%d", &n, &m);
  scanf("%d%d", &x, &y);
  for (int i = 0; i < n; ++i) scanf("%d%d", &ma[i].first, &ma[i].second);
  for (int i = 0; i < m; ++i) scanf("%d%d", &mi[i].first, &mi[i].second);
  if (check1()) {
    cout << "Max\n";
    return 0;
  }
  if (check2()) {
    cout << "Min\n";
    return 0;
  }
  if (solve())
    cout << "Max\n";
  else
    cout << "Min\n";
}
