output_description: Print the base -2 representation of N.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
attempt: import bisect
  def put(a,b):
      l=max(len(a),len(b))
      a="0"*l+a
      b="0"*l+a
  	s=""
      for i in range(-1,-l-1,-1):
        s+=a[i]+b[i]
      print(s[-1::-1])
  
  def quad(i):
      s=""
      while i>0:
          s+=str(i%4)
          i//=4
      return s[-1::-1]
  
  l=[0,1]
  for i in range(1,18):
      l+=[4**i+j for j in l]
  
  n=int(input())
  for i in range(len(l)):
      if (n-l[i])%2==0:
          ind=bisect.bisect_left(l,(l[i]-n)//2)
          if l[i]-2*l[ind]==n:
              put(quad(l[i]),quad(l[ind]))
              break
  
problem_description: 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.
samples: [{"input": "-9", "output": "1011\n    \n\nAs (-2)^0 + (-2)^1 + (-2)^3 = 1 + (-2) + (-8) = -9, `1011` is the base -2\nrepresentation of -9.\n\n* * *"}, {"input": "123456789", "output": "11000101011001101110100010101\n    \n\n* * *"}, {"input": "0", "output": "0"}]