func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 10;   int n, k, l[N], r[N], f[2][N], q[N];   int main() {     scanf( %d%d , &n, &k);     for (int i = 1; i <= k; ++i) scanf( %d%d , &l[i], &r[i]);     f[0][0] = 0;     for (int i = 1; i <= (n << 1); ++i) f[0][i] = 0x3f3f3f3f;     for (int i = 1; i <= k; ++i) {       int cur = i & 1, last = !cur;       memset(f[cur], 0x3f, sizeof(int) * (n + 1));       int L = 1, R = 0, now = 0;       for (int j = min(n, r[i]); j >= 0; --j) {         f[cur][j] = f[last][j];         int ql = l[i] - j, qr = min(r[i] - j, n);         while (now <= qr) {           while (L <= R && f[last][q[R]] > f[last][now]) --R;           q[++R] = now;           ++now;         }         while (L <= R && q[L] < ql) ++L;         f[cur][j] = min(f[cur][j], f[last][q[L]] + 1);       }       L = 1, R = 0;       now = 0;       for (int j = 0; j <= n && j <= r[i]; ++j) {         int ql = j + l[i] - r[i], qr = j;         while (now <= qr) {           while (L <= R && f[last][q[R]] > f[last][now]) --R;           q[++R] = now;           ++now;         }         while (L <= R && q[L] < ql) ++L;         f[cur][j] = min(f[cur][j], f[last][q[L]] + 2);       }     }     if (f[k & 1][n] == 0x3f3f3f3f) {       puts( Hungry );       return 0;     }     puts( Full );     printf( %d n , f[k & 1][n]);     return 0;   }   