#include <bits/stdc++.h>
using namespace std;
int l[105], r[105];
int dp[105][200005];
int main() {
  memset(dp, -1, sizeof(dp));
  int n, k;
  scanf("%d%d", &n, &k);
  dp[0][0] = 0;
  for (int i = 1; i <= k; i++) {
    scanf("%d%d", &l[i], &r[i]);
    int le = r[i] - l[i];
    queue<pair<int, int> > q1, q2;
    for (int j = 0; j <= r[i]; j++) {
      if (dp[i - 1][j] != -1) {
        int j2 = r[i - 1] - j;
        int k = j + r[i] - r[i - 1];
        if (dp[i][k] == -1 || dp[i][k] > dp[i - 1][j]) dp[i][k] = dp[i - 1][j];
        q1.push(make_pair(j + l[i] - r[i - 1], dp[i - 1][j] + 2));
      }
    }
    for (int j = r[i]; j >= 0; j--) {
      if (dp[i - 1][j] != -1) {
        int j2 = r[i - 1] - j;
        q2.push(make_pair(j2, dp[i - 1][j] + 1));
      }
    }
    deque<pair<int, int> > dq;
    for (int j = 0; j <= r[i]; j++) {
      while (!q1.empty() && q1.front().first <= j) {
        while (!dq.empty() && dq.back().second > q1.front().second)
          dq.pop_back();
        dq.push_back(q1.front());
        q1.pop();
      }
      while (!q2.empty() && q2.front().first <= j) {
        while (!dq.empty() && dq.back().second > q2.front().second)
          dq.pop_back();
        dq.push_back(q2.front());
        q2.pop();
      }
      while (!dq.empty() && dq.front().first + le < j) dq.pop_front();
      if (!dq.empty()) {
        if (dp[i][j] == -1 || dp[i][j] > dq.front().second) {
          dp[i][j] = dq.front().second;
        }
      }
    }
  }
  int ans = 1e9;
  for (int i = 0; i <= n; i++) {
    if (dp[k][i] == -1) continue;
    int j = i + 2 * n - r[k];
    int j2 = 2 * n - j;
    if (j == j2) ans = min(ans, dp[k][i]);
  }
  if (ans == 1e9) {
    printf("Hungry\n");
    return 0;
  }
  printf("Full\n");
  printf("%d\n", ans);
}
