#include <bits/stdc++.h>
using namespace std;
const int oo = 1e9;
const int MOD = 1000000007;
const int N = 100010;
const int OFFSET = 1;
int n, k, a[N], b[N], dp[102][N][2], seg[2][4 * N];
void update(int n, int s, int e, int type, int at, int val) {
  if (s > at || e < at) return;
  if (s == e) {
    seg[type][n] = val;
    return;
  }
  update(2 * n, s, (s + e) / 2, type, at, val);
  update(2 * n + 1, (s + e) / 2 + 1, e, type, at, val);
  seg[type][n] = min(seg[type][2 * n], seg[type][2 * n + 1]);
}
int get(int n, int s, int e, int type, int l, int r) {
  if (s > r || e < l) return oo;
  if (s >= l && e <= r) return seg[type][n];
  return min(get(2 * n, s, (s + e) / 2, type, l, r),
             get(2 * n + 1, (s + e) / 2 + 1, e, type, l, r));
}
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 0; i < k; ++i) {
    scanf("%d%d", &a[i], &b[i]);
  }
  for (int rem = 1; rem <= n; ++rem) dp[k][rem][0] = dp[k][rem][1] = oo;
  a[k] = 2 * n + 1;
  for (int idx = k - 1; idx >= 0; --idx) {
    for (int rem = 0; rem <= n; ++rem)
      for (int t = 0; t <= 1; ++t)
        update(1, 1, (n + OFFSET), t, rem + OFFSET, dp[idx + 1][rem][t]);
    for (int rem = 0; rem <= n; ++rem) {
      for (int t = 0; t <= 1; ++t) {
        int &ret = dp[idx][rem][t];
        int len = b[idx] - a[idx] + 1;
        int len2 = a[idx + 1] - b[idx] - 1;
        ret = oo;
        if (t == 0) {
          ret = get(1, 1, (n + OFFSET), t, (rem + OFFSET), (rem + OFFSET));
        }
        if (t == 1) {
          ret = get(1, 1, (n + OFFSET), t, ((rem - (len + len2)) + OFFSET),
                    ((rem - (len + len2)) + OFFSET));
        }
        pair<int, int> rn = make_pair(rem - (len - !t), rem - 1);
        ret = min(ret, (t == 0 ? 2 : 1) +
                           get(1, 1, (n + OFFSET), (t == 0 ? t : t ^ 1),
                               rn.first + OFFSET, rn.second + OFFSET));
        pair<int, int> sn = make_pair(rem - (len + len2 - 1), rem - (t + len2));
        ret = min(ret, (t == 1 ? 2 : 1) +
                           get(1, 1, (n + OFFSET), (t == 1 ? t : t ^ 1),
                               sn.first + OFFSET, sn.second + OFFSET));
      }
    }
  }
  if (dp[0][n][0] == oo) {
    puts("Hungry");
    return 0;
  }
  puts("Full");
  printf("%d\n", dp[0][n][0]);
  return 0;
}
