#include <iostream>
#include <vector>
#include <unordered_set>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> a(n);
vector<pair<int,int>> all;
unordered_set<int> used;
int begin = 0;
for(auto i = 0; i <n; i++) {
int v;
cin >> v;
a[i] = v;
if(used.find(v) != used.end()) {
all.emplace_back(begin+1, i - begin-1);
for(auto j = begin; j < i; j++) {
used.erase(a[j]);
if(a[j] == v) {
begin = j+1;
break;
}
}
}
used.insert(v);
}
all.emplace_back(begin+1, n-begin-1);
sort(all.begin(), all.end(), [](pair<int,int>& l, pair<int,int>& r)->bool {
if(l.second == r.second) {
return l.first < r.first;
}
return l.second > r.second;
});
auto top = all.front();
auto l = top.second;
int cnt = 0;
for(auto& v : all) {
if( v.second < l) {
break;
}
cnt++;
}
cout << cnt << endl;
for(auto i = 0; i < cnt; i++) {
auto& v = all[i];
cout << v.first << " " << v.first + v.second << endl;
}
}
// 64 位输出请用 printf("%lld")