Problem:
Score : 300 points

Problem Statement

Given an integer N, find the base -2 representation of N.

Here, S is the base -2 representation of N when the following are all satisfied:

S is a string consisting of 0 and 1.

Unless S = 0, the initial character of S is 1.

Let S = S_k S_{k-1} ... S_0, then S_0 \times (-2)^0 + S_1 \times (-2)^1 + ... + S_k \times (-2)^k = N.

It can be proved that, for any integer M, the base -2 representation of M is uniquely determined.

Constraints

Every value in input is integer.

-10^9 \leq N \leq 10^9

Input

Input is given from Standard Input in the following format:

N

Output

Print the base -2 representation of N.

Sample Input 1

-9

Sample Output 1

1011

As (-2)^0 + (-2)^1 + (-2)^3 = 1 + (-2) + (-8) = -9, 1011 is the base -2 representation of -9.

Sample Input 2

123456789

Sample Output 2

11000101011001101110100010101

Sample Input 3

0

Sample Output 3

0

Solution in Lua (5.3.2) (judge verdict: Accepted)

local DBG = false
local function dbgpr(...)
    if DBG then
        io.write("[dbg]")
        print(...)
    end
end

local function baseneg2_tostr(t)
    if #t == 0 then
        return "0"
    else
        local r = {}
        for i=#t,1,-1 do
            table.insert(r, t[i])
        end
        return table.concat(r, "")
    end
end

local function baseneg2_to_dec(t)
    if #t == 0 then
        return 0
    else
        local n = 0
        for i=0,#t-1 do
            n = n + t[i+1]*(-2)^i
        end
        return math.floor(n)
    end
end

local function dec_to_baseneg2(n)
    dbgpr("dec_to_baseneg2", n)
    local t = {}
    local i = 1
    while n ~= 0 do
        local b = math.floor((-2)^i)
        local bb = math.floor((-2)^(i-1))
        dbgpr("ibnbb", i, b, n, bb)
        local q, r = math.abs(n // b) - 1, nil
        while true do
            dbgpr("rem", n, q, b*q, b*-q, bb)
            if n == b * q then
                q = q
                r = 0
                break
            elseif n == b * q + bb then
                q = q
                r = 1
                break
            elseif n == b * -q then
                q = -q
                r = 0
                break
            elseif n == b * -q + bb then
                q = -q
                r = 1
                break
            end
            q = q + 1
        end
        local rr = r * bb
        dbgpr("r rr", r, rr)
        n = n - rr
        dbgpr("newn", n)
        table.insert(t, r)
        i = i + 1
    end
    return t
end

local function test(n)
    local t = dec_to_baseneg2(n)
    --print("res", n, baseneg2_tostr(t))
    assert(n == baseneg2_to_dec(t))
end


test(0)
test(1)
test(-2)
test(-1)
test(-9)
test(123456789)

print(baseneg2_tostr(dec_to_baseneg2(io.read("n"))))