func_code_string: #include <bits/stdc++.h>   using namespace std;   struct linearbasis {     long long base[64], flag, cnt;     bool add(long long x) {       for (int i = 62; ~i; i--) {         if (x >> i & 1) {           if (!base[i]) {             base[i] = x;             return false;           }           x ^= base[i];         }       }       flag = 1;       return true;     }     long long query_max(long long ans = 0) {       for (int i = 62; ~i; i--) {         if ((ans ^ base[i]) > ans) {           ans ^= base[i];         }       }       return ans;     }     long long query_min() {       for (int i = 0; i <= 62; i++) {         if (base[i]) {           return base[i];         }       }     }     void rebuild() {       cnt = 0;       for (int i = 62; i >= 0; i--) {         for (int j = i - 1; j >= 0; j--) {           if (base[i] >> j & 1) {             base[i] ^= base[j];           }         }       }       for (int i = 0; i <= 62; i++) {         if (base[i]) {           long long temp = base[i];           base[i] = 0;           base[cnt++] = temp;         }       }     }     long long query_k(long long k) {       k -= flag;       if (k == 0) return 0;       if (k >= 1ll << cnt) return -1;       long long ans = 0;       for (int i = 62; ~i; i--) {         if (k >> i & 1) {           ans ^= base[i];         }       }       return ans;     }     void init() { memset(base, 0, sizeof base), flag = cnt = 0; }   } a;   int prime[] = {2,  3,  5,  7,  11, 13, 17, 19, 23, 29,                  31, 37, 41, 43, 47, 53, 59, 61, 67};   const int mod = 1e9 + 7;   int main() {     int n, ans = 0;     cin >> n;     for (int i = 1; i <= n; i++) {       int x, value = 0;       cin >> x;       for (int j = 0; j < 19; j++) {         int cnt = 0;         while (x % prime[j] == 0) {           cnt++;           x /= prime[j];         }         if (cnt & 1) {           value |= 1 << j;         }       }       if (a.add(value)) {         ans++;       }     }     long long res = 1;     for (int i = 1; i <= ans; i++) {       res = res * 2 % mod;     }     printf( %lld n , res - 1);     return 0;   }   