#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 5;
int t, n, a[N], fq[N], v[N];
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> t >> n;
for(int i = 1;i<=n;i++){
cin >> a[i];
}
int mxpf = 0, mxsf = 0;
for(int i = 1;i<=n;i++){
if(v[a[i]]){
mxpf = i - 1;
break;
}
v[a[i]] = 1;
}
memset(v, 0, sizeof v);
for(int i = n;i>=1;i--){
if(v[a[i]]){
mxsf = i + 1;
break;
}
v[a[i]] = 1;
}
mxsf = max(mxsf, mxpf + 1);
multiset<int> s;
auto add = [&](int c){
if(s.find(fq[c]) != s.end()) s.erase(s.find(fq[c]));
fq[c]++;
s.insert(fq[c]);
};
auto rem = [&](int c){
if(s.find(fq[c]) != s.end()) s.erase(s.find(fq[c]));
fq[c]--;
s.insert(fq[c]);
};
for(int i = mxsf;i<=n;i++) add(a[i]);
int mn = INT_MAX;
pair<int, int> ans;
if(*s.rbegin() == 1) ans = {1, mxsf - 1}, mn = mxsf - 1;
for(int i = 1;i<=mxpf;i++){
add(a[i]);
while(*s.rbegin() >= 2){
rem(a[mxsf]);
mxsf++;
}
if(mxsf - i - 1 < mn){
mn = mxsf - i - 1;
ans = {i + 1, mxsf - 1};
}
}
cout << ans.first - 1 << ' ' << ans.second - 1;
}