Maxim always goes to the supermarket on Sundays. Today the supermarket has a special offer of discount systems.

There are m types of discounts. We assume that the discounts are indexed from 1 to m. To use the discount number i, the customer takes a special basket, where he puts exactly qi items he buys. Under the terms of the discount system, in addition to the items in the cart the customer can receive at most two items from the supermarket for free. The number of the "free items" (0, 1 or 2) to give is selected by the customer. The only condition imposed on the selected "free items" is as follows: each of them mustn't be more expensive than the cheapest item out of the qi items in the cart.

Maxim now needs to buy n items in the shop. Count the minimum sum of money that Maxim needs to buy them, if he use the discount system optimally well.

Please assume that the supermarket has enough carts for any actions. Maxim can use the same discount multiple times. Of course, Maxim can buy items without any discounts.

Input

The first line contains integer m (1 ≤ m ≤ 105) — the number of discount types. The second line contains m integers: q1, q2, ..., qm (1 ≤ qi ≤ 105).

The third line contains integer n (1 ≤ n ≤ 105) — the number of items Maxim needs. The fourth line contains n integers: a1, a2, ..., an (1 ≤ ai ≤ 104) — the items' prices.

The numbers in the lines are separated by single spaces.

Output

In a single line print a single integer — the answer to the problem.

Examples

Input

1
2
4
50 50 100 100

Output

200

Input

2
2 3
5
50 50 50 50 50

Output

150

Input

1
1
7
1 1 1 1 1 1 1

Output

3

Note

In the first sample Maxim needs to buy two items that cost 100 and get a discount for two free items that cost 50. In that case, Maxim is going to pay 200.

In the second sample the best strategy for Maxim is to buy 3 items and get 2 items for free using the discount. In that case, Maxim is going to pay 150.

这个题是说买PI件商品,送0-2件商品,送的价格不能超过买的最低价格。

那我每次选最小的PI去满足,然后每次都赠两个,排序是的一定符合买的比送的便宜,那么一定是最优,至于为什么,看证明!

物品:A1 A2 A3 A4 A5 (排序后结果)

Pi 为2 或 3

当我们买2个送两个再买一个,这五件的花费是A1+A2+A5

当我们买3个送两个,这五件的花费是 A1+A2+A3 必然大于等于前者,可以通过数学归纳法证明N与N+M的关系,进而证明该种贪心策略的正确性。

#include<iostream>
#include<queue>
#include<algorithm>
#include<set>
#include<cmath>
#include<vector>
#include<map>
#include<stack>
#include<bitset>
#include<cstdio>
#include<cstring>
//---------------------------------Sexy operation--------------------------// #define cini(n) scanf("%d",&n)
#define cinl(n) scanf("%lld",&n)
#define cinc(n) scanf("%c",&n)
#define cins(s) scanf("%s",s)
#define coui(n) printf("%d",n)
#define couc(n) printf("%c",n)
#define coul(n) printf("%lld",n)
#define speed ios_base::sync_with_stdio(0)
#define file freopen("input.txt","r",stdin);freopen("output.txt","w",stdout)
//-------------------------------Actual option------------------------------// #define Swap(a,b) a^=b^=a^=b
#define Max(a,b) a>b?a:b
#define Min(a,b) a<b?a:b
#define mem(n,x) memset(n,x,sizeof(n))
#define mp(a,b) make_pair(a,b)
//--------------------------------constant----------------------------------// #define INF 0x3f3f3f3f
#define maxn 100010
#define esp 1e-9
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
//------------------------------Dividing Line--------------------------------//
int n,m,k;
int b[maxn];
int a[maxn];
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
cini(m);
for(int i=0;i<m;i++) cini(a[i]);
cini(n);
for(int i=0;i<n;i++) cini(b[i]);
sort(a,a+m);
sort(b,b+n,cmp);
long long ans=0;
int t=0;
//cout<<a[0]<<endl;
for(int i=0;i<n;i++)
{
if(t<a[0]) ans+=b[i],t++;
else {
t=0;
i+=1;
}
}
cout<<ans<<endl;
}

最新文章

  1. Linux时间同步,ntpdate命令、ntpd服务详解
  2. hdu 2896 AC自动机
  3. 关于javascript模块加载技术的一些思考
  4. 浏览器本地存储(browser-storage,HTML5-localStorage &gt; IE-UserData &gt; Cookie)
  5. 关于string的练习题目
  6. BZOJ2151: 种树
  7. sqlsever 关于索引
  8. HDU 5317 RGCDQ
  9. 找不到mysql服务或mysql服务名无效
  10. AFNetworking 使用 核心代码
  11. ibatis提示Unable to load embedded resource from assembly &quot;Entity.Ce_SQL.xml,Entity&quot;.
  12. 用Django Rest Framework和AngularJS开始你的项目
  13. Ubuntu下的iptux和Windows下的飞秋互传文件
  14. SpringMvc支持跨域访问,Spring跨域访问,SpringMvc @CrossOrigin 跨域
  15. python之路:列表及元组之定义
  16. 使用 Drools 和 JPA &amp; Drools show case in docker hub
  17. AIX使用命令修改网卡IP地址,永久生效
  18. ssm+redis整合(通过cache方式)
  19. vue为app做h5页面,如何做到同域名对应不同版本的h5代码
  20. python函数 传参的多种方式 解读

热门文章

  1. 30.4 Map HashMap
  2. AJ学IOS 之第一次打开Xcode_git配置,git简单学习
  3. 用python从0到1制作动态条形图的过程
  4. B. 蚂蚁觅食(二)
  5. D - Free Candies UVA - 10118
  6. 10.添加script标签,判断onload是否完成
  7. [PHP][thinkphp5] 学习三:函数助手实例说明
  8. vim的常用指令
  9. HTTP 前世今生
  10. 详解PHP中instanceof关键字及instanceof关键字有什么作用