#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  scanf("%d", &n);
  if (n == 1) {
    scanf("%d", &n);
    printf("%d\n", n);
    printf("%s\n", string(n, 'a').c_str());
    return 0;
  }
  vector<pair<int, char>> v(n);
  int odd = 0;
  for (int i = 0; i < n; i++) {
    scanf("%d", &v[i].first);
    odd += (v[i].first & 1);
    v[i].second = char(i + 'a');
  }
  if (odd <= 1) {
    int g = 1;
    for (int i = 100000; i >= 1; i--) {
      int c = 0;
      for (int j = 0; j < (int)v.size(); j++) {
        c += (v[j].first % i == 0);
      }
      if (c == (int)v.size()) {
        g = i;
        break;
      }
    }
    printf("%d\n", g);
    if (g % 2 == 0) {
      string str = "";
      for (int j = 0; j < (int)v.size(); j++) {
        for (int k = 0; k < v[j].first / g; k++) {
          str += v[j].second;
        }
      }
      string sstr = str;
      reverse((sstr).begin(), (sstr).end());
      for (int i = 1; i <= g; i++)
        printf("%s", (i & 1 ? str.c_str() : sstr.c_str()));
      printf("\n");
    } else {
      string str = "";
      int pos = -1;
      for (int j = 0; j < (int)v.size(); j++) {
        for (int k = 1; 2 * k <= v[j].first / g; k++) {
          str += v[j].second;
        }
        if (v[j].first & 1) pos = j;
      }
      string sstr = str;
      reverse((str).begin(), (str).end());
      if (pos != -1) str += v[pos].second;
      str += sstr;
      for (int i = 1; i <= g; i++) printf("%s", str.c_str());
      printf("\n");
    }
  } else {
    printf("0\n");
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < v[i].first; j++) {
        printf("%c", v[i].second);
      }
    }
    printf("\n");
  }
}
