#include <bits/stdc++.h>

using namespace std;

int n, cifra, a[1000005], maks_cifra, menjanje ,pozicija, pozicija2 ,najdesnja[15];
bool ima_cifru [15] , g;
char c;
string broj,res;

void brute(){
for (int i = 1; i <= n; i++){
        cin >> c;
        broj.push_back(c);
    }
    for (int i = 0; i < n; i++){
        res.push_back('0');
    }
    for (int i = 0; i < n-1; i++){
        for (int j = i+1; j < n; j++){
            swap(broj[j] , broj[i]);
            res = max(res, broj);
            swap(broj[j] , broj[i]);
        }
    }
    for (int i = 0; i < n; i++){
        cout << res[i] << " ";
    }
    cout << endl;
}

void vijanje_poena(){
    for (int i = 1; i <= n; i++){
        scanf("%d" ,&cifra);
        a[i] = cifra;
        ima_cifru [cifra] = true;
    }
    for (int i = n; i > 0; i--){
        //cout << a[i] << endl;
        if (najdesnja[a[i]] == 0){
            najdesnja[a[i]] = i;
            //cout << i << endl;
        }
    }
    /*
    for (int i = 0; i < 10; i++){
        cout << najdesnja[i] << " ";
    }
    */
    if (n==2){
        cout << a[2] << " " << a[1] << endl;
    }
    else {
        for (int i = 1; i <= n and g == false; i++){
            pozicija = i;
//          cout << " a[i] = " << a[i] << endl;
            for (int j = 9; j >= 0; j--){
                if (j > a[i] and ima_cifru[j-1] == true){
                    if (menjanje <= j-1){
                        menjanje = j-1;
                        pozicija2 = najdesnja[j-1];
                    }
                    g = true;
                }
            }
        }
        cout << pozicija << " " << pozicija2 << endl;
        if (g == false){
            swap(a[n],a[n-1]);
        }
        else swap(a[pozicija], a[pozicija2]);

        for (int i = 1; i <= n; i++){
            cout << a[i] << " ";
        }
        cout << endl;
    }
    return;
}

int main(){
    cin >> n;
    if (n <= 1000) {
        brute();
    }
    else {
        vijanje_poena();
    }

    return 0;
}