func_code_string: #include <bits/stdc++.h>   using namespace std;   namespace number_theory {   int isprime(long long int a) {     for (int i = 2; i * i <= a; i++) {       if (a % i == 0) return 0;     }     return 1;   }   long long int binpow(long long a, long long b) {     long long res = 1;     while (b > 0) {       if (b & 1) res = res * a;       a = a * a;       b >>= 1;     }     return res;   }   long long int binmod(long long int a, long long int b, long long int m) {     a %= m;     long long res = 1;     while (b > 0) {       if (b & 1) res = res * a % m;       a = a * a % m;       b >>= 1;     }     return res;   }   int powersimple(int a, int b) {     int res = 1;     while (b > 0) {       if (b & 1) {         res = (res * a);         b--;       }       a = (a * a);       b >>= 1;     }     return res;   }   void SieveOfEratosthenes(long long int n, bool prime[], bool primesquare[],                            long long int a[]) {     for (long long int i = 2; i <= n; i++) prime[i] = true;     for (long long int i = 0; i <= (n * n + 1); i++) primesquare[i] = false;     prime[1] = false;     for (long long int p = 2; p * p <= n; p++) {       if (prime[p] == true) {         for (long long int i = p * 2; i <= n; i += p) prime[i] = false;       }     }     long long int j = 0;     for (long long int p = 2; p <= n; p++) {       if (prime[p]) {         a[j] = p;         primesquare[p * p] = true;         j++;       }     }   }   long long int countDivisors(long long int n) {     if (n == 1) return 1;     bool prime[n + 1], primesquare[n * n + 1];     long long int a[n];     SieveOfEratosthenes(n, prime, primesquare, a);     long long int ans = 1;     for (long long int i = 0;; i++) {       if (a[i] * a[i] * a[i] > n) break;       long long int cnt = 1;       while (n % a[i] == 0) {         n = n / a[i];         cnt = cnt + 1;       }       ans = ans * cnt;     }     if (prime[n])       ans = ans * 2;     else if (primesquare[n])       ans = ans * 3;     else if (n != 1)       ans = ans * 4;     return ans;   }   long long int ncr(long long int n, long long int k) {     long long int ans = 1;     if (k > n - k) {       k = n - k;     }     for (int i = 1; i <= k; i++) {       ans *= (n - i + 1), ans /= i;     }     return ans;   }   int power(int r, int y, int p) {     int res = 1;     r = r % p;     while (y > 0) {       if (y & 1) res = (res * r) % p;       y = y >> 1;       r = (r * r) % p;     }     return res;   }   int modInverse(int n, int p) { return power(n, p - 2, p); }   long long int divisionmodulo(long long int a, long long int b,                                long long int mod) {     return (a * binpow(b, mod - 2)) % mod;   }   long long int gcd(long long int a, long long int b) {     if (b == 0)       return a;     else       return gcd(b, a % b);   }   int countoccurrences(int arr[], int n, int x) {     int res = 0;     for (int i = 0; i < n; i++)       if (x == arr[i]) res++;     return res;   }   }  // namespace number_theory   using namespace number_theory;   void crossoff(bool* flag, long long int prime, long long int maxi) {     for (long long int i = prime * prime; i <= maxi; i += prime) {       flag[i] = false;     }   }   long long int getnextprime(bool* flag, long long int prime,                              long long int maxi) {     int next = prime + 1;     while (next <= maxi && !flag[next]) {       next++;     }     return next;   }   vector<long long int> sieveoferatosthenes(long long int maxi) {     bool flag[maxi + 1];     vector<long long int> primenum;     primenum.push_back(2);     flag[0] = false;     flag[1] = false;     for (long long int i = 2; i <= maxi; i++) flag[i] = true;     int prime = 2;     while (prime <= sqrt(maxi)) {       crossoff(flag, prime, maxi);       prime = getnextprime(flag, prime, maxi);       primenum.push_back(prime);     }     return primenum;   }   long long int pair_sum(long long int arr[], long long int size,                          long long int x) {     long long int arr_0 = 0;     long long int arr_1 = size - 1;     long long int count = 0;     while (arr_0 < arr_1) {       if (arr[arr_0] + arr[arr_1] <= x) {         count = count + (arr_1 - arr_0);         arr_0++;       } else {         arr_1--;       }     }     return count;   }   map<long long int, long long int> xs, ys;   long long int calc(long long int n) {     long long int calculation = 5 * (binpow(2, n) - 1);     return calculation;   }   string inttobit(long long int n) {     string bit =   ;     while (n != 0) {       char val = 48 + (n % 2);       bit = bit + val;       n /= 2;     }     return bit;   }   int main() {     long long int t;     cin >> t;     while (t--) {       long long int n;       cin >> n;       string s;       cin >> s;       long long int flag = 0;       set<long long int> element;       long long int id2 = -1, id3 = -1, id5 = -1, id7 = -1;       long long int maxid = -1;       long long int count2 = 0, count3 = 0, count5 = 0, count7 = 0;       for (long long int i = 0; i < s.length(); i++) {         long long int num = s[i] - 48;         element.insert(num);         if (num == 2 && id2 == -1) id2 = i;         if (num == 3 && id3 == -1) id3 = i;         if (num == 5 && id5 == -1) id5 = i;         if (num == 7 && id7 == -1) id7 = i;         if (num == 2) count2++;         if (num == 3) count3++;         if (num == 5) count5++;         if (num == 7) count7++;         if (num == 0) {           maxid = max(i, maxid);         }         if (num == 1) {           cout << 1 << endl;           cout << num << endl;           flag = 1;           break;         }         if (num == 4) {           cout << 1 << endl;           cout << num << endl;           flag = 1;           break;         }         if (num == 6) {           cout << 1 << endl;           cout << num << endl;           flag = 1;           break;         }         if (num == 8) {           cout << 1 << endl;           cout << num << endl;           flag = 1;           break;         }         if (num == 9) {           cout << 1 << endl;           cout << num << endl;           flag = 1;           break;         }       }       if (flag == 1) continue;       if (element.find(2) != element.end() && element.find(7) != element.end()) {         cout << 2 << endl;         if (id2 < id7)           cout << 27 << endl;         else           cout << 72 << endl;       } else if (element.find(5) != element.end() &&                  element.find(7) != element.end()) {         cout << 2 << endl;         if (id5 > id7)           cout << 75 << endl;         else           cout << 57 << endl;       } else if (count2 >= 2) {         cout << 2 << endl;         cout << 22 << endl;       } else if (count3 >= 2) {         cout << 2 << endl;         cout << 33 << endl;       } else if (count7 >= 2) {         cout << 2 << endl;         cout << 77 << endl;       } else if (count5 >= 2) {         cout << 2 << endl;         cout << 55 << endl;       } else if (element.find(5) != element.end() &&                  element.find(2) != element.end()) {         cout << 2 << endl;         if (id2 > id5)           cout << 52 << endl;         else           cout << 25 << endl;       } else if (element.find(5) != element.end() &&                  element.find(3) != element.end() && id5 > id3) {         cout << 2 << endl;         if (id5 > id3) cout << 35 << endl;       } else if (element.find(2) != element.end() &&                  element.find(3) != element.end() && id2 > id3) {         cout << 2 << endl;         if (id2 > id3) cout << 32 << endl;       }     }     return 0;   }   