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
#include <iostream>
#include <vector>
std::vector<long long> divisible;
std::string repeat(long long n, std::string text){
    std::string result="";
    if(n==0||text=="")
        return result;
    if(n==1)
        return text;
    if(text.length()==1 && n<10)
        return std::to_string(n)+text;
    for(long long i=9;i>=2;i--){
        if(n%i==0){
            result=std::to_string(i)+'['+repeat(n/i,text)+']';
            return result;
        }
    }
    long long n_copy=n;
    long long mn=1;
    while(n_copy>1000000LL) {
        n_copy /= 9;
        mn*=9;
    }
    mn*=divisible[n_copy];
    result+=repeat(mn,text);
    result+=repeat(n-mn,text);
    //for(int i=0;i<n;i++){
    //    result+=text;
    //}
    return result;
}
std::string pane(long long n){
    std::string row=repeat(n,"EC")+"E"+repeat(n,"A");
    return repeat(n,row);
}

std::string draw(long long n){
    std::string result="";
    if (n<1) return result;
    if(n%2==0){
        result+="C";
        result+=repeat(n-1,"AC");
        result+=repeat(n-1,"E");
        return result+draw(n-1);
    }else{
        result+="C";
        result+=repeat(n-1,"AC");
        result+=pane(n/2);
        result+=repeat(n/2,"E");
        std::string half=draw(n/2);
        result+=repeat(2,half);
        return result;
    }
}
int main(){
    divisible.emplace_back(0);
    divisible.emplace_back(1);
    long long last_divisible=1;
    for(long long i=2;i<=1000000;i++){
        for(auto div:{2,3,5,7}){
            if(i%div==0 && divisible[i/div]==i/div)
                last_divisible=i;
        }
        //if(last_divisible==i)
        //    std::cerr<<i<<std::endl;
        divisible.emplace_back(last_divisible);
    }
    std::ios_base::sync_with_stdio(0);
    long long n;
    std::cin>>n;
    std::string res;
    res+=repeat(n,"A");
    res+=repeat(n,"E");
    res+=draw(n);
    std::cout<<res;
}