/*
#include <stdio.h>
int k=1, d=1, x=1, y=1;
int n, a[16][16]={};
int main()
{
scanf("%d", &n);
while(k<=n*n)
{
a[x][y]=k++;
if(d==1)
{
x++;
if(x>n||a[x][y]!=0) {x--; y++; d=2;}
}
else if(d==2)
{
y++;
if(y>n||a[x][y]!=0) {x--; y--; d=3;}
}
else if(d==3)
{
x--;
if(x<1||a[x][y]!=0) {x++; y--; d=4;}
}
else
{
y--;
if(y<1||a[x][y]!=0) {x++; y++; d=1;}
}
}
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
}
#include <stdio.h>
int k=1, d=1, x=1, y=1;
int n, a[51][51]={};
int main()
{
scanf("%d", &n);
while(k<=n*n)
{
a[x][y]=k++;
if(d==1)
{
y++;
if(y>n||a[x][y]!=0) {x++; y--; d=2;}
}
else if(d==2)
{
x++;
if(x>n||a[x][y]!=0) {x--; y--; d=3;}
}
else if(d==3)
{
y--;
if(y<1||a[x][y]!=0) {x--; y++; d=4;}
}
else
{
x--;
if(x<1||a[x][y]!=0) {x++; y++; d=1;}
}
}
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
}
#include <stdio.h>
int k=1, d=1, x=1, y=1;
int n, m, a[101][101]={};
int main()
{
scanf("%d %d", &n, &m);
while(k<=n*m)
{
a[x][y]=k++;
if(d==1)
{
y++;
if(y>m||a[x][y]!=0) {x++; y--; d=2;}
}
else if(d==2)
{
x++;
if(x>n||a[x][y]!=0) {x--; y--; d=3;}
}
else if(d==3)
{
y--;
if(y<1||a[x][y]!=0) {x--; y++; d=4;}
}
else
{
x--;
if(x<1||a[x][y]!=0) {x++; y++; d=1;}
}
}
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
}
#include <stdio.h>
int m, n, c1=0, c0=0;
int a[101][101]= {};
int b[101][101]= {};
typedef struct
{
int x;
int y;
} grid;
grid queue[10000];
int f=-1, r=-1;
void enq(int x, int y)
{
if(x<1||x>m||y<1||y>n)
return;
a[x][y]=!a[x][y];
r++;
queue[r].x=x;
queue[r].y=y;
}
grid deq()
{
f++;
return queue[f];
}
void copy()
{
for(int i=1; i<=m; i++)
{
for(int j=1; j<=n; j++)
a[i][j]=b[i][j];
}
}
void bfs(int x, int y, int color)
{
enq(x,y);
while(f!=r)
{
grid g = deq();
x=g.x;
y=g.y;
if(a[x][y+1]==color)
{
enq(x,y+1);
}
if(a[x][y-1]==color)
{
enq(x,y-1);
}
if(a[x+1][y]==color)
{
enq(x+1,y);
}
if(a[x-1][y]==color)
{
enq(x-1,y);
}
}
}
int main()
{
scanf("%d %d", &m, &n);
for(int i=1; i<=m; i++)
{
for(int j=1; j<=n; j++)
{
scanf("%d", &a[i][j]);
b[i][j] = a[i][j];
}
}
for(int i=1; i<=m; i++)
{
for(int j=1; j<=n; j++)
{
if(a[i][j]==1)
{
bfs(i, j, 1);
c1++;
}
}
}
f=-1; r=-1;
copy();
for(int i=1; i<=m; i++)
{
for(int j=1; j<=n; j++)
{
if(a[i][j]==0)
{
bfs(i, j, 0);
c0++;
}
}
}
printf("%d %d", c0, c1);
}
#include <stdio.h>
int a[100][100]={};
int main()
{
int n, x, y=1, k=1, d=1;
scanf("%d", &n);
x=n;
while(k<=(n*n-n)/2+n)
{
a[x][y]=k++;
if(d==1)
{
x--;
y++;
if(x>n||y>n||x<1||y<1||a[x][y]!=0)
{
x=x+2; y--; d=2;
}
}
else if(d==2)
{
x++;
y--;
if(x>n||y>n||x<1||y<1||a[x][y]!=0)
{
x--; y=y+2; d=1;
}
}
}
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
printf("%d ", a[i][j]);
printf("\n");
}
}
*/
#include <stdio.h>
// 1+2+4+...+2^n+...+2+1 =2^(n+1)-1 + 2^n-1
int sq(int k)
{
int x=1;
for(int i=1; i<=k; i++)
{
x=x*2;
}
return x;
}
int main()
{
int n, k=1;
scanf("%d", &n);
printf("%d ", sq(5));
while(sq(k+1)+sq(k)-2<=n)
{
}
printf("%d", k);
}



