You are given an array a consisting of n integers a_1, a_2, ..., a_n.

Your problem is to find such pair of indices i, j (1 ≤ i < j ≤ n) that lcm(a_i, a_j) is minimum possible.

lcm(x, y) is the least common multiple of x and y (minimum positive number such that both x and y are divisors of this number).

Input

The first line of the input contains one integer n (2 ≤ n ≤ 10^6) — the number of elements in a.

The second line of the input contains n integers a_1, a_2, ..., a_n (1 ≤ a_i ≤ 10^7), where a_i is the i-th element of a.

Output

Print two integers i and j (1 ≤ i < j ≤ n) such that the value of lcm(a_i, a_j) is minimum among all valid pairs i, j. If there are multiple answers, you can print any.

Examples

Input


5
2 4 8 3 6


Output


1 2


Input


5
5 2 11 3 7


Output


2 4


Input


6
2 5 10 1 10 2


Output


1 4
#include <bits/stdc++.h>
using namespace std;
int a[10000005];
int pos[10000005];
int poss[10000005];
int gcd(int a, int b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long getLCM(long long a, long long b) {
  if (a < b) swap(a, b);
  return a * b / gcd(a, b);
}
int main() {
  int m;
  cin >> m;
  int maxn = 0;
  long long minLCM = 0x3fffffffffffffff;
  int ansx = 0, ansy = 0;
  for (int i = 0; i < m; i++) {
    int t;
    cin >> t;
    maxn = max(maxn, t);
    a[t]++;
    if (a[t] >= 2)
      poss[t] = i;
    else
      pos[t] = i;
  }
  for (int i = 1; i <= maxn; i++) {
    long long x = -1, y = -1;
    for (int j = i; j <= maxn; j += i) {
      if (a[j] > 0) {
        if (x == -1)
          x = j;
        else if (y == -1)
          y = j;
        if (a[j] > 1 && y == -1) y = j;
      }
    }
    if (x != -1 && y != -1) {
      long long t = getLCM(x, y);
      if (t < minLCM) {
        minLCM = t;
        ansx = pos[x];
        if (x == y)
          ansy = poss[y];
        else
          ansy = pos[y];
      }
    }
  }
  if (ansx > ansy) swap(ansx, ansy);
  cout << ansx + 1 << ' ' << ansy + 1;
}
