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

int L[100100], R[100100], a[100100];

int dp[20][100100];

int get(int L, int R)
{
	if (L > R) return -1;
	int k = log(R - L + 1) / log(2);
	return min(dp[k][L], dp[k][R - (1 << k) + 1]);
}

int main()
{
	ios::sync_with_stdio(false);
	int n;
	while (cin >> n) {
		for (int i = 1; i <= n; i++) {
			cin >> a[i];
			dp[0][i] = a[i];
		}
		memset(L, 0, sizeof(L));
		memset(R, 0, sizeof(R));
		stack<int> S;
		for (int i = 1; i <= n; i++) {
			while (!S.empty() && a[S.top()] < a[i]) {
				R[S.top()] = i;
				S.pop();
			}
			S.push(i);
		}
		while (!S.empty()) S.pop();
		for (int i = n; i >= 1; i--) {
			while (!S.empty() && a[S.top()] < a[i]) {
				L[S.top()] = i;
				S.pop();
			}
			S.push(i);
		}
		/*
		for (int i = 1; i <= n; i++) {
			cout << L[i] << ' ' << R[i] << '\n';
		}
		*/
		for (int i = 1; i < 20; i++) {
			for (int j = 1; j + (1 << i) - 1 <= n; j++) {
				dp[i][j] = min(dp[i - 1][j], dp[i - 1][j + (1 << (i - 1))]);
			}
		}
		vector<int> ans;
		for (int i = 1; i <= n; i++) {
			int flag = 1;
			if (L[i] && R[i]) {
				int x = get(L[i], i);
				int y = get(i, R[i]);
				if (a[i] - max(x, y) < 150000) flag = 0;
			}
			if (!L[i] && R[i]) {
				int y = get(i, R[i]);
				if (a[i] - y < 150000) flag = 0;
			}
			if (L[i] && !R[i]) {
				int x = get(L[i], i);
				if (a[i] - x < 150000) flag = 0;
			}
			if (flag) ans.push_back(i);
		}
		for (int i = 0; i < ans.size(); i++) {
			if (i > 0) printf(" ");
			printf("%d", ans[i]);
		}
		puts("");
	}
	return 0;
}