#include<iostream>
#include<string>
#include<algorithm>
#include<math.h>
using namespace std;
int n,m,k; //最多吃m份,有n种食品,分为k类
int maxeat[105];//第i种食物能吃的最大数量就是maxeat[b[i]]
int a[205]; //脂肪数
int b[205]; //所属类别
//从n种里边选m份,k类食品不能超过maxeat[k],吃的份数最大==m,sum+=a[i],最终获得最大值
int eaten[105];//eaten[b[i]]是i对应的食品种类已经吃的数量
int eatnum; //吃的食物份数
int sum;
int main(){
cin>>n>>m>>k;
for(int i=1;i<=k;i++)
cin>>maxeat[i];
for(int i=1;i<=n;i++)
cin>>a[i]>>b[i];
//从脂肪多的开始吃,所以排个序,把大的移到前边
for(int i=n;i>=1;i--)
for(int j=i-1;j>=1;j--){
if(a[i]>a[j]){
swap(a[i],a[j]);
swap(b[i],b[j]);
}
}
for(int i=1;i<=n;i++){
if(eatnum<m){
//遍历n种食品
while(eatnum<m && eaten[b[i]]<maxeat[b[i]]){
sum+=a[i];
eaten[b[i]]++;
eatnum++;
}
if(eatnum==m){
cout<<sum;
return 0;
}
}
}
}