import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
/*
1、先弄明白题目的意思,完全数即不包含本身的所有因子的和相加等于本身
2、不大于n的所有完全数,所以第一层循环小于等于n,从0,1,2等开始都无所谓,因为他们都不是完全数
3、第二层循环最小值从1开始,1是所有数值的默认因子,最大值不能超过第一层要循环的数据
4、如果是因子,则i%j能被整除,所以能被整除的j全部加到一个set中
5、最后把set中的所有因子累加,和i比较,如果相等则说明是完全数
*/
int count=0;
for(int i=1;i<=num;i++){
Set<Integer> set=new HashSet<Integer>();
for(int j=1;j<i;j++){
if(i%j==0){
set.add(j);
}else{
continue;
}
}
int sum=0;
for(int n:set){
sum+=n;
}
if(sum==i){
// System.out.println(i);
count++;
}
}
System.out.print(count);
}
}
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
/*
1、先弄明白题目的意思,完全数即不包含本身的所有因子的和相加等于本身
2、不大于n的所有完全数,所以第一层循环小于等于n,从0,1,2等开始都无所谓,因为他们都不是完全数
3、第二层循环最小值从1开始,1是所有数值的默认因子,最大值不能超过第一层要循环的数据
4、如果是因子,则i%j能被整除,所以能被整除的j全部加到一个set中
5、最后把set中的所有因子累加,和i比较,如果相等则说明是完全数
*/
int count=0;
for(int i=1;i<=num;i++){
Set<Integer> set=new HashSet<Integer>();
for(int j=1;j<i;j++){
if(i%j==0){
set.add(j);
}else{
continue;
}
}
int sum=0;
for(int n:set){
sum+=n;
}
if(sum==i){
// System.out.println(i);
count++;
}
}
System.out.print(count);
}
}