One beautiful July morning a terrible thing happened in Mainframe: a mean virus Megabyte somehow got access to the memory of his not less mean sister Hexadecimal. He loaded there a huge amount of n different natural numbers from 1 to n to obtain total control over her energy.

But his plan failed. The reason for this was very simple: Hexadecimal didn't perceive any information, apart from numbers written in binary format. This means that if a number in a decimal representation contained characters apart from 0 and 1, it was not stored in the memory. Now Megabyte wants to know, how many numbers were loaded successfully.

Input

Input data contains the only number n (1 ≤ n ≤ 109).

Output

Output the only number — answer to the problem.

Example

Input

10

Output

2

Note

For n = 10 the answer includes numbers 1 and 10.

 

给你一个数,求1到这个数中有多少个只有1,0组成的数

解题思路:可以深搜,也可以直接构造

 

 1 #include<stdio.h>
 2 
 3 long long sum, sum1;
 4 
 5 void dfs(long long a) {
 6     if(sum<a)
 7         return ;
 8     sum1++;
 9     dfs(a*10);
10     dfs(a*10+1);
11 }
12 
13 int main() {
14     while(scanf("%lld", &sum)!=EOF) {
15         sum1 = 0;
16         
17         dfs(1);
18     
19         printf("%lld\n", sum1);
20     }
21     return 0;
22 }