#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > point;
vector<int> X;
vector<int> Y;
vector<int> A;
vector<int> dis;
vector<int> BIT[100009];
int get_indx(int x) {
  return lower_bound(dis.begin(), dis.end(), x) - dis.begin() + 1;
}
void insert_(int x, int y) {
  for (int i = get_indx(x); i < 100009; BIT[i].push_back(y), i += (i & -i))
    ;
}
int add(int i, int y) {
  return upper_bound(BIT[i].begin(), BIT[i].end(), y) - BIT[i].begin();
}
int get_(int x, int y) {
  int tot = 0;
  for (int i = get_indx(x); i > 0; tot += add(i, y), i -= (i & -i))
    ;
  return tot;
}
void solve() {
  do {
    int X1, X2, Y1, Y2;
    X1 = A[0] + A[3] + A[6];
    X2 = X1 + A[1] + A[4] + A[7];
    Y1 = A[6] + A[7] + A[8];
    Y2 = Y1 + A[3] + A[4] + A[5];
    if (X[X1] == X[X1 - 1] || X[X2] == X[X2 - 1] || Y[Y1] == Y[Y1 - 1] ||
        Y[Y2] == Y[Y2 - 1]) {
      continue;
    }
    if (get_(X[X1 - 1], Y[Y1 - 1]) != A[6] ||
        get_(X[X1 - 1], Y[Y2 - 1]) != A[3] + A[6])
      continue;
    if (get_(X[X2 - 1], Y[Y1 - 1]) != A[6] + A[7] ||
        get_(X[X2 - 1], Y[Y2 - 1]) != A[3] + A[4] + A[6] + A[7])
      continue;
    printf("%.6f %.6f\n%.6f %.6f\n", X[X1 - 1] + .5, X[X2 - 1] + .5,
           Y[Y1 - 1] + .5, Y[Y2 - 1] + .5);
    return;
  } while (next_permutation(A.begin(), A.end()));
  puts("-1");
}
int main() {
  int n;
  int x, y;
  int a;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> x >> y;
    point.push_back({x, y});
    X.push_back(x);
    Y.push_back(y);
    dis.push_back(x);
  }
  for (int i = 0; i < 9; i++) {
    cin >> a;
    A.push_back(a);
  }
  sort(X.begin(), X.end());
  sort(Y.begin(), Y.end());
  sort(dis.begin(), dis.end());
  sort(A.begin(), A.end());
  dis.erase(unique(dis.begin(), dis.end()), dis.end());
  for (int i = 0; i < n; i++) {
    insert_(point[i].first, point[i].second);
  }
  for (int i = 0; i < 100009; i++) {
    sort(BIT[i].begin(), BIT[i].end());
  }
  solve();
}
