typedef unsigned long long LL ; map < int , LL > fibo ; map < int , LL > ::iterator it ; LL my_pow(LL x , LL y){ LL ans = 1 ; for(; y; y>>=1 ){ if(y&1) ans *= x ; x*=x ; } return ans ; } void init(){ fibo.clear() ; LL x1 = 4 ; LL x2 = 3 ; fibo[1] = 4 ; fibo[2] = 3 ; int id = 3 ; while(x1 + x2 <= my_pow(2,63)){ fibo[id] = x1+ x2 ; id++ ; LL temp = x2 ; x2 = x1 + x2 ; x1 = temp ; } fibo[id] = x1+ x2 ; } char dfs(int id , LL n){ if(n <= 7){ switch(n){ case 1 : return 'T' ; case 2 : return '.' ; case 3 : return 'T' ; case 4 : return '^' ; case 5 : return '_' ; case 6 : return '_' ; case 7 : return '^' ; } } LL x = fibo[id-1] ; if(x < n) return dfs(id - 2 , n - x) ; else return dfs(id - 1 , n ) ; } char gao(LL n){ init() ; int id ; for(it = fibo.begin() ; it != fibo.end() ; it++){ if(it->second >= n){ id = it->first ; break ; } } return dfs(id , n) ; }