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: # -*- coding: utf-8 -*-
  
  
  def pop_count(nbin):
      return nbin.count("1")
  
  
  def bin2dec(nbin):
      nbin_str = "".join(nbin)
      return int(nbin_str, 2)
  
  
  def reverse(nbin, dig):
      nbin_list = list(nbin)
      if nbin_list[dig] == "0":
          nbin_list[dig] = "1"
      else:
          nbin_list[dig] = "0"
      return nbin_list
  
  
  def f(nbin):
      counter = 0
      nbin_str = "".join(nbin)
      while nbin_str != "0b0":
          new_n = bin2dec(nbin_str) % pop_count(nbin_str)
          nbin_str = bin(new_n)
          counter += 1
      return counter
  
  
  N = int(input())
  X = "0b" + input()
  
  for i in range(N):
      print(f(reverse(X, i + 2)))
  
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"}]