func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 20;   int n;   int a[N];   int b[N];   vector<string> ans;   int get(int s, int e) {     int res = 0;     for (int i = s; i < e; ++i) {       res = res * 10 + b[i];     }     return res;   }   string getstr(int x, int y, int z, int l) {     string s =   ;     for (int i = 0; i < x; ++i) {       s += b[i] +  0 ;     }     s +=  . ;     for (int i = x; i < y; ++i) {       s += b[i] +  0 ;     }     s +=  . ;     for (int i = y; i < z; ++i) {       s += b[i] +  0 ;     }     s +=  . ;     for (int i = z; i < l; ++i) {       s += b[i] +  0 ;     }     return s;   }   int check(int x, int y, int z, int l) {     if (x > 3) return 0;     if (y - x > 3) return 0;     if (z - y > 3) return 0;     if (l - z > 3) return 0;     if (b[0] == 0 && x != 1 || b[x] == 0 && y - x != 1 ||         b[y] == 0 && z - y != 1 || b[z] == 0 && l - z != 1) {       return 0;     }     int num[4] = {get(0, x), get(x, y), get(y, z), get(z, l)};     for (int i = 0; i < 4; ++i) {       if (num[i] < 0 || num[i] >= 256) {         return 0;       }     }     return 1;   }   int cntsplit(int l) {     int res = 0;     for (int i = 1; i < l; ++i) {       if (i - 0 > 3) break;       for (int j = i + 1; j < l && j <= i + 3; ++j) {         if (j - i > 3) break;         for (int k = j + 1; k < l && k <= j + 3; ++k) {           if (k - j > 3) break;           if (check(i, j, k, l)) {             ans.push_back(getstr(i, j, k, l));             ++res;           }         }       }     }     return res;   }   int cnt(int d) {     int l = 2 * d;     int res = 0;     for (int i = 0; i < d; ++i) {       b[l - i - 1] = b[i];     }     res += cntsplit(l);     --l;     for (int i = 0; i < d - 1; ++i) {       b[l - i - 1] = b[i];     }     res += cntsplit(l);     return res;   }   void dfs(int d, int msk) {     if (msk == (1 << n) - 1) {       cnt(d);     }     if (d >= 6) return;     for (int i = 0; i < n; ++i) {       b[d] = a[i];       dfs(d + 1, msk | (1 << i));     }   }   int main() {     scanf( %d , &n);     for (int i = 0; i < n; ++i) {       scanf( %d , a + i);     }     if (n > 6) {       puts( 0 );       return 0;     }     dfs(0, 0);     printf( %d n , ans.size());     for (int i = 0; i < ans.size(); ++i) {       printf( %s n , ans[i].c_str());     }     return 0;   }   