#include <bits/stdc++.h>
using namespace std;
static char b[10];
static int a[15];
static char s[20];
static char res[100000][20];
int resc;
void PlaceDots(int point, int fin, int comp, int last, int sc, char begin) {
  if (last > 255) return;
  if ((point == fin) && (comp == 3) && (begin == 0)) {
    s[sc] = 0;
    memcpy(res[resc], s, 20);
    resc++;
  } else if (point != fin) {
    if (begin) {
      if (a[point] == 0) {
        s[sc] = (char)(a[point]) + '0';
        if ((point + 1) == fin) {
          PlaceDots(point + 1, fin, comp, last * 10 + a[point], sc + 1, 0);
        } else if (comp < 3) {
          s[sc + 1] = '.';
          PlaceDots(point + 1, fin, comp + 1, 0, sc + 2, 1);
        }
      } else {
        s[sc] = (char)(a[point]) + '0';
        PlaceDots(point + 1, fin, comp, last * 10 + a[point], sc + 1, 0);
      }
    } else {
      s[sc] = (char)(a[point]) + '0';
      PlaceDots(point + 1, fin, comp, last * 10 + a[point], sc + 1, 0);
      if (comp < 3) {
        s[sc] = '.';
        PlaceDots(point, fin, comp + 1, 0, sc + 1, 1);
      }
    }
  }
}
void Generate(int point, int fin, char even) {
  if (point == fin) {
    int num, i;
    for (num = 0; num < 10; num++) {
      if (b[num]) {
        i = 0;
        while ((i < point) && (a[i] != num)) i++;
        if (i == point) return;
      }
    }
    for (i = 0; i < point; i++) {
      if (!(b[a[i]])) {
        return;
      }
    }
    int ac;
    if (even) {
      ac = point;
      for (i = point - 1; i >= 0; i--) {
        a[ac] = a[i];
        ac++;
      }
    } else {
      ac = point;
      for (i = point - 2; i >= 0; i--) {
        a[ac] = a[i];
        ac++;
      }
    }
    PlaceDots(0, ac, 0, 0, 0, 1);
  } else {
    int i;
    for (i = 0; i < 10; i++) {
      a[point] = i;
      Generate(point + 1, fin, even);
    }
  }
}
int main() {
  int K;
  memset(b, 0, sizeof(b));
  int i, j;
  scanf("%d", &K);
  for (i = 0; i < K; i++) {
    scanf("%d", &j);
    b[j] = 1;
  }
  resc = 0;
  for (i = 1; i <= 6; i++) {
    Generate(0, i, 0);
    Generate(0, i, 1);
  }
  printf("%d\n", resc);
  for (i = 0; i < resc; i++) {
    printf("%s\n", res[i]);
  }
  return 0;
}
