Mahmoud and Ehab play a game called the even-odd game. Ehab chooses his favorite integer n and then they take turns, starting from Mahmoud. In each player's turn, he has to choose an integer a and subtract it from n such that:  1 ≤ a ≤ n.  If it's Mahmoud's turn, a has to be even, but if it's Ehab's turn, a has to be odd. 

If the current player can't choose any number satisfying the conditions, he loses. Can you determine the winner if they both play optimally?


-----Input-----

The only line contains an integer n (1 ≤ n ≤ 10^9), the number at the beginning of the game.


-----Output-----

Output "Mahmoud" (without quotes) if Mahmoud wins and "Ehab" (without quotes) otherwise.


-----Examples-----
Input
1

Output
Ehab
Input
2

Output
Mahmoud


-----Note-----

In the first sample, Mahmoud can't choose any integer a initially because there is no positive even integer less than or equal to 1 so Ehab wins.

In the second sample, Mahmoud has to choose a = 2 and subtract it from n. It's Ehab's turn and n = 0. There is no positive odd integer less than or equal to 0 so Mahmoud wins.

Difficulty: EASY
Tags: Game theory

Mathematics

Starter code:

Solutions:
inputs = int(input())
if inputs % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


def main():
	n = int(input())
	ans = 'Mahmoud' if n % 2 == 0 else 'Ehab'
	print(ans)
main()


print(('Mahmoud', 'Ehab')[int(input()) % 2])


print(['Mahmoud', 'Ehab'][int(input()) & 1])


def main():
	n = int(input())
	print('Ehab' if n % 2 == 1 else 'Mahmoud')
main()


start = int(input())
if start % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


n = int(input()[-1])
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


val = int(input())
if val % 2 is 0:
	print('Mahmoud')
else:
	print('Ehab')


n = int(input())
if n == 1:
	print('Ehab')
elif n % 2 == 1:
	print('Ehab')
elif n % 2 == 0:
	print('Mahmoud')


b = int(input())
if b % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


def evenOrOdd(n):
	if n == 1:
		return 'Ehab'
	elif n % 2 == 0:
		return 'Mahmoud'
	else:
		return 'Ehab'
n = int(input().strip())
print(evenOrOdd(n))


a = int(input())
print(('Ehab', 'Mahmoud')[a % 2 == 0])


n = int(input())
if n & 1 == 1:
	print('Ehab')
else:
	print('Mahmoud')


t = int(input())
if t % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


import sys
n = int(input())
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


def solve():
	n = int(input())
	if n % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')
solve()


def li():
	return list(map(int, input().split()))
n = int(input())
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


a = int(input())
if a % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


n = int(input())
game = True

def chose(player):
	if player == 'm':
		if n % 2 == 0:
			m = n
		else:
			m = n - 1
		if 0 < m < n + 1:
			return m
		else:
			print('Ehab')
	else:
		if not n % 2 == 0:
			e = n
		else:
			e = n - 1
		if 0 < e < n + 1:
			return e
		else:
			print('Mahmoud')
while game == True:
	try:
		n -= chose('m')
		n -= chose('e')
	except:
		game = False


class Main:
	n = int(input())
	i = 1
	a = 0
	while n >= 1:
		if i % 2 == 1:
			a = n if n % 2 == 0 else n - 1
		else:
			a = n if n % 2 == 1 else n - 1
		n = n - a
		i += 1
	if n <= 0 and i % 2 == 0:
		print('Mahmoud')
	if n <= 0 and i % 2 == 1:
		print('Ehab')
Main()


n = int(input())
modn = n % 2
if modn == 1:
	print('Ehab')
else:
	print('Mahmoud')


x = int(input())
if x % 2 == 1:
	print('Ehab')
else:
	print('Mahmoud')


x = int(input())
if x % 2 == 0 and x != 0:
	print('Mahmoud')
elif x == 0:
	print('Ehab')
else:
	print('Ehab')


integer = int(input())
if integer % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


k = int(input())
if k % 2:
	print('Ehab')
else:
	print('Mahmoud')


a = eval(input())
if a % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


test = int(input())
e = 'Ehab'
m = 'Mahmoud'
if test % 2 == 0:
	print(m)
else:
	print(e)


i = int(input())
if i % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


from sys import stdin, stdout
n = int(stdin.readline())
if n & 1:
	stdout.write('Ehab')
else:
	stdout.write('Mahmoud')


import sys
inf = float('inf')
abc = 'abcdefghijklmnopqrstuvwxyz'
abd = {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5, 'g': 6, 'h': 7, 'i': 8, 'j': 9, 'k': 10, 'l': 11, 'm': 12, 'n': 13, 'o': 14, 'p': 15, 'q': 16, 'r': 17, 's': 18, 't': 19, 'u': 20, 'v': 21, 'w': 22, 'x': 23, 'y': 24, 'z': 25}
(mod, MOD) = (1000000007, 998244353)
vow = ['a', 'e', 'i', 'o', 'u']
(dx, dy) = ([-1, 1, 0, 0], [0, 0, 1, -1])

def get_array():
	return list(map(int, sys.stdin.readline().strip().split()))

def get_ints():
	return map(int, sys.stdin.readline().strip().split())

def input():
	return sys.stdin.readline().strip()
n = int(input())
if n & 1:
	print('Ehab')
else:
	print('Mahmoud')


T = int(input())
if T % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


def winner(n):
	if n % 2 == 0:
		return 'Mahmoud'
	else:
		return 'Ehab'
n = int(input())
print(winner(n))


players = ['Mahmoud', 'Ehab']
N = int(input())
print(players[N % 2])


a = 'Mahmoud'
b = 'Ehab'
i = int(input())
if i == 1:
	print(b)
elif i % 2 == 0:
	print(a)
else:
	print(b)


def even(n):
	c = 1
	while n > 0:
		if c % 2 != 0:
			if n % 2 == 0:
				n = n - n
			else:
				n = n - (n - 1)
		elif c % 2 == 0:
			if n % 2 == 0:
				n = n - (n - 1)
			else:
				n = n - n
		c = c + 1
	if c % 2 != 0:
		return 'Ehab'
	else:
		return 'Mahmoud'
n = int(input())
print(even(n))


n = int(input())
if n % 2:
	print('Ehab')
else:
	print('Mahmoud')


n = int(input())
turn = 0
name = 'Ehab'
while n != 0:
	turn += 1
	if turn % 2 == 0:
		a = n if n % 2 == 1 else n - 1
		name = 'Ehab'
	else:
		a = n if n % 2 == 0 else n - 1
		name = 'Mahmoud'
	n -= a
print(name)


import math
import fractions

def gcd(a, b):
	if a == b:
		return a
	if b == 0:
		return a
	else:
		return gcd(b, a % b)

