#include<bits/stdc++.h>
using namespace std;

#define ff              first
#define ss              second
#define int             long long
#define pb              push_back
#define mp              make_pair
#define pii             pair<int,int>
#define vi              vector<int>
#define mii             map<int,int>
#define pqb             priority_queue<int>
#define pqs             priority_queue<int,vi,greater<int> >
#define setbits(x)      __builtin_popcountll(x)
#define zrobits(x)      __builtin_ctzll(x)
#define M               1000000007
#define inf             1e18
#define ps(x,y)         fixed<<setprecision(y)<<x
#define mk(arr,n,type)  type *arr=new type[n];
#define w(x)            int x; cin>>x; while(x--)
#define ld				long double
#define nline 			"\n"
// memset(matrix, 0, sizeof(matrix));

inline int mod(int x) {return (x % M + M) % M;}
inline int add(int a, int b) {return mod(mod(a) + mod(b));}
inline int sub(int a, int b) {return mod(mod(a) - mod(b) + M);}
inline int mul(int a, int b) {return mod(mod(a) * mod(b));}
inline int power(int a, int p) {int r = 1; while (p) { if (p & 1) r = mul(r, a); a = mul(a, a); p >>= 1; } return r;}
inline int modInv(int a) {return power(a, M - 2);}
inline int divi(int a, int b) {return mul(a, modInv(b));}
inline int fact(int a) {int r = 1; while (a) { r = mul(r, a); a--; } return r;}
inline int ncr(int n, int r) {return mul(mul(fact(n), modInv(fact(n - r))), modInv(fact(r)));}
inline int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b);}
inline int ceil(int x, int y) {if (x % y == 0) {return x / y;} return x / y + 1;}
void c_p_c()
{
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#endif
}
bool helper(vector<int> &nums, int si, int sum, vector<vector<int> > &dp) {
	for (int i = 0; i <= sum; i++) {
		dp[nums.size()][i] = 0;
	}
	for (int i = 0; i <= nums.size(); i++) {
		dp[i][0] = 1;
	}
	for (int i = nums.size() - 1; i >= 0; i--) {
		for (int j = 1; j <= sum; j++) {
			int include = 0, exclude;
			if (nums[i] <= j) {
				include = dp[i + 1][j - nums[i]];
			}
			exclude = dp[i + 1][j];
			dp[i][j] = include or exclude;
		}
	}
	return dp[0][sum];
}
bool canPartition(vector<int>& nums) {

	int total = 0;
	for (int i = 0; i < nums.size(); i++) {
		total += nums[i];
	}
	if (total & 1)
		return false;

	vector<vector<int> > dp(nums.size() + 1, vector<int>(total / 2 + 1, -1));
	return helper(nums, 0, total / 2, dp);
}


void solve()
{
	int n; cin >> n;

	vi arr(n);
	for (int i = 0; i < n; i++)
	{
		cin >> arr[i];
	}

	bool ans = canPartition(arr);
	if (ans == 0)
	{
		cout << 0 << nline;
		return;
	} else {
		int k = 0;
		while (k < n)
		{
			vi brr;
			brr.clear();
			for (int i = 0; i < n; i++)
			{
				if (i == k)
				{
					;
				} else {
					brr.pb(arr[i]);
				}

			}
			if (canPartition(brr) == 0)
			{
				cout << 1 << nline;
				cout << k + 1 << nline;
				return;
			}
			k++;
		}

	}
}
int32_t main()
{
	c_p_c();
	// w(t)
	// {
	// 	solve();

	// }
	solve();

	return 0;
}