// 1430
//import java.util.Scanner;
//
//public class Main
//{
// public static void main(String[] args)
// {
// Scanner input = new Scanner(System.in);
// int n = input.nextInt();
// int[] num = new int[n];
// int a = 0;
// int b = 0;
// for(int i=0; i<n; i++)
// {
// a = input.nextInt();
// num[i] = a;
// }
// int m = input.nextInt();
// int[] qs = new int[m];
// int[] ans = new int[m];
// for(int i=0; i<m; i++)
// {
// b = input.nextInt();
// qs[i] = b;
// }
// for(int i=0; i<m; i++)
// {
// ans[i] = 0;
// for(int j=0; j<n; j++)
// {
// if(num[j] == qs[i])
// {
// ans[i] = 1;
// }
// }
// }
// for(int i=0; i<m; i++)
// {
// System.out.print(ans[i] + " ");
// }
// }
//}
// 1430 using BOOLEAN[] == less memory, faster
//import java.util.Scanner;
//
//public class Main
//{
// public static void main(String[] args)
// {
// Scanner input = new Scanner(System.in);
// int n = input.nextInt();
// boolean[] arr1 = new boolean[10000001];
// for(int i=0; i<n; i++)
// {
// int a = input.nextInt();
// arr1[a] = true;
// }
// int m = input.nextInt();
// for(int i=0; i<m; i++)
// {
// int b = input.nextInt();
// if(arr1[b]==true) System.out.print("1 ");
// else System.out.print("0 ");
// }
// }
//}
// 1416 2진수 변환 (진수변화할때 많이 쓰임)
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int count = 0;
int[] arr = new int[35];
for(int i=0; ; i++)
{
arr[count]=n%2;
count++;
n = n / 2;
if(n==0) break;
}
/*
* by the logic of 2진수,
* keep dividing the number by 2 and get the remainder
* it will be either 1 or 0, save it in a list
* and at the end (when number reaches 0 bc of int division), flip it
*/
for(int i = count - 1; i >= 0; i--)
{
System.out.print(arr[i]);
}
}
}
/*
1bit 0 or 1 (2) 0 ~ 1
2bit 00 01 10 11 (4) 0 ~ 3
3bit (8) 0 ~ 7
...
n-bit 2^n ( 0 ~ 2^n-1)
2^31-1 = 2147483647 int maximum
== can make int[32] to include every single int
*/