#include <bits/stdc++.h>
using namespace std;
void Read(int &x) {
  int F = 1;
  x = 0;
  char ch = getchar();
  while ('9' < ch || ch < '0') {
    if (ch == '-') F = -1;
    ch = getchar();
  }
  while ('0' <= ch && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  x *= F;
}
int N, X, Y;
int A[100005];
struct Seg_Tree {
  int Tree[4 * 100005];
  void Build(int Root, int l, int r) {
    if (l == r) {
      Tree[Root] = A[l];
      return;
    }
    int Mid = l + r >> 1;
    Build(Root << 1, l, Mid);
    Build(Root << 1 | 1, Mid + 1, r);
    Tree[Root] = min(Tree[Root << 1], Tree[Root << 1 | 1]);
  }
  int Get_Min(int Root, int l, int r, int quel, int quer) {
    if (l > quer || r < quel) return 99999999;
    if (quel <= l && r <= quer) return Tree[Root];
    int Mid = l + r >> 1;
    return min(Get_Min(Root << 1, l, Mid, quel, quer),
               Get_Min(Root << 1 | 1, Mid + 1, r, quel, quer));
  }
} seg;
int main() {
  Read(N);
  Read(X);
  Read(Y);
  for (int i = 1; i <= N; i++) Read(A[i]);
  seg.Build(1, 1, N);
  for (int i = 1; i <= N; i++) {
    if (seg.Get_Min(1, 1, N, max(i - X, 0), max(i - 1, 0)) >= A[i] &&
        seg.Get_Min(1, 1, N, min(i + 1, N), min(i + Y, N)) >= A[i]) {
      cout << i << endl;
      return 0;
    }
  }
  return 0;
}
