拔河(Tug of War)是拜特兰(Byteland)非常流行的一项运动。规则很简单:两支队伍在绳子的两端向相反方向拉。一年一度的拜特兰慈善拔河比赛即将举行,许多选手报了名。作为公平竞赛专员,你的工作是将选手分成两支队伍,使得比赛能够进行很长时间。
由于总共有 $2n$ 名选手报名,每支队伍将由 $n$ 名选手组成。绳子左侧有 $n$ 个位置,右侧有 $n$ 个位置。拜特兰的拔河精英们非常挑剔:每位选手都有一个他/她想要使用的左侧位置和一个他/她想要使用的右侧位置。此外,你知道每位选手的力量值。
组织者现在要求你解决以下问题:给定一个整数 $k$,是否可以将选手分成两支队伍,使得每支队伍都有 $n$ 名选手,每位选手都使用他/她想要使用的位置(当然,没有两名选手共用一个位置),并且两支队伍的力量值之和的差不超过 $k$?
输入格式
输入的第一行包含一个正整数 $n$,表示绳子每一侧的位置数量,以及一个整数 $k \le 20n$,表示两支队伍力量值之差的最大允许值。为简单起见,我们将选手编号为 $1$ 到 $2n$。
接下来的 $2n$ 行,每行描述一名选手:第 $i$ 行包含三个正整数 $l_i, r_i$ 和 $s_i$($1 \le l_i, r_i \le n, 1 \le s_i \le 20$),表示选手 $i$ 的力量值为 $s_i$,并且他/她想要使用绳子左侧的 $l_i$ 位置或右侧的 $r_i$ 位置。
输出格式
在唯一的一行输出中,如果能够按照上述要求组成两支队伍,则输出 YES,否则输出 NO。
样例
样例输入 1
4 1 1 1 1 2 1 2 2 2 8 1 2 2 3 3 5 3 3 2 4 4 1 4 4 2
样例输出 1
YES
样例输入 2
2 5 1 1 1 1 2 4 2 2 1 2 1 4
样例输出 2
NO
说明
在第一个样例中,我们可以将选手 1、3、6 和 7 分配到左侧(这使得该队伍的力量值为 $1 + 8 + 2 + 1 = 12$),将选手 2、4、5 和 8 分配到右侧(这使得该队伍的力量值为 $2 + 2 + 5 + 2 = 11$)。两支队伍的力量值之差为 1。
在第二个样例中,两名力量值为 4 的选手必须在同一支队伍中,因此两支队伍力量值之差的最小值为 6。
子任务
| 子任务 | 条件 | 分值 |
|---|---|---|
| 1 | $n \le 10$ | 18 |
| 2 | $n \le 2000$ | 30 |
| 3 | $n \le 30\,000, s_i = 1$ | 23 |
| 4 | $n \le 30\,000$ | 29 |