#include <bits/stdc++.h>
using namespace std;
using LL = long long;
using VLL = vector<LL>;
using vi = vector<int>;
using pii = pair<int, int>;
inline void ckmin(LL& a, LL b) { a = min(a, b); }
inline void ckmax(LL& a, LL b) { a = max(a, b); }
const int N = 1e5 + 10;
const int M = 1e2 + 10;
int n, m;
LL dp[2][N << 1][2];
int l[M], r[M];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  const LL inf = 0x3f3f3f3f3f3f3f3fll;
  while (cin >> n >> m) {
    for (int i = 1; i <= m; ++i) cin >> l[i] >> r[i];
    int line = 0;
    memset(dp[line], 0x3f, sizeof(dp[line]));
    dp[0][0][0] = 0;
    dp[0][0][1] = 0;
    int pre_ed = 0;
    for (int i = 0; i < m; i++) {
      int t1 = l[i + 1] - pre_ed;
      int t2 = r[i + 1] - l[i + 1];
      memset(dp[line ^ 1], 0x3f, sizeof(dp[line ^ 1]));
      for (int prec = 0; prec <= 2 * n; prec++) {
        if (dp[line][prec][0] != inf)
          ckmin(dp[line ^ 1][prec + t1 + t2][0], dp[line][prec][0]);
        if (dp[line][prec][1] != inf)
          ckmin(dp[line ^ 1][prec + t1 + t2][1], dp[line][prec][1]);
      }
      deque<pair<int, LL>> dq;
      int dq_border = -1;
      for (int x = 2 * n; x >= 0; x--) {
        int dq_st = max(pre_ed - x, 0);
        int dq_ed = min(pre_ed - x + t2, 2 * n);
        if (dq_st > dq_ed) continue;
        while (!dq.empty() && dq.front().first < dq_st) dq.pop_front();
        for (int dq_idx = dq_border + 1; dq_idx <= dq_ed; dq_idx++) {
          while (!dq.empty() && dq.front().second >= dp[line][dq_idx][1])
            dq.pop_back();
          dq.push_back({dq_idx, dp[line][dq_idx][1]});
        }
        dq_border = dq_ed;
        if (dq_st <= dq_ed) ckmin(dp[line ^ 1][x][0], dq.front().second + 1);
      }
      while (!dq.empty()) dq.pop_front();
      dq_border = -1;
      for (int x = 2 * n; x >= 0; x--) {
        int dq_st = max(pre_ed - x, 0);
        int dq_ed = min(pre_ed - x + t2, 2 * n);
        if (dq_st > dq_ed) continue;
        while (!dq.empty() && dq.front().first < dq_st) dq.pop_front();
        for (int dq_idx = dq_border + 1; dq_idx <= dq_ed; dq_idx++) {
          while (!dq.empty() && dq.front().second >= dp[line][dq_idx][0])
            dq.pop_back();
          dq.push_back({dq_idx, dp[line][dq_idx][0]});
        }
        dq_border = dq_ed;
        ckmin(dp[line ^ 1][x][1], dq.front().second + 1);
      }
      while (!dq.empty()) dq.pop_front();
      dq_border = -1;
      for (int x = 0; x <= 2 * n; x++) {
        int dq_st = max(x + 1 - t1 - t2, 0);
        int dq_ed = min(x - t1, 2 * n);
        if (dq_st > dq_ed) continue;
        while (!dq.empty() && dq.front().first < dq_st) dq.pop_front();
        for (int dq_idx = dq_border + 1; dq_idx <= dq_ed; dq_idx++) {
          while (!dq.empty() && dq.front().second >= dp[line][dq_idx][0])
            dq.pop_back();
          dq.push_back({dq_idx, dp[line][dq_idx][0]});
        }
        dq_border = dq_ed;
        ckmin(dp[line ^ 1][x][0], dq.front().second + 2);
      }
      while (!dq.empty()) dq.pop_front();
      dq_border = -1;
      for (int x = 0; x <= 2 * n; x++) {
        int dq_st = max(x + 1 - t1 - t2, 0);
        int dq_ed = min(x - t1, 2 * n);
        if (dq_st > dq_ed) continue;
        while (!dq.empty() && dq.front().first < dq_st) dq.pop_front();
        for (int dq_idx = dq_border + 1; dq_idx <= dq_ed; dq_idx++) {
          while (!dq.empty() && dq.front().second >= dp[line][dq_idx][1])
            dq.pop_back();
          dq.push_back({dq_idx, dp[line][dq_idx][1]});
        }
        dq_border = dq_ed;
        ckmin(dp[line ^ 1][x][1], dq.front().second + 2);
      }
      pre_ed = r[i + 1];
      line ^= 1;
    }
    int left = 2 * n - r[m];
    memset(dp[line ^ 1], 0x3f, sizeof(dp[line ^ 1]));
    for (int c = 0; c <= n; c++) dp[line ^ 1][c + left][0] = dp[line][c][0];
    for (int c = 0; c <= n; c++) dp[line ^ 1][c + left][1] = dp[line][c][1];
    LL ans = inf;
    if ((dp[line ^ 1][n][0] != inf || dp[line ^ 1][n][1] != inf)) {
      ans = min(dp[line ^ 1][n][0], dp[line ^ 1][n][1]);
    }
    if (ans != inf) {
      cout << "Full" << '\n' << ans << '\n';
    } else {
      cout << "Hungry" << '\n';
    }
  }
  return 0;
}
