func_code_string: #include <bits/stdc++.h>   using namespace std;   const int INF = 1000000000;   const long long mod = 998244353;   inline long long add(long long v1, long long v2) {     v1 += v2;     if (v1 >= mod) v1 -= mod;     if (v1 < 0) v1 += mod;     return v1;   }   inline long long mul(long long v1, long long v2) { return v1 * v2 % mod; }   inline long long mypow(long long v, long long t) {     long long res = 1;     while (t) {       if (t & 1) res = res * v % mod;       v = v * v % mod;       t >>= 1;     }     return res;   }   inline void bye() {     puts(  );     exit(0);   }   const int N = 303030;   int a[N];   long long cnt[N];   long long dp[8][N];   long long fac[N], ifac[N];   long long C(int v1, int v2) {     if (v1 < v2) return 0;     return mul(fac[v1], mul(ifac[v2], ifac[v1 - v2]));   }   int main() {     int n;     scanf( %d , &n);     for (int i = 1; i <= n; i++) {       scanf( %d , a + i);       cnt[a[i]]++;     }     fac[0] = 1;     for (int i = 1; i < N; i++) {       fac[i] = fac[i - 1] * i % mod;     }     ifac[N - 1] = mypow(fac[N - 1], mod - 2);     for (int i = N - 2; i >= 0; i--) {       ifac[i] = ifac[i + 1] * (i + 1) % mod;     }     for (int i = 1; i < N; i++) {       for (int j = i * 2; j < N; j += i) {         cnt[i] += cnt[j];       }     }     for (int i = 1; i < 8; i++) {       for (int j = N - 1; j >= 1; j--) {         dp[i][j] = C(cnt[j], i);         for (int k = j * 2; k < N; k += j) {           dp[i][j] = add(dp[i][j], -dp[i][k]);         }       }       if (dp[i][1]) {         printf( %d n , i);         return 0;       }     }     puts( -1 );     return 0;   }   