#include <bits/stdc++.h>
using namespace std;
struct point {
  long long x, y;
  point(int x = 0, int y = 0) : x(x), y(y) {}
  void read() { scanf("%I64d%I64d", &x, &y); }
  friend bool operator<(point x, point y) {
    if (x.x != y.x) return x.x < y.x;
    return x.y > y.y;
  }
  friend point operator-(point x, point y) {
    return point(x.x - y.x, x.y - y.y);
  }
  friend long long operator*(point x, point y) { return x.x * y.y - x.y * y.x; }
  friend bool operator==(point x, point y) { return x.x == y.x && x.y == y.y; }
};
point s[100100 * 2], c[100100 * 2];
set<point> Max;
int cnt;
int n, m, a, b;
int main() {
  scanf("%d%d%d%d", &n, &m, &a, &b);
  for (int i = 1; i <= n; i++) {
    s[i].read();
    Max.insert(s[i]);
  }
  for (int i = 1; i <= m; i++) {
    s[i + n].read();
  }
  sort(s + 1, s + 1 + n + m);
  for (int i = 1; i <= n + m; i++) {
    if (s[i] == s[i - 1]) continue;
    while (cnt && c[cnt].y < s[i].y) cnt--;
    while (cnt >= 2 && (c[cnt] - c[cnt - 1]) * (s[i] - c[cnt]) > 0) cnt--;
    c[++cnt] = s[i];
  }
  for (int i = 1; i <= cnt; i++) {
    if (Max.find(c[i]) != Max.end()) {
      puts("Max");
      return 0;
    }
  }
  puts("Min");
  return 0;
}
