#include <bits/stdc++.h>
using namespace std;
long long sqr(long long x) { return x * x; }
template <class T>
void checkmax(T &t, T x) {
  if (x > t) t = x;
}
template <class T>
void checkmin(T &t, T x) {
  if (x < t) t = x;
}
template <class T>
void _checkmax(T &t, T x) {
  if (t == -1 || x > t) t = x;
}
template <class T>
void _checkmin(T &t, T x) {
  if (t == -1 || x < t) t = x;
}
long long power_mod(long long a, int b, int p) {
  long long ret = 1;
  for (; b; b >>= 1) {
    if (b & 1) ret = ret * a % p;
    a = a * a % p;
  }
  return ret;
}
vector<string> ans;
int n, bn;
int a[20];
char buf[55];
long long pw[18];
bool v[10];
int getLen(int x) {
  int res = 0;
  while (x) {
    x /= 10;
    res++;
  }
  return res;
}
void dfs(int i, int cur, int dot, int len) {
  if (i > len) return;
  if (cur >= 256) return;
  if (dot > 3) return;
  if (i == len) {
    buf[bn] = 0;
    if (dot == 3) ans.push_back(buf);
    return;
  }
  if (len - i <= 3 - dot) return;
  if (!(a[i] == 0 && cur == -1 && i + 1 != len)) {
    int tmp = cur;
    if (tmp == -1) {
      tmp = a[i];
    } else {
      tmp = tmp * 10 + a[i];
    }
    buf[bn++] = a[i] + '0';
    dfs(i + 1, tmp, dot, len);
    bn--;
  }
  bool ok = 1;
  if (dot == 3) ok = 0;
  if (!(cur == -1 || cur * 10 + a[i] < 256)) ok = 0;
  if (ok) {
    buf[bn++] = a[i] + '0';
    buf[bn++] = '.';
    dfs(i + 1, -1, dot + 1, len);
    bn -= 2;
  }
}
int co[10];
void gao(int len) {
  bn = 0;
  fill(co, co + 10, 0);
  for (int i = 0; i < (int)(len); i++) co[a[i]]++;
  for (int i = 0; i < (int)(10); i++)
    if ((co[i] && !v[i]) || (!co[i] && v[i])) return;
  dfs(0, -1, 0, len);
}
int main() {
  pw[0] = 1;
  for (int i = 1; i < 18; i++) pw[i] = pw[i - 1] * 10;
  scanf("%d", &n);
  for (int i = 0; i < (int)(n); i++) {
    int x;
    scanf("%d", &x);
    v[x] = 1;
  }
  for (int x = 0; x <= 1000000; x++) {
    for (int len = getLen(x); len <= 6; len++) {
      for (int j = 0; j < (int)(len); j++) {
        a[j] = x / pw[j] % 10;
        a[2 * len - j - 1] = a[j];
      }
      gao(len * 2);
      for (int j = 0; j < (int)(len - 1); j++) {
        a[2 * len - j - 2] = a[j];
      }
      gao(len * 2 - 1);
    }
  }
  cout << ans.size() << "\n";
  for (int i = 0; i < (int)(ans.size()); i++) cout << ans[i] << "\n";
  return 0;
}
