#include <bits/stdc++.h>
using namespace std;
const int maxk = 105, maxn = 2e5 + 5, inf = 1e9;
int n, k, l[maxk], r[maxk], dp[2][maxn];
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= k; ++i) scanf("%d %d", l + i, r + i);
  if (l[k] != 2 * n) {
    ++k;
    l[k] = r[k] = 2 * n;
  }
  for (int t = 0; t < maxn; ++t) dp[1][t] = inf;
  dp[1][l[1]] = 0;
  for (int j = 2; j <= k; ++j) {
    for (int t = 0; t < maxn; ++t) dp[j & 1][t] = inf;
    for (int t = l[j] - l[j - 1]; t <= l[j]; ++t) {
      dp[j & 1][t] = min(dp[j & 1][t], dp[(j - 1) & 1][t - l[j] + l[j - 1]]);
    }
    deque<pair<int, int> > minq;
    for (int s = 0; s <= l[j]; ++s) {
      int val = dp[(j - 1) & 1][s] + 1;
      while (!minq.empty() && minq.back().first >= val) minq.pop_back();
      minq.push_back({val, s});
      while (!minq.empty() && minq.front().second + r[j - 1] - l[j - 1] < s)
        minq.pop_front();
      int t = l[j] - s;
      dp[j & 1][t] = min(dp[j & 1][t], minq.front().first);
    }
    while (!minq.empty()) minq.pop_back();
    for (int s = 0; s <= r[j - 1]; ++s) {
      int val = dp[(j - 1) & 1][s] + 2;
      while (!minq.empty() && minq.back().first >= val) minq.pop_back();
      minq.push_back({val, s});
      while (!minq.empty() && minq.front().second + r[j - 1] - l[j - 1] < s)
        minq.pop_front();
      int t = s + l[j] - r[j - 1];
      dp[j & 1][t] = min(dp[j & 1][t], minq.front().first);
    }
  }
  if (dp[k & 1][n] == inf)
    printf("Hungry\n");
  else
    printf("Full\n%d\n", dp[k & 1][n]);
}
