题目描述
最近,qzhfx对集训队又进行了一次改革。改革内容如下: 一个训练周期现在由 n 天组成。队员每天学习 m 个算法中的一个算法,而且每个算法的学习时间不超过一天。在第 i 个算法的课程结束后,队员们会得到包含不少于 ai 、不多于 bi 个练习的题目练习。此外,每个算法都有一个特殊属性,即复杂性( ci )。在满足以下条件的情况下,集训队可以制定自己的训练安排: 训练安排应按复杂度严格递增的顺序排列算法; 除第一天外,每天的任务应包含比前一天多 k 倍的练习,或多 k 个练习(更正式地说:我们把 i -天的题目任务练习数称为 xi ,那么每 i -天的题目任务练习数为 1 < i ≤ n 。( 1 < i ≤ n ): xi = k + xi - 1 或 xi = k·xi - 1 必须为真); 所有题目任务的总练习次数应尽可能多。 结果发现,在许多情况下, ai 和 bi 都达到了 1016 (不过,由于qzhfx教育部长以喜欢半途而废而闻名, bi - ai 的值并没有超过 100 )。这种情况也发生在集训队。尽管如此,作为未来候选队长的您仍需制定下一学年的训练计划......
输入
第一行包含三个整数 n , m , k ( 1 ≤ n ≤ m ≤ 50 , 1 ≤ k ≤ 100 )。 1 ≤ n ≤ m ≤ 50 、 1 ≤ k ≤ 100 ),分别代表一个训练周期的天数、算法数和 k 参数。下面的每行 m 都包含一个算法的描述,分别为三个整数 ai 、 bi 、 ci ( 1 ≤ ai ≤ bi ≤ 1016 、 bi - ai ≤ 100 、 1 ≤ ci ≤ 100 )--分别代表 i -算法的练习次数和 i -算法的复杂程度。不同的题目可以具有相同的复杂度。题目的编号为 1 至 m 之间的整数。
输出
如果不存在有效解决方案,则打印单词"NO"(不带引号)。否则,第一行应包含"是"(不带引号),接下来的 n 行应包含满足所有条件的任何时间表。第 i + 1 行应包含两个正整数:第 i 天要学习的算法编号和该算法的题目作业练习次数。训练周期应包含 n 个算法。
4 5 2
1 10 1
1 10 2
1 10 3
1 20 4
1 100 5