#include <stdio.h>
#define MAX_SIZE 100

int max(int a, int b) { return a < b ? b : a; }

int main(void)
{
    int n, w, h, x, y, s, t, maxtrees;
    char map[MAX_SIZE + 1][MAX_SIZE + 1];

    while(scanf("%d", &n), n)
    {
        scanf("%d %d", &w, &h);

        /* initialize */
        for(y = 0; y <= h; y++)
            for(x = 0; x <= w; x++)
                map[y][x] = 0;

        /* place trees */
        while(n--)
        {
            scanf("%d %d", &x, &y);
            map[y][x] = 1;
        }

        /* sumamte (horizontally) */
        for(y = 1; y <= h; y++)
            for(x = 2; x <= w; x++)
                map[y][x] += map[y][x - 1];

        /* summate (vertically) */
        for(x = 1; x <= w; x++)
            for(y = 2; y <= h; y++)
                map[y][x] += map[y - 1][x];

        /* search */
        scanf("%d %d", &s, &t);
        s--, t--, maxtrees = -1;
        for(y = 1; y + t <= h; y++)
            for(x = 1; x + s <= w; x++)
                maxtrees = max(map[y + t][x + s]
                               - map[y - 1][x + s] - map[y + t][x - 1]
                               + map[y - 1][x - 1],
                               maxtrees);

        printf("%d\n", maxtrees);
    }

    return 0;
}