#include <bits/stdc++.h>
using namespace std;
const int INF = (1 << 30) - 1;
const int DIRX[] = {-1, 0, 0, 1, -1, -1, 1, 1},
          DIRY[] = {0, -1, 1, 0, -1, 1, -1, 1};
const double ERR = 1e-9, PI = (2 * acos(0.0));
template <class T>
inline T MIN(T a, T b) {
  return ((a < b) ? (a) : (b));
}
template <class T>
inline T MAX(T a, T b) {
  return ((b < a) ? (a) : (b));
}
template <class T>
inline T ABS(T a) {
  return ((a < (T)0) ? (-a) : (a));
}
template <class T>
inline void checkMIN(T& a, T b) {
  if (b < a) a = b;
}
template <class T>
inline void checkMAX(T& a, T b) {
  if (a < b) a = b;
}
template <class T>
T SQR(T x) {
  return (x * x);
}
template <class T>
T GCD(T a, T b) {
  if (!b)
    return a;
  else
    return GCD(b, a % b);
}
template <class T>
T FastPow(T Base, T Power) {
  T Result = (T)1;
  while (Power > 0) {
    if (Power & (T)1) Result *= Base;
    Power >>= 1;
    Base *= Base;
  }
  return Result;
}
inline int CompareDouble(double x, double y, double err = ERR) {
  double d = x - y;
  if (d > err) return 1;
  if (d < -err) return -1;
  return 0;
}
void output(int i) {
  if (i & 1)
    cout << "Ciel";
  else
    cout << "Hanako";
  exit(0);
}
int main() {
  int i, j, k, n, x, y;
  cin >> x >> y;
  for (i = 0;; i++) {
    if (i & 1) {
      if (y >= 22) {
        y -= 22;
      } else if (y >= 12 && x >= 1) {
        y -= 12;
        x -= 1;
      } else if (y >= 2 && x >= 2) {
        y -= 2;
        x -= 2;
      } else
        output(i);
    } else {
      if (x >= 2) {
        if (y >= 2) {
          x -= 2;
          y -= 2;
        } else
          output(i);
      } else if (x >= 1) {
        if (y >= 12) {
          x -= 1;
          y -= 12;
        } else
          output(i);
      } else {
        if (y >= 22) {
          y -= 22;
        } else
          output(i);
      }
    }
  }
  return 0;
}
