/* 
   AOJ 1125
   Get Many Persimmon Trees
   2015.4.26
 */

#include<stdio.h>

int field[100][100] = {0};

int search_most_trees(int field_width, int field_height, int estate_width, int estate_height)
{
  int estate_x, estate_y, field_x, field_y, trees = 0, max_trees = 0;


  for(field_x = 0; field_x <= field_width - estate_width; field_x++)
    {
      for(field_y = 0;  field_y <= field_height - estate_height; field_y++)
	{
	  for(estate_x = field_x; estate_x < estate_width + field_x; estate_x++)
	    {
	      for(estate_y = field_y; estate_y < estate_height + field_y; estate_y++)
		{
		  if(field[estate_x][estate_y] == 1)
		    {
		      trees++;
		    } 
		}
	    }
	  if(trees >= max_trees)
	    {
	      max_trees = trees;
	    }
	  trees = 0;
	}
    }
  return max_trees;
}

int main(void)
{
  int trees_num, width, height, i, j, tree_x, tree_y, estate_width, estate_height, get_trees_num;
  while(1)
    {
      scanf("%d", &trees_num);
      if(trees_num == 0)
	{
	  break;
	}
      scanf("%d %d", &width, &height);
      
      for(i = 0; i < trees_num; i++)
	{
	  scanf("%d %d", &tree_x, &tree_y);
	  field[tree_x - 1][tree_y - 1] = 1;
	}

      scanf("%d %d", &estate_width, &estate_height);

      /* for(i = 0; i < height; i++) */
      /* 	{ */
      /* 	  for(j = 0; j < width; j++) */
      /* 	    { */
      /* 	      printf("%3d", field[j][i]); */
      /* 	    } */
      /* 	  printf("\n"); */
      /* 	} */

      get_trees_num = search_most_trees(width, height, estate_width, estate_height);

      printf("%d\n", get_trees_num);

      for(i = 0; i < width; i++)
	{
	  for(j = 0; j < height; j++)
	    {
	      field[i][j] = 0;
	    }
	}
      
    }
  return 0;
}