func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, a[12], b[20], c[5], u[15], vs, hh;   string v[2033333];   void add(int o, int s, int k) {     if (s > k) return;     if (o == 4) {       if (k - s > 2) return;       if (k - s && b[s] == 0) return;       if (k - s == 2 && b[s] * 100 + b[s + 1] * 10 + b[k] >= 256) return;       string st =   ;       for (int i = 1; i <= c[1]; i++) st += char(b[i] + 48);       st +=  . ;       for (int i = c[1] + 1; i <= c[1] + c[2]; i++) st += char(b[i] + 48);       st +=  . ;       for (int i = c[1] + c[2] + 1; i < s; i++) st += char(b[i] + 48);       st +=  . ;       for (int i = s; i <= k; i++) st += char(b[i] + 48);       v[++vs] = st;       return;     }     c[o] = 1;     add(o + 1, s + 1, k);     if (!b[s]) return;     c[o] = 2;     add(o + 1, s + 2, k);     if (b[s] * 100 + b[s + 1] * 10 + b[s + 2] >= 256) return;     c[o] = 3;     add(o + 1, s + 3, k);   }   void cty(int k) {     for (int i = 1; i <= n; i++) {       b[k] = a[i];       if (!u[i]) hh++;       u[i]++;       if (k >= 2) {         do {           if (hh != n) break;           for (int j = 1; j <= k; j++) b[(k << 1) - j + 1] = b[j];           add(1, 1, k << 1);           if (k != 2) {             for (int j = 1; j < k; j++) b[(k << 1) - j] = b[j];             add(1, 1, (k << 1) - 1);           }         } while (0);       }       if (k < 6) cty(k + 1);       u[i]--;       if (!u[i]) hh--;     }   }   int main() {     scanf( %d , &n);     for (int i = 1; i <= n; i++) scanf( %d , a + i);     cty(1);     sort(v + 1, v + vs + 1);     printf( %d n , vs);     for (int i = 1; i <= vs; i++) {       int l = v[i].size();       for (int j = 0; j < l; j++) printf( %c , v[i][j]);       printf(  n );     }     return 0;   }   