#include <bits/stdc++.h>
using namespace std;
long long pwr(long long base, long long p, long long mod = (1000000007LL)) {
  long long ans = 1;
  while (p) {
    if (p & 1) ans = (ans * base) % mod;
    base = (base * base) % mod;
    p /= 2;
  }
  return ans;
}
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
const double eps = 1e-7;
struct PT {
  double x, y;
  PT() {}
  PT(double x, double y) : x(x), y(y) {}
  bool operator<(const PT &rhs) const {
    return make_pair(y, x) < make_pair(rhs.y, rhs.x);
  }
  bool operator==(const PT &rhs) const {
    return make_pair(y, x) == make_pair(rhs.y, rhs.x);
  }
};
double cross(PT p, PT q) { return p.x * q.y - p.y * q.x; }
double area2(PT a, PT b, PT c) {
  return cross(a, b) + cross(b, c) + cross(c, a);
}
void ConvexHull(vector<PT> &pts) {
  sort(pts.begin(), pts.end());
  pts.erase(unique(pts.begin(), pts.end()), pts.end());
  vector<PT> up, dn;
  for (int i = 0; i < pts.size(); i++) {
    while (up.size() > 1 && area2(up[up.size() - 2], up.back(), pts[i]) > eps)
      up.pop_back();
    while (dn.size() > 1 && area2(dn[dn.size() - 2], dn.back(), pts[i]) < -eps)
      dn.pop_back();
    up.push_back(pts[i]);
    dn.push_back(pts[i]);
  }
  pts = dn;
  for (int i = (int)up.size() - 2; i >= 1; i--) pts.push_back(up[i]);
}
vector<PT> arr;
set<PT> banned;
int main() {
  int n1, n2;
  scanf("%d%d", &n1, &n2);
  int X, Y;
  scanf("%d%d", &X, &Y);
  while (n1--) {
    int x, y;
    scanf("%d%d", &x, &y);
    banned.insert(PT(x, y));
    arr.push_back(PT(x, y));
  }
  int max_x = -1, max_y = -1;
  while (n2--) {
    int x, y;
    scanf("%d%d", &x, &y);
    arr.push_back(PT(x, y));
    max_x = max(max_x, x);
    max_y = max(max_y, y);
  }
  arr.push_back(PT(0, max_y));
  arr.push_back(PT(max_x, 0));
  arr.push_back(PT(0, 0));
  ConvexHull(arr);
  for (auto it : arr)
    if (banned.find(it) != banned.end()) {
      printf("Max");
      return 0;
    }
  printf("Min");
  return 0;
}
