#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#include <deque>
#include <cmath>
#include <set>
#include <unordered_map>

using namespace std;

#define all(v) ((v).begin()), ((v).end())
#define sz(v) ((int)((v).size()))
#define clr(v, d) memset(v, d, sizeof(v))
#define rep(i, v) for (int i = 0; i < sz(v); ++i)
#define lp(i, n) for (int i = 0; i < (int)(n); ++i)
#define lpi(i, j, n) for (int i = (j); i < (int)(n); ++i)
#define lpd(i, j, n) for (int i = (j); i >= (int)(n); --i)
typedef long long ll;

void fast_io()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    #ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
    #endif
}
int main()
{
    fast_io();

    double x01=0,y01=0,x02=0,y02=0;
    cin >> x01 >> y01 >> x02 >> y02;

    double x11=0,y11=0,x12=0,y12=0;
    cin >> x11 >> y11 >> x12 >> y12;
    
    double radius0 = sqrt((x01-x02)*(x01-x02) + (y01-y02)*(y01-y02))/2;
    double radius1 = sqrt((x11-x12)*(x11-x12) + (y11-y12)*(y11-y12))/2;

    double center0x = (x01+x02)/2;
    double center0y = (y01+y02)/2;
    double center1x = (x11+x12)/2;
    double center1y = (y11+y12)/2;
    
    double centers = sqrt((center1x-center0x)*(center1x-center0x) + (center1y-center0y)*(center1y-center0y));

    if (centers < radius0+radius1){
        if (x01 >= x11 && y01 >= y11 || x01 >= x11 && y01 == y11 || y01 >= y11 && x01 == x11){
            cout << x01 << ' ' << y01 << ' ';
        }else{
            cout << x11 << ' ' << y11 << ' ';
        }
        if (x02 <= x12 && y02 <= y12 || x02 <= x12 && y02 == y12 || y02 <= y12 && x02 == x12){
            cout << x02 << ' ' << y02 << endl;
        }else{
            cout << x12 << ' ' << y12 << endl;
        }
    }
    else
        cout << -1 << endl;
}