#include <bits/stdc++.h>
using namespace std;

class point {
public:
	double x, y;
	point() {}
	point(double a, double b) { x = a; y = b; }
	point operator +( point p ) { return point( x + p.x, y + p.y ); }
	point operator -( point p ) { return point( x - p.x, y - p.y ); }
	point operator *( double a ) { return point( x * a, y * a ); }
	point operator /( double a ) { return point( x / a, y / a ); }
};

double norm( point p ) { return p.x * p.x + p.y * p.y; }

int main()
{
	point c1, c2;
	double r1, r2;
	cin >> c1.x >> c1.y >> r1 >> c2.x >> c2.y >> r2;

	double d = sqrt( norm( c2 - c1 ) );
	double a = acos( ( r1 * r1 + d * d - r2 * r2 ) / ( 2 * r1 * d ) );
	point c = c2 - c1;
	double t = atan2( c.y, c.x );
	point cp1 = c1 + point(  cos(t + a) * r1, sin(t + a) * r1 );
	point cp2 = c1 + point(  cos(t - a) * r1, sin(t - a) * r1 );
	if( cp1.x > cp2.x ) swap( cp1, cp2 );
	else if( cp1.x == cp2.x && cp1.y > cp2.y ) swap( cp1, cp2 );

	cout << fixed << setprecision(10) << cp1.x << " " << cp1.y  << " " << cp2.x << " " << cp2.y << endl;
}

