编程题
### 问题描述
阿飞最近学习了多级反馈队列调度算法,下面是算法的大致描述:
一共有 $n$ 个进程,每个进程在 $t_i$ 时刻到达,需要运行 $a_i$ 个单位时间。一共有 $m$ 级队列,时间片 $c_i$ 从小到大(时间片的意思是一个进程在该队列中最多只能运行一个时间片大小的单位时间)。
新进程到达时先进入第一级队列,按照先来先服务的原则等待被分配时间片运行,若用完时间片进程还未结束就进入下一级队列队尾,如果此时已经在最下级的队列则重新放回最下级的队列。阿飞想知道运行完 $n$ 个进程需要多长时间,你可以帮他求解一下吗?
### 输入格式
第一行包含两个整数 $n,m$,表示进程的个数和队列的级数。
接下来 $n$ 行每行输入两个数 $t_i,a_i$,表示每个进程到达时间和运行时间。
接下来 $m$ 行每行输入一个数 $c_i$,表示每级时间片的大小。
### 样例输入
```
10 5
23 83
78 28
20 49
4 53
84 74
52 12
15 60
28 45
22 62
96 90
19
31
34
43
61
```
### 样例输出
```
314
```
### 数据规模
对于所有评测数据,$1 \leq n \leq 10^{3}$,$1 \leq m \leq 10$,$1 \leq t_i,a_i,c_i \leq 10^2$。