def is_prime(a):
	if a <= 1:
		return False
	elif a <= 3:
		return True
	elif a % 2 == 0 or a % 3 == 0:
		return False
	i = 5
	while i * i <= a:
		if a % i == 0 or a % (i + 2) == 0:
			return False
		i = i + 6
	return True
t = int(input())
if t % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


n = int(input())
if n % 2 == 0:
	valor = 'par'
else:
	valor = 'impar'
if valor == 'par':
	winner = 'Mahmoud'
else:
	winner = 'Ehab'
print(winner)


o = [1, 3, 5, 7, 9]
print(f"{('Ehab' if int(input()[-1]) in o else 'Mahmoud')}")


a = int(input())
if a % 2 == 1:
	print('Ehab')
elif a % 2 == 0:
	print('Mahmoud')


n = int(input())
for i in range(1, n + 1):
	if n % 2 == 0:
		print('Mahmoud')
		break
	else:
		print('Ehab')
		break


from sys import stdin
from collections import deque
mod = 10 ** 9 + 7
import sys
sys.setrecursionlimit(10 ** 5)
from queue import PriorityQueue
from bisect import bisect_right
from bisect import bisect_left
from collections import defaultdict
from math import sqrt, factorial, gcd, log2, inf, ceil
import heapq
input = lambda : sys.stdin.readline().rstrip()
from sys import stdin, stdout
from heapq import heapify, heappush, heappop
n = int(input())
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


num = int(input())
if num % 2 == 1:
	print('Ehab')
else:
	print('Mahmoud')


n = int(input())
if n == 0 or n == 1:
	print('Ehab')
elif n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


e = eval(input())
if e % 2 == 0:
	y = 'Mahmoud'
else:
	y = 'Ehab'
print(y)


N = int(input())
print('Ehab' if N % 2 != 0 else 'Mahmoud')


amount = int(input())
if amount % 2 == 1:
	print('Ehab')
else:
	print('Mahmoud')


s = int(input())
print('Ehab' if s % 2 == 1 else 'Mahmoud')


import math
import sys
from sys import *
from bisect import insort
import heapq
import collections
from collections import deque, defaultdict
from itertools import permutations, combinations, combinations_with_replacement
import random
import os
mod = 10 ** 9 + 7
MAX = sys.maxsize
MIN = -sys.maxsize - 1

def isPrime(n):
	if n > 1:
		for i in range(2, n):
			if n % i == 0:
				return False
		else:
			return True
	else:
		return False

def isPanagram(s):
	alphabet = 'abcdefghijklmnopqrstuvwxyz'
	for char in alphabet:
		if char not in s.lower():
			return False
	return True

def isEqual(list1):
	if len(list1) < 0:
		res = True
	res = all((ele == list1[0] for ele in list1))
	if res:
		return True
	else:
		return False

def remove_duplicate(list1):
	final_list = []
	for i in list1:
		if i not in final_list:
			final_list.append(i)
	return final_list

def solve():
	n = int(input())
	if n % 2 == 0:
		return 'Mahmoud'
	return 'Ehab'
result = solve()
stdout.write(str(result) + '\n')


n = int(input().strip())
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


def test_1():
	import math
	r = list(map(int, input().split(' ')))[0]
	a = r
	if r % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')
test_1()


n = int(input())
turn = 0
lose = False
while lose == False:
	turn += 1
	win = False
	if turn % 2 == 0:
		if len(range(1, n + 1, 2)) != 0:
			n -= range(1, n + 1, 2)[-1]
			win = True
	elif len(range(2, n + 1, 2)) != 0:
		n -= range(2, n + 1, 2)[-1]
		win = True
	if not win:
		lose = True
if turn % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


n = int(input())
print('MEahhambo u d'[n % 2::2])


n = int(input())
winner = 'Ehab'
while n:
	if n > 1:
		n -= n - 1 if n & 1 else n
		winner = 'Mahmoud'
	if n > 0:
		n -= n if n & 1 else n
		winner = 'Ehab'
print(winner)


import random
n = int(input())
counter = 0
work = True
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


a = int(input())
if a & 1 == 0:
	print('Mahmoud')
else:
	print('Ehab')


import sys, math
input = sys.stdin.readline
L = lambda : list(map(int, input().split()))
M = lambda : map(int, input().split())
n = int(input())
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


import math
import os
import random
import re
import sys
m = int(input())
if m % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


line = input()
n = int(line)
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


import sys
import math
a = int(input())
print('Mahmoud' if a % 2 == 0 else 'Ehab')


n = int(input())
if n == 0:
	print('Ehab')
elif n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


n = int(input())
print(('Ehab', 'Mahmoud')[n % 2 == 0])


n = int(input())

def evenodd(n):
	if n % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')
evenodd(n)


n = int(input())
can = True
even = True
winner = 'Ehab'
while n:
	if n > 1:
		if n & 1:
			n -= n - 1
		else:
			n = 0
		winner = 'Mahmoud'
	if n > 0:
		if n & 1:
			n = 0
		else:
			n -= n - 1
		winner = 'Ehab'
print(winner)


n = int(input(''))
a = 0
game = True
if n % 2:
	print('Ehab')
else:
	print('Mahmoud')


a = int(input())
if a % 2 == 1:
	print('Ehab')
else:
	print('Mahmoud')


num1 = int(input())
if num1 % 2 == 1:
	print('Ehab')
else:
	print('Mahmoud')


import sys
from functools import lru_cache, cmp_to_key
from heapq import merge, heapify, heappop, heappush, nlargest, nsmallest, _heapify_max, _heapreplace_max
from math import ceil, floor, gcd, fabs, factorial, fmod, sqrt, inf, log
from collections import defaultdict as dd, deque, Counter as c
from itertools import combinations as comb, permutations as perm
from bisect import bisect_left as bl, bisect_right as br, bisect
from fractions import Fraction
mod = pow(10, 9) + 7
mod2 = 998244353

def data():
	return sys.stdin.readline().strip()

def out(*var, end='\n'):
	sys.stdout.write(' '.join(map(str, var)) + end)

def l():
	return list(sp())

def sl():
	return list(ssp())

def sp():
	return map(int, data().split())

def ssp():
	return map(str, data().split())

def l1d(n, val=0):
	return [val for i in range(n)]

def l2d(n, m, val=0):
	return [l1d(n, val) for j in range(m)]
out(('Mahmoud', 'Ehab')[int(data()) & 1])


n = int(input())
gameIsGoing = 1
while gameIsGoing == 1:
	if n % 2 == 0:
		print('Mahmoud')
		break
	elif n % 2 != 0:
		print('Ehab')
		break


def answer():
	n = int(input())
	if n % 2:
		print('Ehab')
	elif n % 2 == 0:
		print('Mahmoud')
answer()


how_many = int(input())
if how_many % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


x = int(input())
if x % 2 == 0:
	print('Mahmoud')
