#include<bits/stdc++.h>
using namespace std;

template<typename X, typename Y>
bool chmax(X& a, Y b) { return (a < b) ? a = b, 1 : 0; }

template<typename X, typename Y>
bool chmin(X& a, Y b) { return (a > b) ? a = b, 1 : 0; }

using ll = long long;

const int N = 1e5+5;

int n;

struct State {
    int len, link;
    map<int, int> next;
} sam[2 * N];

int sz, last;
int cnt[2 * N], pos[2 * N];

void init() {
    sam[0].len = 0;
    sam[0].link = -1;
    sz = 1; last = 0;
}

void extend(int c, int idx) {
    int u = sz++;
    sam[u].len = sam[last].len + 1;
    cnt[u] = 1; pos[u] = idx;
    int p = last;
    while (p != -1 && !sam[p].next.count(c)) {
        sam[p].next[c] = u;
        p = sam[p].link;
    }
    if (p == -1) sam[u].link = 0;
    else {
        int q = sam[p].next[c];
        if (sam[p].len + 1 == sam[q].len) sam[u].link = q;
        else {
            int v = sz++;
            sam[v].len = sam[p].len + 1;
            sam[v].link = sam[q].link;
            sam[v].next = sam[q].next;
            cnt[v] = pos[v] = 0;
            while (p != -1 && sam[p].next[c] == q) {
                sam[p].next[c] = v;
                p = sam[p].link;
            }
            sam[q].link = sam[u].link = v;
        }
    }
    last = u;
}

void solve() {
    cin >> n;
    init();
    for (int i = 1; i <= n; i++) {
        int x; cin >> x;
        extend(x, i);
    }
    vector<int> order(sz);
    for (int i = 0; i < sz; i++) order[i] = i;
    sort(order.begin(), order.end(), [](int x, int y) {
        return sam[x].len > sam[y].len;
    });
    for (int u : order) {
        int p = sam[u].link;
        if (p != -1) {
            cnt[p] += cnt[u];
            chmax(pos[p], pos[u]);
        }
    }
    int best_freq = 0, best_len = 0, best_pos = -1;
    for (int i = 1; i < sz; i++) {
        int f = cnt[i], l = sam[i].len, p = pos[i];
        if (chmax(best_freq, f)) best_len = l, best_pos = p;
        else if (best_freq == f) {
            if (chmax(best_len, l)) best_pos = p;
            else if (best_len == l) chmax(best_pos, p);
        }
    }
    cout << best_pos - best_len + 1 << ' ' << best_pos << '\n';
}

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL);

    #define TASK "BAI4"
    if (fopen(TASK".INP", "r")) {
        freopen(TASK".INP", "r", stdin);
        freopen(TASK".OUT", "w", stdout);
    }

    int tests = 1; // cin >> tests;
    while (tests--) solve();

    #ifdef LOCAL
    cerr << "\nTime elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
    #endif
    return 0;
}