#include <bits/stdc++.h>
using namespace std;
bool need[20];
bool vis[10];
int f[20];
int g;
int pp[20];
int qq;
vector<pair<pair<int, int>, pair<int, int> > > out;
int ans[20];
void dfs(int dep, int at) {
  if (dep == 4) {
    if (at == qq)
      out.push_back(
          make_pair(make_pair(ans[0], ans[1]), make_pair(ans[2], ans[3])));
    return;
  }
  if (pp[at] == 0) {
    ans[dep] = 0;
    dfs(dep + 1, at + 1);
  } else {
    int now = 0;
    for (int i = 1; i <= 3 && at + i - 1 < qq; i++) {
      now = now * 10 + pp[at + i - 1];
      if (now <= 255) {
        ans[dep] = now;
        dfs(dep + 1, at + i);
      }
    }
  }
}
void judge(int add) {
  qq = 0;
  for (int i = 0; i < g; i++) pp[qq++] = f[i];
  if (add != 10) pp[qq++] = add;
  for (int i = g - 1; i >= 0; i--) pp[qq++] = f[i];
  memset(vis, false, sizeof(vis));
  for (int i = 0; i < qq; i++) vis[pp[i]] = true;
  for (int i = 0; i <= 9; i++)
    if (need[i] && !vis[i]) return;
  for (int i = 0; i <= 9; i++)
    if (!need[i] && vis[i]) return;
  dfs(0, 0);
}
int main() {
  int n;
  scanf("%d", &n);
  memset(need, false, sizeof(need));
  out.clear();
  for (int i = 0; i < n; i++) {
    int s;
    scanf("%d", &s);
    need[s] = true;
  }
  for (int i = 0; i < 256000; i++) {
    int now = i;
    g = 0;
    if (i == 0) f[g++] = 0;
    bool flag = true;
    while (now) {
      if (!need[now % 10]) flag = false;
      f[g++] = now % 10;
      now /= 10;
    }
    if (!flag) continue;
    reverse(f, f + g);
    for (int j = 0; j <= 10; j++)
      if (need[j] || j == 10) judge(j);
    reverse(f, f + g);
    f[g++] = 0;
    reverse(f, f + g);
    for (int j = 0; j <= 10; j++)
      if (need[j] || j == 10) judge(j);
    reverse(f, f + g);
    f[g++] = 0;
    reverse(f, f + g);
    for (int j = 0; j <= 10; j++)
      if (need[j] || j == 10) judge(j);
  }
  int len = out.size();
  printf("%d\n", len);
  for (int i = 0; i < len; i++)
    printf("%d.%d.%d.%d\n", out[i].first.first, out[i].first.second,
           out[i].second.first, out[i].second.second);
  return 0;
}
