"use strict";
    
const main = arg => {
    arg = arg.trim().split("\n");
    const N = parseInt(arg[0]);
    const A = arg[1].split(" ").map(n=>parseInt(n));
    
    // 逆から考える
    A.reverse();
    
    let answer = [];
    
    for(let i in A) {
        // 大きい順から考えているので、(N - i)の倍数は(N - i)のみしか存在しない
        // (N - i)の倍数の総和が偶数ということは、何も入れないということ

        let alreadyIn = 0;
        
        for(let j=i-1; j>=0; j--) {
            if((N - j) % (N - i) === 0 && A[j] === 1) {
                alreadyIn++;
            }
        }
        
        // (N - i)の倍数で既に入れてる総和 % 2が偶数の場合
        if(alreadyIn % 2 === 0 || i < Math.floor(N / 2)) {
            if(A[i] !== 0) {
				answer.push(N - i);
            }
        } else {
            if(A[i] === 0) {
                answer.push(N - i);
            }
        }
    }

    const cnt = answer.length;
    answer.sort((a,b)=>a-b);

    console.log(cnt);
    console.log(answer.join("\n"));
}
main(require('fs').readFileSync('/dev/stdin', 'utf8'));
