#include <bits/stdc++.h>
using namespace std;
const int N = 100100;
int t[N], x[N], y[N], tn;
vector<int> g[N];
int f(int x) { return x & -x; }
void insert(int x, int y) {
  int id = lower_bound(t + 1, t + 1 + tn, x) - t;
  for (int i = id; i <= tn; i += f(i)) {
    g[i].push_back(y);
  }
}
int query(int x, int y) {
  int id = lower_bound(t + 1, t + 1 + tn, x) - t, r = 0;
  for (int i = id; i >= 1; i -= f(i)) {
    r += upper_bound(g[i].begin(), g[i].end(), y) - g[i].begin();
  }
  return r;
}
int main() {
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    scanf("%d%d", &x[i], &y[i]);
    t[i] = x[i];
  }
  sort(t + 1, t + 1 + n);
  tn = unique(t + 1, t + 1 + n) - t - 1;
  for (int i = 1; i <= n; i++) insert(x[i], y[i]);
  for (int i = 1; i <= tn; i++) sort(g[i].begin(), g[i].end());
  sort(x + 1, x + 1 + n);
  sort(y + 1, y + 1 + n);
  int f[20];
  for (int i = 1; i <= 9; i++) {
    scanf("%d", &f[i]);
  }
  sort(f + 1, f + 10);
  do {
    int a = f[1] + f[2] + f[3];
    int b = a + f[4] + f[5] + f[6];
    int c = f[1] + f[4] + f[7];
    int d = c + f[2] + f[5] + f[8];
    if (x[a] == x[a + 1]) continue;
    if (x[b] == x[b + 1]) continue;
    if (y[c] == y[c + 1]) continue;
    if (y[d] == y[d + 1]) continue;
    if (query(x[a], y[c]) != f[1]) continue;
    if (query(x[a], y[d]) != f[1] + f[2]) continue;
    if (query(x[b], y[c]) != f[1] + f[4]) continue;
    if (query(x[b], y[d]) != f[1] + f[2] + f[4] + f[5]) continue;
    printf("%.6f %.6f\n%.6f %.6f\n", x[a] + 0.5, x[b] + 0.5, y[c] + 0.5,
           y[d] + 0.5);
    return 0;
  } while (next_permutation(f + 1, f + 10));
  cout << -1;
}
