import java.io.*;
import java.util.*;

public class smith_pk_wa3 {

	void solve() throws IOException {
		int n = nextInt();
		int[] a = new int[n];
		boolean wasNotZero = false;
		boolean wasNotMinusOne = false;
		boolean wasNotOne = false;
		for (int i = 0; i < n; i++) {
			a[i] = nextInt();
			if (a[i] != 0) {
				wasNotZero = true;
			}
			if (a[i] != 1) {
				wasNotOne = true;
			}
			if (a[i] != -1) {
				wasNotMinusOne = true;
			}
		}
		if (n == 1 || !wasNotZero || !wasNotOne
				|| (n % 2 == 0 && !wasNotMinusOne)) {
			out.println("Impossible");
			return;
		}
		if (n == 2 && a[0] == a[1]) {
			out.println("Impossible");
			return;
		}
		boolean sign = true;
		ArrayList<Integer> zeros = new ArrayList<Integer>();
		for (int i = 0; i < n; i++) {
			if (a[i] == 0) {
				zeros.add(i);
			}
			if (a[i] < 0) {
				sign = !sign;
			}
		}
		if (zeros.size() != 0) {
			if (sign == false) {
				out.println(zeros.size());
				for (int i : zeros) {
					out.print(i + 1 + " ");
				}
			} else {
				out.println(n - zeros.size());
				for (int i = 0; i < n; i++) {
					if (!zeros.contains(i)) {
						out.print(i + 1 + " ");
					}
				}
			}
			return;
		}
		if (sign) {
			int min = 0;
			for (int i = 0; i < n; i++) {
				if (Math.abs(a[i]) < Math.abs(a[min])) {
					min = i;
				}
			}
			if (a[min] < 0) {
				out.println(1);
				out.println(min + 1);
			} else {
				out.println(n - 1);
				for (int i = 0; i < n; i++) {
					if (i != min) {
						out.print(i + 1 + " ");
					}
				}
			}
		} else {
			int min = -1;
			for (int i = 0; i < n; i++) {
				if (a[i] < 0 && (min == -1 || a[i] > a[min]))
					min = i;
			}
			out.println(n - 1);
			for (int i = 0; i < n; i++) {
				if (i != min) {
					out.print(i + 1 + " ");
				}
			}
		}
	}

	BufferedReader br;
	StringTokenizer st;
	PrintWriter out;

	void run() {
		try {
			// br = new BufferedReader(new InputStreamReader(System.in));
			// out = new PrintWriter(System.out);

			br = new BufferedReader(new FileReader(new File("smith.in")));
			out = new PrintWriter("smith.out");
			solve();

			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		new smith_pk_wa3().run();
	}

	String nextToken() throws IOException {
		while ((st == null) || !st.hasMoreTokens())
			st = new StringTokenizer(br.readLine());
		return st.nextToken();
	}

	int nextInt() throws NumberFormatException, IOException {
		return Integer.parseInt(nextToken());
	}

	double nextDouble() throws NumberFormatException, IOException {
		return Double.parseDouble(nextToken());
	}

	long nextLong() throws NumberFormatException, IOException {
		return Long.parseLong(nextToken());
	}
}
