#include using namespace std; #include using namespace atcoder; #ifdef DEFINED_ONLY_IN_LOCAL #include #define dump(...) cpp_dump(__VA_ARGS__) #else #undef dump #define dump(...) #endif templateinline bool chmax(T &a,T b){if(ainline bool chmin(T &a,T b){if(a>b){a=b;return true;}return false;} #define rep1(i,a) for(int i=0;i<(int)(a);i++) #define rep2(i,a,b) for(int i =(int)(a);i<(int)(b);i++) #define rep3(i,a,b,c) for(int i=(int)(a);i<(int)(b);i+=(int)(c)) #define overloadRep(a,b,c,d,e,...)e #define rep(...) overloadRep(__VA_ARGS__,rep3,rep2,rep1)(__VA_ARGS__) #define rrep(i,a,b) for(int i=(int)(a);i<=(int)(b);i++) #define drep(i,a,b) for(int i=(int)(a);i>=(int)(b);i--) #define all(a) a.begin(),a.end() #define rall(a) a.rbegin(),a.rend() using P=pair; using T=tuple; const int inf=1e9; const long INF=1e18; const int dx[4]={0,1,0,-1}; const int dy[4]={1,0,-1,0}; bool bit(long x, int p){return (x>>p)&1;} bool out(int ni, int nj, int h, int w){return (ni<0 or ni>=h or nj<0 or nj>=w);} int pc(long x){return __builtin_popcountl(x);} using mint=modint998244353; int main(){ long n;cin>>n; mapmemo; //mapans; string ans; auto f=[&](auto f,long x,string now) -> void { if(memo[x])return; memo[x]=true; if(x==1)ans=now; if((x-1)%2==0 and (x-1)/2>=1)f(f,(x-1)/2,now+'A'); if((x-1)%3==0 and (x-1)/3>=1)f(f,(x-1)/3,now+'B'); }; f(f,n,""); reverse(all(ans)); cout<