3866: 盈利计划问题

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:4 解决:2

题目描述

某公司有 n 名员工,他们可以参与各种项目来创造利润。共有 m 种不同的项目可供选择,第 i 种项目能产生 profit[i] 的利润,但需要 group[i] 名员工共同参与。 每个员工最多只能参与一个项目,如果参与了某个项目就不能参与其他项目。一个项目的子集被称为"盈利计划",当且仅当该子集能够产生至少 minProfit 的总利润,且参与项目的员工总数不超过 n。 请问一共有多少种不同的盈利计划可以选择?由于答案可能很大,请输出结果对 10^9 + 7 取模的值。

输入

第一行包含三个整数 n, minProfit, m,分别表示员工总数、最低利润要求和项目总数。 接下来 m 行,每行包含两个整数 group[i] 和 profit[i],表示第 i 个项目的员工需求和产生的利润。

输出

输出一个整数,表示盈利计划的总数对 10^9 + 7 取模的结果。

样例输入 复制

10 5 3
2 6
3 7
5 8

样例输出 复制

7

提示

1 ≤ n ≤ 100
0 ≤ minProfit ≤ 100
1 ≤ m ≤ 100
1 ≤ group[i] ≤ 100
0 ≤ profit[i] ≤ 100