func_code_string: #include <bits/stdc++.h>   using namespace std;   long long n, m;   long long ban[300000];   long long cnt[300000];   long long used[300000];   long long dp[300000];   long long g[300000];   long long fi;   vector<long long> vec[300000];   vector<long long> GCD[300000];   vector<long long> ans;   long long gcd(long long a, long long b) {     if (!a) return b;     return gcd(b % a, a);   }   void update(long long v) {     used[v] = 1;     if (GCD[v].size() == 0) return;     dp[v] += GCD[gcd(v, m)].size();     long long mx = 0;     for (int i = 0; i < vec[v].size(); i++) {       long long to = vec[v][i];       if (!used[to]) update(to);       if (dp[to] > mx) mx = dp[to];     }     dp[v] += mx;   }   long long bin_pow(long long x, long long y) {     if (y == 1) return x;     if (y % 2 == 0) {       long long z = bin_pow(x, y / 2);       return (z * z) % m;     } else       return (x * bin_pow(x, y - 1)) % m;   }   int main() {     ios_base::sync_with_stdio(0);     cin >> n >> m;     if (m == 1) {       cout << 1 << endl;       cout << 0 << endl;       return 0;     }     for (int i = 0; i < n; i++) {       long long x;       cin >> x;       ban[x] = 1;     }     for (int i = 1; i < m; i++) {       g[i] = gcd(i, m);       if (g[i] == 1) fi++;       if (!ban[i]) GCD[gcd(i, m)].push_back(i);     }     for (int i = 1; i < m; i++)       for (int j = 2 * i; j < m; j += i) vec[i].push_back(j);     int v = 0;     for (int i = 1; i < m; i++) {       if (!used[i]) update(i);       if (dp[i] > dp[g[v]]) v = GCD[i][0];     }     while (v) {       for (int i = 0; i < GCD[g[v]].size(); i++) ans.push_back(GCD[g[v]][i]);       int w = 0;       for (int i = 0; i < vec[g[v]].size(); i++) {         if (dp[vec[g[v]][i]] > dp[g[w]]) w = GCD[vec[g[v]][i]][0];       }       if (!w)         break;       else         v = w;     }     cout << ans.size() + 1 - ban[0] << endl;     if (!ans.empty()) cout << ans[0] <<    ;     for (int i = 0; i < ans.size() - 1; i++) {       long long x = ans[i];       long long y = ans[i + 1];       x /= g[x];       y /= g[y];       long long a = y * bin_pow(x, fi - 1);       a %= m;       a *= g[ans[i + 1]] / g[ans[i]];       cout << a % m <<    ;     }     if (!ban[0]) cout << 0 << endl;   }   