#include <bits/stdc++.h>
using namespace std;
int n, K, cnt;
int l[205], r[205], t[205];
int f[2][401000], que[401000];
int main() {
  scanf("%d%d", &n, &K);
  for (int i = 1; i <= K; i++) {
    scanf("%d%d", &l[i], &r[i]);
    t[++cnt] = l[i] << 1, t[++cnt] = r[i] << 1;
  }
  memset(f, 0x3f, sizeof(f));
  f[0][0] = 0;
  int now = 1, pst = 0;
  n <<= 1;
  for (int i = 1; i <= cnt; i++) {
    if (i & 1) continue;
    int hd = 1, tl = 0;
    for (register int j = 0; j <= t[i]; j++) f[now][j] = 0x3f3f3f3f;
    for (register int j = 0; j <= t[i]; j++) {
      f[now][j] = min(f[now][j], f[pst][j]);
      while (hd <= tl && f[pst][j] <= f[pst][que[tl]]) tl--;
      que[++tl] = j;
      while (hd <= tl && j - que[hd] > t[i] - t[i - 1]) hd++;
      f[now][j] = min(f[now][j], f[pst][que[hd]] + 2);
    }
    hd = 1, tl = 0;
    for (register int j = t[i]; j >= 0; j--) {
      while (hd <= tl && f[pst][t[i] - j] <= f[pst][t[i] - que[tl]]) tl--;
      que[++tl] = j;
      while (hd <= tl && que[hd] - j > t[i] - t[i - 1]) hd++;
      f[now][j] = min(f[now][j], f[pst][t[i] - que[hd]] + 1);
    }
    swap(now, pst);
  }
  if (f[pst][n] == 0x3f3f3f3f)
    printf("Hungry\n");
  else
    printf("Full\n%d\n", f[pst][n]);
  return 0;
}
