﻿#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <cmath>
#include <ctime>
#include <utility>
#include <iomanip>
#include <queue>
#include <deque>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <list>
#include <array>
#include <cassert>
#include <numeric>
#include <bitset>

#define fast ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define files freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout)
#define sleep(_time) while ((double)clock() / (double)CLOCKS_PER_SEC < _time)

using namespace std;

const int MAX_N = 100;
const int MAX_W = 2000;

const int INF = 2e9;

int a[MAX_N + 1];

signed main() {
    fast;

#ifdef LOCAL
    freopen("input.txt", "r", stdin);
#endif

    int n;
    cin >> n;

    for (int i = 1; i <= n; ++i) {
        cin >> a[i];
    }
    int s = 0;
    for (int i = 1; i <= n; ++i) {
        s += a[i];
    }
    vector<vector<bool>> dp(n + 1, vector<bool>(MAX_N * MAX_W + 1));
    dp[0][0] = true;
    for (int i = 1; i <= n; ++i) {
        for (int j = 0; j <= MAX_N * MAX_W; ++j) {
            if ((dp[i - 1][j]) || ((j >= a[i]) && (dp[i - 1][j - a[i]]))) {
                dp[i][j] = true;
            }
        }
    }
    if ((s & 1) || (!dp[n][s >> 1])) {
        cout << 0;
        return 0;
    }
    int ind;
    int min = INF;
    for (int i = 1; i <= n; ++i) {
        if ((a[i] & -a[i]) < min) {
            min = a[i] & -a[i];
            ind = i;
        }
    }
    cout << 1 << '\n' << ind;

    return 0;
}