#P0806. 煎牛排

煎牛排

题目描述

汪老师从商店里回到家,顺手买了一块半熟的牛排。牛排一共有两面。已知要将这块牛排煎恰好 2n2n 秒,并且每一面都需要煎恰好 nn 秒。

并且自从开始煎牛排后就不能熄火,这就意味着牛排必须连续煎 2n2n 秒,并且在这 2n2n 秒内的任意时刻不是在煎这一面就是在煎另一面。

汪老师并不是在任何时刻都可以给牛排翻面,有 mm 个时间段,第 ii 个时间段表示为两个整数 lil_irir_i,它规定你在开始煎牛排的第 lil_i 秒到第 rir_i 秒时(包括第 lil_i 和第 rir_i 秒)可以给牛排翻面。主要:你只能在开始煎牛排之后的整数秒后才能给牛排翻面。

忽略给牛排翻面的时间开销。你可以认为翻面是不花时间的。在每个一个时间段 [li,ri][l_i, r_i] 范围内你可以进行任意多次翻面,但是在规定的 mm 段时间以外的时间,你不能对牛排进行翻面。

求:汪老师将牛排煎好需要翻面的最少次数。

注:这里煎好牛排指的是煎了恰好 2n2n 秒且每一面都煎了恰好 nn 秒。

输入格式

第一行,两个整数 nnmm,以一个空格分隔(1n105,1m1001 \le n \le 10^5, 1 \le m \le 100)。

接下来 mm 行,每行包含两个整数 lil_irir_i,以一个空格分隔(0liri2n0 \le l_i \le r_i \le 2 \cdot n)。

数据保证这 mm 个时间段按照升序给你,并且没有两个时间段有重叠(即对于任意 1i<m1 \le i \lt m,均有 ri<li+1r_i \lt l_{i+1})。

输出格式

如果无法减号牛排(即在 2n2n 秒内无法每一面都煎恰好 nn 秒),输出一行 "Hungry"。

否则,输出两行。第一行包含一个字符串 "Full",第二行包含一个整数,表示煎好牛排至少要翻几次面。

样例

10 2
3 5
11 13
Full
2
10 3
3 5
9 10
11 13
Full
1
20 1
3 19
Hungry

说明/提示

样例解释

样例1:可以选择在第 33 秒翻一次面,然后在第 1313 秒再翻一次面。

样例2:可以选择在第 1010 秒翻一次面。

数据规模与约定

  • 对于 20%20\% 的数据,n100,m10n \le 100, m \le 10
  • 对于 70%70\% 的数据,n1000,m100n \le 1000, m \le 100
  • 对于 100%100\% 的数据,1n105,1m1001 \le n \le 10^5, 1 \le m \le 100