#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;
}
