unittest
{
	assert( [ "0 0 0 1" ].parse.expand.solve == "-1 1 -1 0" );
	assert( [ "2 3 6 6" ].parse.expand.solve == "3 10 -1 7" );
	assert( [ "31 -41 -59 26" ].parse.expand.solve == "-126 -64 -36 -131" );
}



import std.algorithm;
import std.conv;
import std.math;
import std.range;
import std.stdio;
import std.string;
import std.typecons;

void main()
{
	stdin.byLineCopy.parse.expand.solve.writeln;
}

auto parse( Range )( Range input )
if( isInputRange!Range && is( ElementType!Range == string ) )
{
	auto xyxy = input.front.split.to!( long[] );
	return tuple( xyxy );
}

auto solve( long[] xyxy )
{
	auto xy1 = xyxy[ 0 .. 2 ];
	auto xy2 = xyxy[ 2 .. $ ];
	
	// xy1からxy2への距離を計算
	auto dx12 = xy2[ 0 ] - xy1[ 0 ];
	auto dy12 = xy2[ 1 ] - xy1[ 1 ];
	
	// xy2からxy3への距離を計算（反時計回りで90度回転）
	auto dx23 = -dy12;
	auto dy23 = dx12;
	
	// xy3の座標を計算
	auto xy3 = [ xy2[ 0 ] + dx23, xy2[ 1 ] + dy23 ];
	
	// xy3からxy4への距離を計算（反時計回りで90度回転）
	auto dx34 = -dy23;
	auto dy34 = dx23;
	
	// xy4の座標計算
	auto xy4 = [ xy3[ 0 ] + dx34, xy3[ 1 ] + dy34 ];
	
	return ( xy3 ~ xy4 ).map!( to!string ).join( " " );
}
