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()
def main2():
    stdin = open('/dev/stdin')
    N = int(stdin.readline())
    s = set()
    for i in range(N):
        s.add(int(stdin.readline()))
    print(len(s))
'''

Measured memory_bytes: 5528