elif x % 2 != 0:
	print('Ehab')


import sys
import math
input = sys.stdin.readline
if int(input()) % 2:
	print('Ehab')
else:
	print('Mahmoud')


piedritas = int(input())
if piedritas % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


import sys
x = int(input())
if x % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


x = int(input())
if x % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


x = int(input())
if x == 2 or (x > 2 and x % 2 == 0):
	print('Mahmoud')
else:
	print('Ehab')


n_input = int(input())
for index in range(n_input):
	if (index + 2) % 2 == 0:
		if (n_input - 2) % 2 == 0:
			print('Mahmoud')
			break
		else:
			print('Ehab')
			break
		n_input = n_input - 2
	if (index + 2) % 2 != 0:
		if (n_input - 1) % 2 == 0:
			print('Ehab')
			break
		else:
			print('Mahmoud')
			break
		n_input = n_input - 1


if int(input()) % 2:
	print('Eh' + 'ab')
else:
	print('Mahmoud')


import sys
import math
n = int(sys.stdin.readline().strip())
if n % 2 != 0:
	print('Ehab')
else:
	print('Mahmoud')


import sys
line = int(sys.stdin.readline().strip())
if line % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


n = int(input())
if n % 2 is 0:
	print('Mahmoud')
else:
	print('Ehab')


n = int(input())
if n == 1 or n % 2 == 1:
	print('Ehab')
else:
	print('Mahmoud')


n = int(input())
if n % 2 == 0:
	k = 'Mahmoud'
else:
	k = 'Ehab'
print(k)


import math
n = int(input())
count = 0
name = ''
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


inp = input
li = list
iinp = lambda : int(inp())
ent = lambda : map(int, inp().split())
lient = lambda : li(ent())
n = iinp()
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


from __future__ import division, print_function
import cmath
import itertools
import math
import operator as op
import sys
from atexit import register
from bisect import bisect_left, bisect_right
if sys.version_info[0] < 3:
	from io import BytesIO as stream
else:
	from io import StringIO as stream
	from math import gcd
if sys.version_info[0] < 3:

	class dict(dict):

		def items(self):
			return dict.iteritems(self)

		def keys(self):
			return dict.iterkeys(self)

		def values(self):
			return dict.itervalues(self)

	def gcd(x, y):
		while y:
			(x, y) = (y, x % y)
		return x
	input = raw_input
	range = xrange
	filter = itertools.ifilter
	map = itertools.imap
	zip = itertools.izip

def sync_with_stdio(sync=True):
	global input, flush
	if sync:
		flush = sys.stdout.flush
	else:
		sys.stdin = stream(sys.stdin.read())
		input = lambda : sys.stdin.readline().rstrip('\r\n')
		sys.stdout = stream()
		register(lambda : sys.__stdout__.write(sys.stdout.getvalue()))

def main():
	if int(input()) & 1:
		print('Ehab')
	else:
		print('Mahmoud')
sync_with_stdio(False)
main()


num = int(input())
if 1 <= num <= 10 ** 9:
	if num % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')


def sprav(n):
	if n % 2 == 0:
		return 'Mahmoud'
	return 'Ehab'
n = int(input())
print(sprav(n))


