#303. 雇佣收银员

雇佣收银员

题目描述

一家超市要每天24\red {24}小时营业,为了满足营业需求,需要雇佣一大批收银员。

已知不同时间段需要的收银员数量不同,为了能够雇佣尽可能少的人员,从而减少成本,这家超市的经理请你来帮忙出谋划策。

经理为你提供了一个各个时间段收银员最小需求数量的清单R(0),R(1),R(2),,R(23)\red {R(0),R(1),R(2),…,R(23)}

R(0)\red {R(0)}表示午夜00:00\red {00:00}到凌晨01:00\red {01:00}的最小需求数量,R(1)\red {R(1)}表示凌晨01:00\red {01:00}到凌晨02:00\red {02:00}的最小需求数量,以此类推。

一共有N\red {N}个合格的申请人申请岗位,第 i\red {i }个申请人可以从ti\red {t_i}时刻开始连续工作8\red {8}小时。

收银员之间不存在替换,一定会完整地工作8\red {8}小时,收银台的数量一定足够。

现在给定你收银员的需求清单,请你计算最少需要雇佣多少名收银员。

输入格式

第一行包含一个不超过20\red {20}的整数,表示测试数据的组数。

对于每组测试数据,第一行包含24\red {24}个整数,分别表示R(0),R(1),R(2),,R(23)\red {R(0),R(1),R(2),…,R(23)}

第二行包含整数N\red {N}

接下来N\red {N}行,每行包含一个整数ti\red {t_i}

输出格式

每组数据输出一个结果,每个结果占一行。

如果没有满足需求的安排,输出“No Solution”

样例

输入样例

1
1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
5
0
23
22
1
10

输出样例

1

提示

0R(0)1000\red {0≤R(0)≤1000},

0N1000\red {0≤N≤1000},

0ti23\red {0≤t_i ≤23}