  int[][] imos = new int[][](yn + 1, xn + 1);
  foreach (i; 0 .. yn)
  {
    foreach (j; 0 .. xn)
    {
      imos[i + 1][j + 1] += imos[i + 1][j] + (Point(xlist[j], ylist[i]) in set ? 1 : 0);
    }
    stderr.writeln;
  }
  foreach (i; 0 .. xn)
  {
    foreach (j; 0 .. yn)
    {
      imos[j + 1][i + 1] += imos[j][i + 1];
    }
  }
  /+
  foreach (i; 0 .. yn + 1)
  {
    foreach (j; 0 .. xn + 1)
    {
      stderr.write = (j ? " " : "") ~ imos[i][j].to!string;
    }
    stderr.writeln;
  }
   +/
  foreach (i; 0 .. yn)
  {
    foreach (j; i .. yn)
    {
      foreach (k; 0 .. xn)
      {
        foreach (l; k .. xn)
        {
          int cnt = imos[j + 1][l + 1] - imos[j + 1][k] - imos[i][l + 1] + imos[i][k];
          if (cnt >= K) {
            ans = min(ans, (xlist[l] - xlist[k]) * (ylist[j] - ylist[i]));
          }
        }
      }
    }
  }
  ans.writeln;
}