#include <bits/stdc++.h>
using namespace std;
struct node {
  int l, r;
} a[105];
int n, k;
int dp[105][400005], bas;
deque<int> q;
int main() {
  cin >> n >> k;
  n *= 2;
  for (int i = 1; i <= k; i++) {
    cin >> a[i].l >> a[i].r;
    a[i].l *= 2;
    a[i].r *= 2;
  }
  memset(dp, 0x3f, sizeof(dp));
  bas = dp[0][0];
  dp[0][0] = 0;
  for (int i = 1; i <= k; i++) {
    q.clear();
    for (int j = 0; j <= a[i].r; j++) {
      while (!q.empty() && j - q.front() > a[i].r - a[i].l) q.pop_front();
      while (!q.empty() && dp[i - 1][j] <= dp[i - 1][q.back()]) q.pop_back();
      q.push_back(j);
      dp[i][j] = min(dp[i - 1][j], dp[i - 1][q.front()] + 2);
    }
    q.clear();
    for (int j = a[i].r; j >= 0; j--) {
      while (!q.empty() &&
             dp[i - 1][a[i].r - j] <= dp[i - 1][a[i].r - q.back()])
        q.pop_back();
      q.push_back(j);
      while (!q.empty() && q.front() - j > a[i].r - a[i].l) q.pop_front();
      dp[i][j] = min(dp[i][j], dp[i - 1][a[i].r - q.front()] + 1);
    }
  }
  if (dp[k][n] != bas)
    cout << "Full\n" << dp[k][n];
  else
    cout << "Hungry";
  return 0;
}
