#include <bits/stdc++.h>
using namespace std;
const int inf = 1 << 30;
const int maxn = 4e5 + 5;
int n;
struct data {
  int x, y;
} da[maxn];
int cmp(data a, data b) { return a.x < b.x; }
map<int, int> dd;
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &da[i].x), da[i].y = i;
  sort(da + 1, da + n + 1, cmp);
  if (n == 2) return puts("1"), 0;
  for (int i = 2; i <= n; i++) ++dd[da[i].x - da[i - 1].x];
  int tp = dd.size();
  for (int i = 1; i <= n; i++) {
    int tt = tp;
    if (i == 1) {
      --dd[da[i + 1].x - da[i].x];
      if (dd[da[i + 1].x - da[i].x] == 0) --tp;
    } else if (i == n) {
      --dd[da[i].x - da[i - 1].x];
      if (dd[da[i].x - da[i - 1].x] == 0) --tp;
    } else {
      --dd[da[i].x - da[i - 1].x];
      --dd[da[i + 1].x - da[i].x];
      ++dd[da[i + 1].x - da[i - 1].x];
      if (dd[da[i].x - da[i - 1].x] == 0) --tp;
      if (da[i].x - da[i - 1].x != da[i + 1].x - da[i].x &&
          dd[da[i + 1].x - da[i].x] == 0)
        --tp;
      if (dd[da[i + 1].x - da[i - 1].x] == 1) ++tp;
    }
    if (tp == 1) return printf("%d\n", da[i].y), 0;
    if (i == 1) {
      ++dd[da[i + 1].x - da[i].x];
    } else if (i == n) {
      ++dd[da[i].x - da[i - 1].x];
    } else {
      ++dd[da[i].x - da[i - 1].x];
      ++dd[da[i + 1].x - da[i].x];
      --dd[da[i + 1].x - da[i - 1].x];
    }
    tp = tt;
  }
  puts("-1");
  return 0;
}
