有 $n$ 名学生参加 Master Bo 举办的算法课。Bo 要求学生们进行团队合作,并将他们分成若干个小组。
每名学生必须恰好属于一个小组。Master Bo 很了解他的学生,他知道第 $i$ 名学生只有在所在小组的人数不少于 $l_i$ 且不超过 $r_i$(包含本人)时才会感到满意。注意,一个小组可以仅由一名学生组成。
给定 $n$ 个整数 $w_1, w_2, \dots, w_n$。假设最终分成了 $m$ 个小组,第 $i$ 个小组有 $c_i$ 名学生,则该分组方案的权重为 $w_{c_1} + w_{c_2} + \dots + w_{c_m}$。
Master Bo 现在想知道如何将学生分组,使得每名学生都感到满意,且分组方案的权重最大。请编写一个程序来帮助 Master Bo。
输入格式
第一行包含一个整数 $n$ ($1 \le n \le 60$),表示学生人数。
接下来的 $n$ 行中,第 $i$ 行包含两个整数 $l_i$ 和 $r_i$ ($1 \le l_i \le r_i \le n$),描述第 $i$ 名学生的要求。
最后一行包含 $n$ 个整数 $w_1, w_2, \dots, w_n$ ($|w_i| \le 10^7$)。
输出格式
输出一行,包含一个整数:权重的最大可能值。如果无法找到这样的分组方案,请输出 “impossible”。
样例
输入格式 1
3 2 3 1 2 2 2 4 5 100
输出格式 1
9
输入格式 2
3 1 3 3 3 2 3 1 1 100
输出格式 2
100
输入格式 3
2 1 1 2 2 1 1
输出格式 3
impossible
输入格式 4
3 2 3 1 2 2 2 -100 -200 100000
输出格式 4
-300
说明
最后一个样例说明了为什么 ICPC 要求三人一组。