#include <bits/stdc++.h>
using namespace std;
int n;
int init[44];
bool Gd[444], b[444];
int d[444][444];
int Mask[444], q[444], g[444];
int xi1[4444444], xi2[4444444], xi3[4444444], xi4[4444444];
int Nd, ind[444], indx;
int ans, ix;
void Bui() {
  if (n >= 7) {
    puts("0");
    exit(0);
  }
  for (int i = 0; i < n; i++) {
    Nd |= (1 << init[i]);
    b[init[i]] = true;
  }
  for (int i = 0; i <= 255; i++) {
    int TmpI = i;
    Gd[i] = true;
    while (TmpI) {
      if (!b[TmpI % 10]) Gd[i] = false;
      d[i][ind[i]++] = TmpI % 10;
      Mask[i] |= (1 << (TmpI % 10));
      TmpI = TmpI / 10;
    }
    if (!i && !b[i]) Gd[i] = false;
    if (!i) {
      d[i][ind[i]++] = 0;
      Mask[i] |= (1 << 0);
    }
    if (Gd[i]) g[indx++] = i;
  }
  return;
}
void ppPrint() {
  cout << ix << "\n";
  for (int i = 0; i < ix; i++)
    cout << xi1[i] << '.' << xi2[i] << '.' << xi3[i] << '.' << xi4[i] << "\n";
  return;
}
void Work() {
  Bui();
  for (int i1 = 0; i1 <= 255; i1++)
    if (Gd[i1])
      for (int i2 = 0; i2 <= 255; i2++)
        if (Gd[i2])
          for (int i3 = 0; i3 <= 255; i3++)
            if (Gd[i3]) {
              if ((Mask[i1] | Mask[i2] | Mask[i3]) != Nd) continue;
              for (int i4 = 0; i4 <= 255; i4++)
                if (Gd[i4]) {
                  bool okx = true;
                  int ind1 = 0;
                  for (int i = ind[i1] - 1; i >= 0; i--) q[ind1++] = d[i1][i];
                  for (int i = ind[i2] - 1; i >= 0; i--) q[ind1++] = d[i2][i];
                  for (int i = ind[i3] - 1; i >= 0; i--) q[ind1++] = d[i3][i];
                  for (int i = ind[i4] - 1; i >= 0; i--) q[ind1++] = d[i4][i];
                  for (int i = 0; i < ind1 - i - 1; i++)
                    if (q[i] != q[ind1 - i - 1]) {
                      okx = false;
                      break;
                    }
                  if (!okx) continue;
                  xi1[ix] = i1;
                  xi2[ix] = i2;
                  xi3[ix] = i3;
                  xi4[ix++] = i4;
                }
            }
  ppPrint();
  return;
}
int main(int argc, char const *argv[]) {
  ios::sync_with_stdio(false);
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d", &init[i]);
  Work();
  return 0;
}
