mport 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))
'''

### FIXED CODE ###

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 main2():
    stdin = open('/dev/stdin')
    N = int(stdin.readline())
    d = np.empty(N, dtype=np.int64)
    for i in range(N):
        d[i] = int(stdin.readline())
    print(len(np.unique(np.sort(d))))
'''