#P1770. Special Experiment

Special Experiment

描述

众所周知,一个原子可以处于不同的能量状态(或“能级”)。通常情况下,当它从较高的能量状态跃迁到较低的能量状态时,会发射出一个光子,该光子的能量等于这两个状态之间的能量差。吸收光子则是相反的过程。如果一个能量等于原子两个状态之间能量差的光子经过,它可能会被吸收,其能量会使原子处于更高的能级。对于大多数元素,原子可以通过仅发射或吸收一个光子,在任意两个状态之间直接跃迁。但科学家们对他们最近发现的一种新元素感到困惑。对于某些特定的两个能量状态,这种元素的原子可以直接在它们之间跃迁(发射或吸收且仅吸收一个光子),但对于其他一些能量状态对,原子则不能。

一般来说,当原子在能量状态之间依次跃迁时,会产生一系列事件(发射或吸收光子)。例如,当从能量状态Ei1E_{i_1}跃迁到EitE_{i_t}时,原子遵循以下序列:

Ei1E_{i_1}, Ei2E_{i_2}, Ei3E_{i_3}, ..., EikE_{i_k}, ..., EitE_{i_t}

其中EikE_{i_k}1kt1 \leq k \leq t)表示某个特定的能量状态。在从EikE_{i_k}跃迁到Eik+1E_{i_{k+1}}的过程中,会严格地发射或吸收一个光子。

该原子可以在任意能量状态间进行跃迁。但如前所述,某些能量状态对之间无法直接跃迁。更重要的是,当能量状态发生变化时(例如从Ej1E_{j_1}EjwE_{j_w}),它必须遵循唯一的序列Ej1E_{j_1},Ej2E_{j_2},Ej3E_{j_3},...,EjwE_{j_w}。而最有趣的是,当它从EjwE_{j_w}反向跃迁回Ej1E_{j_1}时,必须遵循另一个唯一序列EjwE_{j_w},...,Ej3E_{j_3},Ej2E_{j_2},Ej1E_{j_1}——你会发现这正是前一个序列的逆序!没错,这难道不特殊吗?

现在,科学家们今天需要你的帮助。在一个实验中,这种新元素的一些原子将被放入一个容器中。如果任意两个原子满足以下条件之一,它们将被视为“危险原子”:

  • 它们处于相同的能量状态。
  • 它们处于不同的能量状态。但如果其中一个发射或吸收一个光子,它们也将处于相同的状态。

你必须确保这个容器中没有危险原子。并且容器中原子的总能量越高,实验就越容易成功。

现在,科学家们已经告诉你这种元素的原子能够发射或吸收的所有光子,以及所有原子状态的能量。他们要求你计算容器中原子能够达到的最高总能量。

输入

输入中包含多个测试用例。每个测试用例以包含两个整数NNMM0<N,M2000 < N, M \leq 200)的行开始,分别表示能级数量和这种原子可以发射或吸收的不同光子数量。这两个数字之后恰好有N+MN + M行,每行包含一个正整数。这N+MN+M个正整数不大于1,000,0001,000,000。前NN个不同的整数是原子在NN个不同能态下的能量,按升序排列。接下来的MM个整数对应这种元素的原子可以发射或吸收的MM个不同光子的能量。如果任意两个能态的能量差等于MM个光子中某一个的能量,原子就可以直接在这两个能态之间跃迁。

两个数据集之间没有空行。最后一个测试用例之后是包含两个零的行。

输出

对于每个测试用例,输出一行包含一个整数,该整数表示容器中原子能够达到的最高总能量。任意两个用例之间不应有空行。

输入数据 1

3 1
2
4
6
2
0 0

输出数据 1

8

来源 2003 年亚洲广州赛区竞赛