func_code_string: #include <bits/stdc++.h>   using namespace std;   struct Meth {     int hud, ten;     void init(int hud, int ten) { this->hud = hud, this->ten = ten; }     bool operator==(const class Meth &ans) const {       return hud == ans.hud && ten == ans.ten;     }   };   bool cmpC(const struct Meth &ans1, const struct Meth &ans2) {     return ans1.hud > ans2.hud;   }   bool cmpH(const struct Meth &ans1, const struct Meth &ans2) {     return ans1.ten > ans2.ten;   }   struct Comb {     Meth ci, ha;     int chud, cten;     void init(Meth a, Meth b) {       ci.init(a.hud, a.ten), ha.init(b.hud, b.ten);       chud = ci.hud + ha.hud, cten = ci.ten + ha.ten;     }     bool operator<(const class Comb &ans) const {       return (cmpC(ci, ans.ci) || (ci == ans.ci && cmpH(ha, ans.ha)));     }   };   Meth mat[3];   Comb comb[9];   int cnt, cnthud, cntten;   void Prepare() {     for (int i = 0; i < 3; i++) mat[i].init(i, 22 - i * 10);     cnt = 0;     for (int i = 0; i < 3; i++)       for (int j = 0; j < 3; j++) comb[cnt++].init(mat[i], mat[j]);     sort(comb, comb + cnt);   }   int main() {     Prepare();     while (scanf( %d%d , &cnthud, &cntten) != EOF) {       for (int i = 0; i < cnt; i++) {         if (cnthud >= comb[i].chud && cntten >= comb[i].cten) {           int a = cntten / comb[i].cten;           if (comb[i].chud != 0) a = min(a, cnthud / comb[i].chud);           cnthud -= a * comb[i].chud, cntten -= a * comb[i].cten;         }       }       if (cnthud * 100 + cntten * 10 >= 220 && cntten >= 2) {         printf( Ciel n );       } else {         printf( Hanako n );       }     }     return 0;   }   