1. #include <cstdio>
    2. #include <cstring>
    3. #include <cmath>
    4. #include <cstdlib>
    5. #include <iostream>
    6. #include <algorithm>
    7. using namespace std;
    8. inline int gi(){
    9. char tmp=getchar();int ans=0;
    10. while(!isdigit(tmp)) tmp=getchar();
    11. while(isdigit(tmp)) {
    12. ans = ans * 10 + tmp - '0';
    13. tmp = getchar();
    14. }
    15. return ans;
    16. }
    17. const int N = 1e7;
    18. const int BIG = 1e7;
    19. int F[BIG],G[BIG];
    20. int n;
    21. int A[N],B[N],Q[N];
    22. signed main()
    23. {
    24. #ifdef HJWWWW
    25. freopen("data.in","r",stdin);
    26. #endif
    27. n=gi();int m = gi();
    28. for(int i=1;i<=m;++i)
    29. A[i]=gi(),B[i]=gi();
    30. memset(F,127,sizeof F);
    31. F[0] = 0;
    32. for(int i=1;i<=m;++i){
    33. int len = max(A[i] - B[i-1] - 1,0);
    34. for(int j=n;j>=len;--j)
    35. F[j] = F[j-len];
    36. for(int j=0;j<=len-1;++j) F[j] = 1e9;
    37. len = B[i] - A[i] + 1;
    38. memset(G,127,sizeof G);
    39. // G[0] = 0;
    40. for(int j=n;j>=len;--j)
    41. G[j] = F[j-len];
    42. int w = 0;
    43. int head = 0, tail = -1;
    44. for(int j=n;j>=0;--j){
    45. // B[i] - B[i] + A[i] - 1
    46. // pos - j + d - 1
    47. // A[i] - 1 - j + B[i] - A[i]
    48. // B[i] - j - 1
    49. while(w <= B[i] - j - 1){
    50. while(head <= tail && F[w] < F[Q[tail]]) --tail;
    51. Q[++tail] = w++;
    52. }
    53. while(head <= tail && Q[head] < B[i] - len - j) head++; // ?
    54. if(head<=tail)
    55. G[j] = min(G[j],1+F[Q[head]]);
    56. }
    57. w=0,head=0,tail=-1;
    58. for(int j=0;j<=n;++j){
    59. while(w <= j-1){
    60. while(head <= tail && F[Q[tail]] > F[w]) tail--;
    61. Q[++tail] = w++;
    62. }
    63. while(head <= tail && Q[head] < j - len + 1)
    64. head++;
    65. if(head <= tail)
    66. G[j] = min(G[j],2+F[Q[head]]);
    67. }
    68. memcpy(F,G,sizeof G);
    69. }
    70. int len = (n<<1) - B[m];
    71. for(int j=n;j>=len;--j) F[j] = F[j-len];
    72. for(int j=0;j<len;++j) F[j] =1e9;
    73. if(F[n] >= 1e5)
    74. return puts("Hungry"),0;
    75. else
    76. return printf("Full\n%d\n",F[n]),0;
    77. return 0;
    78. }