#include<bits/stdc++.h>
//#pragma GCC optimize ("Ofast, no-stack-protector, unroll-loops, fast-math, O3")
using namespace std;
const char el ='\n';
const char sp = ' ';
typedef long long ll;
#define ios {ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);}
#define mp(x, y) make_pair(x, y)
#define popCnt(x) (__builtin_popcountll(x))
#define pb(x) push_back(x);
#define F first
#define S second
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int rand(int l , int r)
{
    return uniform_int_distribution<int>(l , r)(rng) ;
}
vector<int> lp,primes;
static void sieveLinear(int N) {
    lp = vector<int>(N+1);// lp[i] = least prime divisor of i
    primes = vector<int>();
    for (int i = 2; i <= N; ++i) {
        if (lp[i] == 0) {
            primes.push_back(i);
            lp[i] = i;
        }
        int curLP = lp[i];
        for (int p : primes)// all primes smaller than or equal my lowest prime divisor
            if (p > curLP || p * 1ll * i > N)
                break;
            else
                lp[p * i] = p;
    }
}
int main() {
    ios;
//    freopen("input.txt", "r", stdin);
//    freopen("output.txt", "w", stdout);
    int n;
    vector<int> arr(n);
    cin >> n;
    for(int i = 0; i < n; i++){
        cin >> arr[i];
    }
    sieveLinear(1e6);
    vector<vector<int>> factorization(n);
    vector<int> cnt(1e6 + 1);
    for(int x : arr){
        cnt[x]++;
    }
    for(int i = 2; i <= 1e6; i++){
        for(int j = 2 * i ; j <= 1e6; j+= i){
            cnt[i] += cnt[j];
        }
    }
    for(int i = 0; i < n; i++){
        int cur = arr[i];
        while(cur > 1){
            int curLp = lp[cur];
            while(cur % curLp == 0)
                cur /= curLp;
            factorization[i].push_back(curLp);
        }
        int all = n;
        for(int j = 1 ; j < 1 << factorization[i].size(); j++){
            int mul = 1;
            for(int k = 0 ; k < factorization[i].size(); k++){
                if((1<<k) & j){
                    mul *= factorization[i][k];
                }
            }
            if(popCnt(j) % 2){
                all -= cnt[mul];
            }
            else all += cnt[mul];
        }
        if(all > 0){
            // answer found;
            for(int j = 0; j < n; j++){
                if(__gcd(arr[i],arr[j]) == 1){
                    cout<< i + 1 << sp << j + 1 << el;
                    return 0;
                }
            }
        }
    }

    return 0;
}