n = int(input())
chance = 0
ans = 0
while n != 0:
	if chance % 2 == 0:
		chance += 1
		ans += 2 * (n // 2)
		n = n - ans
	else:
		chance += 1
		if n % 2 == 0:
			ans = n - 1
		else:
			ans = n
		n = n - ans
if chance % 2 == 0:
	print('Ehab')
else:
	print('Mahmoud')


n = int(input())
if n % 2 == 0 or n == 0:
	print('Mahmoud')
else:
	print('Ehab')


n = int(input())
m = True
while n > 0:
	if m:
		if n % 2 == 0:
			a = n
		else:
			a = n - 1
		n = n - a
		m = False
	else:
		if n % 2 == 1:
			a = n
		else:
			a = n - 1
		n = n - a
		m = True
if m:
	print('Ehab')
else:
	print('Mahmoud')


num = int(input())
if num % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


def solve(n):
	if n % 2 == 0:
		return 'Mahmoud'
	return 'Ehab'
n = int(input())
print(solve(n))


q = int(input())
if q % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


n = int(input())

def is_even(n):
	if n % 2 == 0:
		return True
	else:
		return False
if is_even(n):
	print('Mahmoud')
else:
	print('Ehab')


number = int(input())
if number % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


def solve():
	n = int(input())
	if n & 1:
		print('Ehab')
	else:
		print('Mahmoud')
solve()


n = int(input())
x = n
flag = True
while n != 0:
	if flag:
		while x > 0 and x % 2 != 0:
			x -= 1
		n -= x
		if n != 0:
			flag = False
		if x == 0:
			break
		x = n
	else:
		while x > 0 and x % 2 == 0:
			x -= 1
		if x == 0:
			break
		n -= x
		if n != 0:
			flag = True
		if x == 0:
			break
		x = n
if flag:
	print('Mahmoud')
else:
	print('Ehab')


def main():
	number_start_game = int(input())
	if number_start_game % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')
main()


n = int(input())
if n % 2 == 0:
	print('Mahmoud')
	exit()
print('Ehab')


import sys
import math
from functools import reduce
import bisect

def getN():
	return int(input())

def getNM():
	return map(int, input().split())

def getList():
	return list(map(int, input().split()))

def input():
	return sys.stdin.readline().rstrip()

def index(a, x):
	i = bisect.bisect_left(a, x)
	if i != len(a) and a[i] == x:
		return i
	return False
n = getN()
if n & 1:
	print('Ehab')
else:
	print('Mahmoud')


def trial():
	num = int(input())
	while num != 0:
		if num % 2 == 0:
			return print('Mahmoud')
		return print('Ehab')
trial()


emp = int(input())
if emp % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


t = int(input())
if t & 1:
	print('Ehab')
else:
	print('Mahmoud')


n = int(input())
x = n % 2
if x == 0:
	print('Mahmoud')
if x == 1:
	print('Ehab')


import math

def BuubleSort(a):
	if a % 2 == 0:
		return 'Mahmoud'
	else:
		return 'Ehab'

def main():
	a = int(input())
	ans = BuubleSort(a)
	print(ans)
main()


INF = int(1e+18)

def main():
	n = int(input())
	if n % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')
main()


n = int(input())
res = 'Mahmoud' if n % 2 == 0 else 'Ehab'
print(res)


import sys
import math
counter = -1
count = 0
for lin in sys.stdin:
	line = lin.rstrip()
	counter += 1
	if counter == 0:
		n = int(line)
		break
print('Ehab' if n % 2 == 1 else 'Mahmoud')


def calc(a, m):
	if a % 2 == 0 and m == 1:
		return 0
	elif a % 2 != 0 and m != 1:
		return 0
	return 1
n = int(input())
m = 1
while n != 0:
	if m == 1:
		n = calc(n, m)
		m = 0
		flag = 1
	else:
		n = calc(n, m)
		m = 1
		flag = 0
if flag == 0:
	print('Ehab')
else:
	print('Mahmoud')


def oddeven(a):
	if a % 2 == 0:
		return 'Mahmoud'
	elif a % 2 != 0:
		return 'Ehab'
n = int(input())
ans = oddeven(n)
print(ans)


is_debug = False
n = int(input())
print(f"{('Mahmoud' if n % 2 == 0 else 'Ehab')}")


n = int(input())
c1 = c2 = 0
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


import math, string, itertools, fractions, heapq, collections, re, array, bisect, sys, random, time, copy, functools
sys.setrecursionlimit(10 ** 7)
inf = 10 ** 20
eps = 1.0 / 10 ** 10
mod = 10 ** 9 + 7
dd = [(-1, 0), (0, 1), (1, 0), (0, -1)]
ddn = [(-1, 0), (-1, 1), (0, 1), (1, 1), (1, 0), (1, -1), (0, -1), (-1, -1)]

def LI():
	return [int(x) for x in sys.stdin.readline().split()]

def LI_():
	return [int(x) - 1 for x in sys.stdin.readline().split()]

def LF():
	return [float(x) for x in sys.stdin.readline().split()]

def LS():
	return sys.stdin.readline().split()

def I():
	return int(sys.stdin.readline())

def F():
	return float(sys.stdin.readline())

def S():
	return input()

def pf(s):
	return print(s, flush=True)

def main():
	n = I()
	if n % 2 == 1:
		return 'Ehab'
	return 'Mahmoud'
print(main())


import math
m = input()
m = int(m)
if m % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


from sys import stdin
input = stdin.readline

def main():
	n = int(input())
	if n % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')
	pass
main()


n = int(input())
i = 0
if n & 1:
	print('Ehab')
else:
	print('Mahmoud')


from sys import stdin
n = int(stdin.readline())
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


from sys import stdin

def main():
	n = int(stdin.readline().strip())
	if n % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')
main()


import sys
num = int(input())
if num % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')
sys.exit()


n = int(input())
winner = 'Ehab'
m = True
tally = 1
for i in range(n):
	a = 0
	check = n % 2
	if m:
		if check:
			a = n - 1
		else:
			a = n
	elif check:
		a = n
	else:
		a = n - 1
	n = n - a
	tally += 1
	if a < 1:
		break
	m = not m
tar = tally % 2
if tar:
	winner = 'Mahmoud'
print(winner)


import pdb
print('Mahmoud' if int(input()) % 2 == 0 else 'Ehab')


import itertools
import math
import sys
import heapq
from collections import Counter
from collections import deque
from fractions import gcd
from functools import reduce
sys.setrecursionlimit(4100000)
INF = 1 << 60
MOD = 10 ** 9 + 7
n = int(input())
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


s = int(input())
if s % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


class Main:
	n = int(input())
	print('Mahmoud') if n % 2 == 0 else print('Ehab')
Main()


def solve(test):
	n = int(input())
	print('Ehab' if n % 2 > 0 else 'Mahmoud')
t = 1
for _ in range(t):
	solve(_ + 1)


def main():
	N = int(input())
	if N % 2:
		print('Ehab')
	else:
		print('Mahmoud')
main()


import sys
if int(sys.stdin.readlines()[0]) % 2:
	sys.stdout.write('Ehab')
else:
	sys.stdout.write('Mahmoud')


import sys

def solve():
	n = int(input())
	if n % 2 == 0:
		ans = 'Mahmoud'
	else:
		ans = 'Ehab'
	return ans
ans = solve()
print(ans)


n = int(input())
turn = 'Mahmoud'
while True:
	if n % 2 == 0 and turn == 'Mahmoud':
		n -= n % 2
		turn = 'Ehab'
	elif n % 2 != 0 and turn == 'Ehab':
		n -= n % 2
		turn = 'Mahmoud'
	else:
		if turn == 'Mahmoud':
			turn = 'Ehab'
		else:
			turn = 'Mahmoud'
		break
print(turn)


import sys
n = int(sys.stdin.readline().strip())
print('Ehab' if n % 2 == 1 else 'Mahmoud')


from typing import Dict, List, Tuple

def input_lst() -> List[int]:
	return [int(x) for x in input().split()]

def print_out(res: List[int]):
	print(' '.join([str(x) for x in res]))

def get_simple_numbers_less_than(n: int) -> List[int]:
	pr = []
	lp = [0] * (n - 2)
	for i in range(n - 2):
		if lp[i] == 0:
			lp[i] = i
			pr.append(i)
		for p in pr:
			if p > lp[i] or p * i > n:
				break
			lp[p * i] = p
	return pr

def main():
	x = int(input())
	if x % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')
main()


t = int(input())
if t % 2 == 0:
	print('Mahmoud')
elif t % 2 == 1:
	print('Ehab')


n = int(input())

def mahm(n):
	if n == 0:
		return 'Ehab'
	if n == 1:
		return 'Ehab'
	if n % 2 == 0:
		return 'Mahmoud'
	else:
		n = n - (n - 1)
		return ehab(n)

def ehab(n):
	if n == 0:
		return 'Mahmoud'
	if n % 2 != 0:
		return 'Ehab'
	else:
		n = n - 1
		return mahm(n)
print(mahm(n))


def dkwpwn(num):
	return 'Ehab' if num & 1 else 'Mahmoud'
num = int(input())
print(dkwpwn(num))


no = int(input())
if no % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


n = int(input())
winner = 'Ehab'
while n > 0:
	if winner == 'Ehab':
		if n % 2 == 0:
			n = 0
			winner = 'Mahmoud'
		elif n % 2 == 1 and n > 2:
			n = 1
			winner = 'Mahmoud'
		else:
			winner = 'Ehab'
			break
	elif n % 2 == 0:
		n = 1
		winner = 'Ehab'
	elif n % 2 == 1:
		n = 0
		winner = 'Ehab'
	else:
		winner = 'Mahmoud'
		break
print(winner)


import os
import sys
from io import BytesIO, IOBase

def solve():
	n = int(input())
	if n % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')

def main():
	solve()
	pass
BUFSIZE = 8192

class FastIO(IOBase):
	newlines = 0

	def __init__(self, file):
		self._fd = file.fileno()
		self.buffer = BytesIO()
		self.writable = 'x' in file.mode or 'r' not in file.mode
		self.write = self.buffer.write if self.writable else None

	def read(self):
		while True:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			if not b:
				break
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines = 0
		return self.buffer.read()

	def readline(self):
		while self.newlines == 0:
			b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
			self.newlines = b.count(b'\n') + (not b)
			ptr = self.buffer.tell()
			(self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr))
		self.newlines -= 1
		return self.buffer.readline()

	def flush(self):
		if self.writable:
			os.write(self._fd, self.buffer.getvalue())
			(self.buffer.truncate(0), self.buffer.seek(0))

