#include <iostream>
#include <iomanip>
#include <complex>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
const double EPS = 1e-10;
const double INF = 1e12;
#define EQ(n,m) (abs((n)-(m)) < EPS)
#define X real()
#define Y imag()
typedef complex<double> P;
typedef vector<P> VP;

double dot(P a, P b){
    return (conj(a)*b).X;
}
double cross(P a, P b){
    return (conj(a)*b).Y;
}
int ccw(P a, P b, P c){
    b -= a;
    c -= a;
    if(cross(b,c) > EPS) return +1; //ccw
    if(cross(b,c) < -EPS) return -1; //cw
    if(dot(b,c) < -EPS) return +2; //c-a-b
    if(abs(c)-abs(b) > EPS) return -2; //a-b-c
    return 0; //a-c-b
}
double getarea(const VP &poly){
    double ret = 0;
    for (int i=0; i<(int)poly.size(); i++){ 
        ret += cross(poly[i], poly[(i+1)%poly.size()]);
    }
    return ret*0.5;
}

int main(){
    while(1){
        int n,m,w,h,s;
        cin >> n >> m >> w >> h >> s;
        if(n==0) break;

        vector<double> l(m+1, 0), r(m+1, 0);
        for(int i=1; i<=m; i++){
            cin >> l[i] >> r[i];
        }
        VP p(n);
        for(int i=0; i<n; i++){
            double x,y;
            cin >> x >> y;
            p[i] = P(x, y);
        }

        vector<double> area(m+1, 0);
        for(int i=1; i<=m; i++){
            VP poly = {P(0, l[i-1]), P(w, r[i-1]), P(w, r[i]), P(0, l[i])};
            area[i] = getarea(poly);
            area[i] += area[i-1];
        }
        vector<int> num(m+1, 0);
        for(int i=0; i<n; i++){
            int ub=m, lb=0;
            while(lb +1 < ub){
                int mid = (lb +ub)/2;
                if(ccw(P(0, l[mid]), P(w, r[mid]), p[i]) == 1){
                    lb = mid;
                }else{
                    ub = mid;
                }
            }
            num[ub]++;
        }
        for(int i=0; i<m; i++){
            num[i+1] += num[i];
        }

        int ans = 1e9;
        for(int i=0; i<m; i++){
            if(area[i] +EPS >= s){
                ans = min(ans, num[i]);
                break;
            }
            int lb=i, ub=m;
            while(lb +1 < ub){
                int mid = (lb +ub)/2;
                if(h*w -(area[mid] -area[i]) +EPS > s){
                    lb = mid;
                }else{
                    ub = mid;
                }
            }
            ans = min(ans, n-(num[lb] -num[i]));
        }
        cout << ans << endl;
    }
    return 0;
}
