using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Contest
{
    class Program
    {
        static int Main(string[] args)
        {
            new Program().Process();

            return 0;
        }

        private CommonInput cin;

        private void Process()
        {
            cin = new CommonInput();

            int N, W, H, S, T;
            int x, y;
            int result, tmp;
            bool[,] map;

            while (true)
            {
                N = cin.GetNextToInt();

                // ??\????????????????????¨???????????????????????????????????¨???????????¨??????????????\??????????????????
                if (N == 0)
                    break;

                W = cin.GetNextToInt();
                H = cin.GetNextToInt();

                map = new bool[W + 1, H + 1];

                result = 0;

                for (int i = 0; i < N; i++)
                {
                    x = cin.GetNextToInt();
                    y = cin.GetNextToInt();
                    map[x, y] = true;
                }

                S = cin.GetNextToInt();
                T = cin.GetNextToInt();

                for (int i = 1; i <= W - S + 1; i++)
                {
                    for (int j = 1; j <= H - T + 1; j++)
                    {
                        tmp = Search(map, S, T, i, j);

                        if (result < tmp)
                        {
                            result = tmp;
                        }
                    }
                }

                Console.WriteLine(result);
            }
        }

        private int Search(bool[,] map, int s, int t, int sx, int sy)
        {
            int result = 0;

            for (int i = 0; i < s; i++)
            {
                for (int j = 0; j < t; j++)
                {
                    if (map[sx + i, sy + j])
                        result++;
                }
            }

            return result;
        }
    }

    public struct Point
    {
        public Point(int x, int y)
        {
            this._x = x;
            this._y = y;
        }

        private int _x;
        private int _y;

        public int X
        {
            get { return _x; }
            set { _x = value; }
        }

        public int Y
        {
            get { return _y; }
            set { _y = value; }
        }
    }

    public class CommonInput
    {
        public CommonInput()
        {
            this._s = new string[0];
            this._i = 0;
        }

        public string Line { get; set; }
        private string[] _s;
        private int _i;
        private char[] _sep = { ' ' };

        public void GetLine()
        {
            this._i = 0;
            do
            {
                this.Line = Console.ReadLine();
            } while (this.Line == "");

            if (this.Line != null)
                this._s = this.Line.Split(this._sep, StringSplitOptions.RemoveEmptyEntries);
        }

        public string GetNext()
        {
            if (this._i < this._s.Length)
                return this._s[this._i++];

            this.GetLine();

            return this._s[this._i++];
        }

        public int GetNextToInt()
        {
            return int.Parse(this.GetNext());
        }

        public long GetNextToLong()
        {
            return long.Parse(this.GetNext());
        }

        public double GetNextToDouble()
        {
            return double.Parse(this.GetNext());
        }
    }
}

Measured memory_bytes: 9260