#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef unsigned long long ll;
int n,m;
int a[1000005];
int b[2005];
int l=1,r=1;
int minl,minr,minmoney=1e9;
bool check()
{
if(r-l+1<m){
return 0;
}
int tf=1;
for(int i=1;i<=m;i++){
if(b[i]==0){
tf=0;
break;
}
}
return tf;
}
void read(int &x)
{
int fh=1;
char s;
x=0;
s=getchar();
if(s<'0'||s>'9'){
if(s=='-'){
fh=-1;
}
}else{
x=int(s-'0');
}
while(s=getchar()){
if(s>='0'&&s<='9'){
x*=10;
x+=(int)(s-'0');
}else{
break;
}
}
x*=fh;
}
int main()
{
read(n);//快读
read(m);
for(int i=1;i<=n;i++){
read(a[i]);
}
for(r=1;r<=n;r++){//考虑以r为结尾的若干张画
if(l==r||a[l]!=a[r]){
b[a[r]]++;//无替换,这个名师的画的个数+1
}
while(l!=r&&a[l]==a[r]){
l++;//出现了这个名师的画,那么之前的就可以替换掉了
}
if(check()==1){//如果m个名师的画都有
if(r-l+1<minmoney){//如果长度小于以前
minl=l;//赋值
minr=r;
minmoney=r-l+1;
b[a[l++]]--;//b[a[l]]--,l++;
//如果后面仍以这个l为开头,则不可能比现在的minmoney少
}
}
}
printf("%d %d",minl,minr);
return 0;
}