#include <bits/stdc++.h>
using namespace std;
vector<int> l;
struct segTree {
int size = 1;
vector<int> tree;
void make (int n) {
while (size < n) {
size *= 2;
}
tree.assign(2*size-1, 0);
for (int i = size -1; i < size-1+n; i++) {
tree[i] = l[i-size+1];
}
build (0, size-1, 0);
}
int build (int tl, int tr, int ind) {
if (tl == tr) return tree[ind];
int mid = (tl + tr) / 2;
return tree[ind] = max(build(tl, mid, ind*2+1), build(mid+1, tr, ind*2+2));
}
int update (int tl, int tr, int ind, int target, int val) {
if (tl > target || target > tr) return 0;
if (tl == tr && tl == target) return tree[ind] = val;
int mid = (tl + tr) / 2;
return tree[ind] = max(update(tl, mid, 2*ind+1, target, val), update(mid+1, tr, 2*ind+2, target, val));
}
int lookup (int tl, int tr, int ind, int l, int r) {
if (tl > r || l > tr) return 0;
if (l <= tl && tr <= r) return tree[ind];
int mid = (tl + tr) / 2;
return max(lookup(tl, mid, 2*ind+1, l, r), lookup(mid+1, tr, 2*ind+2, l, r));
}
};
int main() {
int length, vision;
cin >> length >> vision;
l.assign(2*vision+1+length, 0);
for (int i = 0; i < length; i++) {
cin >> l[i];
}
segTree tree;
tree.make(length);
for (int i = 0; i < length; i++) {
int left = max(0, i - vision);
int right = min(length - 1, i + vision);
int val = tree.lookup(0, tree.size - 1, 0, left, right);
if (l[i] == val) {
cout << i + 1 << endl;
break;
}
}
return 0;
}