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 data contains the only number *n* (1 ≤ *n* ≤ 10<sup class="upper-index">9</sup>).
For *n* = 10 the answer includes numbers 1 and 10.
10
2
20
3
72
3
99
3
100
4
101
5
102
5
111
7
112
7
745
7
23536
31
1
1
1010011
83
312410141
511
1000000000
512
999999999
511
111111111
511
101010101
341
121212121
511
106341103
383
901556123
511
832513432
511
3
1
732875234
511
7
1
9
1
2
1
11
3
12
3
13
3
101020101
351
111100100
484
110110101
437
100111001
313
100100
36
110100102
421
#include<bits/stdc++.h>
#define int long long
using namespace std;
#define pr pair<int,int>
#define vect vector <int> v1
#define pb push_back
#define wgr vector<pair<int,int> >  
#define lowestbit(x) __builtin_ffs(x) //returns 1+index of(lowest bit)
#define highestbit(x) __builtin_clz(x) //returns number of 0's to left of MST
#define is(x) cerr << #x << " is " << x << endl;
#define sortv sort(v1.begin(),v1.end());
#define loop(i,a,b)  for(int i=(a);i<(b);i++)
#define inputarr loop(i,0,n) cin>>ar[i];
int mod=1e9+7;
int inf=1e18;
int mx=-1;
int mn=1e18;
int calpow(int a, int b, int md)
{
  int mul = 1;
  while (b > 0)
  {
    if (b & 1)
    {
      mul = ((a % md) * (mul % md)) % md;
      b--;
    }
    else
    {
      a = ((a % md) * (a % md)) % md;
      b /= 2;
    }
  }
  return mul;
}
void solve()
{
  int i,j,n,t,q,a,b,m,k,ct=0,sum=0,flag=0;
   cin>>n;
   j=31-highestbit(n);
   cout<<(calpow(2,j,inf)-1);
}
signed main()
{
//freopen("lineup.in","r",stdin); 
//freopen("lineup.out","w",stdout); 
ios::sync_with_stdio(false); 
cin.tie(NULL); 
// WATCH FOR SAME VARIABLE USAGE CLEARLY!!! 
//MAKE SURE TO MAKE A DUPLICATE OF ANYTHING IF PERFORMING OPERATION DIRECTLY ON SOMETHING !!! 
int t=1;
//cin>>t;
while(t--)
{
  solve();
  cout<< "\n" ;
}

cerr<< endl << clock() * 1000.0 / CLOCKS_PER_SEC <<'m'<<'s';
    return 0;
}

