n = int(input())
perfect_num = 0

# 【错误点1】原来把pd_count写在循环外,会导致因子列表“累积”
# 【改正方法】把pd_count的初始化放到内层,每次判断新数都重新开始

# 【错误点2】原来在内层循环修改了外层循环变量i,导致循环被破坏
# 【改正方法】用一个单独的变量num来处理当前数,不直接修改循环变量

# 【错误点3】原来的找因子逻辑是“不断除原数”,这是质因数分解,不是找所有真因子
# 【改正方法】遍历2到sqrt(num),成对找因子,这样才不会漏

# 从1到n,逐个判断
for i in range(1, n + 1):
    if i == 1:
        continue  # 1没有真因子,直接跳过

    # ✅ 改正错误1:每次判断新数,都重置因子列表
    pd_count = [1]  # 1是所有数的真因子,先放进去
    num = i  # ✅ 改正错误2:用单独变量num处理,不修改外层循环的i
    is_perfect = False

    # ✅ 改正错误3:用成对找因子的方式,遍历到sqrt(num)
    for pd in range(2, int(num ** 0.5) + 1):
        if num % pd == 0:
            pd_count.append(pd)  # pd是因子,加入列表
            other = num // pd
            if other != pd:  # 避免平方数重复添加(比如16的4只加一次)
                pd_count.append(other)

    # 求和判断是否是完全数
    if sum(pd_count) == num:
        perfect_num += 1

print(perfect_num)

# 偷鸡
# n = int(input())
# count = 0
# if n >= 6:
#     count += 1
# if n >= 28:
#     count += 1
# if n >= 496:
#     count += 1
# if n >= 8128:
#     count += 1
# print(count)