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: import sys
  input = sys.stdin.readline
  
  #n = int(input())
  #l = list(map(int, input().split()))
  
  '''
  a=[]
  b=[]
  for i in range():
      A, B = map(int, input().split())
      a.append(A)   
      b.append(B)'''
  
  n=int(input())
  x=input().strip("\n")
  cnt=0
  for i in range(n):
      if x[i:i+1]=="1":
          cnt+=1
      print("a")
  """
  #xx=list(x)
  pre=int(x,2)
  #print(pre)
  for i in range(n):
      if x[i:i+1]=="1":
          #t=-1
          ad=-2**(n-1-i)
      else:
          #t=1
          ad=2**(n-1-i)
      #cnt+=t
      now=pre+ad
      ans=0
      while now!=0:
          now%=bin(now).count("1")
          ans+=1
          
      print(ans)
      #cnt-=t"""
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"}]