#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); }
int n;
int a[105];
void work() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
  }
  int d = a[0];
  for (int i = 1; i < n; i++) d = gcd(d, a[i]);
  for (int i = 0; i < n; i++) a[i] /= d;
  vector<char> vec;
  int cnt = 0;
  for (int i = 0; i < n; i++) {
    if (a[i] & 1) ++cnt;
  }
  int fg = 0;
  if (cnt == 1) {
    int inx = -1;
    for (int i = 0; i < n; i++) {
      if (a[i] % 2 == 0) {
        for (int j = 0; j < a[i] / 2; j++) vec.push_back('a' + i);
      } else {
        inx = i;
      }
    }
    for (int i = 0; i < a[inx]; i++) vec.push_back(inx + 'a');
    for (int i = n - 1; i >= 0; i--) {
      if (a[i] % 2 == 0) {
        for (int j = 0; j < a[i] / 2; j++) vec.push_back('a' + i);
      }
    }
  } else {
    fg = 1;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < a[i]; j++) vec.push_back('a' + i);
    }
  }
  if (d % 2 == 1) {
    if (fg == 1) {
      puts("0");
    } else {
      printf("%d\n", d);
    }
  } else {
    printf("%d\n", d);
  }
  fg = 1;
  while (d--) {
    if (fg) {
      for (int i = 0; i < vec.size(); i++) printf("%c", vec[i]);
    } else {
      for (int i = vec.size() - 1; i >= 0; i--) printf("%c", vec[i]);
    }
    fg ^= 1;
  }
  puts("");
  return;
}
int main() {
  work();
  return 0;
}
