#include <bits/stdc++.h>
#define MAXN 1500000
using namespace std;
vector<int>pos[MAXN + 1];
int main() {
    int m, n;
    cin>>n>>m;
    for(int i=0; i<=n; i++)
        pos[i].push_back(-1);
    for(int i=0; i<n; i++) {
        int x;
        cin>>x;
        pos[x].push_back(i);
    }
    for(int i=0; i<=n; i++)
        pos[i].push_back(n);
    for(int ans=0; ans<=n; ans++) {
        for(int i=1; i<pos[ans].size(); i++) {
            if (pos[ans][i] - pos[ans][i-1] > m) {
                cout<<ans<<endl;
                return 0;
            }
        }
    }
    cout<<n+1<<endl;
}

#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 1500010

using namespace std;

int n, m;
int tr[4*N], a[N], ans;

void ins(int i, int x, int k, int l, int r){
	if (l==r){
		tr[i]+=k;
		return;
	}
	int mid=(l+r)/2;
	if (x<=mid) ins(i<<1, x, k, l, mid);
	else ins(i<<1|1, x, k, mid+1, r);
	if (!tr[i<<1] || !tr[i<<1|1]) tr[i]=0;
	else tr[i]=1;
}

int find(int i, int l, int r){
	if (l==r) return l;
	int mid=(l+r)/2;
	if (!tr[i<<1]) return find(i<<1, l, mid);
	else return find(i<<1|1, mid+1, r);
}

int main(){
	scanf("%d%d", &n, &m);
	for (int i=1; i<=n; i++) scanf("%d", &a[i]);
	for (int i=1; i<=m; i++) ins(1, a[i], 1, 0, n);
	ans=find(1, 0, n);
	for (int i=m+1; i<=n; i++){
		ins(1, a[i], 1, 0, n);
		ins(1, a[i-m], -1, 0, n);
		ans=min(find(1, 0, n), ans);
	}
	printf("%d", ans);
	
	return 0;
}