class IOWrapper(IOBase):

	def __init__(self, file):
		self.buffer = FastIO(file)
		self.flush = self.buffer.flush
		self.writable = self.buffer.writable
		self.write = lambda s: self.buffer.write(s.encode('ascii'))
		self.read = lambda : self.buffer.read().decode('ascii')
		self.readline = lambda : self.buffer.readline().decode('ascii')
(sys.stdin, sys.stdout) = (IOWrapper(sys.stdin), IOWrapper(sys.stdout))
input = lambda : sys.stdin.readline().rstrip('\r\n')
main()


def evenOdd(n):
	if n % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')
n = int(input())
evenOdd(n)


n = int(input())
if n == 1:
	print('Ehab')
elif n == 2:
	print('Mahmoud')
elif n == 3:
	print('Ehab')
elif n == 4:
	print('Mahmoud')
elif n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


inputNumber = input()
inputNumber = int(inputNumber)
if inputNumber % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


t = 1
while t > 0:
	t -= 1
	n = int(input())
	if n % 2 == 1:
		print('Ehab')
	else:
		print('Mahmoud')


num = int(input())
if num % 2 == 0 and num > 1:
	print('Mahmoud')
else:
	print('Ehab')


def main():
	n = int(input())
	winner = get_winner(n)
	print(winner)

def get_winner(value):
	if value == 1:
		return 'Ehab'
	elif value % 2 == 0:
		return 'Mahmoud'
	else:
		return 'Ehab'
main()


num = int(input())
if num % 2 != 0:
	print('Ehab')
elif num % 2 == 0:
	print('Mahmoud')


inp = int(input())
memb = ['Mahmoud', 'Ehab']
step = 0
while inp > 0:
	a = 0
	if inp % 2 == step % 2:
		a = inp
	elif inp - 1 > 0 and (inp - 1) % 2 == step % 2:
		a = inp - 1
	if a > 0:
		inp -= a
		step += 1
	else:
		break
print(memb[(step + 1) % 2])


n = int(input())
print('{}'.format('Ehab' if n % 2 == 1 else 'Mahmoud'))


print('Mahmoud' if not int(input()) % 2 else 'Ehab')


i1 = int(input())
if i1 % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


def inp():
	n = int(input())
	if n % 2 == 1:
		print('Ehab')
	else:
		print('Mahmoud')
inp()


n = int(input())
if n % 2 != 0:
	print('Ehab', end='')
else:
	print('Mahmoud')


n = int(input())
k = 1
p = 1
while k:
	if p % 2 == 1:
		if n > 1:
			n -= n // 2 * 2
		else:
			print('Ehab')
			k = 0
	elif n != 0:
		if n % 2 == 1:
			n = 0
		else:
			print('Mahmoud')
			k = 0
	else:
		print('Mahmoud')
		k = 0
	p += 1


n = input()
if n[-1] == '0' or n[-1] == '2' or n[-1] == '4' or (n[-1] == '6') or (n[-1] == '8'):
	print('Mahmoud')
else:
	print('Ehab')


def evenlt(n):
	for i in range(n, -1, -1):
		if i % 2 == 0:
			return i

def oddlt(n):
	for i in range(n, -1, -1):
		if i % 2 != 0:
			return i
n = int(input())
temp = n
turn = 0
while temp > 0:
	if turn % 2 == 0:
		a = evenlt(temp)
		temp -= a
	else:
		a = oddlt(temp)
		temp -= a
	turn += 1
if turn == 1:
	print('Mahmoud')
else:
	print('Ehab')


class CodeforcesTask959ASolution:

	def __init__(self):
		self.result = ''
		self.n = 0

	def read_input(self):
		self.n = int(input())

	def process_task(self):
		self.result = 'Mahmoud' if not self.n % 2 else 'Ehab'

	def get_result(self):
		return self.result
Solution = CodeforcesTask959ASolution()
Solution.read_input()
Solution.process_task()
print(Solution.get_result())


def mahmoud_and_ehab_and_the_even_odd_game(n):
	return 'Ehab' if n % 2 else 'Mahmoud'
n = int(input())
result = mahmoud_and_ehab_and_the_even_odd_game(n)
print(result)


def ii():
	return int(input())

def mi():
	return map(int, input().split())

def li():
	return list(mi())
n = ii()
print(['Mahmoud', 'Ehab'][n % 2])


n = int(input())
players = {0: 'Ehab', 1: 'Mahmoud'}
flag = False
while n > 0:
	flag = not flag
	if flag:
		a = n if not n % 2 else n - 1
	else:
		a = n if n % 2 else n - 1
	n -= a
print(players[flag])


number_game = int(input())
even_odd = number_game % 2
if even_odd == 0:
	print('Mahmoud')
else:
	print('Ehab')


line_1 = int(input())
count = line_1
if line_1 % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


from math import sqrt
n = int(input())
if n % 2:
	print('Ehab')
else:
	print('Mahmoud')


t2 = int(input())
if t2 % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


n = int(input())
winner = None
if n == 1:
	winner = 'Ehab'
elif n == 2:
	winner = 'Mahmoud'
elif n % 2 != 0:
	winner = 'Ehab'
else:
	winner = 'Mahmoud'
print(winner)


import sys
readints = lambda : map(int, input().strip('\n').split())
n = int(input())
if n % 2 == 1:
	print('Ehab')
else:
	print('Mahmoud')


import sys
import math
import bisect

def main():
	n = int(input())
	if n % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')
main()


turn = int(input())
if turn % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


def foo(x):
	a = 'Mahmoud'
	b = 'Ehab'
	chance = True
	while x > 0:
		if chance:
			if not x % 2:
				print(a)
				return
			if x - 1 > 0:
				x -= x - 1
			else:
				print(b)
				return
			chance = False
		else:
			if x % 2:
				print(b)
				return
			if x - 1 > 0:
				x -= x - 1
			else:
				print(a)
				return
			chance = True
first = int(input())
foo(first)


getInputList = lambda : list(input().split())
getInputIntList = lambda : list(map(int, input().split()))
n = int(input())
if n == 1:
	print('Ehab')
elif n == 2:
	print('Mahmoud')
elif n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


n = int(input())
ehab = True
w = n % 2
if w == 0:
	ehab = False
if ehab is True:
	print('Ehab')
else:
	print('Mahmoud')


