output_description: If a good set of choices does not exist, print `-1`.
  
  If a good set of choices exists, print one such set of choices in the
  following format:
  
      
      
      M
      b_1 b_2 ... b_M
      
  
  where M denotes the number of boxes that will contain a ball, and b_1,\ b_2,\
  ...,\ b_M are the integers written on these boxes, in any order.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      a_1 a_2 ... a_N
attempt: import glob
  import numpy as np
  
  
  # 問題ごとのディレクトリのトップからの相対パス
  REL_PATH = "ABC\\134\\D"
  
  # テスト用ファイル置き場のトップ
  TOP_PATH = "C:\\AtCoder"
  
  
  class Common:
  
      problem = []
      index = 0
  
      def __init__(self, rel_path):
          self.rel_path = rel_path
  
      def initialize(self, path):
          file = open(path)
          self.problem = file.readlines()
          self.index = 0
          return
  
      def input_data(self):
          try:
              IS_TEST
              self.index += 1
              return self.problem[self.index - 1]
  
          except NameError:
              return input()
  
      def resolve(self):
          pass
  
      def exec_resolve(self):
          try:
              IS_TEST
              for path in glob.glob(TOP_PATH + "\\" + self.rel_path + "/*.txt"):
                  print("Test: " + path)
                  self.initialize(path)
                  self.resolve()
                  print("\n\n")
          except NameError:
              self.resolve()
  
  
  class D(Common):
  
      def resolve(self):
  
          box_num = int(self.input_data())
          remain = [int(i) for i in self.input_data().split()]
  
          boxes = np.zeros(box_num, dtype=np.int)
          for box in range(box_num, 0, -1):
              sum = np.max(boxes[box - 1 :: box])
              if sum % 2 != remain[box - 1]:
                  boxes[box - 1] = 1
  
          print(str(np.sum(boxes)))
          for i in range(box_num):
              if boxes[i] == 1:
                  print(str(i + 1), end=" ")
  
  
  solver = D(REL_PATH)
  solver.exec_resolve()
  
problem_description: Statement
  
  There are N empty boxes arranged in a row from left to right. The integer i is
  written on the i-th box from the left (1 \leq i \leq N).
  
  For each of these boxes, Snuke can choose either to put a ball in it or to put
  nothing in it.
  
  We say a set of choices to put a ball or not in the boxes is good when the
  following condition is satisfied:
  
    * For every integer i between 1 and N (inclusive), the total number of balls contained in the boxes with multiples of i written on them is congruent to a_i modulo 2.
  
  Does there exist a good set of choices? If the answer is yes, find one good
  set of choices.
samples: [{"input": "3\n    1 0 0", "output": "1\n    1\n    \n\nConsider putting a ball only in the box with 1 written on it.\n\n  * There are three boxes with multiples of 1 written on them: the boxes with 1, 2, and 3. The total number of balls contained in these boxes is 1.\n  * There is only one box with a multiple of 2 written on it: the box with 2. The total number of balls contained in these boxes is 0.\n  * There is only one box with a multiple of 3 written on it: the box with 3. The total number of balls contained in these boxes is 0.\n\nThus, the condition is satisfied, so this set of choices is good.\n\n* * *"}, {"input": "5\n    0 0 0 0 0", "output": "0\n    \n\nPutting nothing in the boxes can be a good set of choices."}]