#include <bits/stdc++.h>
#pragma GCC optimize("O2")
#pragma GCC optimize("unroll-loops")
using namespace std;
const int MAX = 4e5 + 5;
const long long MAX2 = 11;
const long long MOD = 1000000007;
const long long MOD2 = 2010405347;
const long long INF = 2e18;
const int dr[] = {1, 0, -1, 0, 1, 1, -1, -1, 0};
const int dc[] = {0, 1, 0, -1, 1, -1, 1, -1, 0};
const double pi = acos(-1);
const double EPS = 1e-9;
const int block = 555;
int n, idx, idy, cvx[MAX], cvy[MAX], id, cnt[MAX], bit[MAX], k, tmp, res,
    stx[MAX], sty[MAX], a, b, c, d;
pair<pair<int, int>, pair<int, int> > cnd[MAX];
pair<int, int> x[MAX];
map<int, int> hsx, hsy;
vector<int> v, up[MAX];
vector<pair<pair<int, int>, pair<int, int> > > qu[MAX];
inline void upd(int i) {
  for (; i <= idy; i += i & -i) ++bit[i];
  return;
}
int ret;
inline int que(int i) {
  ret = 0;
  for (; i > 0; i -= i & -i) ret += bit[i];
  return ret;
}
int main() {
  cout << fixed << setprecision(2);
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 1; i <= n; ++i)
    cin >> x[i].first >> x[i].second, hsx[x[i].first], hsy[x[i].second];
  for (auto i : hsx) hsx[i.first] = ++idx, cvx[idx] = i.first;
  for (auto i : hsy) hsy[i.first] = ++idy, cvy[idy] = i.first;
  for (int i = 1; i <= n; ++i) {
    x[i] = {hsx[x[i].first], hsy[x[i].second]};
    ++cnt[x[i].first];
    up[x[i].first].push_back(x[i].second);
  }
  for (int i = 1; i <= idx; ++i) cnt[i] += cnt[i - 1], stx[cnt[i]] = i;
  memset(cnt, 0, sizeof cnt);
  for (int i = 1; i <= n; ++i) ++cnt[x[i].second];
  for (int i = 1; i <= idy; ++i) cnt[i] += cnt[i - 1], sty[cnt[i]] = i;
  memset(cnt, 0, sizeof cnt);
  for (int i = 1; i <= 9; ++i) cin >> k, v.push_back(k);
  sort(v.begin(), v.end());
  do {
    a = v[0] + v[3] + v[6];
    if (!stx[a]) continue;
    b = a + v[1] + v[4] + v[7];
    if (!stx[b]) continue;
    c = v[0] + v[1] + v[2];
    if (!sty[c]) continue;
    d = c + v[3] + v[4] + v[5];
    if (!sty[d]) continue;
    a = stx[a], b = stx[b], c = sty[c], d = sty[d];
    ++id;
    qu[a].push_back({{id, v[0]}, {0, c}});
    qu[a].push_back({{id, v[3]}, {c, d}});
    qu[b].push_back({{id, v[0] + v[1]}, {0, c}});
    qu[b].push_back({{id, v[3] + v[4]}, {c, d}});
    cnd[id] = {{a, b}, {c, d}};
  } while (next_permutation(v.begin(), v.end()));
  for (int i = 1; i <= idx; ++i) {
    for (int j : up[i]) upd(j);
    for (pair<pair<int, int>, pair<int, int> > j : qu[i])
      if (que(j.second.second) - que(j.second.first) == j.first.second) {
        ++cnt[j.first.first];
        if (cnt[j.first.first] == 4) {
          k = j.first.first;
          cout << cvx[cnd[k].first.first] + 0.69 << ' '
               << cvx[cnd[k].first.second] + 0.69 << '\n';
          cout << cvy[cnd[k].second.first] + 0.69 << ' '
               << cvy[cnd[k].second.second] + 0.69 << '\n';
          return 0;
        }
      }
  }
  cout << "-1\n";
  return 0;
}