n = int(input())
flag = 0
while True:
	if n == 0:
		break
	elif n > 0 and flag == 0:
		if n % 2 == 0:
			n -= n
			flag = 1
		else:
			n -= n - 1
			flag = 1
	elif n > 0 and flag == 1:
		if n % 2 != 0:
			n -= n
			flag = 0
		else:
			n -= n - 1
			flag = 0
if flag == 0:
	print('Ehab')
else:
	print('Mahmoud')


def main(n):
	if n == 1:
		return 'Ehab'
	if n % 2 == 0:
		return 'Mahmoud'
	else:
		return 'Ehab'
try:
	while True:
		n = int(input())
		print(main(n))
except:
	pass


n = int(input())
flag = -1
chance = 0
while n >= 0:
	if chance == 0:
		got = 0
		for i in reversed(range(1, n + 1)):
			if i % 2 == 0:
				n -= i
				chance = 1
				got = 1
				break
		if got == 0:
			print('Ehab')
			break
	elif chance == 1:
		got = 0
		for i in reversed(range(1, n + 1)):
			if i % 2 != 0:
				n -= i
				chance = 0
				got = 1
				break
		if got == 0:
			print('Mahmoud')
			break


def mp():
	return map(int, input().split())
n = int(input())
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


import sys, math
t = int(input().strip())
names = ['Mahmoud', 'Ehab']
if t % 2 == 0:
	print(names[0])
else:
	print(names[1])


from math import *
from copy import *
from string import *
from random import *
from sys import stdin
from sys import maxsize
from operator import *
from itertools import *
from collections import Counter
import math

def bin(l, r, ll, val):
	if l > r:
		return -1
	else:
		mid = (l + r) // 2
		if ll[mid] == val:
			return mid
		elif ll[mid] > val:
			return bin(l, mid - 1, ll, val)
		else:
			return bin(mid + 1, r, ll, val)

def SieveOfEratosthenes(n):
	prime = [True for i in range(n + 1)]
	p = 2
	while p * p <= n:
		if prime[p] == True:
			for i in range(p * p, n + 1, p):
				prime[i] = False
		p += 1
	return prime
n = int(input())
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


A = int(input())
if A % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


try:
	n = int(input())
	if n % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')
except Exception:
	pass


def check(x):
	return x % 2 == 0
n = int(input())
print('Mahmoud' if check(n) else 'Ehab')


t = int(input())
d = t - 1
if t % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


import math
inp = lambda : (int, input().split())
n = int(input())
if n % 2 != 0:
	print('Ehab')
else:
	print('Mahmoud')


numb = int(input())
if numb % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


import sys
import math
input = sys.stdin.readline

def inp():
	return int(input())

def inara():
	return list(map(int, input().split()))

def insr():
	s = input()
	return list(s[:len(s) - 1])

def invr():
	return map(int, input().split())
n = inp()
if n % 2:
	print('Ehab')
else:
	print('Mahmoud')


x = eval(input())
if x == 1:
	print('Ehab')
elif x == 2:
	print('Mahmoud')
elif x % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


from collections import deque, Counter, OrderedDict
from heapq import nsmallest, nlargest
from math import ceil, floor, log, log2, sqrt, gcd, factorial

def binNumber(n, size=4):
	return bin(n)[2:].zfill(size)

def iar():
	return list(map(int, input().split()))

def ini():
	return int(input())

def isp():
	return map(int, input().split())

def sti():
	return str(input())

def par(a):
	return ' '.join(list(map(str, a)))

class pair:

	def __init__(self, f, s):
		self.fi = f
		self.se = s

	def __lt__(self, other):
		return (self.fi, self.se) < (other.fi, other.se)
n = ini()
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


