#include <bits/stdc++.h>

using namespace std;

const double EPS = 1e-9;

double a[10010];
int n;

void output(vector<int> Q)
{
	sort(Q.begin(), Q.end());
	printf("%d\n", (int)Q.size());
	for (int i = 0; i < Q.size(); i++) {
		if (i > 0) printf(" ");
		printf("%d", Q[i]);
	}
	puts("");
}

void another()
{
	int idx = -1, c0 = -1, c1 = -1;
	for (int i = 1; i <= n; i++) {
		if (idx == -1 || a[idx] < a[i]) idx = i;
		if (c1 == -1 || a[c1] > a[i]) {
			c0 = c1;
			c1 = i;
		}
		else {
			if (c0 == -1 || a[c0] > a[i]) c0 = i;
		}
	}
	//cout << a[idx] << ' ' << a[c0] * a[c1] << endl;
	if ((c0 == -1 || c1 == -1) || a[idx] >= a[c0] * a[c1] - EPS) {
		printf("%d\n", 1);
		printf("%d\n", idx);
	}
	else {
		if (c0 > c1) swap(c0, c1);
		printf("%d\n", 2);
		printf("%d %d\n", c0, c1);
	}
}

int main()
{
	while (scanf("%d", &n) != EOF) {
		vector<int> A, B;
		int sign = 0;
		int extra = -1;
		for (int i = 1; i <= n; i++) {
			double x;
			scanf("%lf", &x);
			a[i] = x;
			if (x > +1) A.push_back(i);
			if (x < -1) B.push_back(i);
			if (x == -1) sign = i;
			if (-1 < x && x < 0.0 && (extra == -1 || a[extra] > a[i])) extra = i;
		}
		if (sign) B.push_back(sign);
		if (B.size() & 1) {
			if (A.size() == 0 && B.size() == 1) {
				another();
			}
			else {
				///
				int idx = 0;
				for (int i = 0; i < B.size(); i++) {
					if (a[B[idx]] < a[B[i]]) idx = i;
				}
				vector<int> Q;
				for (int &x : A) Q.push_back(x);
				if (extra != -1 && a[extra] * a[B[idx]] > 1.0 + EPS) {	
					for (int &x : B) Q.push_back(x);
					Q.push_back(extra);
				}
				else {	
					for (int i = 0; i < B.size(); i++) {
						if (i == idx) continue;
						Q.push_back(B[i]);
					}
				}
				output(Q);
			}
		}
		else {
			if (A.size() == 0 && B.size() == 0) {
				another();
			}
			else {
				vector<int> Q;
				for (int &x : A) Q.push_back(x);
				for (int &x : B) Q.push_back(x);
				output(Q);
			}
		}
	}
	return 0;
}

