#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
long long x[300000], y[300000], sumx[300000], sumy[300000];
bool check(int i, int j, int k)
{
	return ((x[k] - x[i]) * (y[j] - y[i]) - (y[k] - y[i]) * (x[j] - x[i])) < 0;
}
long long calc(int i, int j)
{
	return sumx[j] * y[i] - sumy[j] * x[i];
}
int b[400000];
long long f[300000], g[300000];
int main()
{
	int n, i, w, tmp, j, k;
	vector<int> ans;
	while (cin >> n) {
		if (n == 0) break;
		for (i = 1; i <= n; i ++) {
			scanf("%d%d", &j, &k);
                        x[i] = k; y[i] = j;
                    }
		sumx[n + 1] = sumy[n + 1] = 0;
		for (i = n; i >= 1; i --) {
			sumx[i] = sumx[i + 1] + x[i];
			sumy[i] = sumy[i + 1] + y[i];
		}
	      w = 0; tmp = 1;
		for (i = 1; i <= n - 1; i ++) {
			while (w > 1 && check(b[w - 1], b[w], i)) w --;
			b[++w] = i; 
			if (tmp > w) tmp = w;
			while (tmp < w && calc(b[tmp + 1], i + 1) > calc(b[tmp], i + 1)) tmp ++;
			while (tmp > 1 && calc(b[tmp - 1], i + 1) > calc(b[tmp], i + 1)) tmp --;
			f[i] = calc(b[tmp], i + 1); 
		}
		w = 0; tmp = 1;
		for (i = n; i > 1; i --) {
			while (w > 1 && check(b[w - 1], b[w], i)) w --;
			b[++w] = i;
			if (tmp > w) tmp = w;
			while (tmp < w && calc(b[tmp + 1], i) < calc(b[tmp], i)) tmp ++;
			while (tmp > 1 && calc(b[tmp - 1], i) < calc(b[tmp], i)) tmp --;
			g[i] = calc(b[tmp], i);
		}
		ans.clear();
		for (i = 1; i <= n - 1; i ++)
			if (g[i + 1] < f[i]) ans.push_back(i);
		printf("%d\n", ans.size());
		for (i = 0; i < ans.size(); i ++)
			printf("%d\n", ans[i]);
	}
     return 0;
}
