#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 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>
inline 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);
}
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 H() { cout << "Hermione" << endl; }
void R() { cout << "Ron" << endl; }
int main() {
  int a, b, c, d, e, f;
  cin >> a >> b >> c >> d >> e >> f;
  {
    if (d == 0)
      H();
    else if (c == 0)
      R();
    else if (b == 0)
      H();
    else if (a == 0)
      R();
    else if (f == 0)
      H();
    else if (e == 0)
      R();
    else if (b * d * f > a * c * e)
      R();
    else
      H();
    double mat[3][3] = {};
    mat[0][0] = mat[1][1] = mat[2][2] = 1.0;
  }
  return 0;
}