import math
while True:
	try:
		n = eval(input().strip())
		(odd, even) = (n // 2, n // 2)
		if n & 1:
			odd += 1
		if odd == even:
			print('Mahmoud')
		else:
			print('Ehab')
	except:
		break


import time

def solve():
	n = int(input())
	if n % 2 == 0:
		winner = 'Mahmoud'
	else:
		winner = 'Ehab'
	print(winner)
solve()


from sys import exit as sys_return
number = int(input())
if number % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


money = int(input())
if money % 2 == 1:
	print('Ehab')
else:
	print('Mahmoud')


t = int(input())
if t <= 1 or t % 2 == 1:
	print('Ehab')
else:
	print('Mahmoud')


n = int(input())
flag = 1
aux = 0
while flag:
	if n - 2 >= 0:
		n = n - 2
		aux = 0
	elif n - 1 >= 0:
		n = n - 1
		aux = 1
	else:
		flag = 0
if aux == 1:
	print('Ehab')
else:
	print('Mahmoud')


n = int(input())
winner = 'Ehab'
if n % 2 == 0:
	winner = 'Mahmoud'
else:
	winner = 'Ehab'
print(winner)


n = int(input())
turn = 'Mahmoud'
a = n
while n >= 1:
	if turn == 'Mahmoud':
		if a == 0:
			break
		elif a % 2 == 0:
			n = n - a
			turn = 'Ehab'
			a = n
		else:
			a = n - 1
	elif turn == 'Ehab':
		if a == 0:
			break
		elif a % 2 == 1:
			n = n - a
			turn = 'Mahmoud'
			a = n
		else:
			a = n - 1
if turn == 'Mahmoud':
	print('Ehab')
else:
	print('Mahmoud')


x = int(input())
count = 1
while x >= 0:
	if count % 2 != 0:
		if x == 1 or x == 0:
			print('Ehab')
			break
		else:
			for i in range(x, 0, -1):
				if i % 2 == 0:
					x = x - i
					count += 1
					break
			if x == 0:
				print('Mahmoud')
				break
	if count % 2 == 0:
		for i in range(x, 0, -1):
			if i % 2 != 0:
				x = x - i
				count += 1
				break
		if x == 1 or x == 0:
			print('Ehab')
			break


l = int(input())
if l % 2 != 0:
	print('Ehab')
else:
	print('Mahmoud')


while 1:
	try:
		n = int(input())
	except:
		break
	if n & 1:
		print('Ehab')
	else:
		print('Mahmoud')


A = int(input())
if A & 1:
	print('Ehab')
else:
	print('Mahmoud')


from functools import reduce
from sys import stdin
from bisect import bisect_left, bisect_right
import heapq

def main():
	n = int(input())
	print('Mahmoud') if n % 2 == 0 else print('Ehab')
main()


number = int(input())
if number == 1 or number % 2 != 0:
	print('Ehab')
elif number % 2 == 0:
	print('Mahmoud')


n = int(input())
flag = True
while n != 0:
	if flag == True:
		j = n
		a = n
		while a % 2 != 0:
			n = n - 1
			a = n
		n = j - a
		flag = not flag
	elif flag == False:
		j = n
		a = n
		while a % 2 == 0:
			n = n - 1
			a = n
		n = j - a
		flag = not flag
if flag == True:
	print('Ehab')
else:
	print('Mahmoud')


n = int(input())
d = {1: 'Ehab', 0: 'Mahmoud'}
print(d[n % 2])


x = int(input())
if x == 1:
	print('Ehab')
elif x % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


TN = 1

def solution():
	n = int(input())
	ans = 'Mahmoud'
	if n % 2 != 0:
		ans = 'Ehab'
	print(ans)
while TN != 0:
	solution()
	TN -= 1


import sys
import math
mod = 1000000007

def nospace(l):
	ans = ''.join((str(i) for i in l))
	return ans
n = int(input())
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


import math, string, itertools, fractions, heapq, collections, re, array, bisect, sys, random, time, queue, copy
sys.setrecursionlimit(10 ** 7)
inf = 10 ** 20
mod = 10 ** 9 + 7
dd = [(-1, 0), (0, 1), (1, 0), (0, -1)]
ddn = [(-1, 0), (-1, 1), (0, 1), (1, 1), (1, 0), (1, -1), (0, -1), (-1, -1)]

def LI():
	return [int(x) for x in sys.stdin.readline().split()]

def LI_():
	return [int(x) - 1 for x in sys.stdin.readline().split()]

def I():
	return int(sys.stdin.readline())

def LS():
	return sys.stdin.readline().split()

def S():
	return input()

def main():
	n = I()
	if n % 2 == 0:
		return 'Mahmoud'
	return 'Ehab'
print(main())


def chet_nechet(n):
	if n % 2 == 0:
		return 'Mahmoud'
	return 'Ehab'
print(chet_nechet(int(input())))


masukan = int(input())
if masukan % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


n = int(input())
if n == 1:
	print('Ehab')
elif n % 2 == 1:
	print('Ehab')
else:
	print('Mahmoud')


def solve(start_number):
	winner = ''
	if start_number == 1 or start_number % 2 != 0:
		winner += 'Ehab'
	else:
		winner += 'Mahmoud'
	return winner
n = int(input())
print(solve(n))


n = int(input())
if n % 2 == 0:
	result = 'Mahmoud'
else:
	result = 'Ehab'
print(result)


import sys
input = sys.stdin.readline

def inp():
	return int(input())

def inlt():
	return list(map(int, input().split()))

def insr():
	s = input()
	return list(s[:len(s) - 1])

def invr():
	return map(int, input().split())

def function(n):
	if n % 2 == 0:
		print('Mahmoud')
	elif n % 2 == 1:
		print('Ehab')
n = inp()
function(n)


n = int(input())
if n >= 1 and n <= pow(10, 9):
	if n % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')


numbers = list(map(int, input().split()))
if numbers[0] % 2 == 1:
	print('Ehab')
else:
	print('Mahmoud')


n = int(input())
win = ['Mahmoud', 'Ehab']
print(win[n % 2])


N = int(input())
if N == 1:
	print('Ehab')
elif N % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


def input_func():
	while True:
		n = input()
		if n.isdigit():
			break
		else:
			continue
	return int(n)

def play(n):
	if n % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')
n = input_func()
play(n)


def main():
	number = int(input())
	winner = 'Ehab'
	if number % 2 == 0:
		winner = 'Mahmoud'
	print(winner)
main()


R = lambda : [*map(int, input().split())]
n = R()
if n[0] % 2 == 1:
	print('Ehab')
else:
	print('Mahmoud')


def main():
	print(('Mahmoud', 'Ehab')[int(input()) & 1])
main()


inp = int(input())
if inp % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


n = int(input())
if n % 2 == 0 and n != 0:
	print('Mahmoud')
if n % 2 != 0:
	print('Ehab')


num = int(input())
a = 0
turn = 0
while num > 0:
	if turn % 2 == 0:
		x = int(num)
		if x % 2 != 0:
			x = x - 1
		num = num - x
		turn = turn + 1
		if num <= 0:
			print('Mahmoud')
	elif turn % 2 != 0:
		y = int(num)
		if y % 2 == 0:
			y = y - 1
		else:
			y = int(num)
		num = num - y
		turn = turn + 1
		if num <= 0:
			print('Ehab')


def int_list():
	list(map(int, input().strip().split()))

def main():
	n = int(input())
	if n % 2 == 1:
		print('Ehab')
	else:
		print('Mahmoud')
main()


n = int(input())
ans = 'Mahmoud'
if n % 2 == 1:
	print('Ehab')
else:
	print('Mahmoud')


f = int(input())
if f % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


read = int(input())
print('Ehab' if read % 2 != 0 else 'Mahmoud')


n = input()
if n[-1] in ['1', '3', '5', '7', '9']:
	print('Ehab')
else:
	print('Mahmoud')


import atexit
import io
import sys
_INPUT_LINES = sys.stdin.read().splitlines()
input = iter(_INPUT_LINES).__next__
_OUTPUT_BUFFER = io.StringIO()
sys.stdout = _OUTPUT_BUFFER

@atexit.register
def write():
	sys.__stdout__.write(_OUTPUT_BUFFER.getvalue())

def main():
	n = int(input())
	if n % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')
main()


def even(n):
	ans = True if n % 2 == 0 else False
	return ans
n = int(input())
if even(n):
	print('Mahmoud')
else:
	print('Ehab')


import sys
import math
import os
import itertools
import string
import heapq
import _collections
from collections import Counter
from collections import defaultdict
from functools import lru_cache
import bisect
import re
import queue

class Scanner:

	@staticmethod
	def int():
		return int(sys.stdin.readline().rstrip())

	@staticmethod
	def string():
		return sys.stdin.readline().rstrip()

	@staticmethod
	def map_int():
		return [int(x) for x in Scanner.string().split()]

	@staticmethod
	def string_list(n):
		return [input() for i in range(n)]

	@staticmethod
	def int_list_list(n):
		return [Scanner.map_int() for i in range(n)]

	@staticmethod
	def int_cols_list(n):
		return [int(input()) for i in range(n)]

class Math:

	@staticmethod
	def gcd(a, b):
		if b == 0:
			return a
		return Math.gcd(b, a % b)

	@staticmethod
	def lcm(a, b):
		return a * b // Math.gcd(a, b)

	@staticmethod
	def divisor(n):
		res = []
		i = 1
		for i in range(1, int(n ** 0.5) + 1):
			if n % i == 0:
				res.append(i)
				if i != n // i:
					res.append(n // i)
		return res

	@staticmethod
	def round_up(a, b):
		return -(-a // b)

	@staticmethod
	def is_prime(n):
		if n < 2:
			return False
		if n == 2:
			return True
		if n % 2 == 0:
			return False
		d = int(n ** 0.5) + 1
		for i in range(3, d + 1, 2):
			if n % i == 0:
				return False
		return True

class PriorityQueue:

	def __init__(self, l=[]):
		self.q = l
		heapq.heapify(self.q)
		return

	def push(self, n):
		heapq.heappush(self.q, n)
		return

	def pop(self):
		return heapq.heappop(self.q)
MOD = int(1000000000.0) + 7
INF = int(1000000000000000.0)

def main():
	N = Scanner.int()
	if N % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')
main()


n = int(input())
print('EMhaahbm o u d'[n % 2 == 0::2])


def odd(n):
	mas = [0, 2, 4, 6, 8]
	if int(n[-1]) in mas:
		return 'Mahmoud'
	else:
		return 'Ehab'
print(odd(str(input())))


def odd_even(n):
	if n % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')
number = int(input())
odd_even(number)


import sys, queue
try:
	import dev_act_ffc429465ab634
	DEV = True
except:
	DEV = False

def log(*s):
	if DEV:
		print('LOG', *s)

class EJudge:

	def __init__(self, problem='default', reclim=1 << 30):
		self.problem = problem
		sys.setrecursionlimit(reclim)

	def use_files(self, infile='', outfile=''):
		if infile != '':
			self.infile = open(infile)
			sys.stdin = self.infile
		if outfile != '':
			self.outfile = open(outfile, 'w')
			sys.stdout = self.outfile

	def use_bacs_files(self):
		self.use_files(self.problem + '.in', self.problem + '.out')

	def get_tl(self):
		while True:
			pass

	def get_ml(self):
		tmp = [[[5] * 100000 for _ in range(1000)]]
		while True:
			tmp.append([[5] * 100000 for _ in range(1000)])

	def get_re(self):
		s = (0,)[8]

	def get_wa(self, wstr='blablalblah'):
		for _ in range(3):
			print(wstr)
		exit()

class IntReader:

	def __init__(self):
		self.ost = queue.Queue()

	def get(self):
		return int(self.sget())

	def sget(self):
		if self.ost.empty():
			for el in input().split():
				self.ost.put(el)
		return self.ost.get()

	def release(self):
		res = []
		while not self.ost.empty():
			res.append(self.ost.get())
		return res

def tokenized(s):
	word = []
	for ch in s.strip():
		if ch == ' ':
			if word:
				yield ''.join(word)
				word = []
		elif 'a' <= ch <= 'z' or 'A' <= ch <= 'Z' or '0' <= ch <= '9':
			word.append(ch)
		else:
			if word:
				yield ''.join(word)
				word = []
			yield ch
	if word:
		yield ''.join(word)
		word = []
ej = EJudge()
int_reader = IntReader()
fmap = lambda f, *l: list(map(f, *l))
parse_int = lambda : fmap(int, input().split())
n = int(input())
print('Ehab' if n & 1 > 0 else 'Mahmoud')


from sys import stdin

def iin():
	return int(stdin.readline())

def lin():
	return list(map(int, stdin.readline().split()))

def main():
	ans = ['Mahmoud', 'Ehab']
	n = iin()
	print(ans[n % 2])
main()


beginning_number = int(input())
winner = ''
turn = 'mahmoud'
while True:
	if turn == 'mahmoud':
		a_number = 0
		if beginning_number % 2 == 0:
			a_number = beginning_number
			beginning_number -= a_number
		if beginning_number == 0:
			winner = 'Mahmoud'
			break
		beginning_number -= 1
		turn = 'ehab'
	else:
		a_number = 0
		if beginning_number % 2 != 0:
			a_number = beginning_number
			beginning_number -= a_number
		if beginning_number == 0:
			winner = 'Ehab'
			break
		beginning_number -= 1
		turn = 'ehab'
print(winner)


n = int(input())
i = 0
while n >= 1:
	if i % 2 == 0:
		if n % 2 == 0:
			n -= n
	elif n % 2 != 0:
		n -= n
	i += 1
if i % 2 == 0:
	print('Ehab')
else:
	print('Mahmoud')


def find_winner(n):
	if n % 2 == 0:
		return 'Mahmoud'
	return 'Ehab'
n = int(input())
print(find_winner(n))


N = int(input())
if N % 2 == 1:
	print('Ehab')
else:
	print('Mahmoud')


data = input()
data = int(data)
if data % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


import math
from collections import defaultdict, Counter, deque
INF = float('inf')

def gcd(a, b):
	while b:
		(a, b) = (b, a % b)
	return a

def primeFactor(n):
	if n % 2 == 0:
		return 2
	i = 3
	while i ** 2 <= n:
		if n % i == 0:
			return i
		i += 1
	return n

def main():
	n = int(input())
	if n % 2 == 0:
		print('Mahmoud')
	else:
		print('Ehab')
t = 1
for _ in range(t):
	main()


import random
win = False
n = int(input())
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


a = input() + ' '
b = ''
A = []
for j in range(len(a)):
	if a[j] == ' ':
		A.append(int(b))
		b = ''
	else:
		b += a[j]
if A[0] % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


import sys
n = int(sys.stdin.readline())

def find_largest_even(k):
	a = -1
	for i in range(k, 1, -1):
		if i > a and i % 2 == 0:
			a = i
			break
		else:
			continue
	return a

def find_largest_odd(k):
	a = -1
	for i in range(k, 0, -1):
		if i > a and i % 2 != 0:
			a = i
			break
		else:
			continue
	return a

def mahmoud(n):
	turn = True
	while True:
		if turn:
			a = find_largest_even(n)
			if a != -1:
				n -= a
				if n == 0:
					turn = True
					break
			else:
				turn = False
				break
		else:
			a = find_largest_odd(n)
			if a != -1:
				n -= a
				if n == 0:
					turn = False
					break
			else:
				turn = True
				break
	if turn:
		print('Mahmoud')
	else:
		print('Ehab')
mahmoud(n)


n = int(input())
print('Ehab' if n % 2 is 1 else 'Mahmoud')


N = int(input())
a = 'Ehab'
b = 'Mahmoud'
win = b
turn = b
while N > 0:
	if turn == a:
		win = a
		if N % 2 != 0:
			if N >= 1:
				N -= N
				turn = b
			else:
				win = b
				break
		elif N - 1 >= 1:
			N -= N - 1
			turn = b
		else:
			win = b
			break
	else:
		win = b
		if N % 2 == 0:
			if N >= 1:
				N -= N
				turn = a
			else:
				win = a
				break
		elif N - 1 >= 1:
			N -= N - 1
			turn = a
		else:
			win = a
			break
print(win)


import time
import collections

class Time_test:

	def __enter__(self):
		self.enter_time = time.time()

	def __exit__(self, exc_type, exc_val, exc_tb):
		print('Command was executed in', time.time() - self.enter_time)
n = int(input())
if n % 2 == 0:
	print('Mahmoud')
else:
	print('Ehab')


n = int(input())
ans = 'Ehab'
if n % 2 == 0:
	ans = 'Mahmoud'
print(ans)