#include <cstdio>
#include <algorithm>
#include <queue>
#include <utility>

using namespace std;

typedef pair<int,int> mp;


int n,m,k;

int toatai[1005];

int todat[1005];
int tokekka[1005];

mp edg[100005];
int edgcon[100005][2];

int main(void){

int a,b;


while(1){

scanf("%d%d%d%d",&n,&m,&a,&k);
if(n==0)break;
for(int i=1;i<=n;i++){
  todat[i]=i;
}

for(int i=1;i<=n;i++){
  scanf("%d",&(toatai[i]));
}

for(int i=0;i<m;i++){
  scanf("%d%d",&(edg[i].second),&(edg[i].first));
}

sort(edg,edg+m);

int p,q;
for(int i=0;i<m;i++){
  p=edg[i].second;
  edgcon[i][0]=todat[p];
  edgcon[i][1]=todat[p+1];
  q=todat[p];
  todat[p]=todat[p+1];
  todat[p+1]=q;
}

for(int i=1;i<=n;i++){
  tokekka[todat[i]]=i;
}

/*
for(int i=1;i<=n;i++){
  printf("kek  %d\n",tokekka[i]);
}*/

int sum=0;
for(int i=1;i<=k;i++){
  sum+=toatai[tokekka[i]];
}
int ans=sum;

//printf("%d\n",sum);

for(int i=0;i<m;i++){
  int sa;
  if(edgcon[i][0]<=k && edgcon[i][1]>k){
    sa=toatai[tokekka[edgcon[i][1]]]-toatai[tokekka[edgcon[i][0]]];
  }
  else if(edgcon[i][1]<=k && edgcon[i][0]>k){
    sa=toatai[tokekka[edgcon[i][0]]]-toatai[tokekka[edgcon[i][1]]];
  }

  if(ans>sum+sa)ans=sum+sa;
}
printf("%d\n",ans);
}
return 0;
}