#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;
}
