import Control.Monad
import Data.List
import Data.Maybe

main=do
    n<-readLn::IO Int
    putStrLn $ f2 n

f2 :: Int -> String
f2 n
    | n==0 = "0"
    | n>0  = f1 n
    | True = tail $ f1 n

f1 n
    | n==0 = "0"
    | even n = f (n`div`2) "0"
    | True   = f (n`div`2) "1"

f n r
    | n==0 = r
    | n`mod`4 == 0 = f ((n+1)`div`4) ('0':'0':r)
    | n`mod`4 == 1 = f ((n+1)`div`4) ('1':'1':r)
    | n`mod`4 == 2 = f ((n+1)`div`4) ('1':'0':r)
    | n`mod`4 == 3 = f ((n+1)`div`4) ('0':'1':r)
