#include<bits/stdc++.h>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
typedef long long ll;
typedef pair<int,int> P;

int n,m,h,k,s[1000],a[100000],b[100000];
vector<P> edge;
int d[1001][1000];
int u[1000];

int main(){
	while(scanf("%d%d%d%d",&n,&m,&h,&k),n){
		for(int i=0;i<n;i++) scanf("%d",&s[i]);
		for(int i=0;i<m;i++) scanf("%d%d",&a[i],&b[i]);
		vector<P> ppp;
		edge=ppp;
		for(int i=0;i<m;i++) edge.push_back(P(b[i],a[i]));
		sort(edge.begin(),edge.end());
		for(int i=0;i<n;i++) d[0][i]=i;
		int cnt=0;
		for(int i=1;i<=h;i++){
			for(int j=0;j<n;j++) d[i][j]=d[i-1][j];
			while(cnt<m){
				P p=edge[cnt];
				if(p.first!=i) break;
				cnt++;
				swap(d[i][p.second-1],d[i][p.second]);
			}
		}
		int res=0;
		for(int i=0;i<n;i++) u[d[h][i]]=s[i];
		for(int i=0;i<k;i++) res+=u[i];
		int out=res;
		for(int i=0;i<m;i++){
			int x=d[b[i]][a[i]],y=d[b[i]][a[i]-1];
			if(x<k&&y>=k) out=min(out,res+u[y]-u[x]);
			if(x>=k&&y<k) out=min(out,res+u[x]-u[y]);
		}
		printf("%d\n",out);
	}
}