#include <bits/stdc++.h>
#define f first
#define s second
#define x real()
#define y imag()
using namespace std;
typedef complex <double> point;
int n,m,w,h,S;
point L[30001][2];
point A[30001];
int arm[30001];
 
bool ccw(point a,point b,point c){
  b-=a,c-=a;
  c*=conj(b); 
   return (c.y>0);
}
 
void mk_arm(){
  memset(arm,0,sizeof(arm));
  for(int i=0;i<n;i++){
    int low=0,mid,up=m+1;
    while(low<up){
      mid=(low+up)/2;
      if(!ccw(L[mid][0],L[mid][1],A[i])) up=mid;
      else low=mid+1;
    }
    arm[low]++;
  }
  for(int i=1;i<=m;i++)arm[i]+=arm[i-1];
}
 
int solve(){
  int res=0;
  for(int i=0;i<m;i++){
    int low=i,mid,up=m+1;
    while(low<up){
      mid=(low+up)/2;
      double sss=((L[mid][0].y-L[i][0].y)+(L[mid][1].y-L[i][1].y))*w/2.0;
      if(w*h-(sss)<S) up=mid;
      else low=mid+1; 
    }
    res=max(res,(arm[low-1]-arm[i]));
  }
  return n-res;
}
 
int main(){
  while(1){
    cin>>n>>m>>w>>h>>S;
    if(!n&&!m&&!w&&!h&&!S)break;
    L[0][0]=point(0,0);
    L[0][1]=point(w,0);
    for(int i=1,a,b;i<=m;i++){
      cin>>a>>b;
      L[i][0]=point(0,a);
      L[i][1]=point(w,b);
    }
 
    double a,b;
    for(int i=0;i<n;i++)cin>>a>>b,A[i]=point(a,b);
    mk_arm();
    cout << solve()<<endl;
  }
   
  return 0;
}