import subprocess
import gzip, base64, os
import stat

gz = b'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'
bin = gzip.decompress(base64.b64decode(gz))
p = os.path.dirname(__file__)
pymain = os.path.join(p, "a.out")
with open(pymain, "wb") as f:
    f.write(bin)
os.chmod(pymain, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)
if p == "":
    pymain = "./" + pymain
subprocess.call(pymain)


# compiled by pythran
'''
#pythran export main2()
import numpy as np

def str2array(s, a):
    for i in range(a.shape[0]):
        a[i] = ord(s[i])

def equal(s, i, a):
    for j in range(a.shape[0]):
        if a[j] != ord(s[i + j]):
            return 0
    return 1

def main2():
    s = open('/dev/stdin').readline()
    dream = np.empty(5, dtype=np.int32)
    str2array('dream', dream)
    dreamer = np.empty(7, dtype=np.int32)
    str2array('dreamer', dreamer)
    erase = np.empty(5, dtype=np.int32)
    str2array('erase', erase)
    eraser = np.empty(6, dtype=np.int32)
    str2array('eraser', eraser)
    r = ord('r')
    i = len(s) - 1
    while True:
        if i < 10:
            if (i == 5 and (equal(s, 0, dream) or equal(s, 0, erase))) or \
                    (i == 6 and equal(s, 0, eraser)) or \
                    (i == 7 and equal(s, 0, dreamer)):
                print('YES')
            else:
                print('NO')
            return
        else:
            if ord(s[i - 1]) == r:
                if equal(s, i - 7, dreamer):
                    i -= 7
                elif equal(s, i - 6, eraser):
                    i -= 6
                else:
                    print('NO')
                    return
            else:
                if equal(s, i - 5, dream) or equal(s, i - 5, erase):
                    i -= 5
                else:
                    print('NO')
                    return
'''


Measured memory_bytes: 4920