1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
#include <cstdio>
#include <cstring>

typedef long long ll;

void r(ll n, const char *s)
{
  if (n<1) return;
  if (n<2)
  {
    printf("%s", s);
    return;
  }
  int l=strlen(s);
  if (n<10 && n*l<=3+l-2*(l==1))
  {
    for (int i=0; i<n; i++) printf("%s", s);
    return;
  }
  if (n<10)
  {
    printf("%lli%s%s%s", n, "["+(l==1), s, "]"+(l==1));
    return;
  }
  if (l>1 || n>1000)
  for (int i=9; i>1; i--)
  if(n%i==0)
  {
    printf("%i%s", i, "["+(n/i==1 && l==1));
    r(n/i, s);
    printf("]"+(n/i==1 && l==1));
    return;
  }
  r(n%9, s);
  printf("9%s", "["+(n/9==1 && l==1));
  r(n/9, s);
  printf("]"+(n/9==1 && l==1));
}

void b(ll n, ll m)
{
  if (m<1) return;
  if (m<2)
  {
    r(n, "C");
    r(n, "EA");
    printf("E");
    return;
  }
  if (m<10)
  {
    printf("%lli[", m);
    r(n, "C");
    r(n, "EA");
    printf("E");
    printf("]");
    return;
  }
  for (int i=9; i>1; i--)
  if(n%i==0)
  {
    printf("%i[", i);
    b(n, m/i);
    printf("]");
    return;
  }
  b(n, m%9);
  printf("9[");
  b(n, m/9);
  printf("]");
}

void t(ll n)
{
  if (n<1) return;
  if (n<2)
  {
    printf("A");
    return;
  }
  if (n<3)
  {
    printf("AEACA");
    return;
  }
  ll m=(n-1)/2;
  printf("2%s", "["+(m==1));
  t(m);
  printf("]"+(m==1));
  r(m, "E");
  b(m, m);
  r(2*m, "AC");
  printf("A");
  if (n%2==0)
  {
    r(n-1, "E");
    r(n-1, "AC");
    printf("A");
  }
}

int main()
{
  ll n;
  scanf("%lli", &n);
  t(n);
  r(n, "E");
  r(n, "C");
  return 0;
}