func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 5;   bool et[N];   int n;   int mob[N];   vector<int> d[N];   int cnt[N];   bool get(int x) {     int coprime = 0;     for (auto p : d[x]) coprime += cnt[p] * mob[p];     return coprime > 0;   }   void update(int x, int val) {     for (auto p : d[x]) cnt[p] += val;   }   int main() {     for (int i = 1; i < N; i++) {       for (int j = i; j < N; j += i) d[j].push_back(i);       if (i == 1)         mob[i] = 1;       else if ((i / d[i][1]) % d[i][1] == 0)         mob[i] = 0;       else         mob[i] = -mob[i / d[i][1]];     }     cin >> n;     for (int i = 0; i < n; i++) {       int x;       cin >> x;       et[x] = 1;     }     for (int i = 1; i < N; i++) {       for (auto x : d[i])         if (i != x) et[x] |= et[i];     }     long long ans = 0;     stack<int> s;     for (int i = N - 1; i >= 1; i--) {       if (et[i] == 0) continue;       while (get(i) > 0) {         ans = max(ans, 1LL * i * s.top());         update(s.top(), -1);         s.pop();       }       update(i, 1);       s.push(i);     }     cout << ans;   }   