# -*- coding: utf-8 -*-

import sys

import math

import os

import itertools

import string

import heapq

import _collections

from collections import Counter

from collections import defaultdict

from functools import lru_cache

import bisect

import re

import queue

from decimal import *





class Scanner():

    @staticmethod

    def int():

        return int(sys.stdin.readline().rstrip())



    @staticmethod

    def string():

        return sys.stdin.readline().rstrip()



    @staticmethod

    def map_int():

        return [int(x) for x in Scanner.string().split()]



    @staticmethod

    def string_list(n):

        return [input() for i in range(n)]



    @staticmethod

    def int_list_list(n):

        return [Scanner.map_int() for i in range(n)]



    @staticmethod

    def int_cols_list(n):

        return [int(input()) for i in range(n)]





class Math():

    @staticmethod

    def gcd(a, b):

        if b == 0:

            return a

        return Math.gcd(b, a % b)



    @staticmethod

    def lcm(a, b):

        return (a * b) // Math.gcd(a, b)



    @staticmethod

    def divisor(n):

        res = []

        i = 1

        for i in range(1, int(n ** 0.5) + 1):

            if n % i == 0:

                res.append(i)

                if i != n // i:

                    res.append(n // i)

        return res



    @staticmethod

    def round_up(a, b):

        return -(-a // b)



    @staticmethod

    def is_prime(n):

        if n < 2:

            return False

        if n == 2:

            return True

        if n % 2 == 0:

            return False

        d = int(n ** 0.5) + 1

        for i in range(3, d + 1, 2):

            if n % i == 0:

                return False

        return True





def pop_count(x):

    x = x - ((x >> 1) & 0x5555555555555555)

    x = (x & 0x3333333333333333) + ((x >> 2) & 0x3333333333333333)

    x = (x + (x >> 4)) & 0x0f0f0f0f0f0f0f0f

    x = x + (x >> 8)

    x = x + (x >> 16)

    x = x + (x >> 32)

    return x & 0x0000007f





MOD = int(1e09) + 7

INF = int(1e15)





def solve():

    N = Scanner.int()

    A = Scanner.map_int()

    B = [0] * N

    for i in reversed(range(N)):

        j = 1

        p = 0

        while True:

            n = j * (i + 1) - 1

            if n >= N:

                break

            p += B[n]

            j += 1

        if A[i] != p % 2:

            B[i] += 1

    ans = sum([b > 0 for b in B])

    print(ans)

    if ans > 0:

        for i, b in enumerate(B):

            if b == 1:

                print(i + 1, end=' ')

        print('')





def main():

    # sys.stdin = open("sample.txt")

    solve()





if __name__ == "__main__":

    main()

# -*- coding: utf-8 -*-

import sys

import math

import os

import itertools

import string

import heapq

import _collections

from collections import Counter

from collections import defaultdict

from collections import deque

from functools import lru_cache

import bisect

import re

import queue

import decimal





class Scanner():

    @staticmethod

    def int():

        return int(sys.stdin.readline().rstrip())



    @staticmethod

    def string():

        return sys.stdin.readline().rstrip()



    @staticmethod

    def map_int():

        return [int(x) for x in Scanner.string().split()]



    @staticmethod

    def string_list(n):

        return [Scanner.string() for i in range(n)]



    @staticmethod

    def int_list_list(n):

        return [Scanner.map_int() for i in range(n)]



    @staticmethod

    def int_cols_list(n):

        return [Scanner.int() for i in range(n)]





MOD = int(1e09) + 7

INF = int(1e15)





def solve():

    N = Scanner.int()

    A = Scanner.map_int()

    A = [0] + A

    B = [0 for _ in range(N + 1)]

    for i in reversed(range(1, N + 1)):

        j = i

        t = 0

        while j < N + 1:

            t += B[j]

            j += i

        if A[i] != t % 2:

            B[i] = 1

    ans = sum(B)

    print(ans)

    if ans > 0:

        print(*[i for i, b in enumerate(B) if b == 1], sep=' ')





def main():

    # sys.setrecursionlimit(1000000)

    # sys.stdin = open("sample.txt")

    # T = Scanner.int()

    # for _ in range(T):

    #     solve()

    # print('YNeos'[not solve()::2])

    solve()





if __name__ == "__main__":

    main()

# -*- coding: utf-8 -*-
import sys
import math
import os
import itertools
import string
import heapq
import _collections
from collections import Counter
from collections import defaultdict
from functools import lru_cache
import bisect
import re
import queue
from decimal import *


class Scanner:
    @staticmethod
    def int():
        return int(sys.stdin.readline().rstrip())

    @staticmethod
    def string():
        return sys.stdin.readline().rstrip()

    @staticmethod
    def map_int():
        return [int(x) for x in Scanner.string().split()]

    @staticmethod
    def string_list(n):
        return [input() for i in range(n)]

    @staticmethod
    def int_list_list(n):
        return [Scanner.map_int() for i in range(n)]

    @staticmethod
    def int_cols_list(n):
        return [int(input()) for i in range(n)]


class Math:
    @staticmethod
    def gcd(a, b):
        if b == 0:
            return a
        return Math.gcd(b, a % b)

    @staticmethod
    def lcm(a, b):
        return (a * b) // Math.gcd(a, b)

    @staticmethod
    def divisor(n):
        res = []
        i = 1
        for i in range(1, int(n**0.5) + 1):
            if n % i == 0:
                res.append(i)
                if i != n // i:
                    res.append(n // i)
        return res

    @staticmethod
    def round_up(a, b):
        return -(-a // b)

    @staticmethod
    def is_prime(n):
        if n < 2:
            return False
        if n == 2:
            return True
        if n % 2 == 0:
            return False
        d = int(n**0.5) + 1
        for i in range(3, d + 1, 2):
            if n % i == 0:
                return False
        return True


def pop_count(x):
    x = x - ((x >> 1) & 0x5555555555555555)
    x = (x & 0x3333333333333333) + ((x >> 2) & 0x3333333333333333)
    x = (x + (x >> 4)) & 0x0F0F0F0F0F0F0F0F
    x = x + (x >> 8)
    x = x + (x >> 16)
    x = x + (x >> 32)
    return x & 0x0000007F


MOD = int(1e09) + 7
INF = int(1e15)


def solve():
    N = Scanner.int()
    A = Scanner.map_int()
    B = [0] * N
    for i in reversed(range(N)):
        j = 1
        p = 0
        while True:
            n = j * (i + 1) - 1
            if n >= N:
                break
            p += B[n]
            j += 1
        if A[i] != p % 2:
            B[i] += 1
    ans = sum([b > 0 for b in B])
    print(ans)
    if ans > 0:
        for i, b in enumerate(B):
            if b == 1:
                print(i + 1, end=" ")
        print("")


def main():
    # sys.stdin = open("sample.txt")
    solve()


if __name__ == "__main__":
    main()

# -*- coding: utf-8 -*-
import sys
import math
import os
import itertools
import string
import heapq
import _collections
from collections import Counter
from collections import defaultdict
from collections import deque
from functools import lru_cache
import bisect
import re
import queue
import decimal


class Scanner:
    @staticmethod
    def int():
        return int(sys.stdin.readline().rstrip())

    @staticmethod
    def string():
        return sys.stdin.readline().rstrip()

    @staticmethod
    def map_int():
        return [int(x) for x in Scanner.string().split()]

    @staticmethod
    def string_list(n):
        return [Scanner.string() for i in range(n)]

    @staticmethod
    def int_list_list(n):
        return [Scanner.map_int() for i in range(n)]

    @staticmethod
    def int_cols_list(n):
        return [Scanner.int() for i in range(n)]


MOD = int(1e09) + 7
INF = int(1e15)


def solve():
    N = Scanner.int()
    A = Scanner.map_int()
    A = [0] + A
    B = [0 for _ in range(N + 1)]
    for i in reversed(range(1, N + 1)):
        j = i
        t = 0
        while j < N + 1:
            t += B[j]
            j += i
        if A[i] != t % 2:
            B[i] = 1
    ans = sum(B)
    print(ans)
    if ans > 0:
        print(*[i for i, b in enumerate(B) if b == 1], sep=" ")


def main():
    # sys.setrecursionlimit(1000000)
    # sys.stdin = open("sample.txt")
    # T = Scanner.int()
    # for _ in range(T):
    #     solve()
    # print('YNeos'[not solve()::2])
    solve()


if __name__ == "__main__":
    main()

+from collections import deque -from decimal import * +import decimal -        return [input() for i in range(n)] +        return [Scanner.string() for i in range(n)] -        return [int(input()) for i in range(n)] - - -class Math: -    @staticmethod -    def gcd(a, b): -        if b == 0: -            return a -        return Math.gcd(b, a % b) - -    @staticmethod -    def lcm(a, b): -        return (a * b) // Math.gcd(a, b) - -    @staticmethod -    def divisor(n): -        res = [] -        i = 1 -        for i in range(1, int(n**0.5) + 1): -            if n % i == 0: -                res.append(i) -                if i != n // i: -                    res.append(n // i) -        return res - -    @staticmethod -    def round_up(a, b): -        return -(-a // b) - -    @staticmethod -    def is_prime(n): -        if n < 2: -            return False -        if n == 2: -            return True -        if n % 2 == 0: -            return False -        d = int(n**0.5) + 1 -        for i in range(3, d + 1, 2): -            if n % i == 0: -                return False -        return True - - -def pop_count(x): -    x = x - ((x >> 1) & 0x5555555555555555) -    x = (x & 0x3333333333333333) + ((x >> 2) & 0x3333333333333333) -    x = (x + (x >> 4)) & 0x0F0F0F0F0F0F0F0F -    x = x + (x >> 8) -    x = x + (x >> 16) -    x = x + (x >> 32) -    return x & 0x0000007F +        return [Scanner.int() for i in range(n)] -    B = [0] * N -    for i in reversed(range(N)): -        j = 1 -        p = 0 -        while True: -            n = j * (i + 1) - 1 -            if n >= N: -                break -            p += B[n] -            j += 1 -        if A[i] != p % 2: -            B[i] += 1 -    ans = sum([b > 0 for b in B]) +    A = [0] + A +    B = [0 for _ in range(N + 1)] +    for i in reversed(range(1, N + 1)): +        j = i +        t = 0 +        while j < N + 1: +            t += B[j] +            j += i +        if A[i] != t % 2: +            B[i] = 1 +    ans = sum(B) -        for i, b in enumerate(B): -            if b == 1: -                print(i + 1, end=" ") -        print("") +        print(*[i for i, b in enumerate(B) if b == 1], sep=" ") +    # sys.setrecursionlimit(1000000) +    # T = Scanner.int() +    # for _ in range(T): +    #     solve() +    # print('YNeos'[not solve()::2])