def solve(n):

    ret=""

    i=0

    while True:

        if i%2==1 and n%2==1: #奇数ビットが1のとき

            n+=2

        ret+=str(n%2)

        n//=2

        if n==0:

            break

        i+=1

    return ret[-1::-1] #逆順に結合されているので反転



n=int(eval(input()))

if n==0:

    print((0))

elif n<0: #負数は左ビットシフトして一文字落とす

    print((solve(n*(-2))[:-1]))

else:

    print((solve(n)))

def solve(n):

    ret=""

    i=0 #n%2が元の何ビット目にあたるか

    while True:

        if i%2==1 and n%2==1: #奇数ビットが1のとき

            n+=2

        ret+=str(n%2)

        n//=2 #1ビット右にずらす

        i+=1

        if n==0:

            break

    return ret[-1::-1] #逆順に結合されているので反転



n=int(eval(input()))

if n==0:

    print((0))

elif n<0: #負数は左ビットシフト、一文字落として表示

    print((solve(n*(-2))[:-1]))

else:

    print((solve(n)))
def solve(n):
    ret = ""
    i = 0
    while True:
        if i % 2 == 1 and n % 2 == 1:  # 奇数ビットが1のとき
            n += 2
        ret += str(n % 2)
        n //= 2
        if n == 0:
            break
        i += 1
    return ret[-1::-1]  # 逆順に結合されているので反転


n = int(eval(input()))
if n == 0:
    print((0))
elif n < 0:  # 負数は左ビットシフトして一文字落とす
    print((solve(n * (-2))[:-1]))
else:
    print((solve(n)))

def solve(n):
    ret = ""
    i = 0  # n%2が元の何ビット目にあたるか
    while True:
        if i % 2 == 1 and n % 2 == 1:  # 奇数ビットが1のとき
            n += 2
        ret += str(n % 2)
        n //= 2  # 1ビット右にずらす
        i += 1
        if n == 0:
            break
    return ret[-1::-1]  # 逆順に結合されているので反転


n = int(eval(input()))
if n == 0:
    print((0))
elif n < 0:  # 負数は左ビットシフト、一文字落として表示
    print((solve(n * (-2))[:-1]))
else:
    print((solve(n)))

-    i = 0 +    i = 0  # n%2が元の何ビット目にあたるか -        n //= 2 +        n //= 2  # 1ビット右にずらす +        i += 1 -        i += 1 -elif n < 0:  # 負数は左ビットシフトして一文字落とす +elif n < 0:  # 負数は左ビットシフト、一文字落として表示