output_description: Print N lines. The i-th line should contain the value f(X_i).
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      X
attempt: N = int(input())
  X = input()
  B = X.count("1")
  # print(B, 'B')
  
  base_mod_1 = [1 for i in range(N)]  # 2^i mod B+1
  if B > 1:
      base_mod_2 = [1 for i in range(N)]  # 2^i mod B-1
  
  for i in range(1, N):
      base_mod_1[i] = (base_mod_1[i - 1] * 2) % (B + 1)
      if B > 1:
          base_mod_2[i] = (base_mod_2[i - 1] * 2) % (B - 1)
  
  
  def num(A):
      b = 1
      r = 0
      for i in range(len(A)):
          r += b * int(A[-i - 1])
          b *= 2
      return r
  
  
  def f(n):
      global call
      call += 1
      bit = 0
      m = n
      while m > 0:
          if m % 2 == 1:
              bit += 1
          m //= 2
      next_n = n % bit
      if next_n > 0:
          f(next_n)
  
  
  x = num(X)
  x1 = x % (B + 1)
  if B > 1:
      x2 = x % (B - 1)
  # print('x', len(X))
  
  for i in range(N):
      call = 0
      if X[i] == "0":
          y = (x1 + base_mod_1[-i - 1]) % (B + 1)
          R = B + 1
          call = 1
      else:
          if B > 1:
              y = (x2 - base_mod_2[-i - 1]) % (B - 1)
              R = B - 1
              call = 1
          else:
              y = 0
      #  print(y, '+', call)
      if y > 0:
          f(y)
      print(call)
  
problem_description: Statement
  
  Let \mathrm{popcount}(n) be the number of `1`s in the binary representation of
  n. For example, \mathrm{popcount}(3) = 2, \mathrm{popcount}(7) = 3, and
  \mathrm{popcount}(0) = 0.
  
  Let f(n) be the number of times the following operation will be done when we
  repeat it until n becomes 0: "replace n with the remainder when n is divided
  by \mathrm{popcount}(n)." (It can be proved that, under the constraints of
  this problem, n always becomes 0 after a finite number of operations.)
  
  For example, when n=7, it becomes 0 after two operations, as follows:
  
    * \mathrm{popcount}(7)=3, so we divide 7 by 3 and replace it with the remainder, 1.
    * \mathrm{popcount}(1)=1, so we divide 1 by 1 and replace it with the remainder, 0.
  
  You are given an integer X with N digits in binary. For each integer i such
  that 1 \leq i \leq N, let X_i be what X becomes when the i-th bit from the top
  is inverted. Find f(X_1), f(X_2), \ldots, f(X_N).
samples: [{"input": "3\n    011", "output": "2\n    1\n    1\n    \n\n  * X_1 = 7, which will change as follows: 7 \\rightarrow 1 \\rightarrow 0. Thus, f(7) = 2.\n  * X_2 = 1, which will change as follows: 1 \\rightarrow 0. Thus, f(1) = 1.\n  * X_3 = 2, which will change as follows: 2 \\rightarrow 0. Thus, f(2) = 1.\n\n* * *"}, {"input": "23\n    00110111001011011001110", "output": "2\n    1\n    2\n    2\n    1\n    2\n    2\n    2\n    2\n    2\n    2\n    2\n    2\n    2\n    2\n    2\n    2\n    2\n    2\n    2\n    2\n    1\n    3"}]