你的朋友 Charmion 请你帮忙把一些画布挂在一条笔直的晾衣绳上晾干,这是她正在进行的一个艺术项目。这些画布的排列非常巧妙,使得它们互不重叠,尽管它们可能会在边缘处接触。为了稳固,每块画布必须由两个钉子固定,但由于画布非常坚硬,它们可以从任何位置被固定。
每块画布的宽度都是整数厘米(至少 10 厘米)。每个钉子的宽度略小于 1 厘米。画布和钉子都放置在晾衣绳上整数厘米的位置。
任何接触画布的多余物体都会带来污损风险,因此每块画布都应该由且仅由两个钉子固定,不多也不少。给定所有已经安装在晾衣绳上的钉子,请放置尽可能少的新增钉子,以确保所有画布都能被固定。
图 C.1:样例 2 的解法示意图。预先存在的钉子用白色标记。
输入格式
输入包含: 一行一个整数 $n$ ($1 \le n \le 10^3$),表示晾衣绳上画布的数量。 $n$ 行,第 $i$ 行包含两个整数 $\ell_i$ 和 $r_i$ ($0 \le \ell_i < r_i \le 10^9$ 且 $\ell_i + 10 \le r_i$),表示第 $i$ 块画布左端和右端的位置(单位:厘米)。 一行一个整数 $p$ ($0 \le p \le 2 \cdot 10^3$),表示已经使用的钉子数量。 一行 $p$ 个整数 $x_1, \dots, x_p$ ($0 \le x_i < x_{i+1} \le 10^9$ 对于每个 $i$),表示每个现有钉子的位置(单位:厘米)。
画布按从左到右的顺序给出,并且可能仅在边缘处接触,即对于每个 $i$,满足 $r_i \le \ell_{i+1}$。
输出格式
如果画布可以被固定,输出固定所有画布且每块画布恰好接触两个钉子所需的最少额外钉子数量。在下一行输出所有新钉子的整数位置。
否则,输出 “impossible”。
如果有多种最优解,你可以输出其中任意一种。
样例
样例输入 1
4 0 18 18 28 28 40 49 60 4 6 12 35 60
样例输出 1
3 28 19 49
样例输入 2
5 2 15 15 25 25 40 42 52 52 62 3 5 29 52
样例输出 2
4 15 25 49 58
样例输入 3
3 0 60 60 120 120 140 4 20 60 80 120
样例输出 3
impossible