#include <bits/stdc++.h>
using namespace std;
namespace FGF {
int n, m, K;
const int N = 2e5 + 5;
struct lin {
  int l, r, x, op;
  lin() {}
  lin(int _l, int _r, int _x, int _o) : l(_l), r(_r), x(_x), op(_o) {}
} a[N];
struct Node {
  int x, y, x2, y2;
} b[N];
bool cmp(const lin &a, const lin &b) { return a.x < b.x; }
int ans[50], cnt, tot, c[N];
long long sum[N << 2], num[N << 2];
void inser(int x, int y, int x2, int y2) {
  if (x > x2 || y > y2) return;
  c[++tot] = x - 1, c[++tot] = x2;
  a[++cnt] = lin(x, x2, y, 1), a[++cnt] = lin(x, x2, y2 + 1, -1);
}
void pushup(int ro, int l, int r) {
  if (num[ro] > 0)
    sum[ro] = c[r] - c[l - 1];
  else
    sum[ro] = sum[ro << 1] + sum[ro << 1 | 1];
}
void updat(int ro, int l, int r, int L, int R, int x) {
  if (L <= l && r <= R) {
    num[ro] += x;
    return pushup(ro, l, r);
  }
  if (L <= ((l + r) >> 1)) updat(ro << 1, l, ((l + r) >> 1), L, R, x);
  if (R > ((l + r) >> 1)) updat(ro << 1 | 1, ((l + r) >> 1) + 1, r, L, R, x);
  pushup(ro, l, r);
}
long long solve(int x) {
  tot = cnt = 0;
  for (int i = 1; i <= m; i++)
    inser((b[i].x - 1) / x + 1, (b[i].y - 1) / x + 1, b[i].x2 / x, b[i].y2 / x);
  sort(c + 1, c + tot + 1);
  tot = unique(c + 1, c + tot + 1) - c - 1;
  for (int i = 1; i <= cnt; i++)
    a[i].l = lower_bound(c + 1, c + tot + 1, a[i].l) - c,
    a[i].r = lower_bound(c + 1, c + tot + 1, a[i].r) - c;
  sort(a + 1, a + cnt + 1, cmp);
  memset(sum, 0, sizeof(sum)), memset(num, 0, sizeof(num));
  long long ans = 0;
  for (int i = 1; i <= cnt; i++)
    ans += sum[1] * (a[i].x - a[i - 1].x),
        updat(1, 1, tot, a[i].l, a[i].r, a[i].op);
  return ans;
}
void work() {
  scanf("%d%d%d", &n, &m, &K);
  for (int i = 1; i <= m; i++)
    scanf("%d%d%d%d", &b[i].x, &b[i].y, &b[i].x2, &b[i].y2);
  int k = 0;
  while (1 << (k + 1) <= K) k++;
  for (int i = 0; i <= k; i++) ans[i] = solve(1 << i);
  for (int i = 0; i <= k; i++)
    if ((ans[i] - ans[i + 1]) & 1) {
      puts("Hamed");
      return;
    }
  puts("Malek");
}
}  // namespace FGF
int main() {
  FGF::work();
  return 0;
}
