{-
もし２進での桁がわかっているなら、2,8,32..を足してから
普通の２進表示をすれば、下から偶数ビットを反転したものになってるはず。
だから、-２進したときの桁がわかりさえすればいい。
マイナス２進のｎ桁での表示可能範囲はなにか？
-}

--init rate terms
series::Int->Int->Int->Int
series _ _ 0 = 0
series i r n = i*(div (r^n - 1) (r - 1))

--under 0
under0::Int->Int
under0 n = (snd.head) (dropWhile (\(v,_)->n<v) [(-series 2 4 i,2*i)|i<-[0..]])

--over1
over1::Int->Int
over1 n = (snd.head) (dropWhile (\(v,_)->v<n)  [(series 1 4 i,(i*2)-1)|i<-[0..]])

get_digit::Int->Int
get_digit n = if n <= 0 then under0 n else over1 n

positise::Int->Int
positise n = let dig = get_digit n in
          n + (series 2 4 (div dig 2))

bin::Int->Int->[Bool]
bin 0 _   = []
bin dig n = if (2^(dig-1))<=n then True:(bin (dig-1) (n - 2^(dig-1))) else False:(bin (dig-1) n)

positise2::[Bool]->[Bool]
positise2 ls = map (\(fl,v)->if mod fl 2 == 0 then not v else v) (zip [1..] (reverse ls))


solver::Int->String
solver 0 = "0"
solver n = let dig = get_digit n in
          (reverse.(map (\b->if b then '1' else '0')).positise2.(bin dig).positise) n


main::IO()
main=do
  nc<-getLine
  let n = read nc
  putStr ((solver n)++"\n")
